[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6PVBXGSJ1XQ3PGXGAZ3NBC3":3,"skill-same:01M6PVBXGSJ1XQ3PGXGAZ3NBC3":103},{"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":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},"01M6PVBXGSJ1XQ3PGXGAZ3NBC3","git-mastery",null,"Advanced git operations covering branches, conventional commits, worktrees, and rebasing. Use for any git operation beyond basic add\u002Fcommit\u002Fpush, for branch management, rebasing, and conflict resolution, or when setting up commit conventions for a project.","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\u002Fgit-mastery\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"git","git mastery","commit conventions","commit","for","advanced","git operation","add","git operations","basic","conflict","project","branches","worktrees","conventional commits","conflict resolution","up","branch","commits","push","2026-11-10 10:12:30",false,"---\nname: git-mastery\ndescription: >-\n  Advanced git operations covering branches, conventional commits,\n  worktrees, and rebasing. Use for any git operation beyond basic\n  add\u002Fcommit\u002Fpush, for branch management, rebasing, and conflict\n  resolution, or when setting up commit conventions for a project.\nai_hats:\n  schema_version: 1\n  type: skill\n  # Skill-contributed git hooks. The assembler installs\n  # these into the project's .githooks\u002F\u003Cevent>.d\u002F at composition time.\nlicense: MIT\n---\n\n# Git Mastery\n\n## When to Use\n\nBasic add\u002Fcommit\u002Fpush needs no skill — reach here only for harder operations:\nrebases, conflict resolution, branch strategy, conventional-commit setup,\ncherry-pick\u002Fbackport. The git-*worktree* lifecycle (create\u002Fmerge\u002Fdiscard a task\nworktree) is owned by **worktree-isolation** — use that for isolation, this for\nhistory and branch manipulation.\n\n## Capabilities\n\n- Create feature branches with naming conventions\n- Stage and commit with conventional commit format\n- Resolve merge conflicts\n- Manage worktrees for parallel development\n- Interactive rebase for clean history\n- Cherry-pick and backport changes\n\n## Conventions\n\n- Branch naming: `type\u002Fdescription` (e.g., `feat\u002Fadd-auth`, `fix\u002Flogin-bug`)\n- Conventional commits: `type(scope): description`\n- Types: feat, fix, refactor, docs, test, chore, ci\n- Commit messages explain WHY, not WHAT\n- Commit frequently with atomic changes\n- Check status before operations\n- Never force push without explicit approval\n\n## Pre-Commit Checklist\n\nBefore every `git add` \u002F `git commit`:\n\n1. Run `git status` and `git diff --stat` to review what will be committed.\n2. For each file verify:\n   - Project code? (not agent config like ai-hats.yaml, .agent\u002F)\n   - Meaningful content? (not empty placeholders)\n   - Belongs in the repo? (not .env, credentials, temp files)\n\n\"Don't commit\" failure modes (agent configs, empty placeholders, `.gitignore`\nmaterial) are listed under **Anti-Patterns**.\n\n## Pre-Commit Privacy Review\n\nThe `pre-commit-privacy.sh` hook (installed into `.githooks\u002Fpre-commit.d\u002F`\nwhenever a role composing `git-mastery` is applied) scans staged additions and\n**blocks the commit** on:\n\n| Pattern                | Examples                                                                                                                 |\n| ---------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| Absolute home paths    | `\u002FUsers\u002Ffoo\u002F...`, `\u002Fhome\u002Fbar\u002F...`                                                                                        |\n| API key prefixes       | `sk-...`, `ghp_...`, `AKIA...`, `xox[bp]-...`, `AIza...`, `glpat-...`                                                    |\n| Bearer tokens          | `Authorization: Bearer ...`                                                                                              |\n| Env-style secrets      | `*_KEY=`, `*_TOKEN=`, `*_SECRET=`, `*_PASSWORD=`, `*_API=`                                                               |\n| Email addresses        | any RFC-shaped address                                                                                                   |\n| Private keys           | `-----BEGIN ... PRIVATE KEY-----` (PEM\u002FOpenSSH headers)                                                                  |\n| DB URIs with creds     | `postgres:\u002F\u002Fuser:pass@…`, `mysql:\u002F\u002F…`, `mongodb:\u002F\u002F…`, `redis:\u002F\u002F…`                                                        |\n| Cloud \u002F SaaS tokens    | GitHub `gho_\u002Fghs_\u002Fghu_\u002Fghr_\u002Fgithub_pat_`, AWS secret keys, Slack webhooks, Stripe `sk_live_`, SendGrid, npm tokens, JWTs |\n| Claude session content | JSONL markers — `\"sessionId\"`\u002F`\"requestId\"`, `\"cwd\": \"\u002F…\"`, `\"parentUuid\"`\u002F`\"toolUseResult\"`                             |\n\nSoft warning (printed, non-blocking): new file in `tests\u002Ffixtures\u002F` larger than 5 KB.\n\n### When the hook fires\n\n1. **Show the user** the full hook report first.\n2. **Don't blindly override** — ask whether the hit is a true positive.\n3. **True leak** → fix the file, re-stage, retry.\n4. **False positive on a single line** → append the inline allow-marker; only that line is skipped:\n   ```\n   \u003Cthe flagged line>   # ai-hats: allow-secret\n   ```\n5. **False positive across a whole file** that will recur → add a glob to\n   `.privacy-allowlist` (project root or `.githooks\u002F`) and document the reason in the same commit.\n6. **Last resort — whole commit** → `AI_HATS_PRIVACY_ACK=1`, after showing the\n   user what was flagged. The supervisor exports it in the shell that runs the\n   commit; a prefix you write yourself is refused — see **safety-guard**.\n\n## Pre-Commit Smoke Gate\n\nThe `pre-commit-smoke.sh` hook runs `pytest -m smoke` whenever the **active\nbacklog task** carries the `integration` tag.\n\n### How it works\n\n1. Hook reads `\u003Cai_hats_dir>\u002Ftracker\u002Fbacklog\u002Ftasks\u002F*\u002Ftask.yaml` for any task in `execute` state.\n2. If such a task has `- integration` in its `tags:`, it runs `pytest -m smoke -q --tb=line --no-header tests\u002Fe2e\u002F`.\n3. All smoke tests pass → commit proceeds.\n4. Any test fails → commit blocked with a short report.\n5. No active task, or active task lacks the `integration` tag → silent no-op (exit 0).\n6. pytest not installed or no tests marked `@pytest.mark.smoke` → silent pass.\n\n### Setting the `integration` tag\n\nThe agent decides during **brainstorm** or **plan** (see **hatrack**).\nHeuristic: tag `integration` when the task touches an external tool, process,\nnetwork call, sub-agent invocation, or filesystem writes outside `.agent\u002F`.\n\n```bash\nrack transition \u003CID> --append tags=integration\n```\n\n### Override\n\n`AI_HATS_SMOKE_SKIP=1`, exported by the supervisor in the shell that runs the\ncommit — see **safety-guard** for why you cannot write it yourself.\n\n## Pre-Push Force-Push Guard\n\nThe `pre-push-shared-state.sh` hook blocks a **non-fast-forward (force) push** —\nan irreversible history rewrite. On a block, its message is the whole\ninstruction: the push did not happen, do not retry it, and do not set a flag.\nA sentence in chat is not approval. **safety-guard** asks before the command\nruns, where the harness can ask.\n\n### Other infra hooks (silent by design)\n\nTwo further pre-commit hooks ship here and stay out of the way unless tripped:\n\n- `pre-commit-docs-index.sh` — blocks adding\u002Fdeleting\u002Frenaming a\n  `docs\u002F*.md` without staging `docs\u002FINDEX.md` alongside.\n- `pre-commit-no-raw-destructive.sh` — blocks raw `path.unlink` \u002F\n  `shutil.rmtree` \u002F `.rmdir` outside `ai_hats_core\u002Fsafe_delete.py` unless\n  the line carries `# safe-delete: ok \u003Creason>`. No-op on non-ai-hats projects.\n\n## Hook Self-Heal (session start)\n\n`.githooks\u002F` is generated by composition and **not** tracked in git, so it drifts\nafter `git merge` \u002F `git pull` \u002F `git checkout`. It is re-healed by the\n**session-start managed-hook drift net** (`WrapRunner._resync_managed_hooks`):\non every ai-hats launch it re-materializes any drifted managed hook surface —\ngit and runtime (`.claude\u002Fsettings.json` plus the scripts under the project's\n`\u003Cai_hats_dir>\u002Flibrary\u002Fhooks\u002F`) — and prints a one-line note of\nwhat it healed. Drift-gated and fail-open: a clean start is silent, a heal\nfailure never blocks the launch.\n\n- There is **no** `ai-hats self sync-hooks` command and **no** post-merge \u002F\n  post-checkout git hook anymore (all healing is consolidated to session\n  start). A `git pull` + `git commit` with no ai-hats launch between can run stale\n  git hooks until the next launch heals them — launch ai-hats (or `ai-hats self\n  init`) to refresh sooner.\n- **Bootstrap:** a fresh clone still needs one initial `ai-hats self init` to\n  install hooks at all; they self-maintain on each launch after.\n- A \"hooks corrupt\" message on push means the gate's fail-closed dispatcher caught\n  a **missing** managed hook: run `ai-hats self init` to repair.\n\n## Anti-Patterns\n\n- Force push without approval — can destroy team members' work\n- Giant commits mixing multiple concerns — keep commits atomic\n- Commit messages describing what (\"changed X\") instead of why\n- Committing agent config files to project repos — local agent state\n- Committing empty\u002Fplaceholder files — wait for real content\n- Asking for a privacy-hook bypass (`AI_HATS_PRIVACY_ACK=1`) without showing the user what was flagged — it is a peer review, not an obstacle (it exists because agents proved they could not catch leaks unaided)\n- Declaring \"done\" on integration work without running the real-path smoke test at least once\n","# Git Mastery\n\n## When to Use\n\nBasic add\u002Fcommit\u002Fpush needs no skill — reach here only for harder operations:\nrebases, conflict resolution, branch strategy, conventional-commit setup,\ncherry-pick\u002Fbackport. The git-*worktree* lifecycle (create\u002Fmerge\u002Fdiscard a task\nworktree) is owned by **worktree-isolation** — use that for isolation, this for\nhistory and branch manipulation.\n\n## Capabilities\n\n- Create feature branches with naming conventions\n- Stage and commit with conventional commit format\n- Resolve merge conflicts\n- Manage worktrees for parallel development\n- Interactive rebase for clean history\n- Cherry-pick and backport changes\n\n## Conventions\n\n- Branch naming: `type\u002Fdescription` (e.g., `feat\u002Fadd-auth`, `fix\u002Flogin-bug`)\n- Conventional commits: `type(scope): description`\n- Types: feat, fix, refactor, docs, test, chore, ci\n- Commit messages explain WHY, not WHAT\n- Commit frequently with atomic changes\n- Check status before operations\n- Never force push without explicit approval\n\n## Pre-Commit Checklist\n\nBefore every `git add` \u002F `git commit`:\n\n1. Run `git status` and `git diff --stat` to review what will be committed.\n2. For each file verify:\n   - Project code? (not agent config like ai-hats.yaml, .agent\u002F)\n   - Meaningful content? (not empty placeholders)\n   - Belongs in the repo? (not .env, credentials, temp files)\n\n\"Don't commit\" failure modes (agent configs, empty placeholders, `.gitignore`\nmaterial) are listed under **Anti-Patterns**.\n\n## Pre-Commit Privacy Review\n\nThe `pre-commit-privacy.sh` hook (installed into `.githooks\u002Fpre-commit.d\u002F`\nwhenever a role composing `git-mastery` is applied) scans staged additions and\n**blocks the commit** on:\n\n| Pattern                | Examples                                                                                                                 |\n| ---------------------- | ------------------------------------------------------------------------------------------------------------------------ |\n| Absolute home paths    | `\u002FUsers\u002Ffoo\u002F...`, `\u002Fhome\u002Fbar\u002F...`                                                                                        |\n| API key prefixes       | `sk-...`, `ghp_...`, `AKIA...`, `xox[bp]-...`, `AIza...`, `glpat-...`                                                    |\n| Bearer tokens          | `Authorization: Bearer ...`                                                                                              |\n| Env-style secrets      | `*_KEY=`, `*_TOKEN=`, `*_SECRET=`, `*_PASSWORD=`, `*_API=`                                                               |\n| Email addresses        | any RFC-shaped address                                                                                                   |\n| Private keys           | `-----BEGIN ... PRIVATE KEY-----` (PEM\u002FOpenSSH headers)                                                                  |\n| DB URIs with creds     | `postgres:\u002F\u002Fuser:pass@…`, `mysql:\u002F\u002F…`, `mongodb:\u002F\u002F…`, `redis:\u002F\u002F…`                                                        |\n| Cloud \u002F SaaS tokens    | GitHub `gho_\u002Fghs_\u002Fghu_\u002Fghr_\u002Fgithub_pat_`, AWS secret keys, Slack webhooks, Stripe `sk_live_`, SendGrid, npm tokens, JWTs |\n| Claude session content | JSONL markers — `\"sessionId\"`\u002F`\"requestId\"`, `\"cwd\": \"\u002F…\"`, `\"parentUuid\"`\u002F`\"toolUseResult\"`                             |\n\nSoft warning (printed, non-blocking): new file in `tests\u002Ffixtures\u002F` larger than 5 KB.\n\n### When the hook fires\n\n1. **Show the user** the full hook report first.\n2. **Don't blindly override** — ask whether the hit is a true positive.\n3. **True leak** → fix the file, re-stage, retry.\n4. **False positive on a single line** → append the inline allow-marker; only that line is skipped:\n   ```\n   \u003Cthe flagged line>   # ai-hats: allow-secret\n   ```\n5. **False positive across a whole file** that will recur → add a glob to\n   `.privacy-allowlist` (project root or `.githooks\u002F`) and document the reason in the same commit.\n6. **Last resort — whole commit** → `AI_HATS_PRIVACY_ACK=1`, after showing the\n   user what was flagged. The supervisor exports it in the shell that runs the\n   commit; a prefix you write yourself is refused — see **safety-guard**.\n\n## Pre-Commit Smoke Gate\n\nThe `pre-commit-smoke.sh` hook runs `pytest -m smoke` whenever the **active\nbacklog task** carries the `integration` tag.\n\n### How it works\n\n1. Hook reads `\u003Cai_hats_dir>\u002Ftracker\u002Fbacklog\u002Ftasks\u002F*\u002Ftask.yaml` for any task in `execute` state.\n2. If such a task has `- integration` in its `tags:`, it runs `pytest -m smoke -q --tb=line --no-header tests\u002Fe2e\u002F`.\n3. All smoke tests pass → commit proceeds.\n4. Any test fails → commit blocked with a short report.\n5. No active task, or active task lacks the `integration` tag → silent no-op (exit 0).\n6. pytest not installed or no tests marked `@pytest.mark.smoke` → silent pass.\n\n### Setting the `integration` tag\n\nThe agent decides during **brainstorm** or **plan** (see **hatrack**).\nHeuristic: tag `integration` when the task touches an external tool, process,\nnetwork call, sub-agent invocation, or filesystem writes outside `.agent\u002F`.\n\n```bash\nrack transition \u003CID> --append tags=integration\n```\n\n### Override\n\n`AI_HATS_SMOKE_SKIP=1`, exported by the supervisor in the shell that runs the\ncommit — see **safety-guard** for why you cannot write it yourself.\n\n## Pre-Push Force-Push Guard\n\nThe `pre-push-shared-state.sh` hook blocks a **non-fast-forward (force) push** —\nan irreversible history rewrite. On a block, its message is the whole\ninstruction: the push did not happen, do not retry it, and do not set a flag.\nA sentence in chat is not approval. **safety-guard** asks before the command\nruns, where the harness can ask.\n\n### Other infra hooks (silent by design)\n\nTwo further pre-commit hooks ship here and stay out of the way unless tripped:\n\n- `pre-commit-docs-index.sh` — blocks adding\u002Fdeleting\u002Frenaming a\n  `docs\u002F*.md` without staging `docs\u002FINDEX.md` alongside.\n- `pre-commit-no-raw-destructive.sh` — blocks raw `path.unlink` \u002F\n  `shutil.rmtree` \u002F `.rmdir` outside `ai_hats_core\u002Fsafe_delete.py` unless\n  the line carries `# safe-delete: ok \u003Creason>`. No-op on non-ai-hats projects.\n\n## Hook Self-Heal (session start)\n\n`.githooks\u002F` is generated by composition and **not** tracked in git, so it drifts\nafter `git merge` \u002F `git pull` \u002F `git checkout`. It is re-healed by the\n**session-start managed-hook drift net** (`WrapRunner._resync_managed_hooks`):\non every ai-hats launch it re-materializes any drifted managed hook surface —\ngit and runtime (`.claude\u002Fsettings.json` plus the scripts under the project's\n`\u003Cai_hats_dir>\u002Flibrary\u002Fhooks\u002F`) — and prints a one-line note of\nwhat it healed. Drift-gated and fail-open: a clean start is silent, a heal\nfailure never blocks the launch.\n\n- There is **no** `ai-hats self sync-hooks` command and **no** post-merge \u002F\n  post-checkout git hook anymore (all healing is consolidated to session\n  start). A `git pull` + `git commit` with no ai-hats launch between can run stale\n  git hooks until the next launch heals them — launch ai-hats (or `ai-hats self\n  init`) to refresh sooner.\n- **Bootstrap:** a fresh clone still needs one initial `ai-hats self init` to\n  install hooks at all; they self-maintain on each launch after.\n- A \"hooks corrupt\" message on push means the gate's fail-closed dispatcher caught\n  a **missing** managed hook: run `ai-hats self init` to repair.\n\n## Anti-Patterns\n\n- Force push without approval — can destroy team members' work\n- Giant commits mixing multiple concerns — keep commits atomic\n- Commit messages describing what (\"changed X\") instead of why\n- Committing agent config files to project repos — local agent state\n- Committing empty\u002Fplaceholder files — wait for real content\n- Asking for a privacy-hook bypass (`AI_HATS_PRIVACY_ACK=1`) without showing the user what was flagged — it is a peer review, not an obstacle (it exists because agents proved they could not catch leaks unaided)\n- Declaring \"done\" on integration work without running the real-path smoke test at least once\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\u002Fcore\u002Fskills\u002Fgit-mastery","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 git-mastery",{"tool":59,"command":60},"bunx","bunx skills add muratovv\u002Fai-hats --skill git-mastery",{"tool":62,"command":63},"pnpm","pnpm dlx skills add muratovv\u002Fai-hats --skill git-mastery","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats\u002Fblob\u002Fmaster\u002Fpackages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fexperimental\u002Fcore\u002Fskills\u002Fgit-mastery\u002FSKILL.md",true,[67,73,79,83,87,91,95,99],{"path":68,"resourceType":69,"resourceTypeDesc":70,"sizeBytes":71,"sourceHtmlUrl":72},"git_hooks\u002F.privacy-allowlist","OTHER","其他",546,"https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats\u002Fblob\u002Fmaster\u002Fpackages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fexperimental\u002Fcore\u002Fskills\u002Fgit-mastery\u002Fgit_hooks\u002F.privacy-allowlist",{"path":74,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":77,"sourceHtmlUrl":78},"git_hooks\u002Fpost-commit-bypass-stamp.sh","SCRIPT","脚本",672,"https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats\u002Fblob\u002Fmaster\u002Fpackages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fexperimental\u002Fcore\u002Fskills\u002Fgit-mastery\u002Fgit_hooks\u002Fpost-commit-bypass-stamp.sh",{"path":80,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":81,"sourceHtmlUrl":82},"git_hooks\u002Fpre-commit-docs-index.sh",3134,"https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats\u002Fblob\u002Fmaster\u002Fpackages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fexperimental\u002Fcore\u002Fskills\u002Fgit-mastery\u002Fgit_hooks\u002Fpre-commit-docs-index.sh",{"path":84,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":85,"sourceHtmlUrl":86},"git_hooks\u002Fpre-commit-no-raw-destructive.sh",6160,"https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats\u002Fblob\u002Fmaster\u002Fpackages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fexperimental\u002Fcore\u002Fskills\u002Fgit-mastery\u002Fgit_hooks\u002Fpre-commit-no-raw-destructive.sh",{"path":88,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":89,"sourceHtmlUrl":90},"git_hooks\u002Fpre-commit-privacy.sh",9199,"https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats\u002Fblob\u002Fmaster\u002Fpackages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fexperimental\u002Fcore\u002Fskills\u002Fgit-mastery\u002Fgit_hooks\u002Fpre-commit-privacy.sh",{"path":92,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":93,"sourceHtmlUrl":94},"git_hooks\u002Fpre-commit-smoke.sh",4598,"https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats\u002Fblob\u002Fmaster\u002Fpackages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fexperimental\u002Fcore\u002Fskills\u002Fgit-mastery\u002Fgit_hooks\u002Fpre-commit-smoke.sh",{"path":96,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":97,"sourceHtmlUrl":98},"git_hooks\u002Fpre-push-bypass-report.sh",3790,"https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats\u002Fblob\u002Fmaster\u002Fpackages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fexperimental\u002Fcore\u002Fskills\u002Fgit-mastery\u002Fgit_hooks\u002Fpre-push-bypass-report.sh",{"path":100,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":101,"sourceHtmlUrl":102},"git_hooks\u002Fpre-push-shared-state.sh",3638,"https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats\u002Fblob\u002Fmaster\u002Fpackages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fexperimental\u002Fcore\u002Fskills\u002Fgit-mastery\u002Fgit_hooks\u002Fpre-push-shared-state.sh",[104,128,153,176,200,214],{"skillNo":105,"name":106,"nameZh":6,"description":107,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":110,"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",[],[111,112,113,114,115,116,117,118,119,120,121,122,35,123,124,30,125,23,126,127],"protocol","Evaluation","tool","tool evaluation protocol","testing","ml","libraries","adoption","methodology","Tools","use","dependency","frameworks","time","recommendation","bounded","candidate",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":134,"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",[],[135,136,137,138,111,139,140,141,142,143,121,144,145,146,147,148,149,150,151,152],"systematic debugging","debugging","systematic","test","monitoring","hypothesis","verify","behavior","fix","evidence","bug","reports","pattern","users","error","with","bug-fix","phase",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":164,"publishedAt":39},"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",[159],{"categoryNo":160,"categoryName":161,"taxonomyType":162,"taxonomyTypeDesc":163},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[165,166,167,168,169,142,170,121,171,147,172,173,174,23,175],"template","skill template","validation","compliance","hats","guide","new skill","structural","canonical","which","Existing",{"skillNo":177,"name":178,"nameZh":6,"description":179,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":180,"categories":181,"keywords":183,"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",[182],{"categoryNo":160,"categoryName":161,"taxonomyType":162,"taxonomyTypeDesc":163},[184,185,186,187,188,189,190,191,192,193,121,194,195,196,197,198,199],"Optimization","skill optimization","components","component","issues","library","audit","refactor","Budget","Rules","periodic","maintenance","token","token budget","role","high",{"skillNo":201,"name":202,"nameZh":6,"description":203,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":204,"categories":205,"keywords":206,"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",[],[207,208,209,210,211,212,121,213,23],"gate","fallback","silent fallback gate","python","write","edit","hook",{"skillNo":215,"name":216,"nameZh":6,"description":217,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":218,"categories":219,"keywords":221,"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",[220],{"categoryNo":160,"categoryName":161,"taxonomyType":162,"taxonomyTypeDesc":163},[222,223,224,225,187,226,227,228,193,142,121,229,230,30,231,232,233,234,235,236],"framework","retro","retro to framework","change","retrospective","projects","convert","incident","across","problem","about","more","skill update","single","generic"]