[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6PVF3MTQN3RPF73AN34856J":3,"skill-same:01M6PVF3MTQN3RPF73AN34856J":86},{"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":23,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":47,"commitSha":48,"skillDirectory":49,"forksCount":46,"repositoryHtmlUrl":50,"repositoryHomepageUrl":6,"ownerHtmlUrl":51,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":52,"install":53,"resources":66},"01M6PVF3MTQN3RPF73AN34856J","skill-template",null,"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.","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\u002Fusage\u002Fskills\u002Fskill-template\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"template","skill template","validation","compliance","hats","behavior","guide","use","new skill","pattern","structural","canonical","which","for","Existing","2026-11-10 10:12:30",false,"---\nname: skill-template\ndescription: >-\n  Canonical template and validation guide for ai-hats skills. Use when\n  creating a new skill, reviewing an existing one for structural\n  compliance, or deciding which pattern fits a new behavior.\nlicense: MIT\nai_hats:\n  schema_version: 1\n  type: skill\n---\n\n# Skill Template\n\nGuide for creating and validating skills in the ai-hats library.\n\n## When to Use\n\n- Creating a new skill\n- Reviewing an existing skill for structural compliance\n- Deciding which pattern fits a new behavior\n\n## Canonical Structure\n\nEvery SKILL.md follows this layout:\n\n```\n# \u003CSkill Name>\n\n\u003COne-line purpose.>\n\n## When to Use\n\u003CBoundaries & disambiguation the one-line description can't carry:\nwhen NOT to use, which sibling skill to prefer, scope edges.\nComplements the description's triggers — does not restate them.>\n\n## \u003CMain Section>\n\u003CCore content. Section name depends on pattern (see below).>\n\n## Completion                ← required for protocol\u002Fchecklist; optional for reference\n\u003CDone-criteria and expected artifacts; include the validation scenario.>\n\n## Anti-Patterns             ← recommended\n\u003CCommon mistakes, 2-5 bullets.>\n```\n\n### `description` vs `## When to Use` — two lifecycle stages\n\nThey are read at different moments, so they carry different content:\n\n- **`description`** is in the always-on skill index (selection-time). It\n  is the *only* thing the selector sees, so it holds the **triggers** —\n  \"what it does. Use when \u003CX>\". It must NOT summarize the procedure body:\n  a step-by-step summary in the index is a shortcut the selector acts on\n  *instead of* loading the skill, so the actual procedure never runs.\n- **`## When to Use`** loads only *after* the skill is invoked\n  (post-load). The \"should I use this\" call is already made by then, so\n  restating triggers adds nothing. Use it for **boundaries &\n  disambiguation**: when NOT to use, which sibling skill to prefer,\n  scope edges — the nuance a one-line description can't hold.\n\n## Patterns\n\nChoose the main section heading by pattern:\n\n| Pattern      | Main Heading | Used When                                 |\n| ------------ | ------------ | ----------------------------------------- |\n| protocol     | Procedure    | Step-by-step process with ordered phases  |\n| checklist    | Checklist    | Verification \u002F audit with pass\u002Ffail items |\n| orchestrator | Workflow     | State machine coordinating other skills   |\n| reference    | Conventions  | Declarative guidelines, no procedure      |\n| template     | Format       | Prescribes a specific output structure    |\n\n## Scripts vs prose\n\nAdd a `scripts\u002F` utility (rather than prose the agent re-generates) when\nthe operation is **deterministic, repeatable, and benefits from explicit\nerror handling**. A committed script saves tokens and is more reliable\nthan code regenerated from a description each time. Keep ad-hoc, one-off,\nor judgment-heavy steps as prose.\n\n**Name the script so the agent can resolve it.** A `hooks\u002F` script is wired by\nthe engine, which knows where it lives; a `scripts\u002F` one is run by the agent,\nwhose cwd is the project root. A bare `scripts\u002F\u003Cname>` therefore reads as the\n*project's* `scripts\u002F` — a directory most repos already have. Say which\ndirectory you mean, in the step that invokes it: `scripts\u002F\u003Cname>` **resolved\nagainst this skill's own directory**. `references\u002F` paths are read, not\nexecuted, and carry no such collision.\n\n## Declaring a hook from a skill\n\nThis is how the ladder's top rung is actually built: a skill's `SKILL.md`\nfrontmatter declares **hooks** under a top-level `ai_hats:` key — `git_hooks`\n(git events), `runtime_hooks` (`PreToolUse` \u002F `PostToolUse`), and `worktree`\n(`wt_in` \u002F `wt_out` lifecycle). The skill directory carries the script:\n\n```yaml\n---\nname: migration-freeze\ndescription: >-\n  PreToolUse hook — refuses edits under `db\u002Fmigrations\u002F` while a release\n  branch is open, and records the attempt. Use when diagnosing why a\n  migration edit was blocked.\nai_hats:\n  runtime_hooks:\n    PreToolUse:\n      - matcher: Bash             # tool name or regex\n        script: hooks\u002Fguard.sh    # path relative to THIS skill's directory\n    PostToolUse:\n      - matcher: Edit|Write|MultiEdit\n        script: hooks\u002Faudit.py\n---\n```\n\nTwo rules that are not guessable:\n\n- **Name the tool in Claude's vocabulary, always** — `Bash`,\n  `Edit|Write|MultiEdit` — even on another surface. Each surface translates at\n  spawn, so enumerating other surfaces' tool names guards nothing extra.\n- **Your script reads ONE dialect**: `tool_name`, `tool_input.command`,\n  `tool_input.file_path`. Do not add a second reading for another surface's\n  payload shape; the adapter has already mapped it.\n\nA shipped example to copy: `usage\u002Fskills\u002Fpy-security-lint\u002F` — frontmatter plus\n`hooks\u002F`. Fuller contract, when you have the ai-hats checkout at hand:\n`docs\u002Fhow-to-extend.md` § \"Declaring hooks from a skill\".\n\n## When your edit takes effect\n\n**No command.** Roles are composed fresh at every session launch, so editing a\n`SKILL.md` body is live for the next session. The same holds for `ai-hats.yaml`\n— it is re-read at launch, so adding your skill to a trait or role also lands on\nits own. `ai-hats self init` validates the config and refreshes the project\nscaffold; it is not how composition changes take effect — with one exception, a\nskill declaring a git hook on an event that has no `.githooks\u002F\u003Cevent>`\ndispatcher yet (`library-editing` §4).\n\nSkills materialize into the per-session cache under\n`\u003Ccache_root>\u002Fsessions\u002F\u003Csid>\u002F` — outside the project, default\n`~\u002F.cache\u002Fai-hats\u002F`; the exact subpath is provider-specific\n(claude `plugin\u002F`, agy `rules\u002F.agents\u002Fskills\u002F`, cline `skills\u002F`).\n\n**Never `cp` skill files by hand** into `.claude\u002Fskills\u002F` or\n`\u003Cai_hats_dir>\u002Flibrary\u002Fskills\u002F`. Neither is a root the resolver reads: the\nfirst is retired, the second is created empty by `ai-hats init` as the landing\nspot for a legacy `.agent\u002Fskills\u002F` and nothing composes from it. A skill\n**you** author lives in `\u003Cproject>\u002Flibraries\u002Fskills\u002F\u003Cname>\u002F` (the other roots:\n`library-editing` §1). A hand-made copy in either place drifts from\nsource-of-truth and never reaches a prompt.\n\nConfirm what a launch would actually compose with `ai-hats config status` or\n`ai-hats --dry-run`.\n\n## Validation scenario (RED → GREEN → REFACTOR)\n\nA skill is not done until one **named baseline scenario** shows it changes\nbehaviour — the same discipline we already apply to code:\n\n- **RED** — name a concrete task where an agent *without* this skill gets it\n  wrong (the failure the skill exists to prevent). If you can't name one, the\n  skill has no demonstrable value — stop and reconsider.\n- **GREEN** — the skill's guidance makes that same task come out right.\n- **REFACTOR** — tighten wording to close rationalization loopholes: an agent\n  should not be able to read the skill and still talk itself out of compliance.\n\nProse-level, not an eval harness: one scenario named in the skill body or its\ntask card — no `evals.json`, no scoring. (Adapted from obra\u002Fsuperpowers\nwriting-skills, MIT.)\n\n## Validation Checklist\n\n- [ ] H1 + one-liner present\n- [ ] **Description includes BOTH capability AND trigger conditions** — it\n      is the *only* thing the skill selector sees. \"What it does. Use when\n      \u003Cspecific triggers>.\"\n- [ ] **Description does NOT summarize the procedure body** — one capability\n      phrase is fine; enumerating the skill's steps\u002Fmethod is not. A body-summary\n      in the always-on index is a shortcut the selector acts on *instead of*\n      loading the skill, so the procedure gets skipped. (CSO discipline adapted\n      from obra\u002Fsuperpowers, MIT.)\n- [ ] **Description is a folded strip scalar** — `description: >-`. A plain\n      or quoted line is the same string in a second spelling, and clip `>`\n      keeps a trailing newline, so the skill index wraps the path. The push\n      to master runs `bash scripts\u002Fgates.sh skill-desc`.\n- [ ] **Validation scenario present** — one named RED baseline (an agent\n      *without* the skill fails) that the skill demonstrably fixes; see\n      \"Validation scenario\" above\n- [ ] `## When to Use` adds boundary\u002Fdisambiguation value beyond the\n      description (when NOT to use, sibling-skill preference, scope edges) —\n      not a restatement of the description's triggers\n- [ ] Main body uses the correct heading for its pattern\n- [ ] `## Completion` present (unless reference\u002Ftemplate pattern)\n- [ ] `## Anti-Patterns` present (unless trivially small)\n- [ ] Frontmatter declares `name` + `description` (single-file SKILL.md — no\n      `metadata.yaml` sidecar; any hooks go under a top-level `ai_hats:` key)\n- [ ] **References one level deep** — `SKILL.md → references\u002F*.md`, never\n      `references\u002F*.md → references\u002Fsub\u002F*.md`. No reference pyramids.\n- [ ] **Length policy:** `≤50` lines ideal · `50–150` warning (justify in\n      the skill or split) · `>150` must split — move content into\n      `references\u002F` or sibling skills. If a skill cleanly divides into two\n      domains, split it.\n- [ ] **Target behavior stated positively** — a prohibition survives only as\n      a hard guardrail on behavior that can't be phrased positively, and then\n      paired with its replacement (\"Redirect instead: …\"). Naming the\n      forbidden move drags it into context and makes it *more* available.\n- [ ] **Every omission is a decision** — read the draft for silences: each\n      thing the component doesn't say is delegated to model priors; fill it,\n      or leave it open deliberately. (Both lenses adapted from\n      mattpocock\u002Fskills `writing-great-skills`, MIT.)\n\n## References\n\nFor detailed guidance on success metrics, testing, and troubleshooting,\nsee `references\u002Fanthropic-skills-guide.md`.\n\nFor external frameworks (skillcreator, Anthropic skill-creator),\nsee `references\u002Fexternal-skill-frameworks.md`.\n\n## Anti-Patterns\n\n- Dumping hundreds of lines into one SKILL.md — split heavy content into `references\u002F`\n- `## When to Use` that merely restates the description — once the skill\n  is loaded the selection decision is already made; give boundaries \u002F\n  disambiguation \u002F when-NOT instead\n- Vague triggers in the `description` that match everything — be specific\n- **`description` that summarizes the procedure body** — enumerating the\n  skill's steps in the always-on index lets the agent act on the summary and\n  skip loading the skill; keep it triggers + one capability phrase\n- Mixing multiple domains in one skill — split into focused skills\n- Omitting completion criteria — the agent won't know when to stop\n- **Shipping a skill with no validation scenario** — if no RED baseline shows\n  an agent failing without it, the skill's value is unproven\n- Prohibition-led wording with no positive replacement — \"never X\" alone\n  half-reads as an instruction to X; state what to do instead\n- Silent defaults — the component omits a decision (location, format, edge\n  case) and every agent fills the gap differently from priors\n","# Skill Template\n\nGuide for creating and validating skills in the ai-hats library.\n\n## When to Use\n\n- Creating a new skill\n- Reviewing an existing skill for structural compliance\n- Deciding which pattern fits a new behavior\n\n## Canonical Structure\n\nEvery SKILL.md follows this layout:\n\n```\n# \u003CSkill Name>\n\n\u003COne-line purpose.>\n\n## When to Use\n\u003CBoundaries & disambiguation the one-line description can't carry:\nwhen NOT to use, which sibling skill to prefer, scope edges.\nComplements the description's triggers — does not restate them.>\n\n## \u003CMain Section>\n\u003CCore content. Section name depends on pattern (see below).>\n\n## Completion                ← required for protocol\u002Fchecklist; optional for reference\n\u003CDone-criteria and expected artifacts; include the validation scenario.>\n\n## Anti-Patterns             ← recommended\n\u003CCommon mistakes, 2-5 bullets.>\n```\n\n### `description` vs `## When to Use` — two lifecycle stages\n\nThey are read at different moments, so they carry different content:\n\n- **`description`** is in the always-on skill index (selection-time). It\n  is the *only* thing the selector sees, so it holds the **triggers** —\n  \"what it does. Use when \u003CX>\". It must NOT summarize the procedure body:\n  a step-by-step summary in the index is a shortcut the selector acts on\n  *instead of* loading the skill, so the actual procedure never runs.\n- **`## When to Use`** loads only *after* the skill is invoked\n  (post-load). The \"should I use this\" call is already made by then, so\n  restating triggers adds nothing. Use it for **boundaries &\n  disambiguation**: when NOT to use, which sibling skill to prefer,\n  scope edges — the nuance a one-line description can't hold.\n\n## Patterns\n\nChoose the main section heading by pattern:\n\n| Pattern      | Main Heading | Used When                                 |\n| ------------ | ------------ | ----------------------------------------- |\n| protocol     | Procedure    | Step-by-step process with ordered phases  |\n| checklist    | Checklist    | Verification \u002F audit with pass\u002Ffail items |\n| orchestrator | Workflow     | State machine coordinating other skills   |\n| reference    | Conventions  | Declarative guidelines, no procedure      |\n| template     | Format       | Prescribes a specific output structure    |\n\n## Scripts vs prose\n\nAdd a `scripts\u002F` utility (rather than prose the agent re-generates) when\nthe operation is **deterministic, repeatable, and benefits from explicit\nerror handling**. A committed script saves tokens and is more reliable\nthan code regenerated from a description each time. Keep ad-hoc, one-off,\nor judgment-heavy steps as prose.\n\n**Name the script so the agent can resolve it.** A `hooks\u002F` script is wired by\nthe engine, which knows where it lives; a `scripts\u002F` one is run by the agent,\nwhose cwd is the project root. A bare `scripts\u002F\u003Cname>` therefore reads as the\n*project's* `scripts\u002F` — a directory most repos already have. Say which\ndirectory you mean, in the step that invokes it: `scripts\u002F\u003Cname>` **resolved\nagainst this skill's own directory**. `references\u002F` paths are read, not\nexecuted, and carry no such collision.\n\n## Declaring a hook from a skill\n\nThis is how the ladder's top rung is actually built: a skill's `SKILL.md`\nfrontmatter declares **hooks** under a top-level `ai_hats:` key — `git_hooks`\n(git events), `runtime_hooks` (`PreToolUse` \u002F `PostToolUse`), and `worktree`\n(`wt_in` \u002F `wt_out` lifecycle). The skill directory carries the script:\n\n```yaml\n---\nname: migration-freeze\ndescription: >-\n  PreToolUse hook — refuses edits under `db\u002Fmigrations\u002F` while a release\n  branch is open, and records the attempt. Use when diagnosing why a\n  migration edit was blocked.\nai_hats:\n  runtime_hooks:\n    PreToolUse:\n      - matcher: Bash             # tool name or regex\n        script: hooks\u002Fguard.sh    # path relative to THIS skill's directory\n    PostToolUse:\n      - matcher: Edit|Write|MultiEdit\n        script: hooks\u002Faudit.py\n---\n```\n\nTwo rules that are not guessable:\n\n- **Name the tool in Claude's vocabulary, always** — `Bash`,\n  `Edit|Write|MultiEdit` — even on another surface. Each surface translates at\n  spawn, so enumerating other surfaces' tool names guards nothing extra.\n- **Your script reads ONE dialect**: `tool_name`, `tool_input.command`,\n  `tool_input.file_path`. Do not add a second reading for another surface's\n  payload shape; the adapter has already mapped it.\n\nA shipped example to copy: `usage\u002Fskills\u002Fpy-security-lint\u002F` — frontmatter plus\n`hooks\u002F`. Fuller contract, when you have the ai-hats checkout at hand:\n`docs\u002Fhow-to-extend.md` § \"Declaring hooks from a skill\".\n\n## When your edit takes effect\n\n**No command.** Roles are composed fresh at every session launch, so editing a\n`SKILL.md` body is live for the next session. The same holds for `ai-hats.yaml`\n— it is re-read at launch, so adding your skill to a trait or role also lands on\nits own. `ai-hats self init` validates the config and refreshes the project\nscaffold; it is not how composition changes take effect — with one exception, a\nskill declaring a git hook on an event that has no `.githooks\u002F\u003Cevent>`\ndispatcher yet (`library-editing` §4).\n\nSkills materialize into the per-session cache under\n`\u003Ccache_root>\u002Fsessions\u002F\u003Csid>\u002F` — outside the project, default\n`~\u002F.cache\u002Fai-hats\u002F`; the exact subpath is provider-specific\n(claude `plugin\u002F`, agy `rules\u002F.agents\u002Fskills\u002F`, cline `skills\u002F`).\n\n**Never `cp` skill files by hand** into `.claude\u002Fskills\u002F` or\n`\u003Cai_hats_dir>\u002Flibrary\u002Fskills\u002F`. Neither is a root the resolver reads: the\nfirst is retired, the second is created empty by `ai-hats init` as the landing\nspot for a legacy `.agent\u002Fskills\u002F` and nothing composes from it. A skill\n**you** author lives in `\u003Cproject>\u002Flibraries\u002Fskills\u002F\u003Cname>\u002F` (the other roots:\n`library-editing` §1). A hand-made copy in either place drifts from\nsource-of-truth and never reaches a prompt.\n\nConfirm what a launch would actually compose with `ai-hats config status` or\n`ai-hats --dry-run`.\n\n## Validation scenario (RED → GREEN → REFACTOR)\n\nA skill is not done until one **named baseline scenario** shows it changes\nbehaviour — the same discipline we already apply to code:\n\n- **RED** — name a concrete task where an agent *without* this skill gets it\n  wrong (the failure the skill exists to prevent). If you can't name one, the\n  skill has no demonstrable value — stop and reconsider.\n- **GREEN** — the skill's guidance makes that same task come out right.\n- **REFACTOR** — tighten wording to close rationalization loopholes: an agent\n  should not be able to read the skill and still talk itself out of compliance.\n\nProse-level, not an eval harness: one scenario named in the skill body or its\ntask card — no `evals.json`, no scoring. (Adapted from obra\u002Fsuperpowers\nwriting-skills, MIT.)\n\n## Validation Checklist\n\n- [ ] H1 + one-liner present\n- [ ] **Description includes BOTH capability AND trigger conditions** — it\n      is the *only* thing the skill selector sees. \"What it does. Use when\n      \u003Cspecific triggers>.\"\n- [ ] **Description does NOT summarize the procedure body** — one capability\n      phrase is fine; enumerating the skill's steps\u002Fmethod is not. A body-summary\n      in the always-on index is a shortcut the selector acts on *instead of*\n      loading the skill, so the procedure gets skipped. (CSO discipline adapted\n      from obra\u002Fsuperpowers, MIT.)\n- [ ] **Description is a folded strip scalar** — `description: >-`. A plain\n      or quoted line is the same string in a second spelling, and clip `>`\n      keeps a trailing newline, so the skill index wraps the path. The push\n      to master runs `bash scripts\u002Fgates.sh skill-desc`.\n- [ ] **Validation scenario present** — one named RED baseline (an agent\n      *without* the skill fails) that the skill demonstrably fixes; see\n      \"Validation scenario\" above\n- [ ] `## When to Use` adds boundary\u002Fdisambiguation value beyond the\n      description (when NOT to use, sibling-skill preference, scope edges) —\n      not a restatement of the description's triggers\n- [ ] Main body uses the correct heading for its pattern\n- [ ] `## Completion` present (unless reference\u002Ftemplate pattern)\n- [ ] `## Anti-Patterns` present (unless trivially small)\n- [ ] Frontmatter declares `name` + `description` (single-file SKILL.md — no\n      `metadata.yaml` sidecar; any hooks go under a top-level `ai_hats:` key)\n- [ ] **References one level deep** — `SKILL.md → references\u002F*.md`, never\n      `references\u002F*.md → references\u002Fsub\u002F*.md`. No reference pyramids.\n- [ ] **Length policy:** `≤50` lines ideal · `50–150` warning (justify in\n      the skill or split) · `>150` must split — move content into\n      `references\u002F` or sibling skills. If a skill cleanly divides into two\n      domains, split it.\n- [ ] **Target behavior stated positively** — a prohibition survives only as\n      a hard guardrail on behavior that can't be phrased positively, and then\n      paired with its replacement (\"Redirect instead: …\"). Naming the\n      forbidden move drags it into context and makes it *more* available.\n- [ ] **Every omission is a decision** — read the draft for silences: each\n      thing the component doesn't say is delegated to model priors; fill it,\n      or leave it open deliberately. (Both lenses adapted from\n      mattpocock\u002Fskills `writing-great-skills`, MIT.)\n\n## References\n\nFor detailed guidance on success metrics, testing, and troubleshooting,\nsee `references\u002Fanthropic-skills-guide.md`.\n\nFor external frameworks (skillcreator, Anthropic skill-creator),\nsee `references\u002Fexternal-skill-frameworks.md`.\n\n## Anti-Patterns\n\n- Dumping hundreds of lines into one SKILL.md — split heavy content into `references\u002F`\n- `## When to Use` that merely restates the description — once the skill\n  is loaded the selection decision is already made; give boundaries \u002F\n  disambiguation \u002F when-NOT instead\n- Vague triggers in the `description` that match everything — be specific\n- **`description` that summarizes the procedure body** — enumerating the\n  skill's steps in the always-on index lets the agent act on the summary and\n  skip loading the skill; keep it triggers + one capability phrase\n- Mixing multiple domains in one skill — split into focused skills\n- Omitting completion criteria — the agent won't know when to stop\n- **Shipping a skill with no validation scenario** — if no RED baseline shows\n  an agent failing without it, the skill's value is unproven\n- Prohibition-led wording with no positive replacement — \"never X\" alone\n  half-reads as an instruction to X; state what to do instead\n- Silent defaults — the component omits a decision (location, format, edge\n  case) and every agent fills the gap differently from priors\n",{"name":5,"ai_hats":44,"license":15,"description":7},{"type":45,"schema_version":46},"skill",1,"master","f922a7f627276366873d546942d9ad899a86f71a","packages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fexperimental\u002Fusage\u002Fskills\u002Fskill-template","https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats","https:\u002F\u002Fgithub.com\u002Fmuratovv","2026-11-05 20:59:10",{"source":8,"skillName":5,"commands":54,"prompt":64,"zipAvailable":65},[55,58,61],{"tool":56,"command":57},"npx","npx skills add muratovv\u002Fai-hats --skill skill-template",{"tool":59,"command":60},"bunx","bunx skills add muratovv\u002Fai-hats --skill skill-template",{"tool":62,"command":63},"pnpm","pnpm dlx skills add muratovv\u002Fai-hats --skill skill-template","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats\u002Fblob\u002Fmaster\u002Fpackages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fexperimental\u002Fusage\u002Fskills\u002Fskill-template\u002FSKILL.md",true,[67,72,78,82],{"path":68,"resourceType":68,"resourceTypeDesc":69,"sizeBytes":70,"sourceHtmlUrl":71},"LICENSE","许可证",1070,"https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats\u002Fblob\u002Fmaster\u002Fpackages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fexperimental\u002Fusage\u002Fskills\u002Fskill-template\u002FLICENSE",{"path":73,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":76,"sourceHtmlUrl":77},"metadata.yaml","REFERENCE","参考文档",758,"https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats\u002Fblob\u002Fmaster\u002Fpackages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fexperimental\u002Fusage\u002Fskills\u002Fskill-template\u002Fmetadata.yaml",{"path":79,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":80,"sourceHtmlUrl":81},"references\u002Fanthropic-skills-guide.md",3649,"https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats\u002Fblob\u002Fmaster\u002Fpackages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fexperimental\u002Fusage\u002Fskills\u002Fskill-template\u002Freferences\u002Fanthropic-skills-guide.md",{"path":83,"resourceType":74,"resourceTypeDesc":75,"sizeBytes":84,"sourceHtmlUrl":85},"references\u002Fexternal-skill-frameworks.md",3762,"https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats\u002Fblob\u002Fmaster\u002Fpackages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fexperimental\u002Fusage\u002Fskills\u002Fskill-template\u002Freferences\u002Fexternal-skill-frameworks.md",[87,112,135,159,173,196],{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":39},"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",[],[94,95,96,97,31,98,99,37,100,101,102,103,104,105,106,107,108,109,110,111],"tool evaluation protocol","tool","Evaluation","protocol","candidate","bounded","recommendation","project","time","frameworks","up","dependency","Tools","methodology","adoption","libraries","ml","testing",{"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":39},"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",[],[119,120,121,122,123,124,125,126,127,33,128,129,31,130,29,131,132,133,97,134],"systematic","debugging","systematic debugging","evidence","test","bug-fix","with","error","users","reports","bug","fix","verify","hypothesis","monitoring","phase",{"skillNo":136,"name":137,"nameZh":6,"description":138,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":139,"categories":140,"keywords":142,"publishedAt":39},"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",[141],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[143,144,145,146,147,148,149,150,31,151,152,153,154,155,156,157,158],"skill optimization","Optimization","high","role","token budget","token","maintenance","periodic","Rules","Budget","refactor","audit","library","issues","component","components",{"skillNo":160,"name":161,"nameZh":6,"description":162,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":163,"categories":164,"keywords":165,"publishedAt":39},"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",[],[166,167,168,169,170,171,31,37,172],"silent fallback gate","fallback","gate","edit","write","python","hook",{"skillNo":174,"name":175,"nameZh":6,"description":176,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":177,"categories":178,"keywords":180,"publishedAt":39},"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",[179],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[181,182,183,184,185,186,157,187,188,189,101,190,191,31,29,151,192,193,194,195],"retro to framework","retro","framework","problem","generic","single","skill update","more","about","across","incident","convert","projects","retrospective","change",{"skillNo":197,"name":198,"nameZh":6,"description":199,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":200,"categories":201,"keywords":205,"publishedAt":39},"01M6PVEQ05ETVVB2NX7FSYXRV2","py-security-lint","PostToolUse hook — reports the project's own ruff security (`S`) findings on every `.py` you Edit\u002FWrite, non-blockingly; fail-open, no manual invocation.","https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats\u002Fblob\u002Fmaster\u002Fpackages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fexperimental\u002Fusage\u002Fskills\u002Fpy-security-lint\u002FSKILL.md",[202],{"categoryNo":203,"categoryName":204,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查",[206,207,208,128,209,101,210,170,169,211,172,212],"lint","security","py security lint","ruff","open","you","manual"]