[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6PVCBA0KV1JVH2D3VW5C678":3,"skill-same:01M6PVCBA0KV1JVH2D3VW5C678":62},{"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":34,"linkOnly":35,"markdownContent":36,"markdownBody":37,"frontMatter":38,"refName":42,"commitSha":43,"skillDirectory":44,"forksCount":41,"repositoryHtmlUrl":45,"repositoryHomepageUrl":6,"ownerHtmlUrl":46,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":47,"install":48,"resources":61},"01M6PVCBA0KV1JVH2D3VW5C678","plan-discipline",null,"Put a plan in its one canonical home, the tracker `plan.md`, never `.claude\u002Fplans`. Use on entering plan mode, on any plan draft including ExitPlanMode output, or when a task enters brainstorm→plan.","muratovv\u002Fai-hats","muratovv","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F7502801?v=4","01M6JGCBN4KEJX012GPJVSH04T","Fedor Muratov","01M6JGCBSNMN7CW3RGTPPE0MN2",3,"MIT","https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats\u002Fblob\u002Fmaster\u002Fpackages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fexperimental\u002Fcore\u002Fskills\u002Fplan-discipline\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33],"plan","discipline","plan discipline","brainstorm","use","never","tracker","task","draft","plans","plan mode","plan draft","output","canonical","mode","2026-11-10 10:12:30",false,"---\nname: plan-discipline\ndescription: >-\n  Put a plan in its one canonical home, the tracker `plan.md`, never\n  `.claude\u002Fplans`. Use on entering plan mode, on any plan draft including\n  ExitPlanMode output, or when a task enters brainstorm→plan.\nlicense: MIT\nai_hats:\n  schema_version: 1\n  type: skill\n---\n\n# Plan Discipline\n\nA plan is always a task, authored into `\u003Cai_hats_dir>\u002Ftracker\u002Fbacklog\u002Ftasks\u002F\u003CID>\u002Fplan.md`. Nowhere else.\n\n## When to Use\n\n- **On `EnterPlanMode`, recall this skill** — so you treat the plan-mode draft as\n  scratch and persist it into the tracker the moment you exit (see the two-phase\n  flow below). Plan mode is for *designing + approval*; the plan of record still\n  becomes a task in the tracker.\n- Also whenever a plan must be persisted — a draft in chat or a plan-mode\n  artifact — even if no task exists yet.\n- This skill is the plan's **home and transport** (where the file lives, how the\n  draft gets there). For filling each section *well*, hand off to **plan-gate**\n  (it routes Requirements \u002F Scope \u002F Steps \u002F Verification to their owners). Don't\n  duplicate that here.\n- Not an enforcement gate: the engine per-section gate blocks\n  `rack transition \u003CID> execute` on an empty plan. This skill is the authoring discipline\n  upstream of it; the gate is the backstop.\n\n## Procedure\n\n`rack` CLI commands (reads, transitions, logs) can be run from either the main repo or any linked worktree — root resolution automatically finds the main repo's `.agent\u002F` tracker. (Teardown commands like `ai-hats wt merge` \u002F `discard` or closing `transition done` should be run from the main repo so your shell cwd isn't removed underfoot — see skill **worktree-isolation**).\n\n### Preferred — plan directly in the tracker (no plan mode)\n\nWhen you control the flow, skip Claude Code plan mode and author straight into the\ntracker — zero round-trip, no `.claude\u002Fplans` file.\n\n1. **Make the task** (if none): `rack create \"\u003Ctitle>\" --description \"\u003Cintent>\" [--priority high|medium|low] [--id PROJ-NNN]` — starts in `brainstorm`; clarify scope there if fuzzy.\n2. **Scaffold:** `rack transition \u003CID> plan` → empty `\u003Cai_hats_dir>\u002Ftracker\u002Fbacklog\u002Ftasks\u002F\u003CID>\u002Fplan.md`.\n3. **Author into it** (Write\u002FEdit), filling the required sections (route each via\n   `plan-gate`). `rack transition \u003CID> execute` stays blocked until they're non-empty.\n\n### In Claude Code plan mode — two phases\n\nPlan mode is **read-only**: it blocks the `rack` CLI and every write except\n`.claude\u002Fplans\u002F\u003Cslug>.md`, so the tracker flow is impossible *until you exit*.\nThat's expected — don't fight it, and don't apologise for the draft.\n\n- **Phase 1 — in plan mode:** design; draft into `.claude\u002Fplans\u002F\u003Cslug>.md`;\n  present via `ExitPlanMode`. Do **not** attempt `rack create` \u002F `rack transition`\n  \u002F tracker writes — they are blocked. The draft is scratch, not the plan of record.\n- **Phase 2 — immediately on approval \u002F exit:** your **first** action, before any\n  other execute work, is to persist into the tracker — `rack create` (if needed)\n  → `rack transition \u003CID> plan` → Read the `.claude\u002Fplans` draft → Write it into\n  `\u003Cai_hats_dir>\u002Ftracker\u002Fbacklog\u002Ftasks\u002F\u003CID>\u002Fplan.md` → fill\u002Fconfirm sections → `rack transition \u003CID> execute`. There\n  is no auto-sync; the `.claude\u002Fplans` file is now inert, leave or delete.\n\n## Completion\n\n- `\u003Cai_hats_dir>\u002Ftracker\u002Fbacklog\u002Ftasks\u002F\u003CID>\u002Fplan.md` holds the real plan; no task-bearing file remains in\n  `.claude\u002Fplans`; `rack transition \u003CID> execute` passes the gate.\n- Handoff: plan in tracker → `plan-gate` (section quality) → engine gate → execute.\n\n## Anti-Patterns\n\n- Treating the plan-mode `.claude\u002Fplans\u002F\u003Cslug>.md` as the plan — in plan mode it is\n  Phase-1 scratch; the plan isn't real until transferred to the tracker on exit.\n- Skipping the Phase-2 transfer (or deferring it behind other execute work) —\n  persisting into the tracker is the **first** post-approval action.\n- Fighting plan mode by trying `rack` CLI \u002F tracker writes while still in it — they\n  are blocked; draft, exit, then persist.\n- Drafting a plan without a task — if it's a plan, you made a task.\n- Running worktree teardown commands (`ai-hats wt merge` \u002F `wt discard` or terminal `transition done`) from inside the worktree being deleted — this orphans your shell. Return to the main repo first.\n\n","# Plan Discipline\n\nA plan is always a task, authored into `\u003Cai_hats_dir>\u002Ftracker\u002Fbacklog\u002Ftasks\u002F\u003CID>\u002Fplan.md`. Nowhere else.\n\n## When to Use\n\n- **On `EnterPlanMode`, recall this skill** — so you treat the plan-mode draft as\n  scratch and persist it into the tracker the moment you exit (see the two-phase\n  flow below). Plan mode is for *designing + approval*; the plan of record still\n  becomes a task in the tracker.\n- Also whenever a plan must be persisted — a draft in chat or a plan-mode\n  artifact — even if no task exists yet.\n- This skill is the plan's **home and transport** (where the file lives, how the\n  draft gets there). For filling each section *well*, hand off to **plan-gate**\n  (it routes Requirements \u002F Scope \u002F Steps \u002F Verification to their owners). Don't\n  duplicate that here.\n- Not an enforcement gate: the engine per-section gate blocks\n  `rack transition \u003CID> execute` on an empty plan. This skill is the authoring discipline\n  upstream of it; the gate is the backstop.\n\n## Procedure\n\n`rack` CLI commands (reads, transitions, logs) can be run from either the main repo or any linked worktree — root resolution automatically finds the main repo's `.agent\u002F` tracker. (Teardown commands like `ai-hats wt merge` \u002F `discard` or closing `transition done` should be run from the main repo so your shell cwd isn't removed underfoot — see skill **worktree-isolation**).\n\n### Preferred — plan directly in the tracker (no plan mode)\n\nWhen you control the flow, skip Claude Code plan mode and author straight into the\ntracker — zero round-trip, no `.claude\u002Fplans` file.\n\n1. **Make the task** (if none): `rack create \"\u003Ctitle>\" --description \"\u003Cintent>\" [--priority high|medium|low] [--id PROJ-NNN]` — starts in `brainstorm`; clarify scope there if fuzzy.\n2. **Scaffold:** `rack transition \u003CID> plan` → empty `\u003Cai_hats_dir>\u002Ftracker\u002Fbacklog\u002Ftasks\u002F\u003CID>\u002Fplan.md`.\n3. **Author into it** (Write\u002FEdit), filling the required sections (route each via\n   `plan-gate`). `rack transition \u003CID> execute` stays blocked until they're non-empty.\n\n### In Claude Code plan mode — two phases\n\nPlan mode is **read-only**: it blocks the `rack` CLI and every write except\n`.claude\u002Fplans\u002F\u003Cslug>.md`, so the tracker flow is impossible *until you exit*.\nThat's expected — don't fight it, and don't apologise for the draft.\n\n- **Phase 1 — in plan mode:** design; draft into `.claude\u002Fplans\u002F\u003Cslug>.md`;\n  present via `ExitPlanMode`. Do **not** attempt `rack create` \u002F `rack transition`\n  \u002F tracker writes — they are blocked. The draft is scratch, not the plan of record.\n- **Phase 2 — immediately on approval \u002F exit:** your **first** action, before any\n  other execute work, is to persist into the tracker — `rack create` (if needed)\n  → `rack transition \u003CID> plan` → Read the `.claude\u002Fplans` draft → Write it into\n  `\u003Cai_hats_dir>\u002Ftracker\u002Fbacklog\u002Ftasks\u002F\u003CID>\u002Fplan.md` → fill\u002Fconfirm sections → `rack transition \u003CID> execute`. There\n  is no auto-sync; the `.claude\u002Fplans` file is now inert, leave or delete.\n\n## Completion\n\n- `\u003Cai_hats_dir>\u002Ftracker\u002Fbacklog\u002Ftasks\u002F\u003CID>\u002Fplan.md` holds the real plan; no task-bearing file remains in\n  `.claude\u002Fplans`; `rack transition \u003CID> execute` passes the gate.\n- Handoff: plan in tracker → `plan-gate` (section quality) → engine gate → execute.\n\n## Anti-Patterns\n\n- Treating the plan-mode `.claude\u002Fplans\u002F\u003Cslug>.md` as the plan — in plan mode it is\n  Phase-1 scratch; the plan isn't real until transferred to the tracker on exit.\n- Skipping the Phase-2 transfer (or deferring it behind other execute work) —\n  persisting into the tracker is the **first** post-approval action.\n- Fighting plan mode by trying `rack` CLI \u002F tracker writes while still in it — they\n  are blocked; draft, exit, then persist.\n- Drafting a plan without a task — if it's a plan, you made a task.\n- Running worktree teardown commands (`ai-hats wt merge` \u002F `wt discard` or terminal `transition done`) from inside the worktree being deleted — this orphans your shell. Return to the main repo first.\n\n",{"name":5,"ai_hats":39,"license":15,"description":7},{"type":40,"schema_version":41},"skill",1,"master","f922a7f627276366873d546942d9ad899a86f71a","packages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fexperimental\u002Fcore\u002Fskills\u002Fplan-discipline","https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats","https:\u002F\u002Fgithub.com\u002Fmuratovv","2026-11-05 20:59:10",{"source":8,"skillName":5,"commands":49,"prompt":59,"zipAvailable":60},[50,53,56],{"tool":51,"command":52},"npx","npx skills add muratovv\u002Fai-hats --skill plan-discipline",{"tool":54,"command":55},"bunx","bunx skills add muratovv\u002Fai-hats --skill plan-discipline",{"tool":57,"command":58},"pnpm","pnpm dlx skills add muratovv\u002Fai-hats --skill plan-discipline","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats\u002Fblob\u002Fmaster\u002Fpackages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fexperimental\u002Fcore\u002Fskills\u002Fplan-discipline\u002FSKILL.md",true,[],[63,89,114,136,160,174],{"skillNo":64,"name":65,"nameZh":6,"description":66,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":67,"categories":68,"keywords":69,"publishedAt":34},"01M6PVFB1SM738R2SRSRSF7CY6","tool-evaluation-protocol","Time-bounded protocol for evaluating new tools, libraries, or methodologies before adoption. Use when evaluating a candidate dependency for the project, researching a methodology (e.g. ML\u002FLLM frameworks, testing approaches), or following up on a hype-driven recommendation.","https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats\u002Fblob\u002Fmaster\u002Fpackages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fexperimental\u002Fusage\u002Fskills\u002Ftool-evaluation-protocol\u002FSKILL.md",[],[70,71,72,73,74,75,76,77,78,79,23,80,81,82,83,84,85,86,87,88],"protocol","Evaluation","tool","tool evaluation protocol","testing","ml","libraries","adoption","methodology","Tools","dependency","up","frameworks","time","project","recommendation","for","bounded","candidate",{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":34},"01M6PVF7HATBEX1G7N50E2QT57","systematic-debugging","4-phase bug-fix protocol (evidence, pattern, hypothesis, verify). Use when investigating any error, failure, or unexpected behavior, handling bug reports from users or monitoring, or diagnosing test failures with non-obvious causes.","https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats\u002Fblob\u002Fmaster\u002Fpackages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fexperimental\u002Fusage\u002Fskills\u002Fsystematic-debugging\u002FSKILL.md",[],[96,97,98,99,70,100,101,102,103,104,23,105,106,107,108,109,110,111,112,113],"systematic debugging","debugging","systematic","test","monitoring","hypothesis","verify","behavior","fix","evidence","bug","reports","pattern","users","error","with","bug-fix","phase",{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":125,"publishedAt":34},"01M6PVF3MTQN3RPF73AN34856J","skill-template","Canonical template and validation guide for ai-hats skills. Use when creating a new skill, reviewing an existing one for structural compliance, or deciding which pattern fits a new behavior.","https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats\u002Fblob\u002Fmaster\u002Fpackages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fexperimental\u002Fusage\u002Fskills\u002Fskill-template\u002FSKILL.md",[120],{"categoryNo":121,"categoryName":122,"taxonomyType":123,"taxonomyTypeDesc":124},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[126,127,128,129,130,103,131,23,132,108,133,32,134,86,135],"template","skill template","validation","compliance","hats","guide","new skill","structural","which","Existing",{"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":143,"publishedAt":34},"01M6PVF06SCV28QARM5MQPANC9","skill-optimization","Audit and refactor library components to eliminate redundancy and staleness. Use during periodic library maintenance, after adding multiple new skills or rules, when a role's token budget is too high, or after retrospectives identify component issues.","https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats\u002Fblob\u002Fmaster\u002Fpackages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fexperimental\u002Fusage\u002Fskills\u002Fskill-optimization\u002FSKILL.md",[142],{"categoryNo":121,"categoryName":122,"taxonomyType":123,"taxonomyTypeDesc":124},[144,145,146,147,148,149,150,151,152,153,23,154,155,156,157,158,159],"Optimization","skill optimization","components","component","issues","library","audit","refactor","Budget","Rules","periodic","maintenance","token","token budget","role","high",{"skillNo":161,"name":162,"nameZh":6,"description":163,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":164,"categories":165,"keywords":166,"publishedAt":34},"01M6PVEXM9717016T9MW82HDCT","silent-fallback-gate","PreToolUse hook — refuses an Edit or Write that adds an inert broad except. Use when a Python edit was blocked for a silent fallback.","https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats\u002Fblob\u002Fmaster\u002Fpackages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fexperimental\u002Fusage\u002Fskills\u002Fsilent-fallback-gate\u002FSKILL.md",[],[167,168,169,170,171,172,23,173,86],"gate","fallback","silent fallback gate","python","write","edit","hook",{"skillNo":175,"name":176,"nameZh":6,"description":177,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":178,"categories":179,"keywords":181,"publishedAt":34},"01M6PVESM49C5NT7SB7N3F76VS","retro-to-framework","Convert an observation about agent behavior — from a retrospective or from a single incident — into a framework-level change (hook, rule, skill, skill update). Use after a retrospective identifies problems that are not project-specific, after an incident where an agent misapplied a component it had read, when CLAUDE.md band-aids accumulate (more than 3 per-project rules that could be generic), or when the same problem recurs across multiple projects.","https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats\u002Fblob\u002Fmaster\u002Fpackages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fexperimental\u002Fusage\u002Fskills\u002Fretro-to-framework\u002FSKILL.md",[180],{"categoryNo":121,"categoryName":122,"taxonomyType":123,"taxonomyTypeDesc":124},[182,183,184,185,147,186,187,188,153,103,23,189,190,84,191,192,193,194,195,196],"framework","retro","retro to framework","change","retrospective","projects","convert","incident","across","problem","about","more","skill update","single","generic"]