{"id":"bf3900fb-dbab-419e-ad82-9b6182d04716","shortId":"3n9Y4j","kind":"skill","title":"climate-generator","tagline":"Generate Go CLIs from OpenAPI 3.x specs with climate, inspect generated CLIs, and emit Markdown skill prompts so those CLIs can be attached to agent workflows.","description":"# Skill: climate-generator\n\nYou have access to `climate`, a CLI that generates production-ready Go command-line\nclients from OpenAPI specifications and can emit Markdown prompts for agent skills.\n\n## When to use this skill\n\n- The user has an OpenAPI 3.x URL or file and wants a CLI quickly.\n- The user wants a human-usable API client rather than writing SDK glue code.\n- The user wants to turn a generated CLI into a reusable agent skill.\n- The user wants to compose multiple microservice specs into one facade CLI.\n- The user wants a local OpenAPI simulator (mock server) for testing.\n- The user wants the generated CLI to receive or emit webhook callbacks itself.\n- The user wants shell completion for climate itself.\n- The user wants to list, remove, or upgrade a previously generated CLI.\n- The user wants to uninstall climate itself and clean up local climate-managed artifacts.\n\n## Core workflow\n\n1. Generate a CLI from the provided spec.\n2. If user provides multiple specs, use `climate compose` instead of `climate generate`.\n3. Capture the resulting `cli_name`, `binary_path`, and `source_dir`.\n4. If the user wants agent integration, run `climate skill generate <cli-name>`.\n5. If the user needs sandbox/simulator behavior, run `climate mock <openapi_spec>`.\n6. If the user wants shell completion for climate itself, run `climate completion install --shell <shell>`.\n7. If the user wants the CLI managed on GitHub, run `climate publish <cli-name>`.\n8. Follow the generated instructions from that Markdown prompt.\n\n## Commands\n\n### Generate a CLI\n\n```bash\nclimate generate [--name <cli-name>] [--out-dir <dir>] [--no-build] [--force] <openapi_spec>\n```\n\n- `<openapi_spec>` can be a local path or an HTTP(S) URL.\n- `--no-build` generates source only.\n- `--force` overwrites an existing output directory.\n\nSuccess output is JSON:\n\n```json\n{\n  \"cli_name\": \"<name>\",\n  \"binary_path\": \"<absolute path to compiled binary>\",\n  \"source_dir\": \"<absolute path to generated source>\",\n  \"version\": \"<API version>\",\n  \"openapi_hash\": \"<sha256 of the spec>\"\n}\n```\n\nGenerated CLIs also include config plus spec-aware event commands:\n\n```bash\n<cli-name> events list\n<cli-name> config list\n<cli-name> config set <key> <value>\n<cli-name> config get <key>\n<cli-name> config unset <key>\n<cli-name> config profiles list\n<cli-name> config profiles create <name>\n<cli-name> config profiles use <name>\n<cli-name> config set --secret events.signing_secret <value>\n<cli-name> auth login [--scheme <name>]\n<cli-name> auth status\n<cli-name> auth logout [--scheme <name>]\n<cli-name> events listen [event-name] [--host 127.0.0.1] [--port 8081] [--path /] [--tunnel none|auto|cloudflared] [--signature-mode none|hmac]\n<cli-name> events emit <event-name> --target-url <url> [--data-json <json>] [--data-file <path>] [--signature-mode none|hmac]\n```\n\n### List generated CLIs\n\n```bash\nclimate list\n```\n\n### Compose multiple OpenAPI specs into one CLI\n\n```bash\nclimate compose [--name <cli-name>] [--out-dir <dir>] [--no-build] [--force] [--title <title>] [--api-version <version>] [--description <text>] <spec1>:<prefix1> [<spec2>:<prefix2> ...]\n```\n\nEach positional argument is `<spec>:<prefix>` where `<spec>` can be a local\npath or URL and `<prefix>` starts with `/`.\n\n### Start local mock server\n\n```bash\nclimate mock [--port <port>] [--latency <ms>] [--emit-url <url> --event-path <path> [--event-method <method>]] <openapi_spec>\n```\n\n### Generate or install shell completions\n\n```bash\nclimate completion bash|zsh|fish|powershell\nclimate completion install [--shell bash|zsh|fish|powershell]\nclimate completion uninstall [--shell bash|zsh|fish|powershell]\n```\n\n### Remove a generated CLI\n\n```bash\nclimate remove [--purge-sources] [--yes] <cli-name>\n```\n\n### Upgrade a generated CLI\n\n```bash\nclimate upgrade [--openapi <spec>] <cli-name>\n```\n\n### Uninstall climate itself\n\n```bash\nclimate uninstall [--full] [--yes]\n```\n\n### Generate a skill prompt for a CLI\n\n```bash\nclimate skill generate [--mode=full|compact] [--out <file>] <cli-name>\n```\n\n### Publish a generated CLI to GitHub\n\n```bash\nclimate publish [--owner <owner>] [--repo <repo>] [--visibility public|private] [--github-token <token>] <cli-name>\n```\n\nThis command creates or reuses a GitHub repository through the GitHub API,\nwrites lifecycle files including CI, CI auto-fix, and release workflows,\ninitializes git, and pushes the generated source tree.\n\n### Print the built-in climate skill\n\n```bash\nclimate skill generator\n```\n\n## Typical examples\n\nGenerate a CLI:\n\n```bash\nclimate generate --name petstore https://petstore3.swagger.io/api/v3/openapi.json\n```\n\nCompose two service specs into one facade CLI:\n\n```bash\nclimate compose orders.yaml:/api/orders users.yaml:/api/users --name gateway\n```\n\nRun a local mock server:\n\n```bash\nclimate mock --port 9090 --latency 150 https://petstore3.swagger.io/api/v3/openapi.json\n```\n\nGenerate a compact skill prompt for that CLI:\n\n```bash\nclimate skill generate petstore --mode=compact\n```\n\nPublish it to GitHub:\n\n```bash\nclimate publish petstore --owner disk0Dancer\n```\n\n## Notes\n\n- Most climate management output is JSON on success.\n- `climate skill generate`, `climate skill generator`, and `climate completion <shell>` print text to stdout.\n- `climate mock` in server mode and `climate mock --emit-url ...` intentionally print plain-text runtime output.\n- Errors are emitted as structured JSON on stderr.\n- Generated CLIs follow the shape `<cli-name> <tag> <operation> [flags] --output=json|table|raw`.\n- Homebrew install is available via `brew tap disk0Dancer/tap && brew install climate`.\n- GitHub publish auth is read from `--github-token`, `GITHUB_TOKEN`, or `GH_TOKEN`.\n- `climate remove` and `climate uninstall` prompt unless `--yes` is passed.","tags":["climate","generator","disk0dancer","agent-skill","agent-skills","ai-tools","cli-generator","openapi"],"capabilities":["skill","source-disk0dancer","skill-climate-generator","topic-agent-skill","topic-agent-skills","topic-ai-tools","topic-cli-generator","topic-openapi"],"categories":["climate"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/disk0Dancer/climate/climate-generator","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add disk0Dancer/climate","source_repo":"https://github.com/disk0Dancer/climate","install_from":"skills.sh"}},"qualityScore":"0.453","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 6 github stars · SKILL.md body (5,738 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:14:30.990Z","embedding":null,"createdAt":"2026-05-18T13:22:22.486Z","updatedAt":"2026-05-18T19:14:30.990Z","lastSeenAt":"2026-05-18T19:14:30.990Z","tsv":"'/api/orders':621 '/api/users':623 '/api/v3/openapi.json':608,640 '1':184 '127.0.0.1':375 '150':637 '2':192 '3':9,73,205 '4':216 '5':227 '6':237 '7':252 '8':265 '8081':377 '9090':635 'access':37 'agent':29,61,109,221 'also':327 'api':90,430,564 'api-vers':429 'argument':435 'artifact':181 'attach':27 'auth':361,364,366,737 'auto':381,572 'auto-fix':571 'avail':727 'awar':333 'bash':278,336,407,417,452,471,474,482,490,498,509,516,528,542,592,601,617,631,649,660 'behavior':233 'binari':211,318 'brew':729,732 'build':287,301,426 'built':588 'built-in':587 'callback':145 'captur':206 'ci':569,570 'clean':175 'cli':41,81,105,122,139,166,187,209,258,277,316,416,497,508,527,539,600,616,648 'client':51,91 'climat':2,13,33,39,153,172,179,199,203,224,235,245,248,263,279,408,418,453,472,478,486,499,510,514,517,529,543,590,593,602,618,632,650,661,668,675,678,682,688,694,734,749,752 'climate-gener':1,32 'climate-manag':178 'clis':6,16,24,326,406,715 'cloudflar':382 'code':97 'command':49,274,335,554 'command-lin':48 'compact':534,643,655 'complet':151,243,249,470,473,479,487,683 'compos':115,200,410,419,609,619 'config':329,339,341,343,345,347,350,353,356 'core':182 'creat':352,555 'data':394,397 'data-fil':396 'data-json':393 'descript':432 'dir':215,284,321,423 'directori':310 'disk0dancer':665 'disk0dancer/tap':731 'emit':18,57,143,389,458,697,708 'emit-url':457,696 'error':706 'event':334,337,369,372,388,461,464 'event-method':463 'event-nam':371 'event-path':460 'events.signing':359 'exampl':597 'exist':308 'facad':121,615 'file':77,398,567 'fish':476,484,492 'fix':573 'flag':719 'follow':266,716 'forc':288,305,427 'full':519,533 'gateway':625 'generat':3,4,15,34,43,104,138,165,185,204,226,268,275,280,302,325,405,466,496,507,521,531,538,582,595,598,603,641,652,677,680,714 'get':344 'gh':747 'git':578 'github':261,541,551,559,563,659,735,742,744 'github-token':550,741 'glue':96 'go':5,47 'hash':324 'hmac':387,403 'homebrew':724 'host':374 'http':296 'human':88 'human-us':87 'includ':328,568 'initi':577 'inspect':14 'instal':250,468,480,725,733 'instead':201 'instruct':269 'integr':222 'intent':699 'json':314,315,395,672,711,721 'latenc':456,636 'lifecycl':566 'line':50 'list':159,338,340,349,404,409 'listen':370 'local':127,177,292,441,449,628 'login':362 'logout':367 'manag':180,259,669 'markdown':19,58,272 'method':465 'microservic':117 'mock':130,236,450,454,629,633,689,695 'mode':385,401,532,654,692 'multipl':116,196,411 'name':210,281,317,373,420,604,624 'need':231 'no-build':285,299,424 'none':380,386,402 'note':666 'one':120,415,614 'openapi':8,53,72,128,323,412,512 'orders.yaml':620 'out-dir':282,421 'output':309,312,670,705,720 'overwrit':306 'owner':545,664 'pass':758 'path':212,293,319,378,442,462 'petstor':605,653,663 'petstore3.swagger.io':607,639 'petstore3.swagger.io/api/v3/openapi.json':606,638 'plain':702 'plain-text':701 'plus':330 'port':376,455,634 'posit':434 'powershel':477,485,493 'previous':164 'print':585,684,700 'privat':549 'product':45 'production-readi':44 'profil':348,351,354 'prompt':21,59,273,524,645,754 'provid':190,195 'public':548 'publish':264,536,544,656,662,736 'purg':502 'purge-sourc':501 'push':580 'quick':82 'rather':92 'raw':723 'read':739 'readi':46 'receiv':141 'releas':575 'remov':160,494,500,750 'repo':546 'repositori':560 'result':208 'reus':557 'reusabl':108 'run':223,234,247,262,626 'runtim':704 'sandbox/simulator':232 'scheme':363,368 'sdk':95 'secret':358,360 'server':131,451,630,691 'servic':611 'set':342,357 'shape':718 'shell':150,242,251,469,481,489 'signatur':384,400 'signature-mod':383,399 'simul':129 'skill':20,31,62,67,110,225,523,530,591,594,644,651,676,679 'skill-climate-generator' 'sourc':214,303,320,503,583 'source-disk0dancer' 'spec':11,118,191,197,332,413,612 'spec-awar':331 'specif':54 'start':446,448 'status':365 'stderr':713 'stdout':687 'structur':710 'success':311,674 'tabl':722 'tap':730 'target':391 'target-url':390 'test':133 'text':685,703 'titl':428 'token':552,743,745,748 'topic-agent-skill' 'topic-agent-skills' 'topic-ai-tools' 'topic-cli-generator' 'topic-openapi' 'tree':584 'tunnel':379 'turn':102 'two':610 'typic':596 'uninstal':171,488,513,518,753 'unless':755 'unset':346 'upgrad':162,505,511 'url':75,298,392,444,459,698 'usabl':89 'use':65,198,355 'user':69,84,99,112,124,135,148,156,168,194,219,230,240,255 'users.yaml':622 'version':322,431 'via':728 'visibl':547 'want':79,85,100,113,125,136,149,157,169,220,241,256 'webhook':144 'workflow':30,183,576 'write':94,565 'x':10,74 'yes':504,520,756 'zsh':475,483,491","prices":[{"id":"f0f7c51d-fff7-4ed6-a8b8-fa3de310c6eb","listingId":"bf3900fb-dbab-419e-ad82-9b6182d04716","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"disk0Dancer","category":"climate","install_from":"skills.sh"},"createdAt":"2026-05-18T13:22:22.486Z"}],"sources":[{"listingId":"bf3900fb-dbab-419e-ad82-9b6182d04716","source":"github","sourceId":"disk0Dancer/climate/climate-generator","sourceUrl":"https://github.com/disk0Dancer/climate/tree/main/skills/climate-generator","isPrimary":false,"firstSeenAt":"2026-05-18T13:22:22.486Z","lastSeenAt":"2026-05-18T19:14:30.990Z"}],"details":{"listingId":"bf3900fb-dbab-419e-ad82-9b6182d04716","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"disk0Dancer","slug":"climate-generator","github":{"repo":"disk0Dancer/climate","stars":6,"topics":["agent-skill","agent-skills","ai-tools","cli-generator","go","openapi"],"license":"apache-2.0","html_url":"https://github.com/disk0Dancer/climate","pushed_at":"2026-04-23T10:20:12Z","description":"mcp or rest? cli!","skill_md_sha":"10e2861c98d986848a4c3060c3566d0bb8b5a600","skill_md_path":"skills/climate-generator/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/disk0Dancer/climate/tree/main/skills/climate-generator"},"layout":"multi","source":"github","category":"climate","frontmatter":{"name":"climate-generator","license":"Apache-2.0","description":"Generate Go CLIs from OpenAPI 3.x specs with climate, inspect generated CLIs, and emit Markdown skill prompts so those CLIs can be attached to agent workflows.","compatibility":"Requires Go 1.21+ and climate CLI (brew install disk0Dancer/tap/climate)"},"skills_sh_url":"https://skills.sh/disk0Dancer/climate/climate-generator"},"updatedAt":"2026-05-18T19:14:30.990Z"}}