[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71P45SNCD7DDSA6FRVCPA17":3,"skill-same:01M71P45SNCD7DDSA6FRVCPA17":78},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":43,"commitSha":44,"skillDirectory":45,"forksCount":46,"repositoryHtmlUrl":47,"repositoryHomepageUrl":6,"ownerHtmlUrl":48,"ownerBlogUrl":49,"ownerDescription":50,"updatedAt":51,"install":52,"resources":65},"01M71P45SNCD7DDSA6FRVCPA17","wizard",null,"Generate an interactive bash wizard that walks a human through steps only they can perform. Use when provisioning infrastructure, setting up credentials or CI secrets, walking an unfamiliar third-party dashboard, or running a one-off migration or cutover. Don't invoke this for steps the agent can perform itself.","drsh4dow\u002Fpi-setup","drsh4dow","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F45247070?v=4","01M71P068NASGHSWS11VWW416N","Daniel Moretti","01M71P0698BH81N65NP04X9NVN",10,"MIT","https:\u002F\u002Fgithub.com\u002Fdrsh4dow\u002Fpi-setup\u002Fblob\u002Fmain\u002Fagent\u002Fskills\u002Fwizard\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"provisioning infrastructure","one","setting","running","when","invoke","for","can","false","human","dashboard","up","only","use","interactive","Bash","credentials","ci","generate","2026-11-10 10:56:23",false,"---\nname: wizard\ndescription: Generate an interactive bash wizard that walks a human through steps only they can perform. Use when provisioning infrastructure, setting up credentials or CI secrets, walking an unfamiliar third-party dashboard, or running a one-off migration or cutover. Don't invoke this for steps the agent can perform itself.\ndisable-model-invocation: false\nuser-invokable: false\n---\n\n# Wizard\n\nA **wizard** is a bash script that walks a human, step by step, through a manual procedure that's tedious to do by hand and tedious to re-explain to an AI every time. It opens each URL, says exactly what to click and copy, captures the values, writes them where they belong (`.env`, GitHub secrets), confirms at every stage, and shows how many stages are left. It might configure third-party services, run a one-off migration, or move the project from one state to another.\n\nThe delightful UX is already solved by [template.sh](template.sh): stage-by-stage progress, confirmation gates, cross-platform URL opening (including WSL), hidden secret entry, idempotent `.env` upserts, `gh secret`\u002F`gh variable` writes, and a closing summary. **Your job is only to scope the procedure and author its stages.** The library above the `STAGES` marker is identical in every wizard; that consistency is the point: never hand-edit it.\n\nA wizard is ephemeral by default: built for one run, saved to a scratch or `scripts\u002F` path, deleted when the job's done. Commit it only when the user wants a repeatable setup path that should live in the repo.\n\n## Process\n\n### 1. Scope the procedure\n\nWork out every manual step the human must take and every value that gets captured along the way. Read the repo first, don't ask cold:\n\n- For setup: `.env`, `.env.example`, `.env.*`, `README`, `docker-compose*`, framework config, and `.github\u002Fworkflows\u002F*` (every `secrets.*` \u002F `vars.*` reference is a value the wizard must produce).\n- For a migration or transition: the current state, the target state, and the irreversible actions between them.\n\nThen show the user the ordered list of stages and the values each produces, and confirm: they may add, drop, or reorder.\n\n**Done when:** every stage is named in order, and for each captured value you know (a) where the human gets it, (b) where it's written (`.env`, a GitHub secret, both, or nowhere; some stages are pure actions), and (c) whether it's secret (hidden entry) or public.\n\n### 2. Map each stage's journey\n\nFor each stage, write the precise path a human follows: which URL to open, what to do there, where a value is shown, which variable it fills: e.g. \"Dashboard → Developers → API keys → Reveal test key → copy\". Where you don't actually know the current UI or the exact command, say so and ask the user or check the docs: never invent steps that may not exist.\n\n**Done when:** every stage traces to concrete instructions a stranger could follow.\n\n### 3. Author the wizard\n\nCopy `template.sh` to the target path. Replace the example stage with one `stage` per step, in dependency order. Use the library helpers: `stage`, `say`\u002F`step`, `open_url`, `ask`\u002F`ask_secret`, `write_env`, `set_secret`\u002F`set_var`, `pause`\u002F`confirm`. Set `TOTAL_STAGES` to the number of stages you wrote.\n\nHold the bar the template sets: open the URL before asking for its value, use `ask_secret` for anything secret, `write_env` every persisted value, `set_secret` only the values CI actually needs, and `confirm` before any irreversible action. Each `stage` clears the screen so only the current step is visible: keep a stage to one focused task so nothing the human needs scrolls away. Don't touch the library above the marker.\n\n### 4. Verify and hand off\n\n- `bash -n \u003Cscript>`; run `shellcheck` if available.\n- `chmod +x \u003Cscript>`.\n- Don't run it end-to-end yourself: it opens browsers and blocks on human input. Trace it statically instead: every value from step 1 is captured and lands where step 1 said, and every `set_secret` name exactly matches a `secrets.*` reference in CI.\n- Tell the user how to run it. If it's a repeatable setup path, commit it and link it from the README so the next person runs the script instead of asking an AI.\n","# Wizard\n\nA **wizard** is a bash script that walks a human, step by step, through a manual procedure that's tedious to do by hand and tedious to re-explain to an AI every time. It opens each URL, says exactly what to click and copy, captures the values, writes them where they belong (`.env`, GitHub secrets), confirms at every stage, and shows how many stages are left. It might configure third-party services, run a one-off migration, or move the project from one state to another.\n\nThe delightful UX is already solved by [template.sh](template.sh): stage-by-stage progress, confirmation gates, cross-platform URL opening (including WSL), hidden secret entry, idempotent `.env` upserts, `gh secret`\u002F`gh variable` writes, and a closing summary. **Your job is only to scope the procedure and author its stages.** The library above the `STAGES` marker is identical in every wizard; that consistency is the point: never hand-edit it.\n\nA wizard is ephemeral by default: built for one run, saved to a scratch or `scripts\u002F` path, deleted when the job's done. Commit it only when the user wants a repeatable setup path that should live in the repo.\n\n## Process\n\n### 1. Scope the procedure\n\nWork out every manual step the human must take and every value that gets captured along the way. Read the repo first, don't ask cold:\n\n- For setup: `.env`, `.env.example`, `.env.*`, `README`, `docker-compose*`, framework config, and `.github\u002Fworkflows\u002F*` (every `secrets.*` \u002F `vars.*` reference is a value the wizard must produce).\n- For a migration or transition: the current state, the target state, and the irreversible actions between them.\n\nThen show the user the ordered list of stages and the values each produces, and confirm: they may add, drop, or reorder.\n\n**Done when:** every stage is named in order, and for each captured value you know (a) where the human gets it, (b) where it's written (`.env`, a GitHub secret, both, or nowhere; some stages are pure actions), and (c) whether it's secret (hidden entry) or public.\n\n### 2. Map each stage's journey\n\nFor each stage, write the precise path a human follows: which URL to open, what to do there, where a value is shown, which variable it fills: e.g. \"Dashboard → Developers → API keys → Reveal test key → copy\". Where you don't actually know the current UI or the exact command, say so and ask the user or check the docs: never invent steps that may not exist.\n\n**Done when:** every stage traces to concrete instructions a stranger could follow.\n\n### 3. Author the wizard\n\nCopy `template.sh` to the target path. Replace the example stage with one `stage` per step, in dependency order. Use the library helpers: `stage`, `say`\u002F`step`, `open_url`, `ask`\u002F`ask_secret`, `write_env`, `set_secret`\u002F`set_var`, `pause`\u002F`confirm`. Set `TOTAL_STAGES` to the number of stages you wrote.\n\nHold the bar the template sets: open the URL before asking for its value, use `ask_secret` for anything secret, `write_env` every persisted value, `set_secret` only the values CI actually needs, and `confirm` before any irreversible action. Each `stage` clears the screen so only the current step is visible: keep a stage to one focused task so nothing the human needs scrolls away. Don't touch the library above the marker.\n\n### 4. Verify and hand off\n\n- `bash -n \u003Cscript>`; run `shellcheck` if available.\n- `chmod +x \u003Cscript>`.\n- Don't run it end-to-end yourself: it opens browsers and blocks on human input. Trace it statically instead: every value from step 1 is captured and lands where step 1 said, and every `set_secret` name exactly matches a `secrets.*` reference in CI.\n- Tell the user how to run it. If it's a repeatable setup path, commit it and link it from the README so the next person runs the script instead of asking an AI.\n",{"name":5,"description":7,"user-invokable":39,"disable-model-invocation":39},"main","f7936596c1ba2e1472dadccc3f111b9d517fa96c","agent\u002Fskills\u002Fwizard",2,"https:\u002F\u002Fgithub.com\u002Fdrsh4dow\u002Fpi-setup","https:\u002F\u002Fgithub.com\u002Fdrsh4dow","https:\u002F\u002Fdanielmoretti.com\u002F","Toss A Coin To Your Witcher :pirate_flag: ","2026-11-03 22:13:53",{"source":8,"skillName":5,"commands":53,"prompt":63,"zipAvailable":64},[54,57,60],{"tool":55,"command":56},"npx","npx skills add drsh4dow\u002Fpi-setup --skill wizard",{"tool":58,"command":59},"bunx","bunx skills add drsh4dow\u002Fpi-setup --skill wizard",{"tool":61,"command":62},"pnpm","pnpm dlx skills add drsh4dow\u002Fpi-setup --skill wizard","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fdrsh4dow\u002Fpi-setup\u002Fblob\u002Fmain\u002Fagent\u002Fskills\u002Fwizard\u002FSKILL.md",true,[66,72],{"path":67,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"agents\u002Fopenai.yaml","REFERENCE","参考文档",96,"https:\u002F\u002Fgithub.com\u002Fdrsh4dow\u002Fpi-setup\u002Fblob\u002Fmain\u002Fagent\u002Fskills\u002Fwizard\u002Fagents\u002Fopenai.yaml",{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},"template.sh","SCRIPT","脚本",9960,"https:\u002F\u002Fgithub.com\u002Fdrsh4dow\u002Fpi-setup\u002Fblob\u002Fmain\u002Fagent\u002Fskills\u002Fwizard\u002Ftemplate.sh",[79,98,128,145,166,177],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":85,"publishedAt":38},"01M71P4GPJMBK21BTZBKY9T8EE","changelog","Write the changelog entry for a pull request. Use when a PR changes behavior that users, operators, or integrators can notice.","https:\u002F\u002Fgithub.com\u002Fdrsh4dow\u002Fpi-setup\u002Fblob\u002Fmain\u002Fevals\u002Fharness-lessons\u002Ffixtures\u002Fchangelog-skill\u002FSKILL.md",[],[81,86,87,26,23,32,88,89,90,91,25,92,93,94,95,96,97],"operators","changelog entry","write","entry","behavior","request","pull request","pr","changes","notice","pull","users",{"skillNo":99,"name":100,"nameZh":6,"description":101,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":114,"publishedAt":38},"01M71P4E9AZM56JBY227P2G1SC","writing-good-tickets","Write, file, or update an issue or ticket that an agent or a developer can take to one PR. Use when filing a bug or feature, updating an issue, or breaking a plan into tickets.","https:\u002F\u002Fgithub.com\u002Fdrsh4dow\u002Fpi-setup\u002Fblob\u002Fmain\u002Fagent\u002Fskills\u002Fwriting-good-tickets\u002FSKILL.md",[104,109],{"categoryNo":105,"categoryName":106,"taxonomyType":107,"taxonomyTypeDesc":108},"01JBSEEDCAT000000000000018","写作与文案","SCENARIO","使用场景",{"categoryNo":110,"categoryName":111,"taxonomyType":112,"taxonomyTypeDesc":113},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[115,116,117,118,119,120,32,27,23,121,20,122,123,93,26,124,125,88,126,127],"writing good tickets","tickets","writing","good","filing","ticket","file","bug","feature","issue","take","update","plan",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":136,"publishedAt":38},"01M71P4C0B0DXTRRSG9RA6Y687","writing-good-prs","Write or update a pull request title and body that a reviewer can trust and own. Use when opening a PR or editing its description.","https:\u002F\u002Fgithub.com\u002Fdrsh4dow\u002Fpi-setup\u002Fblob\u002Fmain\u002Fagent\u002Fskills\u002Fwriting-good-prs\u002FSKILL.md",[134,135],{"categoryNo":105,"categoryName":106,"taxonomyType":107,"taxonomyTypeDesc":108},{"categoryNo":110,"categoryName":111,"taxonomyType":112,"taxonomyTypeDesc":113},[118,137,117,138,139,140,88,126,27,96,92,141,142,26,23,32,143,93,144,91],"prs","writing good prs","body","opening a pr","title","reviewer","editing","trust",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":153,"publishedAt":38},"01M71P49D1AG2MR6AYNPMMT34Z","writing-good-commits","Write or reword a git commit message and size the commit it describes. Use when committing, or when reshaping commits during a rebase.","https:\u002F\u002Fgithub.com\u002Fdrsh4dow\u002Fpi-setup\u002Fblob\u002Fmain\u002Fagent\u002Fskills\u002Fwriting-good-commits\u002FSKILL.md",[151,152],{"categoryNo":105,"categoryName":106,"taxonomyType":107,"taxonomyTypeDesc":108},{"categoryNo":110,"categoryName":111,"taxonomyType":112,"taxonomyTypeDesc":113},[154,117,118,155,156,88,157,158,159,160,161,162,23,163,164,27,32,165],"writing good commits","commits","git commit message","size","message","git","it","commit","committing","commit message","rebase","git commit",{"skillNo":167,"name":168,"nameZh":6,"description":169,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":170,"categories":171,"keywords":174,"publishedAt":38},"01M71P480BDE55JMPVVEBCFS7P","writing-for-agents","Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.","https:\u002F\u002Fgithub.com\u002Fdrsh4dow\u002Fpi-setup\u002Fblob\u002Fmain\u002Fagent\u002Fskills\u002Fwriting-for-agents\u002FSKILL.md",[172,173],{"categoryNo":105,"categoryName":106,"taxonomyType":107,"taxonomyTypeDesc":108},{"categoryNo":110,"categoryName":111,"taxonomyType":112,"taxonomyTypeDesc":113},[175,117,25,23,176,27,32,143],"writing for agents","documents",{"skillNo":178,"name":179,"nameZh":6,"description":180,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":181,"categories":182,"keywords":183,"publishedAt":38},"01M71P43DNNPQ67NY6G4XQQM50","why","Use for 'why does X work this way', 'why we picked Y', design rationale, regressions, postmortems, or data-backed thresholds. Use how for runtime behavior.","https:\u002F\u002Fgithub.com\u002Fdrsh4dow\u002Fpi-setup\u002Fblob\u002Fmain\u002Fagent\u002Fskills\u002Fwhy\u002FSKILL.md",[],[179,184,185,90,186,187,27,32,188,189,25,190],"data","rationale","how","work","design","runtime","thresholds"]