[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71Q7F9VC6CNZS1K54B12YCE":3,"skill-same:01M71Q7F9VC6CNZS1K54B12YCE":71},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":32,"linkOnly":33,"markdownContent":34,"markdownBody":35,"frontMatter":36,"refName":37,"commitSha":38,"skillDirectory":39,"forksCount":40,"repositoryHtmlUrl":41,"repositoryHomepageUrl":42,"ownerHtmlUrl":43,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":44,"install":45,"resources":58},"01M71Q7F9VC6CNZS1K54B12YCE","wizard",null,"生成一个交互式 bash wizard，逐步引导人完成只有他们能执行的手动流程。用于 provisioning 基础设施、设置 credentials 或 CI secrets、走查不熟悉的第三方 dashboard，或运行一次性 migration 或 cutover。对于 agent 自己就能执行的步骤，不要调用它。","vinvcn\u002Fmattpocock-skills-zh-CN","vinvcn","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F120928190?v=4","01M71Q60C4V98DEXHGN2VXFSZB","01M71Q60D6PRAJHKQRY33ZNE59",5765,"MIT","https:\u002F\u002Fgithub.com\u002Fvinvcn\u002Fmattpocock-skills-zh-CN\u002Fblob\u002Fmain\u002Fskills\u002Fengineering\u002Fwizard\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[5,23,24,25,26,27,28,29,30,31],"dashboard","ci","provisioning","credentials","secrets","Bash","生成","migration","交互","2026-11-10 13:02:02",false,"---\nname: wizard\ndescription: 生成一个交互式 bash wizard，逐步引导人完成只有他们能执行的手动流程。用于 provisioning 基础设施、设置 credentials 或 CI secrets、走查不熟悉的第三方 dashboard，或运行一次性 migration 或 cutover。对于 agent 自己就能执行的步骤，不要调用它。\n---\n\n# Wizard\n\n**wizard** 是一个 bash 脚本，它一步一步引导人完成一项手动流程：这类流程手动做很繁琐，每次重新向 AI 解释一遍也很繁琐。它会打开每个 URL，准确说明该点什么、该复制什么，捕获这些值，把它们写到该去的地方（`.env`、GitHub secrets），在每个阶段确认，并显示还剩多少个阶段。它可能用于配置第三方服务、运行一次性 migration，或把项目从一种状态迁移到另一种状态。\n\n出色的 UX 已经由 [template.sh](template.sh) 解决：逐阶段的进度、confirmation gates、跨平台 URL 打开（含 WSL）、隐藏的 secret 输入、幂等的 `.env` upserts、`gh secret`\u002F`gh variable` 写入，以及收尾 summary。**你的工作只是确定流程范围并编写它的各个 stage。** `STAGES` 标记之上的 library 在每个 wizard 中都完全相同；这种一致性正是重点：永远不要手动编辑它。\n\nWizard 默认是临时的：为单次运行而构建，保存到 scratch 或 `scripts\u002F` 路径，任务完成后删除。只有当用户想要一条应留在 repo 中的可重复 setup 路径时，才 commit 它。\n\n## 流程\n\n### 1. 界定流程范围\n\n梳理出人必须执行的每一个手动步骤，以及沿途捕获的每一个值。先读 repo，不要凭空发问：\n\n- 对于 setup：`.env`、`.env.example`、`.env.*`、`README`、`docker-compose*`、framework config，以及 `.github\u002Fworkflows\u002F*`（每一处 `secrets.*` \u002F `vars.*` 引用都是 wizard 必须产出的一个值）。\n- 对于 migration 或 transition：当前状态、目标状态，以及两者之间不可逆的操作。\n\n然后向用户展示有序的 stages 列表以及每个 stage 产出的值，并确认：他们可能增删或重新排序。\n\n**Done when:** 每个 stage 都按顺序命名，并且对于每个捕获的值，你知道 (a) 人从哪里获取它，(b) 它写到哪里（`.env`、一个 GitHub secret、两者，或都不写；有些 stage 是纯操作），以及 (c) 它是 secret（隐藏输入）还是 public。\n\n### 2. 描绘每个 stage 的路径\n\n对于每个 stage，写出人遵循的精确路径：打开哪个 URL、在那里做什么、值在哪里显示、它填充哪个变量，例如 \"Dashboard → Developers → API keys → Reveal test key → copy\"。在你确实不知道当前 UI 或确切命令的地方，如实说明并询问用户或查阅文档：永远不要编造可能不存在的步骤。\n\n**Done when:** 每个 stage 都能追溯到陌生人也能照做的具体指令。\n\n### 3. 编写 wizard\n\n把 `template.sh` 复制到目标路径。用每个步骤一个 `stage` 替换示例 stage，按依赖顺序排列。使用 library helpers（`stage`、`say`\u002F`step`、`open_url`、`ask`\u002F`ask_secret`、`write_env`、`set_secret`\u002F`set_var`、`pause`\u002F`confirm`），并把 `TOTAL_STAGES` 设为你编写的 stage 数量。\n\n守住 template 设定的标准：在索取某个 URL 的值之前先打开它，对任何 secret 使用 `ask_secret`，对每个持久化的值使用 `write_env`，只对 CI 确实需要的值使用 `set_secret`，并在任何不可逆操作之前 `confirm`。每个 `stage` 都会清屏，因此只显示当前步骤：让一个 stage 只聚焦一项任务，这样人需要的内容就不会滚出视野。不要触碰标记之上的 library。\n\n### 4. 验证并交接\n\n- `bash -n \u003Cscript>`；如果可用则运行 `shellcheck`。\n- `chmod +x \u003Cscript>`。\n- 不要自己端到端运行它：它会打开浏览器并阻塞在人的输入上。改为静态追踪：step 1 中的每个值都被捕获并落到 step 1 所说的位置，并且每个 `set_secret` 名称都与 CI 中的某处 `secrets.*` 引用精确匹配。\n- 告诉用户如何运行它。如果它是一条可重复的 setup 路径，就 commit 它并从 README 链接过去，让下一个人运行脚本而不是询问 AI。","# Wizard\n\n**wizard** 是一个 bash 脚本，它一步一步引导人完成一项手动流程：这类流程手动做很繁琐，每次重新向 AI 解释一遍也很繁琐。它会打开每个 URL，准确说明该点什么、该复制什么，捕获这些值，把它们写到该去的地方（`.env`、GitHub secrets），在每个阶段确认，并显示还剩多少个阶段。它可能用于配置第三方服务、运行一次性 migration，或把项目从一种状态迁移到另一种状态。\n\n出色的 UX 已经由 [template.sh](template.sh) 解决：逐阶段的进度、confirmation gates、跨平台 URL 打开（含 WSL）、隐藏的 secret 输入、幂等的 `.env` upserts、`gh secret`\u002F`gh variable` 写入，以及收尾 summary。**你的工作只是确定流程范围并编写它的各个 stage。** `STAGES` 标记之上的 library 在每个 wizard 中都完全相同；这种一致性正是重点：永远不要手动编辑它。\n\nWizard 默认是临时的：为单次运行而构建，保存到 scratch 或 `scripts\u002F` 路径，任务完成后删除。只有当用户想要一条应留在 repo 中的可重复 setup 路径时，才 commit 它。\n\n## 流程\n\n### 1. 界定流程范围\n\n梳理出人必须执行的每一个手动步骤，以及沿途捕获的每一个值。先读 repo，不要凭空发问：\n\n- 对于 setup：`.env`、`.env.example`、`.env.*`、`README`、`docker-compose*`、framework config，以及 `.github\u002Fworkflows\u002F*`（每一处 `secrets.*` \u002F `vars.*` 引用都是 wizard 必须产出的一个值）。\n- 对于 migration 或 transition：当前状态、目标状态，以及两者之间不可逆的操作。\n\n然后向用户展示有序的 stages 列表以及每个 stage 产出的值，并确认：他们可能增删或重新排序。\n\n**Done when:** 每个 stage 都按顺序命名，并且对于每个捕获的值，你知道 (a) 人从哪里获取它，(b) 它写到哪里（`.env`、一个 GitHub secret、两者，或都不写；有些 stage 是纯操作），以及 (c) 它是 secret（隐藏输入）还是 public。\n\n### 2. 描绘每个 stage 的路径\n\n对于每个 stage，写出人遵循的精确路径：打开哪个 URL、在那里做什么、值在哪里显示、它填充哪个变量，例如 \"Dashboard → Developers → API keys → Reveal test key → copy\"。在你确实不知道当前 UI 或确切命令的地方，如实说明并询问用户或查阅文档：永远不要编造可能不存在的步骤。\n\n**Done when:** 每个 stage 都能追溯到陌生人也能照做的具体指令。\n\n### 3. 编写 wizard\n\n把 `template.sh` 复制到目标路径。用每个步骤一个 `stage` 替换示例 stage，按依赖顺序排列。使用 library helpers（`stage`、`say`\u002F`step`、`open_url`、`ask`\u002F`ask_secret`、`write_env`、`set_secret`\u002F`set_var`、`pause`\u002F`confirm`），并把 `TOTAL_STAGES` 设为你编写的 stage 数量。\n\n守住 template 设定的标准：在索取某个 URL 的值之前先打开它，对任何 secret 使用 `ask_secret`，对每个持久化的值使用 `write_env`，只对 CI 确实需要的值使用 `set_secret`，并在任何不可逆操作之前 `confirm`。每个 `stage` 都会清屏，因此只显示当前步骤：让一个 stage 只聚焦一项任务，这样人需要的内容就不会滚出视野。不要触碰标记之上的 library。\n\n### 4. 验证并交接\n\n- `bash -n \u003Cscript>`；如果可用则运行 `shellcheck`。\n- `chmod +x \u003Cscript>`。\n- 不要自己端到端运行它：它会打开浏览器并阻塞在人的输入上。改为静态追踪：step 1 中的每个值都被捕获并落到 step 1 所说的位置，并且每个 `set_secret` 名称都与 CI 中的某处 `secrets.*` 引用精确匹配。\n- 告诉用户如何运行它。如果它是一条可重复的 setup 路径，就 commit 它并从 README 链接过去，让下一个人运行脚本而不是询问 AI。",{"name":5,"description":7},"main","c5c5e87cc1df26aeb7dba345ad9f846434d2b3d4","skills\u002Fengineering\u002Fwizard",448,"https:\u002F\u002Fgithub.com\u002Fvinvcn\u002Fmattpocock-skills-zh-CN","https:\u002F\u002Fskills.sh\u002Fvinvcn\u002Fmattpocock-skills-zh-CN","https:\u002F\u002Fgithub.com\u002Fvinvcn","2026-11-10 17:40:42",{"source":8,"skillName":5,"commands":46,"prompt":56,"zipAvailable":57},[47,50,53],{"tool":48,"command":49},"npx","npx skills add vinvcn\u002Fmattpocock-skills-zh-CN --skill wizard",{"tool":51,"command":52},"bunx","bunx skills add vinvcn\u002Fmattpocock-skills-zh-CN --skill wizard",{"tool":54,"command":55},"pnpm","pnpm dlx skills add vinvcn\u002Fmattpocock-skills-zh-CN --skill wizard","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fvinvcn\u002Fmattpocock-skills-zh-CN\u002Fblob\u002Fmain\u002Fskills\u002Fengineering\u002Fwizard\u002FSKILL.md",true,[59,65],{"path":60,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":63,"sourceHtmlUrl":64},"agents\u002Fopenai.yaml","REFERENCE","参考文档",87,"https:\u002F\u002Fgithub.com\u002Fvinvcn\u002Fmattpocock-skills-zh-CN\u002Fblob\u002Fmain\u002Fskills\u002Fengineering\u002Fwizard\u002Fagents\u002Fopenai.yaml",{"path":66,"resourceType":67,"resourceTypeDesc":68,"sizeBytes":69,"sourceHtmlUrl":70},"template.sh","SCRIPT","脚本",9498,"https:\u002F\u002Fgithub.com\u002Fvinvcn\u002Fmattpocock-skills-zh-CN\u002Fblob\u002Fmain\u002Fskills\u002Fengineering\u002Fwizard\u002Ftemplate.sh",[72,92,102,112,122,131],{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":87,"publishedAt":32},"01M71Q8F3M8YFP6WYVYQP61KBT","writing-for-agents","为 agent 编写文档。适用于创建或编辑 skills，或修改 AGENTS.md 或 CLAUDE.md 时。","https:\u002F\u002Fgithub.com\u002Fvinvcn\u002Fmattpocock-skills-zh-CN\u002Fblob\u002Fmain\u002Fskills\u002Fproductivity\u002Fwriting-for-agents\u002FSKILL.md",[78,81,82],{"categoryNo":79,"categoryName":80,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},{"categoryNo":83,"categoryName":84,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[88,89,90,91],"for","writing for agents","writing","文档",{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":98,"publishedAt":32},"01M71Q8DHRPYE6R648CQ7NAHYN","wait-what","停一下：刚才那条消息没有说清楚，重新表述一遍。","https:\u002F\u002Fgithub.com\u002Fvinvcn\u002Fmattpocock-skills-zh-CN\u002Fblob\u002Fmain\u002Fskills\u002Fproductivity\u002Fwait-what\u002FSKILL.md",[],[99,100,101],"wait","wait what","true",{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"publishedAt":32},"01M71Q8C8CBSRJRP8Y0JRZ7RJ7","to-questionnaire","把你无法完整回答的 decision 转成一份交给他人填写的 questionnaire。","https:\u002F\u002Fgithub.com\u002Fvinvcn\u002Fmattpocock-skills-zh-CN\u002Fblob\u002Fmain\u002Fskills\u002Fproductivity\u002Fto-questionnaire\u002FSKILL.md",[],[109,110,111,101],"questionnaire","to questionnaire","decision",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":121,"publishedAt":32},"01M71Q8ASS9A6P84PSC02YFKHB","teach","在这个工作区中教用户一个新技能或概念。","https:\u002F\u002Fgithub.com\u002Fvinvcn\u002Fmattpocock-skills-zh-CN\u002Fblob\u002Fmain\u002Fskills\u002Fproductivity\u002Fteach\u002FSKILL.md",[118],{"categoryNo":119,"categoryName":120,"taxonomyType":85,"taxonomyTypeDesc":86},"01JBSEEDCAT000000000000039","教师与教育",[114,101],{"skillNo":123,"name":124,"nameZh":6,"description":125,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":126,"categories":127,"keywords":128,"publishedAt":32},"01M71Q89C2C2QRR3J3H64ZKH0P","handoff","把当前对话压缩成交接文档，让另一个代理接手。","https:\u002F\u002Fgithub.com\u002Fvinvcn\u002Fmattpocock-skills-zh-CN\u002Fblob\u002Fmain\u002Fskills\u002Fproductivity\u002Fhandoff\u002FSKILL.md",[],[124,101,129,130,91],"对话","压缩",{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":137,"publishedAt":32},"01M71Q883CXWF0BGDQC3Y8TJZ2","grilling","围绕计划、decision 或 idea 持续追问用户。适用于用户想对自己的思路做压力测试，或使用任何 “grill” 触发措辞时。","https:\u002F\u002Fgithub.com\u002Fvinvcn\u002Fmattpocock-skills-zh-CN\u002Fblob\u002Fmain\u002Fskills\u002Fproductivity\u002Fgrilling\u002FSKILL.md",[],[133,138,139,111,140],"idea","grill","testing"]