[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6JGKF90P0MQ85BFDGS7P1PV":3,"skill-same:01M6JGKF90P0MQ85BFDGS7P1PV":59},{"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":33,"linkOnly":34,"markdownContent":35,"markdownBody":36,"frontMatter":37,"refName":38,"commitSha":39,"skillDirectory":40,"forksCount":41,"repositoryHtmlUrl":42,"repositoryHomepageUrl":6,"ownerHtmlUrl":43,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":44,"install":45,"resources":58},"01M6JGKF90P0MQ85BFDGS7P1PV","ansible-ops",null,"Ansible playbook management covering inventory, vault, syntax checks, and idempotency. Use when writing or running Ansible playbooks, configuring servers or deploying services, or managing secrets with Ansible Vault.","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\u002Fusage\u002Fskills\u002Fansible-ops\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32],"ansible","ops","ansible ops","writing","services","playbook","vault","inventory","secrets","syntax","management","use","with","ansible playbook","2026-11-10 10:12:30",false,"---\nname: ansible-ops\ndescription: >-\n  Ansible playbook management covering inventory, vault, syntax checks,\n  and idempotency. Use when writing or running Ansible playbooks,\n  configuring servers or deploying services, or managing secrets with\n  Ansible Vault.\nlicense: MIT\n---\n# Ansible Ops\n\nManage infrastructure using Ansible playbooks and roles.\n\n## When to Use\n**Config & app deployment onto hosts that already exist** — playbooks, roles,\nvault. The sibling for *provisioning the infrastructure itself* (creating hosts,\nnetworks, managed services + their state) is **terraform-expert**: declare the\nbox with Terraform, configure what runs on it with Ansible. Don't reach here to\nstand up infrastructure.\n\n## Conventions\n- **Inventory**: Always explicitly specify the inventory file with `-i`.\n- **Vault Safety**: Never run commands requiring interactive password entry (`--ask-vault-pass`). Generate the command for the user to run instead.\n- **Syntax First**: Run `ansible-lint` or `ansible-playbook --syntax-check` before presenting a playbook.\n- **Timeout**: Prefix playbook runs with `timeout 300s` to prevent hangs.\n- **Idempotency**: Every playbook must be safe to re-run. Use `creates:`, `when:`, and handler-based restarts.\n\n## Anti-Patterns\n- Running playbooks without `--syntax-check` first — catch errors before execution\n- Interactive password prompts (`--ask-vault-pass`) — generate commands for the user\n- Non-idempotent tasks — every playbook must be safe to re-run\n","# Ansible Ops\n\nManage infrastructure using Ansible playbooks and roles.\n\n## When to Use\n**Config & app deployment onto hosts that already exist** — playbooks, roles,\nvault. The sibling for *provisioning the infrastructure itself* (creating hosts,\nnetworks, managed services + their state) is **terraform-expert**: declare the\nbox with Terraform, configure what runs on it with Ansible. Don't reach here to\nstand up infrastructure.\n\n## Conventions\n- **Inventory**: Always explicitly specify the inventory file with `-i`.\n- **Vault Safety**: Never run commands requiring interactive password entry (`--ask-vault-pass`). Generate the command for the user to run instead.\n- **Syntax First**: Run `ansible-lint` or `ansible-playbook --syntax-check` before presenting a playbook.\n- **Timeout**: Prefix playbook runs with `timeout 300s` to prevent hangs.\n- **Idempotency**: Every playbook must be safe to re-run. Use `creates:`, `when:`, and handler-based restarts.\n\n## Anti-Patterns\n- Running playbooks without `--syntax-check` first — catch errors before execution\n- Interactive password prompts (`--ask-vault-pass`) — generate commands for the user\n- Non-idempotent tasks — every playbook must be safe to re-run\n",{"name":5,"license":15,"description":7},"master","b4819add93efbaf4d80627118ec34680406b309b","packages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fusage\u002Fskills\u002Fansible-ops",1,"https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats","https:\u002F\u002Fgithub.com\u002Fmuratovv","2026-11-05 20:59:10",{"source":8,"skillName":5,"commands":46,"prompt":56,"zipAvailable":57},[47,50,53],{"tool":48,"command":49},"npx","npx skills add muratovv\u002Fai-hats --skill ansible-ops",{"tool":51,"command":52},"bunx","bunx skills add muratovv\u002Fai-hats --skill ansible-ops",{"tool":54,"command":55},"pnpm","pnpm dlx skills add muratovv\u002Fai-hats --skill ansible-ops","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats\u002Fblob\u002Fmaster\u002Fpackages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fusage\u002Fskills\u002Fansible-ops\u002FSKILL.md",true,[],[60,86,110,133,157,171],{"skillNo":61,"name":62,"nameZh":6,"description":63,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":64,"categories":65,"keywords":66,"publishedAt":33},"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",[],[67,68,69,70,71,72,73,74,75,76,30,77,78,79,80,81,82,83,84,85],"protocol","Evaluation","tool","tool evaluation protocol","testing","ml","libraries","adoption","methodology","Tools","dependency","up","frameworks","time","project","recommendation","for","bounded","candidate",{"skillNo":87,"name":88,"nameZh":6,"description":89,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":90,"categories":91,"keywords":92,"publishedAt":33},"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",[],[93,94,95,96,67,97,98,99,100,101,30,102,103,104,105,106,107,31,108,109],"systematic debugging","debugging","systematic","test","monitoring","hypothesis","verify","behavior","fix","evidence","bug","reports","pattern","users","error","bug-fix","phase",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":121,"publishedAt":33},"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",[116],{"categoryNo":117,"categoryName":118,"taxonomyType":119,"taxonomyTypeDesc":120},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[122,123,124,125,126,100,127,30,128,105,129,130,131,83,132],"template","skill template","validation","compliance","hats","guide","new skill","structural","canonical","which","Existing",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":140,"publishedAt":33},"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",[139],{"categoryNo":117,"categoryName":118,"taxonomyType":119,"taxonomyTypeDesc":120},[141,142,143,144,145,146,147,148,149,150,30,151,152,153,154,155,156],"Optimization","skill optimization","components","component","issues","library","audit","refactor","Budget","Rules","periodic","maintenance","token","token budget","role","high",{"skillNo":158,"name":159,"nameZh":6,"description":160,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":161,"categories":162,"keywords":163,"publishedAt":33},"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",[],[164,165,166,167,168,169,30,170,83],"gate","fallback","silent fallback gate","python","write","edit","hook",{"skillNo":172,"name":173,"nameZh":6,"description":174,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":175,"categories":176,"keywords":178,"publishedAt":33},"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",[177],{"categoryNo":117,"categoryName":118,"taxonomyType":119,"taxonomyTypeDesc":120},[179,180,181,182,144,183,184,185,150,100,30,186,187,81,188,189,190,191,192,193],"framework","retro","retro to framework","change","retrospective","projects","convert","incident","across","problem","about","more","skill update","single","generic"]