[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6JGCW59S4WDM97M4MK2JSTS":3,"skill-same:01M6JGCW59S4WDM97M4MK2JSTS":76},{"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":38,"linkOnly":39,"markdownContent":40,"markdownBody":41,"frontMatter":42,"refName":55,"commitSha":56,"skillDirectory":57,"forksCount":58,"repositoryHtmlUrl":59,"repositoryHomepageUrl":6,"ownerHtmlUrl":60,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":61,"install":62,"resources":75},"01M6JGCW59S4WDM97M4MK2JSTS","hatrack",null,"Backlog lifecycle on the rack CLI (hatrack) — create \u002F ls \u002F context \u002F transition, with field edits and hyp\u002Fproposal staying on `ai-hats task`. Use when a session composes the `hatrack-trait` (rack is the selected backlog manager) for any task lifecycle transition, backlog read, document, or link; it replaces `backlog-manager` for that session.","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\u002Fexperiments\u002Fhatrack-hardening\u002Farms\u002Fold\u002Fskills\u002Fhatrack\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37],"task","for","pip","ls","backlog manager","with","proposal","link","backlog","cli","document","tracker","version","use","session","hats","lifecycle","help","create","2026-11-10 10:12:30",false,"---\nname: hatrack\ndescription: Backlog lifecycle on the rack CLI (hatrack) — create \u002F ls \u002F context \u002F transition, with field edits and hyp\u002Fproposal staying on `ai-hats task`. Use when a session composes the `hatrack-trait` (rack is the selected backlog manager) for any task lifecycle transition, backlog read, document, or link; it replaces `backlog-manager` for that session.\nai_hats:\n  # ADR-0016: this skill drives the ai-hats-rack `rack` CLI for lifecycle and the\n  # ai-hats-tracker `ai-hats task` CLI for the coexistence surface (fields, hyp,\n  # proposal). Both are DECLARED needs; verified-and-warned at compose time.\n  requires:\n    cli:\n      - name: ai-hats-rack\n        check: \"rack --help\"\n        hint: \"pip install ai-hats-rack\"\n      - name: ai-hats-tracker\n        check: \"ai-hats-tracker --version\"\n        hint: \"pip install ai-hats-tracker\"\n    mcp: []\nlicense: MIT\n---\n\n# Hatrack\n\nDrive the task lifecycle through the **rack** CLI (`ai-hats-rack`), the minimal\nbacklog kernel — while field edits, hypotheses, and proposals stay on\n`ai-hats task`. Same FSM, same `task.yaml` on disk, same per-task lock.\n\n## When to Use\n\nThis is the **rack** backlog manager — composed via `hatrack-trait` in place of\n`backlog-manager` (never both: they both own the lifecycle and would conflict).\nSelect it per session with:\n\n```bash\nai-hats config customize \u003Crole> --remove-skill backlog-manager --add-trait hatrack-trait --project\n# revert: ai-hats config customize \u003Crole> --reset\n```\n\nIf a session composes the classic `backlog-manager` instead, use that skill —\n`rack` and `ai-hats task` share the lock and the same `task.yaml`, so a mixed\nbacklog is safe, but one session should drive lifecycle through one manager.\n\n## State Machine\n\nUnchanged from the tracker: `brainstorm → plan → execute → document → review →\ndone` (+ `blocked`, `failed`, `cancelled`). `rack transition \u003CID> \u003Cstate>` walks\none FSM edge under guard; illegal edges are refused with the legal set.\n\n## Lifecycle cadence — advance as you go\n\nMove the card **as each phase completes** — never batch the transitions at the\nend. The state is a live signal to the supervisor: finished work left in\n`execute` reads as \"still working\".\n\n| Transition           | When                                                               | Gate skill         |\n| -------------------- | ------------------------------------------------------------------ | ------------------ |\n| `brainstorm → plan`  | requirements clear enough to plan                                  | plan-gate          |\n| `plan → execute`     | plan approved (rack auto-creates the worktree)                     | worktree-isolation |\n| `execute → document` | code + tests done and committed                                    | —                  |\n| `document → review`  | **work finished — signals \"awaiting review\"**; attach `summary.md` | task-summary       |\n| `review → done`      | supervisor (card `reviewer`) approved                              | task-summary       |\n\nRack specifics:\n\n- When execute work is done, advance through `document` to **`review`** to\n  request review, then **wait** — do not self-advance to `done`; the reviewer\n  approves first.\n- **`review → done` auto-merges the worktree** via the subscriber (typed consent,\n  HATS-1019 parity) — no separate `ai-hats wt merge`.\n- **Before `plan → execute`, re-validate the premise:** scan the card for a\n  retracted\u002Fsuperseded driver since the plan was authored; if stale, bounce to\n  `brainstorm` instead of building on a dead premise.\n\n## Rack CLI — lifecycle, reads, documents, links\n\nFour verbs, each with `--json` (JSON-first):\n\n```bash\nrack create \"Title\" --id PROJ-042 --parent PROJ-014 --depends PROJ-041 --tag dx\nrack ls                       # backlog scan (--grep\u002F--tag\u002F--state\u002F--parent)\nrack ls PROJ-042 --deep 1     # graph walk from a card\nrack context PROJ-042         # THE read package: card + links + document paths\nrack transition PROJ-042 execute      # sugar for --state execute\n```\n\n`transition` is the one mutating verb: an ordered composite of ops run in argv\norder under ONE lock with a single persist (any abort rolls the whole sequence\nback). Compose ops on one line:\n\n```bash\nrack transition PROJ-042 --state execute --log \"impl started\" --link related:PROJ-040\nrack transition PROJ-042 --attach \u002Ftmp\u002Fdesign.md:design.md   # copy a file in as a document\nrack transition PROJ-042 --freeze design.md                  # pin {name,digest}\n```\n\nCommand flags: `--force` (needs `--reason`) relaxes the FSM arrow only;\n`--resolution` \u002F `--final-state` stamp terminal metadata; `--ack-frozen` is the\ntiered hatch for `--rm` \u002F `--freeze` on a pinned document.\n\n**Documents are fs-as-truth:** the only way to write one is to put a file into\n`tasks\u002F\u003CID>\u002F`; `rack context` live-scans and digests on the fly (no `doc put`).\nRead documents by the path `context` prints — never inline the body blind.\n\n## Coexistence — what stays on `ai-hats task`\n\n`rack` has no `update` verb and no hyp\u002Fproposal surface. Until generalization\n(HATS-1044) these stay on the tracker CLI (same lock, safe to interleave):\n\n| Edit                                                                | Command                           |\n| ------------------------------------------------------------------- | --------------------------------- |\n| state · work_log · documents · links · resolution · new card        | `rack transition` \u002F `rack create` |\n| title · description · priority · reviewer · role · tags · re-parent | `ai-hats task update \u003CID> --…`    |\n| hypotheses · proposals · `close` · `plan-extract` · `sync`          | `ai-hats task …`                  |\n\n`ai-hats task hyp --help` \u002F `ai-hats task proposal --help` carry the field\ncontracts — they are identical to a classic session; only lifecycle moved.\n\n## Completion\n\n- Lifecycle transitions, reads, documents, and links for the task went through\n  `rack`; fields \u002F hyp \u002F proposal went through `ai-hats task`; STATE.md and the\n  journal reflect the work.\n- **Validation scenario (RED → GREEN).** RED: on a rack-composed session an\n  agent asked to advance `PROJ-042` from plan to execute reaches for\n  `ai-hats task transition` (classic muscle memory), bypassing the rack\n  dispatcher, journal, and worktree effects the pilot exists to exercise. GREEN:\n  with hatrack the agent runs `rack transition PROJ-042 execute`, and knows to\n  keep `--priority` \u002F `hyp` \u002F `proposal` on `ai-hats task`.\n\n## Anti-Patterns\n\n- Driving lifecycle through `ai-hats task transition` in a rack session — the\n  rack dispatcher\u002Fjournal\u002Fworktree path is what's being dogfooded; use `rack`.\n- Composing both `backlog-manager` and `hatrack-trait` — two lifecycle owners.\n- Reaching for a `rack update` \u002F `rack hyp` verb — they don't exist by design;\n  those edits stay on `ai-hats task` (table above).\n- Inlining a document's body from `context` output — read it by the printed path.\n- Leaving finished work in `execute` and batching every transition at close —\n  advance per phase; enter `review` to signal readiness and wait (HATS-1047).\n","# Hatrack\n\nDrive the task lifecycle through the **rack** CLI (`ai-hats-rack`), the minimal\nbacklog kernel — while field edits, hypotheses, and proposals stay on\n`ai-hats task`. Same FSM, same `task.yaml` on disk, same per-task lock.\n\n## When to Use\n\nThis is the **rack** backlog manager — composed via `hatrack-trait` in place of\n`backlog-manager` (never both: they both own the lifecycle and would conflict).\nSelect it per session with:\n\n```bash\nai-hats config customize \u003Crole> --remove-skill backlog-manager --add-trait hatrack-trait --project\n# revert: ai-hats config customize \u003Crole> --reset\n```\n\nIf a session composes the classic `backlog-manager` instead, use that skill —\n`rack` and `ai-hats task` share the lock and the same `task.yaml`, so a mixed\nbacklog is safe, but one session should drive lifecycle through one manager.\n\n## State Machine\n\nUnchanged from the tracker: `brainstorm → plan → execute → document → review →\ndone` (+ `blocked`, `failed`, `cancelled`). `rack transition \u003CID> \u003Cstate>` walks\none FSM edge under guard; illegal edges are refused with the legal set.\n\n## Lifecycle cadence — advance as you go\n\nMove the card **as each phase completes** — never batch the transitions at the\nend. The state is a live signal to the supervisor: finished work left in\n`execute` reads as \"still working\".\n\n| Transition           | When                                                               | Gate skill         |\n| -------------------- | ------------------------------------------------------------------ | ------------------ |\n| `brainstorm → plan`  | requirements clear enough to plan                                  | plan-gate          |\n| `plan → execute`     | plan approved (rack auto-creates the worktree)                     | worktree-isolation |\n| `execute → document` | code + tests done and committed                                    | —                  |\n| `document → review`  | **work finished — signals \"awaiting review\"**; attach `summary.md` | task-summary       |\n| `review → done`      | supervisor (card `reviewer`) approved                              | task-summary       |\n\nRack specifics:\n\n- When execute work is done, advance through `document` to **`review`** to\n  request review, then **wait** — do not self-advance to `done`; the reviewer\n  approves first.\n- **`review → done` auto-merges the worktree** via the subscriber (typed consent,\n  HATS-1019 parity) — no separate `ai-hats wt merge`.\n- **Before `plan → execute`, re-validate the premise:** scan the card for a\n  retracted\u002Fsuperseded driver since the plan was authored; if stale, bounce to\n  `brainstorm` instead of building on a dead premise.\n\n## Rack CLI — lifecycle, reads, documents, links\n\nFour verbs, each with `--json` (JSON-first):\n\n```bash\nrack create \"Title\" --id PROJ-042 --parent PROJ-014 --depends PROJ-041 --tag dx\nrack ls                       # backlog scan (--grep\u002F--tag\u002F--state\u002F--parent)\nrack ls PROJ-042 --deep 1     # graph walk from a card\nrack context PROJ-042         # THE read package: card + links + document paths\nrack transition PROJ-042 execute      # sugar for --state execute\n```\n\n`transition` is the one mutating verb: an ordered composite of ops run in argv\norder under ONE lock with a single persist (any abort rolls the whole sequence\nback). Compose ops on one line:\n\n```bash\nrack transition PROJ-042 --state execute --log \"impl started\" --link related:PROJ-040\nrack transition PROJ-042 --attach \u002Ftmp\u002Fdesign.md:design.md   # copy a file in as a document\nrack transition PROJ-042 --freeze design.md                  # pin {name,digest}\n```\n\nCommand flags: `--force` (needs `--reason`) relaxes the FSM arrow only;\n`--resolution` \u002F `--final-state` stamp terminal metadata; `--ack-frozen` is the\ntiered hatch for `--rm` \u002F `--freeze` on a pinned document.\n\n**Documents are fs-as-truth:** the only way to write one is to put a file into\n`tasks\u002F\u003CID>\u002F`; `rack context` live-scans and digests on the fly (no `doc put`).\nRead documents by the path `context` prints — never inline the body blind.\n\n## Coexistence — what stays on `ai-hats task`\n\n`rack` has no `update` verb and no hyp\u002Fproposal surface. Until generalization\n(HATS-1044) these stay on the tracker CLI (same lock, safe to interleave):\n\n| Edit                                                                | Command                           |\n| ------------------------------------------------------------------- | --------------------------------- |\n| state · work_log · documents · links · resolution · new card        | `rack transition` \u002F `rack create` |\n| title · description · priority · reviewer · role · tags · re-parent | `ai-hats task update \u003CID> --…`    |\n| hypotheses · proposals · `close` · `plan-extract` · `sync`          | `ai-hats task …`                  |\n\n`ai-hats task hyp --help` \u002F `ai-hats task proposal --help` carry the field\ncontracts — they are identical to a classic session; only lifecycle moved.\n\n## Completion\n\n- Lifecycle transitions, reads, documents, and links for the task went through\n  `rack`; fields \u002F hyp \u002F proposal went through `ai-hats task`; STATE.md and the\n  journal reflect the work.\n- **Validation scenario (RED → GREEN).** RED: on a rack-composed session an\n  agent asked to advance `PROJ-042` from plan to execute reaches for\n  `ai-hats task transition` (classic muscle memory), bypassing the rack\n  dispatcher, journal, and worktree effects the pilot exists to exercise. GREEN:\n  with hatrack the agent runs `rack transition PROJ-042 execute`, and knows to\n  keep `--priority` \u002F `hyp` \u002F `proposal` on `ai-hats task`.\n\n## Anti-Patterns\n\n- Driving lifecycle through `ai-hats task transition` in a rack session — the\n  rack dispatcher\u002Fjournal\u002Fworktree path is what's being dogfooded; use `rack`.\n- Composing both `backlog-manager` and `hatrack-trait` — two lifecycle owners.\n- Reaching for a `rack update` \u002F `rack hyp` verb — they don't exist by design;\n  those edits stay on `ai-hats task` (table above).\n- Inlining a document's body from `context` output — read it by the printed path.\n- Leaving finished work in `execute` and batching every transition at close —\n  advance per phase; enter `review` to signal readiness and wait (HATS-1047).\n",{"name":5,"ai_hats":43,"license":15,"description":7},{"requires":44},{"cli":45,"mcp":54},[46,50],{"hint":47,"name":48,"check":49},"pip install ai-hats-rack","ai-hats-rack","rack --help",{"hint":51,"name":52,"check":53},"pip install ai-hats-tracker","ai-hats-tracker","ai-hats-tracker --version",[],"master","b4819add93efbaf4d80627118ec34680406b309b","experiments\u002Fhatrack-hardening\u002Farms\u002Fold\u002Fskills\u002Fhatrack",1,"https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats","https:\u002F\u002Fgithub.com\u002Fmuratovv","2026-11-05 20:59:10",{"source":8,"skillName":5,"commands":63,"prompt":73,"zipAvailable":74},[64,67,70],{"tool":65,"command":66},"npx","npx skills add muratovv\u002Fai-hats --skill hatrack",{"tool":68,"command":69},"bunx","bunx skills add muratovv\u002Fai-hats --skill hatrack",{"tool":71,"command":72},"pnpm","pnpm dlx skills add muratovv\u002Fai-hats --skill hatrack","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats\u002Fblob\u002Fmaster\u002Fexperiments\u002Fhatrack-hardening\u002Farms\u002Fold\u002Fskills\u002Fhatrack\u002FSKILL.md",true,[],[77,102,126,148,172,186],{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":83,"publishedAt":38},"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",[],[84,85,86,87,88,89,90,91,92,93,32,94,95,96,97,98,99,20,100,101],"protocol","Evaluation","tool","tool evaluation protocol","testing","ml","libraries","adoption","methodology","Tools","dependency","up","frameworks","time","project","recommendation","bounded","candidate",{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"publishedAt":38},"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",[],[109,110,111,112,84,113,114,115,116,117,32,118,119,120,121,122,123,24,124,125],"systematic debugging","debugging","systematic","test","monitoring","hypothesis","verify","behavior","fix","evidence","bug","reports","pattern","users","error","bug-fix","phase",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":137,"publishedAt":38},"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",[132],{"categoryNo":133,"categoryName":134,"taxonomyType":135,"taxonomyTypeDesc":136},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[138,139,140,141,34,116,142,32,143,121,144,145,146,20,147],"template","skill template","validation","compliance","guide","new skill","structural","canonical","which","Existing",{"skillNo":149,"name":150,"nameZh":6,"description":151,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":152,"categories":153,"keywords":155,"publishedAt":38},"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",[154],{"categoryNo":133,"categoryName":134,"taxonomyType":135,"taxonomyTypeDesc":136},[156,157,158,159,160,161,162,163,164,165,32,166,167,168,169,170,171],"Optimization","skill optimization","components","component","issues","library","audit","refactor","Budget","Rules","periodic","maintenance","token","token budget","role","high",{"skillNo":173,"name":174,"nameZh":6,"description":175,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":176,"categories":177,"keywords":178,"publishedAt":38},"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",[],[179,180,181,182,183,184,32,185,20],"gate","fallback","silent fallback gate","python","write","edit","hook",{"skillNo":187,"name":188,"nameZh":6,"description":189,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":190,"categories":191,"keywords":193,"publishedAt":38},"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",[192],{"categoryNo":133,"categoryName":134,"taxonomyType":135,"taxonomyTypeDesc":136},[194,195,196,197,159,198,199,200,165,116,32,201,202,98,203,204,205,206,207,208],"framework","retro","retro to framework","change","retrospective","projects","convert","incident","across","problem","about","more","skill update","single","generic"]