[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6JGXEKVFVT5D34VCZGFF8EQ":3,"skill-same:01M6JGXEKVFVT5D34VCZGFF8EQ":67},{"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":41,"linkOnly":42,"markdownContent":43,"markdownBody":44,"frontMatter":45,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":6,"ownerHtmlUrl":51,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":52,"install":53,"resources":66},"01M6JGXEKVFVT5D34VCZGFF8EQ","terraform-expert",null,"Terraform\u002FOpenTofu IaC covering state management, DRY modules, and safety practices. Use when writing or reviewing Terraform\u002FOpenTofu configurations, planning infrastructure changes, or managing state and provider versions.","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\u002Fterraform-expert\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000011","运维与部署","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],"terraform expert","terraform","expert","management","changes","dry","provider","modules","iac","use","writing","opentofu","Safety","state","planning","state management","infrastructure","2026-11-10 10:12:30",false,"---\nname: terraform-expert\ndescription: >-\n  Terraform\u002FOpenTofu IaC covering state management, DRY modules, and\n  safety practices. Use when writing or reviewing Terraform\u002FOpenTofu\n  configurations, planning infrastructure changes, or managing state and\n  provider versions.\nlicense: MIT\n---\n# Terraform\u002FOpenTofu Expert\n\nMaintain robust, DRY, and secure infrastructure as code.\n\n## When to Use\n**Provisioning and declaring infrastructure** — resources, modules, state,\nprovider versions. Its sibling **ansible-ops** owns the next layer: configuring\nand deploying onto the hosts Terraform created. Rule of thumb — if it changes\n*what exists*, it's here; if it changes *what runs on what exists*, it's\nansible-ops.\n\n## Conventions\n- **State**: `tofu plan` before `apply`. NEVER edit state manually. Pin provider versions.\n- **DRY**: Use modules for common resources (VPC, VM, SG). Use `locals` for naming logic.\n- **Data-Driven**: Fetch existing IDs via `data` sources. Validate inputs with `validation` blocks.\n- **Safety**: `sensitive = true` for secrets. `prevent_destroy = true` for production resources.\n- **Scaling**: Prefer `for_each` over `count` for resource sets.\n\n## Bundled Rules\n\n### IaC Tools\n1. **Documentation First**: Check current official docs before generating any IaC config.\n2. **No Hardcoded Versions**: Verify OS images, ISOs, container tags exist before referencing.\n3. **Environment Awareness**: Consult project environment docs for endpoints, storage, networks.\n\n## Anti-Patterns\n- `tofu apply` without `plan` — always review the plan first\n- Manual state editing — use `tofu state mv\u002Frm` commands\n- Unpinned provider versions — leads to non-reproducible infrastructure\n","# Terraform\u002FOpenTofu Expert\n\nMaintain robust, DRY, and secure infrastructure as code.\n\n## When to Use\n**Provisioning and declaring infrastructure** — resources, modules, state,\nprovider versions. Its sibling **ansible-ops** owns the next layer: configuring\nand deploying onto the hosts Terraform created. Rule of thumb — if it changes\n*what exists*, it's here; if it changes *what runs on what exists*, it's\nansible-ops.\n\n## Conventions\n- **State**: `tofu plan` before `apply`. NEVER edit state manually. Pin provider versions.\n- **DRY**: Use modules for common resources (VPC, VM, SG). Use `locals` for naming logic.\n- **Data-Driven**: Fetch existing IDs via `data` sources. Validate inputs with `validation` blocks.\n- **Safety**: `sensitive = true` for secrets. `prevent_destroy = true` for production resources.\n- **Scaling**: Prefer `for_each` over `count` for resource sets.\n\n## Bundled Rules\n\n### IaC Tools\n1. **Documentation First**: Check current official docs before generating any IaC config.\n2. **No Hardcoded Versions**: Verify OS images, ISOs, container tags exist before referencing.\n3. **Environment Awareness**: Consult project environment docs for endpoints, storage, networks.\n\n## Anti-Patterns\n- `tofu apply` without `plan` — always review the plan first\n- Manual state editing — use `tofu state mv\u002Frm` commands\n- Unpinned provider versions — leads to non-reproducible infrastructure\n",{"name":5,"license":15,"description":7},"master","b4819add93efbaf4d80627118ec34680406b309b","packages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fusage\u002Fskills\u002Fterraform-expert",1,"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 terraform-expert",{"tool":59,"command":60},"bunx","bunx skills add muratovv\u002Fai-hats --skill terraform-expert",{"tool":62,"command":63},"pnpm","pnpm dlx skills add muratovv\u002Fai-hats --skill terraform-expert","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fmuratovv\u002Fai-hats\u002Fblob\u002Fmaster\u002Fpackages\u002Fai-hats-library\u002Fsrc\u002Fai_hats_library\u002Fusage\u002Fskills\u002Fterraform-expert\u002FSKILL.md",true,[],[68,94,119,140,164,178],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":41},"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",[],[75,76,77,78,79,80,81,82,83,84,33,85,86,87,88,89,90,91,92,93],"protocol","Evaluation","tool","tool evaluation protocol","testing","ml","libraries","adoption","methodology","Tools","dependency","up","frameworks","time","project","recommendation","for","bounded","candidate",{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":41},"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",[],[101,102,103,104,75,105,106,107,108,109,33,110,111,112,113,114,115,116,117,118],"systematic debugging","debugging","systematic","test","monitoring","hypothesis","verify","behavior","fix","evidence","bug","reports","pattern","users","error","with","bug-fix","phase",{"skillNo":120,"name":121,"nameZh":6,"description":122,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":123,"categories":124,"keywords":128,"publishedAt":41},"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",[125],{"categoryNo":126,"categoryName":127,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[129,130,131,132,133,108,134,33,135,113,136,137,138,91,139],"template","skill template","validation","compliance","hats","guide","new skill","structural","canonical","which","Existing",{"skillNo":141,"name":142,"nameZh":6,"description":143,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":144,"categories":145,"keywords":147,"publishedAt":41},"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",[146],{"categoryNo":126,"categoryName":127,"taxonomyType":21,"taxonomyTypeDesc":22},[148,149,150,151,152,153,154,155,156,157,33,158,159,160,161,162,163],"Optimization","skill optimization","components","component","issues","library","audit","refactor","Budget","Rules","periodic","maintenance","token","token budget","role","high",{"skillNo":165,"name":166,"nameZh":6,"description":167,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":168,"categories":169,"keywords":170,"publishedAt":41},"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",[],[171,172,173,174,175,176,33,177,91],"gate","fallback","silent fallback gate","python","write","edit","hook",{"skillNo":179,"name":180,"nameZh":6,"description":181,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":182,"categories":183,"keywords":185,"publishedAt":41},"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",[184],{"categoryNo":126,"categoryName":127,"taxonomyType":21,"taxonomyTypeDesc":22},[186,187,188,189,151,190,191,192,157,108,33,193,194,89,195,196,197,198,199,200],"framework","retro","retro to framework","change","retrospective","projects","convert","incident","across","problem","about","more","skill update","single","generic"]