[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6H5H34AAF9GRPFQPC2VJVV6":3,"skill-same:01M6H5H34AAF9GRPFQPC2VJVV6":59},{"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":17,"publishedAt":30,"linkOnly":31,"markdownContent":32,"markdownBody":33,"frontMatter":34,"refName":40,"commitSha":41,"skillDirectory":5,"forksCount":13,"repositoryHtmlUrl":42,"repositoryHomepageUrl":6,"ownerHtmlUrl":43,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":44,"install":45,"resources":58},"01M6H5H34AAF9GRPFQPC2VJVV6","openspec-archive-change",null,"Archive a completed change in the experimental workflow. Use when the user wants to finalize and archive a change after implementation is complete.","cookeyholder\u002Fusing-ai-skills","cookeyholder","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F75561931?v=4","01M6H58KRK3MSWHTTB1Y7Q82A1","01M6H58KX5T98CH5KGFGG3K0WJ",0,"MIT","https:\u002F\u002Fgithub.com\u002Fcookeyholder\u002Fusing-ai-skills\u002Fblob\u002Fmain\u002Fopenspec-archive-change\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29],"change","openspec archive change","archive","openspec","cli","workflow","Bash","user","use","implementation","complete","when","2026-11-10 10:12:30",false,"---\nname: openspec-archive-change\ndescription: Archive a completed change in the experimental workflow. Use when the user wants to finalize and archive a change after implementation is complete.\nallowed-tools: Bash(openspec:*)\nlicense: MIT\ncompatibility: Requires openspec CLI.\nmetadata:\n  author: openspec\n  version: \"1.0\"\n  generatedBy: \"1.6.0\"\n---\n\nArchive a completed change in the experimental workflow.\n\n**Store selection:** If the user names a store (a store is a standalone OpenSpec repo registered on this machine) or the work lives in one, run `openspec store list --json` to discover registered store ids, then pass `--store \u003Cid>` on the commands that read or write specs and changes (`new change`, `status`, `instructions`, `list`, `show`, `validate`, `archive`, `doctor`, `context`). Other commands do not take the flag. Hints printed by commands already carry the flag; keep it on follow-ups. Without a store, commands act on the nearest local `openspec\u002F` root.\n\n**Input**: Optionally specify a change name. If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.\n\n**Steps**\n\n1. **If no change name provided, prompt for selection**\n\n   Run `openspec list --json` to get available changes. Use the **AskUserQuestion tool** to let the user select.\n\n   Show only active changes (not already archived).\n   Include the schema used for each change if available.\n\n   **IMPORTANT**: Do NOT guess or auto-select a change. Always let the user choose.\n\n2. **Check artifact completion status**\n\n   Run `openspec status --change \"\u003Cname>\" --json` to check artifact completion.\n\n   Parse the JSON to understand:\n   - `schemaName`: The workflow being used\n   - `planningHome`, `changeRoot`, `artifactPaths`, and `actionContext`: path and scope context\n   - `artifacts`: List of artifacts with their status (`done` or other)\n\n   **If any artifacts are not `done`:**\n   - Display warning listing incomplete artifacts\n   - Use **AskUserQuestion tool** to confirm user wants to proceed\n   - Proceed if user confirms\n\n3. **Check task completion status**\n\n   Read the tasks file (typically `tasks.md`) to check for incomplete tasks.\n\n   Count tasks marked with `- [ ]` (incomplete) vs `- [x]` (complete).\n\n   **If incomplete tasks found:**\n   - Display warning showing count of incomplete tasks\n   - Use **AskUserQuestion tool** to confirm user wants to proceed\n   - Proceed if user confirms\n\n   **If no tasks file exists:** Proceed without task-related warning.\n\n4. **Assess delta spec sync state**\n\n   Use `artifactPaths.specs.existingOutputPaths` from status JSON to check for delta specs. If none exist, proceed without sync prompt.\n\n   **If delta specs exist:**\n   - Compare each delta spec with its corresponding main spec at `openspec\u002Fspecs\u002F\u003Ccapability>\u002Fspec.md`\n   - Determine what changes would be applied (adds, modifications, removals, renames)\n   - Show a combined summary before prompting\n\n   **Prompt options:**\n   - If changes needed: \"Sync now (recommended)\", \"Archive without syncing\"\n   - If already synced: \"Archive now\", \"Sync anyway\", \"Cancel\"\n\n   If user chooses sync, use Task tool (subagent_type: \"general-purpose\", prompt: \"Use Skill tool to invoke openspec-sync-specs for change '\u003Cname>'. Delta spec analysis: \u003Cinclude the analyzed delta spec summary>\"). Proceed to archive regardless of choice.\n\n5. **Perform the archive**\n\n   Create an `archive` directory under `planningHome.changesDir` if it doesn't exist:\n   ```bash\n   mkdir -p \"\u003CplanningHome.changesDir>\u002Farchive\"\n   ```\n\n   Generate target name using current date: `YYYY-MM-DD-\u003Cchange-name>`\n\n   **Check if target already exists:**\n   - If yes: Fail with error, suggest renaming existing archive or using different date\n   - If no: Move `changeRoot` to the archive directory\n\n   ```bash\n   mv \"\u003CchangeRoot>\" \"\u003CplanningHome.changesDir>\u002Farchive\u002FYYYY-MM-DD-\u003Cname>\"\n   ```\n\n6. **Display summary**\n\n   Show archive completion summary including:\n   - Change name\n   - Schema that was used\n   - Archive location\n   - Whether specs were synced (if applicable)\n   - Note about any warnings (incomplete artifacts\u002Ftasks)\n\n**Output On Success**\n\n```\n## Archive Complete\n\n**Change:** \u003Cchange-name>\n**Schema:** \u003Cschema-name>\n**Archived to:** the archive path derived from `planningHome.changesDir`\u002FYYYY-MM-DD-\u003Cname>\u002F\n**Specs:** ✓ Synced to main specs (or \"No delta specs\" or \"Sync skipped\")\n\nAll artifacts complete. All tasks complete.\n```\n\n**Guardrails**\n- Always prompt for change selection if not provided\n- Use artifact graph (openspec status --json) for completion checking\n- Don't block archive on warnings - just inform and confirm\n- Preserve .openspec.yaml when moving to archive (it moves with the directory)\n- Show clear summary of what happened\n- If sync is requested, use openspec-sync-specs approach (agent-driven)\n- If delta specs exist, always run the sync assessment and show the combined summary before prompting\n","Archive a completed change in the experimental workflow.\n\n**Store selection:** If the user names a store (a store is a standalone OpenSpec repo registered on this machine) or the work lives in one, run `openspec store list --json` to discover registered store ids, then pass `--store \u003Cid>` on the commands that read or write specs and changes (`new change`, `status`, `instructions`, `list`, `show`, `validate`, `archive`, `doctor`, `context`). Other commands do not take the flag. Hints printed by commands already carry the flag; keep it on follow-ups. Without a store, commands act on the nearest local `openspec\u002F` root.\n\n**Input**: Optionally specify a change name. If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes.\n\n**Steps**\n\n1. **If no change name provided, prompt for selection**\n\n   Run `openspec list --json` to get available changes. Use the **AskUserQuestion tool** to let the user select.\n\n   Show only active changes (not already archived).\n   Include the schema used for each change if available.\n\n   **IMPORTANT**: Do NOT guess or auto-select a change. Always let the user choose.\n\n2. **Check artifact completion status**\n\n   Run `openspec status --change \"\u003Cname>\" --json` to check artifact completion.\n\n   Parse the JSON to understand:\n   - `schemaName`: The workflow being used\n   - `planningHome`, `changeRoot`, `artifactPaths`, and `actionContext`: path and scope context\n   - `artifacts`: List of artifacts with their status (`done` or other)\n\n   **If any artifacts are not `done`:**\n   - Display warning listing incomplete artifacts\n   - Use **AskUserQuestion tool** to confirm user wants to proceed\n   - Proceed if user confirms\n\n3. **Check task completion status**\n\n   Read the tasks file (typically `tasks.md`) to check for incomplete tasks.\n\n   Count tasks marked with `- [ ]` (incomplete) vs `- [x]` (complete).\n\n   **If incomplete tasks found:**\n   - Display warning showing count of incomplete tasks\n   - Use **AskUserQuestion tool** to confirm user wants to proceed\n   - Proceed if user confirms\n\n   **If no tasks file exists:** Proceed without task-related warning.\n\n4. **Assess delta spec sync state**\n\n   Use `artifactPaths.specs.existingOutputPaths` from status JSON to check for delta specs. If none exist, proceed without sync prompt.\n\n   **If delta specs exist:**\n   - Compare each delta spec with its corresponding main spec at `openspec\u002Fspecs\u002F\u003Ccapability>\u002Fspec.md`\n   - Determine what changes would be applied (adds, modifications, removals, renames)\n   - Show a combined summary before prompting\n\n   **Prompt options:**\n   - If changes needed: \"Sync now (recommended)\", \"Archive without syncing\"\n   - If already synced: \"Archive now\", \"Sync anyway\", \"Cancel\"\n\n   If user chooses sync, use Task tool (subagent_type: \"general-purpose\", prompt: \"Use Skill tool to invoke openspec-sync-specs for change '\u003Cname>'. Delta spec analysis: \u003Cinclude the analyzed delta spec summary>\"). Proceed to archive regardless of choice.\n\n5. **Perform the archive**\n\n   Create an `archive` directory under `planningHome.changesDir` if it doesn't exist:\n   ```bash\n   mkdir -p \"\u003CplanningHome.changesDir>\u002Farchive\"\n   ```\n\n   Generate target name using current date: `YYYY-MM-DD-\u003Cchange-name>`\n\n   **Check if target already exists:**\n   - If yes: Fail with error, suggest renaming existing archive or using different date\n   - If no: Move `changeRoot` to the archive directory\n\n   ```bash\n   mv \"\u003CchangeRoot>\" \"\u003CplanningHome.changesDir>\u002Farchive\u002FYYYY-MM-DD-\u003Cname>\"\n   ```\n\n6. **Display summary**\n\n   Show archive completion summary including:\n   - Change name\n   - Schema that was used\n   - Archive location\n   - Whether specs were synced (if applicable)\n   - Note about any warnings (incomplete artifacts\u002Ftasks)\n\n**Output On Success**\n\n```\n## Archive Complete\n\n**Change:** \u003Cchange-name>\n**Schema:** \u003Cschema-name>\n**Archived to:** the archive path derived from `planningHome.changesDir`\u002FYYYY-MM-DD-\u003Cname>\u002F\n**Specs:** ✓ Synced to main specs (or \"No delta specs\" or \"Sync skipped\")\n\nAll artifacts complete. All tasks complete.\n```\n\n**Guardrails**\n- Always prompt for change selection if not provided\n- Use artifact graph (openspec status --json) for completion checking\n- Don't block archive on warnings - just inform and confirm\n- Preserve .openspec.yaml when moving to archive (it moves with the directory)\n- Show clear summary of what happened\n- If sync is requested, use openspec-sync-specs approach (agent-driven)\n- If delta specs exist, always run the sync assessment and show the combined summary before prompting\n",{"name":5,"license":14,"metadata":35,"description":7,"allowed-tools":38,"compatibility":39},{"author":21,"version":36,"generatedBy":37},"1.0","1.6.0","Bash(openspec:*)","Requires openspec CLI.","main","9cec288199a31b49d95245753d0eb94ebc3f099b","https:\u002F\u002Fgithub.com\u002Fcookeyholder\u002Fusing-ai-skills","https:\u002F\u002Fgithub.com\u002Fcookeyholder","2026-11-09 23:14:08",{"source":8,"skillName":5,"commands":46,"prompt":56,"zipAvailable":57},[47,50,53],{"tool":48,"command":49},"npx","npx skills add cookeyholder\u002Fusing-ai-skills --skill openspec-archive-change",{"tool":51,"command":52},"bunx","bunx skills add cookeyholder\u002Fusing-ai-skills --skill openspec-archive-change",{"tool":54,"command":55},"pnpm","pnpm dlx skills add cookeyholder\u002Fusing-ai-skills --skill openspec-archive-change","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcookeyholder\u002Fusing-ai-skills\u002Fblob\u002Fmain\u002Fopenspec-archive-change\u002FSKILL.md",true,[],[60,94,120,149,178,206],{"skillNo":61,"name":62,"nameZh":6,"description":63,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":64,"licenseFileUrl":65,"sourceHtmlUrl":66,"categories":67,"keywords":76,"publishedAt":30},"01M6H5RCXCG2J10DQJZEXG5YD5","webapp-testing","Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs.","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fcookeyholder\u002Fusing-ai-skills\u002Fblob\u002Fmain\u002Fwebapp-testing\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fcookeyholder\u002Fusing-ai-skills\u002Fblob\u002Fmain\u002Fwebapp-testing\u002FSKILL.md",[68,73],{"categoryNo":69,"categoryName":70,"taxonomyType":71,"taxonomyTypeDesc":72},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":74,"categoryName":75,"taxonomyType":71,"taxonomyTypeDesc":72},"01JBSEEDCAT000000000000009","前端开发",[77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93],"testing","webapp testing","webapp","frontend","screenshots","playwright","web","debugging","toolkit","browser","ui","logs","applications","behavior","local","with","for",{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":64,"licenseFileUrl":98,"sourceHtmlUrl":99,"categories":100,"keywords":102,"publishedAt":30},"01M6H5R995MJ6KTH5RA7P0ZJTW","web-artifacts-builder","Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn\u002Fui). Use for complex artifacts requiring state management, routing, or shadcn\u002Fui components - not for simple single-file HTML\u002FJSX artifacts.","https:\u002F\u002Fgithub.com\u002Fcookeyholder\u002Fusing-ai-skills\u002Fblob\u002Fmain\u002Fweb-artifacts-builder\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fcookeyholder\u002Fusing-ai-skills\u002Fblob\u002Fmain\u002Fweb-artifacts-builder\u002FSKILL.md",[101],{"categoryNo":74,"categoryName":75,"taxonomyType":71,"taxonomyTypeDesc":72},[103,83,104,105,106,80,107,108,109,110,111,112,113,114,26,115,116,117,118,93,119],"web artifacts builder","artifacts","artifacts builder","builder","css","components","react","routing","state management","state","file","Tailwind","single-file","simple","ui components","multi","single",{"skillNo":121,"name":122,"nameZh":6,"description":123,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":64,"licenseFileUrl":124,"sourceHtmlUrl":125,"categories":126,"keywords":130,"publishedAt":30},"01M6H5P8JRJQ89YNEJ0XPPRYBW","theme-factory","Toolkit for styling artifacts with a theme. These artifacts can be slides, docs, reportings, HTML landing pages, etc. There are 10 pre-set themes with colors\u002Ffonts that you can apply to any artifact that has been creating, or can generate a new theme on-the-fly.","https:\u002F\u002Fgithub.com\u002Fcookeyholder\u002Fusing-ai-skills\u002Fblob\u002Fmain\u002Ftheme-factory\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fcookeyholder\u002Fusing-ai-skills\u002Fblob\u002Fmain\u002Ftheme-factory\u002FSKILL.md",[127],{"categoryNo":128,"categoryName":129,"taxonomyType":71,"taxonomyTypeDesc":72},"01JBSEEDCAT000000000000015","视觉设计",[131,132,133,134,85,135,104,136,137,138,139,140,141,142,143,92,144,145,146,93,147,148],"theme factory","factory","theme","docs","generate","SET","fly","slides","landing","styling","artifact","pages","themes","you","fonts","can","apply","new",{"skillNo":150,"name":151,"nameZh":6,"description":152,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":64,"licenseFileUrl":153,"sourceHtmlUrl":154,"categories":155,"keywords":162,"publishedAt":30},"01M6H5NB01PC5BCQR35K20M489","slack-gif-creator","Knowledge and utilities for creating animated GIFs optimized for Slack. Provides constraints, validation tools, and animation concepts. Use when users request animated GIFs for Slack like \"make me a GIF of X doing Y for Slack.\"","https:\u002F\u002Fgithub.com\u002Fcookeyholder\u002Fusing-ai-skills\u002Fblob\u002Fmain\u002Fslack-gif-creator\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fcookeyholder\u002Fusing-ai-skills\u002Fblob\u002Fmain\u002Fslack-gif-creator\u002FSKILL.md",[156,159],{"categoryNo":157,"categoryName":158,"taxonomyType":71,"taxonomyTypeDesc":72},"01JBSEEDCAT000000000000005","邮件与沟通",{"categoryNo":160,"categoryName":161,"taxonomyType":71,"taxonomyTypeDesc":72},"01JBSEEDCAT000000000000016","图像与多媒体",[163,164,165,166,167,168,169,170,171,26,172,173,174,175,176,93,177,29],"slack gif creator","slack","gif","creator","validation","Tools","constraints","Animation","knowledge","me","users","make","Utilities","concepts","request",{"skillNo":179,"name":180,"nameZh":6,"description":181,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":64,"licenseFileUrl":182,"sourceHtmlUrl":183,"categories":184,"keywords":188,"publishedAt":30},"01M6H5N5RHSENZ03TFAB956J4V","skill-creator","Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.","https:\u002F\u002Fgithub.com\u002Fcookeyholder\u002Fusing-ai-skills\u002Fblob\u002Fmain\u002Fskill-creator\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fcookeyholder\u002Fusing-ai-skills\u002Fblob\u002Fmain\u002Fskill-creator\u002FSKILL.md",[185],{"categoryNo":186,"categoryName":187,"taxonomyType":71,"taxonomyTypeDesc":72},"01JBSEEDCAT000000000000023","Skill与智能体开发",[189,166,190,191,192,193,194,195,196,197,198,26,199,200,201,173,202,93,203,204,205,29,148],"skill creator","performance","run evals","variance analysis","create","run","benchmark","analysis","improve","edit","evals","optimize","existing skill","From Scratch","accuracy","Existing","scratch",{"skillNo":207,"name":208,"nameZh":6,"description":209,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":64,"licenseFileUrl":210,"sourceHtmlUrl":211,"categories":212,"keywords":214,"publishedAt":30},"01M6H5GMG092AS5HM45XEQ68H4","mcp-builder","Guide for creating high-quality MCP (Model Context Protocol) servers that enable LLMs to interact with external services through well-designed tools. Use when building MCP servers to integrate external APIs or services, whether in Python (FastMCP) or Node\u002FTypeScript (MCP SDK).","https:\u002F\u002Fgithub.com\u002Fcookeyholder\u002Fusing-ai-skills\u002Fblob\u002Fmain\u002Fmcp-builder\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fcookeyholder\u002Fusing-ai-skills\u002Fblob\u002Fmain\u002Fmcp-builder\u002FSKILL.md",[213],{"categoryNo":186,"categoryName":187,"taxonomyType":71,"taxonomyTypeDesc":72},[215,216,106,217,218,219,220,221,222,168,223,224,225,226,26,227,228,229,92,93,29],"MCP","mcp builder","typescript","python","llms","model context protocol","fastmcp","services","model","node","context","guide","integrate","mcp sdk","building mcp servers"]