[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71F9ZY574MCGP6HBM8Q3750":3,"skill-same:01M71F9ZY574MCGP6HBM8Q3750":67},{"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":35,"linkOnly":36,"markdownContent":37,"markdownBody":38,"frontMatter":39,"refName":44,"commitSha":45,"skillDirectory":46,"forksCount":47,"repositoryHtmlUrl":48,"repositoryHomepageUrl":6,"ownerHtmlUrl":49,"ownerBlogUrl":50,"ownerDescription":51,"updatedAt":52,"install":53,"resources":66},"01M71F9ZY574MCGP6HBM8Q3750","openspec-apply-change",null,"Implement tasks from an OpenSpec change. Use when the user wants to start implementing, continue implementation, or work through tasks.","Wizarck\u002Fai-playbook","Wizarck","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F23051550?v=4","01M71B3AAVR67GRWFV5ZXXZP31","arturo6ramirez","01M71F5FHXDSX3G2F52R1YS77J",6,"MIT","https:\u002F\u002Fgithub.com\u002FWizarck\u002Fai-playbook\u002Fblob\u002Fmain\u002Fskills\u002Fopenspec-apply-change\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34],"change","openspec apply change","openspec","openspec apply","apply","work","cli","continue","implementing","start","implementation","use","when","tasks","user","implement","2026-11-10 10:12:30",false,"---\nname: openspec-apply-change\ndescription: Implement tasks from an OpenSpec change. Use when the user wants to start implementing, continue implementation, or work through tasks.\nlicense: MIT\ncompatibility: Requires openspec CLI.\nmetadata:\n  author: openspec\n  version: \"1.1\"\n  generatedBy: \"1.3.0\"\n---\n\nImplement tasks from an OpenSpec change.\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\n0. **Write apply-session start marker** (required, added v1.1)\n\n   Before reading any context files or performing implementation, signal that\n   this apply session is skill-orchestrated. The PreToolUse hook installed\n   per `docs\u002Frules\u002Fapply-skill-enforcement.rule.md` BLOCKS the first `Edit`\u002F`Write` on a\n   slice's `write_paths` unless this marker exists for the current session.\n\n   ```bash\n   python .ai-playbook\u002Fscripts\u002Fopenspec_apply_marker.py start --change-id \"\u003Cname>\" --skill-version 1.1\n   ```\n\n   The marker is appended to `openspec\u002Fchanges\u002F\u003Cname>\u002F.apply_log.jsonl` (one\n   JSONL record per session start; committed to git for audit). If the helper\n   script is missing (consumer pre-v0.14.0 of ai-playbook), the hook is also\n   missing — proceed; older consumers see no enforcement. Inform the user that\n   their playbook bump is overdue.\n\n   See: `docs\u002Frules\u002Fapply-skill-enforcement.rule.md` §1 (marker contract) and §3\n   (break-glass via `AIPLAYBOOK_APPLY_ENFORCE_OVERRIDE` env).\n\n1. **Select the change**\n\n   If a name is provided, use it. Otherwise:\n   - Infer from conversation context if the user mentioned a change\n   - Auto-select if only one active change exists\n   - If ambiguous, run `openspec list --json` to get available changes and use the **AskUserQuestion tool** to let the user select\n\n   Always announce: \"Using change: \u003Cname>\" and how to override (e.g., `\u002Fopsx:apply \u003Cother>`).\n\n2. **Check status to understand the schema**\n   ```bash\n   openspec status --change \"\u003Cname>\" --json\n   ```\n   Parse the JSON to understand:\n   - `schemaName`: The workflow being used (e.g., \"spec-driven\")\n   - Which artifact contains the tasks (typically \"tasks\" for spec-driven, check status for others)\n\n3. **Get apply instructions**\n\n   ```bash\n   openspec instructions apply --change \"\u003Cname>\" --json\n   ```\n\n   This returns:\n   - Context file paths (varies by schema - could be proposal\u002Fspecs\u002Fdesign\u002Ftasks or spec\u002Ftests\u002Fimplementation\u002Fdocs)\n   - Progress (total, complete, remaining)\n   - Task list with status\n   - Dynamic instruction based on current state\n\n   **Handle states:**\n   - If `state: \"blocked\"` (missing artifacts): show message, suggest using openspec-continue-change\n   - If `state: \"all_done\"`: congratulate, suggest archive\n   - Otherwise: proceed to implementation\n\n4. **Read context files**\n\n   Read the files listed in `contextFiles` from the apply instructions output.\n   The files depend on the schema being used:\n   - **spec-driven**: proposal, specs, design, tasks\n   - Other schemas: follow the contextFiles from CLI output\n\n4b. **Preflight re-grep cited identifiers (added v0.11.0)**\n\n   Per [release-management.md](..\u002F..\u002Fdocs\u002Fconcepts\u002Frelease-management.md) §6.5 (pre-flight rebase) the worktree base is fresh, but `proposal.md` may have been written days earlier. Identifiers cited in the proposal (class names, function names, file paths, migration slot numbers, fact-kind enum values, ADR numbers) may have **changed on `main` since the proposal landed**. Apply silently against stale citations produces silent divergence.\n\n   Before starting implementation, re-grep every identifier the proposal\u002Fdesign\u002Ftasks cites:\n\n   1. Walk `proposal.md` + `design.md` + `tasks.md` and extract:\n      - Quoted file paths (`apps\u002Fapi\u002Fsrc\u002F...\u002Ffoo.py`).\n      - Backticked class \u002F function names (`` `IBClient` ``, `` `place_order` ``).\n      - Migration slot numbers (`0007_*`, `0010_*`).\n      - ADR numbers (`ADR-021`).\n      - Enum values mentioned in citations.\n   2. For each, run `git grep -n \"\u003Cidentifier>\"` (or `Grep` tool) on `main`.\n   3. **If any cited identifier returns 0 hits**, surface as a divergence warning:\n\n      ```\n      ⚠ Citation drift detected\n      proposal.md cites `FactKindEnum.MOMENTUM_SCORE` but no occurrence found on main.\n      Likely renamed or removed in a parallel slice merged after this proposal landed.\n\n      Options:\n      1. Re-read the current main code to find the new name; update tasks.md citations.\n      2. Re-open Gate D for design refresh (recommended for ≥3 drifted citations).\n      3. Override with --skip-preflight-grep (logs deviation in retro carry-forward).\n      ```\n\n   4. **If 1-2 identifiers drifted**, show the diff and let the user decide (small drift is normal across week-old proposals).\n   5. **If ≥3 identifiers drifted OR a critical surface (migration slot, FK, public API) drifted**, refuse to proceed without explicit `--skip-preflight-grep` flag.\n\n   This catches the failure mode (proposals written before parallel slices renamed cited classes) — without preflight grep, the worker AI would silently apply against drifted state and either fail at typecheck (best case) or ship broken code (worst case).\n\n5. **Show current progress**\n\n   Display:\n   - Schema being used\n   - Progress: \"N\u002FM tasks complete\"\n   - Remaining tasks overview\n   - Dynamic instruction from CLI\n\n6. **Implement tasks (loop until done or blocked)**\n\n   For each pending task:\n   - Show which task is being worked on\n   - Make the code changes required\n   - Keep changes minimal and focused\n   - Mark task complete in the tasks file: `- [ ]` → `- [x]`\n   - Continue to next task\n\n   **Pause if:**\n   - Task is unclear → ask for clarification\n   - Implementation reveals a design issue → suggest updating artifacts\n   - Error or blocker encountered → report and wait for guidance\n   - User interrupts\n\n7. **On completion or pause, show status**\n\n   Display:\n   - Tasks completed this session\n   - Overall progress: \"N\u002FM tasks complete\"\n   - If all done: suggest archive\n   - If paused: explain why and wait for guidance\n\n**Output During Implementation**\n\n```\n## Implementing: \u003Cchange-name> (schema: \u003Cschema-name>)\n\nWorking on task 3\u002F7: \u003Ctask description>\n[...implementation happening...]\n✓ Task complete\n\nWorking on task 4\u002F7: \u003Ctask description>\n[...implementation happening...]\n✓ Task complete\n```\n\n**Output On Completion**\n\n```\n## Implementation Complete\n\n**Change:** \u003Cchange-name>\n**Schema:** \u003Cschema-name>\n**Progress:** 7\u002F7 tasks complete ✓\n\n### Completed This Session\n- [x] Task 1\n- [x] Task 2\n...\n\nAll tasks complete! Ready to archive this change.\n```\n\n**Output On Pause (Issue Encountered)**\n\n```\n## Implementation Paused\n\n**Change:** \u003Cchange-name>\n**Schema:** \u003Cschema-name>\n**Progress:** 4\u002F7 tasks complete\n\n### Issue Encountered\n\u003Cdescription of the issue>\n\n**Options:**\n1. \u003Coption 1>\n2. \u003Coption 2>\n3. Other approach\n\nWhat would you like to do?\n```\n\n**Guardrails**\n- Keep going through tasks until done or blocked\n- Always read context files before starting (from the apply instructions output)\n- If task is ambiguous, pause and ask before implementing\n- If implementation reveals issues, pause and suggest artifact updates\n- Keep code changes minimal and scoped to each task\n- Update task checkbox immediately after completing each task\n- Pause on errors, blockers, or unclear requirements - don't guess\n- Use contextFiles from CLI output, don't assume specific file names\n\n**Fluid Workflow Integration**\n\nThis skill supports the \"actions on a change\" model:\n\n- **Can be invoked anytime**: Before all artifacts are done (if tasks exist), after partial implementation, interleaved with other actions\n- **Allows artifact updates**: If implementation reveals design issues, suggest updating artifacts - not phase-locked, work fluidly\n","Implement tasks from an OpenSpec change.\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\n0. **Write apply-session start marker** (required, added v1.1)\n\n   Before reading any context files or performing implementation, signal that\n   this apply session is skill-orchestrated. The PreToolUse hook installed\n   per `docs\u002Frules\u002Fapply-skill-enforcement.rule.md` BLOCKS the first `Edit`\u002F`Write` on a\n   slice's `write_paths` unless this marker exists for the current session.\n\n   ```bash\n   python .ai-playbook\u002Fscripts\u002Fopenspec_apply_marker.py start --change-id \"\u003Cname>\" --skill-version 1.1\n   ```\n\n   The marker is appended to `openspec\u002Fchanges\u002F\u003Cname>\u002F.apply_log.jsonl` (one\n   JSONL record per session start; committed to git for audit). If the helper\n   script is missing (consumer pre-v0.14.0 of ai-playbook), the hook is also\n   missing — proceed; older consumers see no enforcement. Inform the user that\n   their playbook bump is overdue.\n\n   See: `docs\u002Frules\u002Fapply-skill-enforcement.rule.md` §1 (marker contract) and §3\n   (break-glass via `AIPLAYBOOK_APPLY_ENFORCE_OVERRIDE` env).\n\n1. **Select the change**\n\n   If a name is provided, use it. Otherwise:\n   - Infer from conversation context if the user mentioned a change\n   - Auto-select if only one active change exists\n   - If ambiguous, run `openspec list --json` to get available changes and use the **AskUserQuestion tool** to let the user select\n\n   Always announce: \"Using change: \u003Cname>\" and how to override (e.g., `\u002Fopsx:apply \u003Cother>`).\n\n2. **Check status to understand the schema**\n   ```bash\n   openspec status --change \"\u003Cname>\" --json\n   ```\n   Parse the JSON to understand:\n   - `schemaName`: The workflow being used (e.g., \"spec-driven\")\n   - Which artifact contains the tasks (typically \"tasks\" for spec-driven, check status for others)\n\n3. **Get apply instructions**\n\n   ```bash\n   openspec instructions apply --change \"\u003Cname>\" --json\n   ```\n\n   This returns:\n   - Context file paths (varies by schema - could be proposal\u002Fspecs\u002Fdesign\u002Ftasks or spec\u002Ftests\u002Fimplementation\u002Fdocs)\n   - Progress (total, complete, remaining)\n   - Task list with status\n   - Dynamic instruction based on current state\n\n   **Handle states:**\n   - If `state: \"blocked\"` (missing artifacts): show message, suggest using openspec-continue-change\n   - If `state: \"all_done\"`: congratulate, suggest archive\n   - Otherwise: proceed to implementation\n\n4. **Read context files**\n\n   Read the files listed in `contextFiles` from the apply instructions output.\n   The files depend on the schema being used:\n   - **spec-driven**: proposal, specs, design, tasks\n   - Other schemas: follow the contextFiles from CLI output\n\n4b. **Preflight re-grep cited identifiers (added v0.11.0)**\n\n   Per [release-management.md](..\u002F..\u002Fdocs\u002Fconcepts\u002Frelease-management.md) §6.5 (pre-flight rebase) the worktree base is fresh, but `proposal.md` may have been written days earlier. Identifiers cited in the proposal (class names, function names, file paths, migration slot numbers, fact-kind enum values, ADR numbers) may have **changed on `main` since the proposal landed**. Apply silently against stale citations produces silent divergence.\n\n   Before starting implementation, re-grep every identifier the proposal\u002Fdesign\u002Ftasks cites:\n\n   1. Walk `proposal.md` + `design.md` + `tasks.md` and extract:\n      - Quoted file paths (`apps\u002Fapi\u002Fsrc\u002F...\u002Ffoo.py`).\n      - Backticked class \u002F function names (`` `IBClient` ``, `` `place_order` ``).\n      - Migration slot numbers (`0007_*`, `0010_*`).\n      - ADR numbers (`ADR-021`).\n      - Enum values mentioned in citations.\n   2. For each, run `git grep -n \"\u003Cidentifier>\"` (or `Grep` tool) on `main`.\n   3. **If any cited identifier returns 0 hits**, surface as a divergence warning:\n\n      ```\n      ⚠ Citation drift detected\n      proposal.md cites `FactKindEnum.MOMENTUM_SCORE` but no occurrence found on main.\n      Likely renamed or removed in a parallel slice merged after this proposal landed.\n\n      Options:\n      1. Re-read the current main code to find the new name; update tasks.md citations.\n      2. Re-open Gate D for design refresh (recommended for ≥3 drifted citations).\n      3. Override with --skip-preflight-grep (logs deviation in retro carry-forward).\n      ```\n\n   4. **If 1-2 identifiers drifted**, show the diff and let the user decide (small drift is normal across week-old proposals).\n   5. **If ≥3 identifiers drifted OR a critical surface (migration slot, FK, public API) drifted**, refuse to proceed without explicit `--skip-preflight-grep` flag.\n\n   This catches the failure mode (proposals written before parallel slices renamed cited classes) — without preflight grep, the worker AI would silently apply against drifted state and either fail at typecheck (best case) or ship broken code (worst case).\n\n5. **Show current progress**\n\n   Display:\n   - Schema being used\n   - Progress: \"N\u002FM tasks complete\"\n   - Remaining tasks overview\n   - Dynamic instruction from CLI\n\n6. **Implement tasks (loop until done or blocked)**\n\n   For each pending task:\n   - Show which task is being worked on\n   - Make the code changes required\n   - Keep changes minimal and focused\n   - Mark task complete in the tasks file: `- [ ]` → `- [x]`\n   - Continue to next task\n\n   **Pause if:**\n   - Task is unclear → ask for clarification\n   - Implementation reveals a design issue → suggest updating artifacts\n   - Error or blocker encountered → report and wait for guidance\n   - User interrupts\n\n7. **On completion or pause, show status**\n\n   Display:\n   - Tasks completed this session\n   - Overall progress: \"N\u002FM tasks complete\"\n   - If all done: suggest archive\n   - If paused: explain why and wait for guidance\n\n**Output During Implementation**\n\n```\n## Implementing: \u003Cchange-name> (schema: \u003Cschema-name>)\n\nWorking on task 3\u002F7: \u003Ctask description>\n[...implementation happening...]\n✓ Task complete\n\nWorking on task 4\u002F7: \u003Ctask description>\n[...implementation happening...]\n✓ Task complete\n```\n\n**Output On Completion**\n\n```\n## Implementation Complete\n\n**Change:** \u003Cchange-name>\n**Schema:** \u003Cschema-name>\n**Progress:** 7\u002F7 tasks complete ✓\n\n### Completed This Session\n- [x] Task 1\n- [x] Task 2\n...\n\nAll tasks complete! Ready to archive this change.\n```\n\n**Output On Pause (Issue Encountered)**\n\n```\n## Implementation Paused\n\n**Change:** \u003Cchange-name>\n**Schema:** \u003Cschema-name>\n**Progress:** 4\u002F7 tasks complete\n\n### Issue Encountered\n\u003Cdescription of the issue>\n\n**Options:**\n1. \u003Coption 1>\n2. \u003Coption 2>\n3. Other approach\n\nWhat would you like to do?\n```\n\n**Guardrails**\n- Keep going through tasks until done or blocked\n- Always read context files before starting (from the apply instructions output)\n- If task is ambiguous, pause and ask before implementing\n- If implementation reveals issues, pause and suggest artifact updates\n- Keep code changes minimal and scoped to each task\n- Update task checkbox immediately after completing each task\n- Pause on errors, blockers, or unclear requirements - don't guess\n- Use contextFiles from CLI output, don't assume specific file names\n\n**Fluid Workflow Integration**\n\nThis skill supports the \"actions on a change\" model:\n\n- **Can be invoked anytime**: Before all artifacts are done (if tasks exist), after partial implementation, interleaved with other actions\n- **Allows artifact updates**: If implementation reveals design issues, suggest updating artifacts - not phase-locked, work fluidly\n",{"name":5,"license":15,"metadata":40,"description":7,"compatibility":43},{"author":21,"version":41,"generatedBy":42},"1.1","1.3.0","Requires openspec CLI.","main","08fe7aa0f06bc1a3f592ec82360e46b854846968","skills\u002Fopenspec-apply-change",1,"https:\u002F\u002Fgithub.com\u002FWizarck\u002Fai-playbook","https:\u002F\u002Fgithub.com\u002FWizarck","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Framirezarturo\u002F","Geek by birth, with not much to say but plenty to talk about.","2026-11-09 19:34:21",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add Wizarck\u002Fai-playbook --skill openspec-apply-change",{"tool":59,"command":60},"bunx","bunx skills add Wizarck\u002Fai-playbook --skill openspec-apply-change",{"tool":62,"command":63},"pnpm","pnpm dlx skills add Wizarck\u002Fai-playbook --skill openspec-apply-change","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FWizarck\u002Fai-playbook\u002Fblob\u002Fmain\u002Fskills\u002Fopenspec-apply-change\u002FSKILL.md",true,[],[68,92,112,136,155,168],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":35},"01M71FATTWS9W3BME3S94SA1QR","sweep","Use when the user wants to find code that has quietly stopped being used — types \u002Fsweep, asks for a \"dead code sweep\", \"repo entropy\", \"what can we delete\", \"orphan files\", \"unused code\", or asks to review a sweep ledger. Adjudicates candidates a deterministic scanner already produced; it never deletes anything and never re-derives findings from raw source. Pairs with ponytail, which gates what gets written rather than what rots.","https:\u002F\u002Fgithub.com\u002FWizarck\u002Fai-playbook\u002Fblob\u002Fmain\u002Fskills\u002Fsweep\u002FSKILL.md",[],[70,75,76,77,78,79,80,81,82,83,84,85,86,30,31,87,88,89,90,91],"deterministic","which","never","entropy","types","for","repo","re","ponytail","orphan","files","unused","code","can","gates","review","candidates",{"skillNo":93,"name":83,"nameZh":6,"description":94,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":95,"categories":96,"keywords":97,"publishedAt":35},"01M71FAQKVDA209G7G5NMY9H1E","Use when the user wants the laziest solution that actually works — types \u002Fponytail, says \"be lazy\", \"lazy mode\", \"simplest solution\", \"minimal solution\", \"yagni\", \"do less\", or \"shortest path\", or complains about over-engineering, bloat, boilerplate, or unnecessary dependencies. Supports intensity levels lite, full, ultra (default). Pairs with caveman, which compresses prose, not code.","https:\u002F\u002Fgithub.com\u002FWizarck\u002Fai-playbook\u002Fblob\u002Fmain\u002Fskills\u002Fponytail\u002FSKILL.md",[],[83,98,99,76,100,79,101,102,103,104,30,31,87,105,106,107,108,109,110,111],"notice","do","lazy","mode","default","minimal","intensity","with","yagni","about","dependencies","2026","playbook","boilerplate",{"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":123,"publishedAt":35},"01M71FAMS250NKNF1PET9KNBBV","ponytail-review","Use when the user wants a code review focused exclusively on over-engineering — says \"review for over-engineering\", \"what can we delete\", \"is this over-engineered\", \"simplify review\", or invokes \u002Fponytail-review. Complements correctness\u002Fsecurity review; this one only hunts complexity in the current diff. Gated by the ponytail review_ponytail component.","https:\u002F\u002Fgithub.com\u002FWizarck\u002Fai-playbook\u002Fblob\u002Fmain\u002Fskills\u002Fponytail-review\u002FSKILL.md",[118],{"categoryNo":119,"categoryName":120,"taxonomyType":121,"taxonomyTypeDesc":122},"01JBSEEDCAT000000000000007","代码审查","SCENARIO","使用场景",[124,83,90,125,126,80,127,128,30,31,129,130,87,131,88,132,133,134,135,110],"ponytail review","complexity","diff","code review","only","simplify","correctness","one","delete","component","security review","gated",{"skillNo":137,"name":138,"nameZh":6,"description":139,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":140,"categories":141,"keywords":142,"publishedAt":35},"01M71FAG53ZPCSWE272P6S9JFN","ponytail-debt","Use when the user wants to harvest every `ponytail:` comment in the codebase into a tracked debt ledger — says \"ponytail debt\", \"\u002Fponytail-debt\", \"what did ponytail defer\", \"list the shortcuts\", \"ponytail ledger\", or \"what did we mark to do later\". One-shot report, changes nothing. Gated by the ponytail debt_ponytail component.","https:\u002F\u002Fgithub.com\u002FWizarck\u002Fai-playbook\u002Fblob\u002Fmain\u002Fskills\u002Fponytail-debt\u002FSKILL.md",[],[143,83,144,145,99,146,147,133,148,149,135,150,151,110,152,153,30,31,154,131],"ponytail debt","debt","shortcuts","mark","to do","changes","later","report","codebase","harvest","list","ledger",{"skillNo":156,"name":157,"nameZh":6,"description":158,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":159,"categories":160,"keywords":161,"publishedAt":35},"01M71FACJW88WCS2JGX3MQ3KV9","ponytail-audit","Use when the user wants a whole-repo audit for over-engineering — says \"audit this codebase\", \"audit for over-engineering\", \"what can I delete from this repo\", \"find bloat\", or invokes \u002Fponytail-audit. Like ponytail-review but scans the entire tree, not a diff. One-shot report, applies no fixes. Gated by the ponytail audit_ponytail component.","https:\u002F\u002Fgithub.com\u002FWizarck\u002Fai-playbook\u002Fblob\u002Fmain\u002Fskills\u002Fponytail-audit\u002FSKILL.md",[],[162,83,163,164,126,165,80,81,30,31,166,131,88,90,132,133,135,167,150,151],"ponytail audit","audit","tree","fixes","entire","find",{"skillNo":169,"name":170,"nameZh":6,"description":171,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":172,"categories":173,"keywords":174,"publishedAt":35},"01M71FA9THHXDX79PQTJ9CZX9E","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\u002FWizarck\u002Fai-playbook\u002Fblob\u002Fmain\u002Fskills\u002Fopenspec-propose\u002FSKILL.md",[],[21,175,105,176,177,19,25,178,179,80,180,181,182,29,183,184,30,31,185,32],"openspec propose","ready","proposal","get","build","complete","design","new","generated","describe","artifacts"]