[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6WZAX8300NEPY3T1J8FRS3C":3,"skill-same:01M6WZAX8300NEPY3T1J8FRS3C":65},{"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":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":42,"commitSha":43,"skillDirectory":44,"forksCount":45,"repositoryHtmlUrl":46,"repositoryHomepageUrl":6,"ownerHtmlUrl":47,"ownerBlogUrl":48,"ownerDescription":49,"updatedAt":50,"install":51,"resources":64},"01M6WZAX8300NEPY3T1J8FRS3C","openspec-ff-change",null,"Fast-forward through OpenSpec artifact creation. Use when the user wants to quickly create all artifacts needed for implementation without stepping through each one individually.","huangjia2019\u002Fsdd-in-action","huangjia2019","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F48795276?v=4","01M6RVB2A5TS40SQTN843K74XF","Jia Huang (黄佳)","01M6RVB2DWAKV004CDR8A4QXCY",172,"MIT","https:\u002F\u002Fgithub.com\u002Fhuangjia2019\u002Fsdd-in-action\u002Fblob\u002Fmaster\u002Fweek3\u002Fcode\u002F.opencode\u002Fskills\u002Fopenspec-ff-change\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32],"change","openspec ff change","openspec","cli","create","artifacts","fast","user","use","implementation","artifact","creation","for","when","2026-11-10 10:12:30",false,"---\nname: openspec-ff-change\ndescription: Fast-forward through OpenSpec artifact creation. Use when the user wants to quickly create all artifacts needed for implementation without stepping through each one individually.\nlicense: MIT\ncompatibility: Requires openspec CLI.\nmetadata:\n  author: openspec\n  version: \"1.0\"\n  generatedBy: \"1.3.0\"\n---\n\nFast-forward through artifact creation - generate everything needed to start implementation in one go.\n\n**Input**: The user's request should include a change name (kebab-case) OR a description of what they want to build.\n\n**Steps**\n\n1. **If no clear input provided, ask what they want to build**\n\n   Use the **AskUserQuestion tool** (open-ended, no preset options) to ask:\n   > \"What change do you want to work on? Describe what you want to build or fix.\"\n\n   From their description, derive a kebab-case name (e.g., \"add user authentication\" → `add-user-auth`).\n\n   **IMPORTANT**: Do NOT proceed without understanding what the user wants to build.\n\n2. **Create the change directory**\n   ```bash\n   openspec new change \"\u003Cname>\"\n   ```\n   This creates a scaffolded change at `openspec\u002Fchanges\u002F\u003Cname>\u002F`.\n\n3. **Get the artifact build order**\n   ```bash\n   openspec status --change \"\u003Cname>\" --json\n   ```\n   Parse the JSON to get:\n   - `applyRequires`: array of artifact IDs needed before implementation (e.g., `[\"tasks\"]`)\n   - `artifacts`: list of all artifacts with their status and dependencies\n\n4. **Create artifacts in sequence until apply-ready**\n\n   Use the **TodoWrite tool** to track progress through the artifacts.\n\n   Loop through artifacts in dependency order (artifacts with no pending dependencies first):\n\n   a. **For each artifact that is `ready` (dependencies satisfied)**:\n      - Get instructions:\n        ```bash\n        openspec instructions \u003Cartifact-id> --change \"\u003Cname>\" --json\n        ```\n      - The instructions JSON includes:\n        - `context`: Project background (constraints for you - do NOT include in output)\n        - `rules`: Artifact-specific rules (constraints for you - do NOT include in output)\n        - `template`: The structure to use for your output file\n        - `instruction`: Schema-specific guidance for this artifact type\n        - `outputPath`: Where to write the artifact\n        - `dependencies`: Completed artifacts to read for context\n      - Read any completed dependency files for context\n      - Create the artifact file using `template` as the structure\n      - Apply `context` and `rules` as constraints - but do NOT copy them into the file\n      - Show brief progress: \"✓ Created \u003Cartifact-id>\"\n\n   b. **Continue until all `applyRequires` artifacts are complete**\n      - After creating each artifact, re-run `openspec status --change \"\u003Cname>\" --json`\n      - Check if every artifact ID in `applyRequires` has `status: \"done\"` in the artifacts array\n      - Stop when all `applyRequires` artifacts are done\n\n   c. **If an artifact requires user input** (unclear context):\n      - Use **AskUserQuestion tool** to clarify\n      - Then continue with creation\n\n5. **Show final status**\n   ```bash\n   openspec status --change \"\u003Cname>\"\n   ```\n\n**Output**\n\nAfter completing all artifacts, summarize:\n- Change name and location\n- List of artifacts created with brief descriptions\n- What's ready: \"All artifacts created! Ready for implementation.\"\n- Prompt: \"Run `\u002Fopsx-apply` or ask me to implement to start working on the tasks.\"\n\n**Artifact Creation Guidelines**\n\n- Follow the `instruction` field from `openspec instructions` for each artifact type\n- The schema defines what each artifact should contain - follow it\n- Read dependency artifacts for context before creating new ones\n- Use `template` as the structure for your output file - fill in its sections\n- **IMPORTANT**: `context` and `rules` are constraints for YOU, not content for the file\n  - Do NOT copy `\u003Ccontext>`, `\u003Crules>`, `\u003Cproject_context>` blocks into the artifact\n  - These guide what you write, but should never appear in the output\n\n**Guardrails**\n- Create ALL artifacts needed for implementation (as defined by schema's `apply.requires`)\n- Always read dependency artifacts before creating a new one\n- If context is critically unclear, ask the user - but prefer making reasonable decisions to keep momentum\n- If a change with that name already exists, suggest continuing that change instead\n- Verify each artifact file exists after writing before proceeding to next\n","Fast-forward through artifact creation - generate everything needed to start implementation in one go.\n\n**Input**: The user's request should include a change name (kebab-case) OR a description of what they want to build.\n\n**Steps**\n\n1. **If no clear input provided, ask what they want to build**\n\n   Use the **AskUserQuestion tool** (open-ended, no preset options) to ask:\n   > \"What change do you want to work on? Describe what you want to build or fix.\"\n\n   From their description, derive a kebab-case name (e.g., \"add user authentication\" → `add-user-auth`).\n\n   **IMPORTANT**: Do NOT proceed without understanding what the user wants to build.\n\n2. **Create the change directory**\n   ```bash\n   openspec new change \"\u003Cname>\"\n   ```\n   This creates a scaffolded change at `openspec\u002Fchanges\u002F\u003Cname>\u002F`.\n\n3. **Get the artifact build order**\n   ```bash\n   openspec status --change \"\u003Cname>\" --json\n   ```\n   Parse the JSON to get:\n   - `applyRequires`: array of artifact IDs needed before implementation (e.g., `[\"tasks\"]`)\n   - `artifacts`: list of all artifacts with their status and dependencies\n\n4. **Create artifacts in sequence until apply-ready**\n\n   Use the **TodoWrite tool** to track progress through the artifacts.\n\n   Loop through artifacts in dependency order (artifacts with no pending dependencies first):\n\n   a. **For each artifact that is `ready` (dependencies satisfied)**:\n      - Get instructions:\n        ```bash\n        openspec instructions \u003Cartifact-id> --change \"\u003Cname>\" --json\n        ```\n      - The instructions JSON includes:\n        - `context`: Project background (constraints for you - do NOT include in output)\n        - `rules`: Artifact-specific rules (constraints for you - do NOT include in output)\n        - `template`: The structure to use for your output file\n        - `instruction`: Schema-specific guidance for this artifact type\n        - `outputPath`: Where to write the artifact\n        - `dependencies`: Completed artifacts to read for context\n      - Read any completed dependency files for context\n      - Create the artifact file using `template` as the structure\n      - Apply `context` and `rules` as constraints - but do NOT copy them into the file\n      - Show brief progress: \"✓ Created \u003Cartifact-id>\"\n\n   b. **Continue until all `applyRequires` artifacts are complete**\n      - After creating each artifact, re-run `openspec status --change \"\u003Cname>\" --json`\n      - Check if every artifact ID in `applyRequires` has `status: \"done\"` in the artifacts array\n      - Stop when all `applyRequires` artifacts are done\n\n   c. **If an artifact requires user input** (unclear context):\n      - Use **AskUserQuestion tool** to clarify\n      - Then continue with creation\n\n5. **Show final status**\n   ```bash\n   openspec status --change \"\u003Cname>\"\n   ```\n\n**Output**\n\nAfter completing all artifacts, summarize:\n- Change name and location\n- List of artifacts created with brief descriptions\n- What's ready: \"All artifacts created! Ready for implementation.\"\n- Prompt: \"Run `\u002Fopsx-apply` or ask me to implement to start working on the tasks.\"\n\n**Artifact Creation Guidelines**\n\n- Follow the `instruction` field from `openspec instructions` for each artifact type\n- The schema defines what each artifact should contain - follow it\n- Read dependency artifacts for context before creating new ones\n- Use `template` as the structure for your output file - fill in its sections\n- **IMPORTANT**: `context` and `rules` are constraints for YOU, not content for the file\n  - Do NOT copy `\u003Ccontext>`, `\u003Crules>`, `\u003Cproject_context>` blocks into the artifact\n  - These guide what you write, but should never appear in the output\n\n**Guardrails**\n- Create ALL artifacts needed for implementation (as defined by schema's `apply.requires`)\n- Always read dependency artifacts before creating a new one\n- If context is critically unclear, ask the user - but prefer making reasonable decisions to keep momentum\n- If a change with that name already exists, suggest continuing that change instead\n- Verify each artifact file exists after writing before proceeding to next\n",{"name":5,"license":15,"metadata":38,"description":7,"compatibility":41},{"author":21,"version":39,"generatedBy":40},"1.0","1.3.0","Requires openspec CLI.","master","7ccc24b38f7cae09897ace41ebae14780250ac86","week3\u002Fcode\u002F.opencode\u002Fskills\u002Fopenspec-ff-change",60,"https:\u002F\u002Fgithub.com\u002Fhuangjia2019\u002Fsdd-in-action","https:\u002F\u002Fgithub.com\u002Fhuangjia2019","https:\u002F\u002Fkage-ai.com","AI researcher at A*STAR | Author of Designing AI Agents (Manning) | Co-founder of ADPS","2026-08-25 16:05:09",{"source":8,"skillName":5,"commands":52,"prompt":62,"zipAvailable":63},[53,56,59],{"tool":54,"command":55},"npx","npx skills add huangjia2019\u002Fsdd-in-action --skill openspec-ff-change",{"tool":57,"command":58},"bunx","bunx skills add huangjia2019\u002Fsdd-in-action --skill openspec-ff-change",{"tool":60,"command":61},"pnpm","pnpm dlx skills add huangjia2019\u002Fsdd-in-action --skill openspec-ff-change","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fhuangjia2019\u002Fsdd-in-action\u002Fblob\u002Fmaster\u002Fweek3\u002Fcode\u002F.opencode\u002Fskills\u002Fopenspec-ff-change\u002FSKILL.md",true,[],[66,81,96,112,127,140],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":72,"publishedAt":33},"01M6WZBHKBA02YT2SHSACNJR91","openspec-verify-change","Verify implementation matches change artifacts. Use when the user wants to validate that implementation is complete, correct, and coherent before archiving.","https:\u002F\u002Fgithub.com\u002Fhuangjia2019\u002Fsdd-in-action\u002Fblob\u002Fmaster\u002Fweek3\u002Fcode\u002F.opencode\u002Fskills\u002Fopenspec-verify-change\u002FSKILL.md",[],[19,73,74,75,21,76,32,77,78,79,28,27,26,80,24,22],"openspec verify change","verify","verify change","validate","complete","verify implementation","coherent","correct",{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":33},"01M6WZBEQRPC45MDYVPMG17X89","openspec-sync-specs","Sync delta specs from a change to main specs. Use when the user wants to update main specs with changes from a delta spec, without archiving the change.","https:\u002F\u002Fgithub.com\u002Fhuangjia2019\u002Fsdd-in-action\u002Fblob\u002Fmaster\u002Fweek3\u002Fcode\u002F.opencode\u002Fskills\u002Fopenspec-sync-specs\u002FSKILL.md",[],[21,88,89,19,90,22,91,32,92,93,94,95,27,26],"openspec sync specs","sync","spec","update","changes","with","main","delta",{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":102,"publishedAt":33},"01M6WZBA2QKBW10Z1ZYA4K2AV9","openspec-propose","Propose a new change with all artifacts generated in one step. Use when the user wants to quickly describe what they want to build and get a complete proposal with design, specs, and tasks ready for implementation.","https:\u002F\u002Fgithub.com\u002Fhuangjia2019\u002Fsdd-in-action\u002Fblob\u002Fmaster\u002Fweek3\u002Fcode\u002F.opencode\u002Fskills\u002Fopenspec-propose\u002FSKILL.md",[],[21,103,93,32,104,31,27,105,77,106,107,28,108,19,26,24,109,22,110,111],"openspec propose","describe","proposal","get","build","ready","tasks","design","generated",{"skillNo":113,"name":114,"nameZh":6,"description":115,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":116,"categories":117,"keywords":118,"publishedAt":33},"01M6WZB3J0FJQJ0WSW9EK6447P","openspec-onboard","Guided onboarding for OpenSpec - walk through a complete workflow cycle with narration and real codebase work.","https:\u002F\u002Fgithub.com\u002Fhuangjia2019\u002Fsdd-in-action\u002Fblob\u002Fmaster\u002Fweek3\u002Fcode\u002F.opencode\u002Fskills\u002Fopenspec-onboard\u002FSKILL.md",[],[21,119,120,121,122,31,93,77,123,124,125,126,22],"onboard","openspec onboard","cycle","codebase","narration","work","onboarding","workflow",{"skillNo":128,"name":129,"nameZh":6,"description":130,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":131,"categories":132,"keywords":133,"publishedAt":33},"01M6WZAZX6QSAV79619M68K8N1","openspec-new-change","Start a new OpenSpec change using the experimental artifact workflow. Use when the user wants to create a new feature, fix, or modification with a structured step-by-step approach.","https:\u002F\u002Fgithub.com\u002Fhuangjia2019\u002Fsdd-in-action\u002Fblob\u002Fmaster\u002Fweek3\u002Fcode\u002F.opencode\u002Fskills\u002Fopenspec-new-change\u002FSKILL.md",[],[134,19,21,27,135,136,26,137,23,126,22,29,32,93,138,139],"openspec new change","new feature","fix","start","feature","structured",{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":144,"categories":145,"keywords":146,"publishedAt":33},"01M6WZAT3BM9W7SKVTKN2P894M","openspec-explore","Enter explore mode - a thinking partner for exploring ideas, investigating problems, and clarifying requirements. Use when the user wants to think through something before or during a change.","https:\u002F\u002Fgithub.com\u002Fhuangjia2019\u002Fsdd-in-action\u002Fblob\u002Fmaster\u002Fweek3\u002Fcode\u002F.opencode\u002Fskills\u002Fopenspec-explore\u002FSKILL.md",[],[21,147,148,149,32,31,150,151,152,153,154,155,27,26,19,22],"explore","openspec explore","mode","partner","requirements","ideas","thinking","thinking partner","think"]