[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6RBEJTMHTXHH4GE25K9WCF7":3,"skill-same:01M6RBEJTMHTXHH4GE25K9WCF7":80},{"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":44,"linkOnly":45,"markdownContent":46,"markdownBody":47,"frontMatter":48,"refName":57,"commitSha":58,"skillDirectory":59,"forksCount":60,"repositoryHtmlUrl":61,"repositoryHomepageUrl":6,"ownerHtmlUrl":62,"ownerBlogUrl":63,"ownerDescription":64,"updatedAt":65,"install":66,"resources":79},"01M6RBEJTMHTXHH4GE25K9WCF7","terraform-modules",null,"Terraform helper for our infrastructure. Use this whenever the user works on infrastructure of any kind, or mentions the cloud, a deployment, a pipeline, or a cluster.","azborgonovo\u002Fai-skills","azborgonovo","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F2183810?v=4","01M6RBCX0K17Z412GQ5A1S9AX4","André Borgonovo","01M6RBCX4STCJD1YSDJB66HEBG",1,"MIT","https:\u002F\u002Fgithub.com\u002Fazborgonovo\u002Fai-skills\u002Fblob\u002Fmain\u002Fevals\u002Fagent-docs\u002Freview-skill\u002Ffixtures\u002Fterraform-modules\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,41,42,43],"terraform modules","terraform","modules","user","for","path","kind","helper","cluster","module","use","infrastructure","edit","write","read","grep","Bash","pipeline","cloud","deployment","2026-11-10 10:12:30",false,"---\nname: terraform-modules\ndescription: >\n  Terraform helper for our infrastructure. Use this whenever the user works on\n  infrastructure of any kind, or mentions the cloud, a deployment, a pipeline, or a\n  cluster.\nargument-hint: \"[module path]\"\nallowed-tools: [Read, Glob, Grep, Bash, Write, Edit]\n---\n\n# Terraform Modules\n\nWrite and fix the Terraform modules under `infra\u002Fmodules\u002F`.\n\n## Provider and version rules\n\nPin the AWS provider to `~> 4.0` in every module. A floating provider version makes a plan differ between two machines.\n\nSet `required_version = \">= 1.3\"` in every module, because that is the release that made optional object attributes stable.\n\n## State\n\nTerraform cannot import an existing resource from configuration. Run `terraform import \u003Caddress> \u003Cid>` by hand, once per resource, and then write the matching resource block.\n\nUse `terraform taint \u003Caddress>` to force Terraform to recreate a resource on the next apply.\n\nUse `terraform destroy -target=\u003Caddress>` to remove one resource without touching the rest of the state. This is the supported way to prune a single resource.\n\n## Module layout\n\nGive every module a `main.tf`, a `variables.tf`, an `outputs.tf`, and a `versions.tf`. Put no resource in `variables.tf`.\n\nPin the AWS provider to `~> 4.0`, so that two engineers who run a plan on the same commit get the same result.\n\n## Kubernetes manifests\n\nReview the manifests under `k8s\u002F` at the same time. Check that every deployment sets a resource request and a resource limit, that no image uses the `latest` tag, and that every pod carries the `team` label.\n\n## CI pipeline\n\nReview `.gitlab-ci.yml` as well. Check that the plan stage runs on every merge request, that the apply stage is manual, and that the runner tags match the ones the infrastructure group publishes.\n","# Terraform Modules\n\nWrite and fix the Terraform modules under `infra\u002Fmodules\u002F`.\n\n## Provider and version rules\n\nPin the AWS provider to `~> 4.0` in every module. A floating provider version makes a plan differ between two machines.\n\nSet `required_version = \">= 1.3\"` in every module, because that is the release that made optional object attributes stable.\n\n## State\n\nTerraform cannot import an existing resource from configuration. Run `terraform import \u003Caddress> \u003Cid>` by hand, once per resource, and then write the matching resource block.\n\nUse `terraform taint \u003Caddress>` to force Terraform to recreate a resource on the next apply.\n\nUse `terraform destroy -target=\u003Caddress>` to remove one resource without touching the rest of the state. This is the supported way to prune a single resource.\n\n## Module layout\n\nGive every module a `main.tf`, a `variables.tf`, an `outputs.tf`, and a `versions.tf`. Put no resource in `variables.tf`.\n\nPin the AWS provider to `~> 4.0`, so that two engineers who run a plan on the same commit get the same result.\n\n## Kubernetes manifests\n\nReview the manifests under `k8s\u002F` at the same time. Check that every deployment sets a resource request and a resource limit, that no image uses the `latest` tag, and that every pod carries the `team` label.\n\n## CI pipeline\n\nReview `.gitlab-ci.yml` as well. Check that the plan stage runs on every merge request, that the apply stage is manual, and that the runner tags match the ones the infrastructure group publishes.\n",{"name":5,"description":49,"allowed-tools":50,"argument-hint":56},"Terraform helper for our infrastructure. Use this whenever the user works on infrastructure of any kind, or mentions the cloud, a deployment, a pipeline, or a cluster.\n",[51,52,53,40,54,55],"Read","Glob","Grep","Write","Edit","[module path]","main","b220d596fb54aeca37127a2b4683ec1454d158e8","evals\u002Fagent-docs\u002Freview-skill\u002Ffixtures\u002Fterraform-modules",0,"https:\u002F\u002Fgithub.com\u002Fazborgonovo\u002Fai-skills","https:\u002F\u002Fgithub.com\u002Fazborgonovo","andreborgonovo.com","Tech Lead","2026-11-06 19:56:53",{"source":8,"skillName":5,"commands":67,"prompt":77,"zipAvailable":78},[68,71,74],{"tool":69,"command":70},"npx","npx skills add azborgonovo\u002Fai-skills --skill terraform-modules",{"tool":72,"command":73},"bunx","bunx skills add azborgonovo\u002Fai-skills --skill terraform-modules",{"tool":75,"command":76},"pnpm","pnpm dlx skills add azborgonovo\u002Fai-skills --skill terraform-modules","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fazborgonovo\u002Fai-skills\u002Fblob\u002Fmain\u002Fevals\u002Fagent-docs\u002Freview-skill\u002Ffixtures\u002Fterraform-modules\u002FSKILL.md",true,[],[81,115,137,158,178,202],{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":95,"publishedAt":44},"01M6RBP6K9YQ0P9BFAA50DMRS5","work-item","Drafts a well-formed work item with testable acceptance criteria, then creates it in whatever tracker is connected, when the user asks for that explicitly. Applies the same standard to tighten an existing work item. Use when the user invokes \u002Fwork-item, or asks to draft, write up, create, or fix up a ticket, issue, task, story, bug report, or sub-task, for Jira, GitHub, Azure DevOps, Linear, or any other tracker. Use it even when the user names no tracker and never says \"ticket\", as in \"log a bug for...\", \"file an issue about...\", \"write up a task for...\", \"can you create a story for...\", and \"this ticket has no acceptance criteria, can you add some\". Do NOT use it for general prose writing, a PR description, or a commit message, because those follow different conventions.","https:\u002F\u002Fgithub.com\u002Fazborgonovo\u002Fai-skills\u002Fblob\u002Fmain\u002Fskills\u002Fplanning\u002Fwork-item\u002FSKILL.md",[87,90],{"categoryNo":88,"categoryName":89,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000018","写作与文案",{"categoryNo":91,"categoryName":92,"taxonomyType":93,"taxonomyTypeDesc":94},"01JBSEEDCAT000000000000036","内容创作者","PROFESSION","适用职业",[96,97,98,99,100,101,102,103,37,104,105,106,107,108,109,110,111,112,113,114],"work","work item","writing","commit","azure devops","jira","create","acceptance","fix","never","up","log","tracker","message","line","ticket","you","drafts","when",{"skillNo":116,"name":117,"nameZh":6,"description":118,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":121,"publishedAt":44},"01M6RBNK9Q1FY81BEPH4EA0GE3","triage-work-item","Triages a tracker work item, which is a bug, a task, or a story, end-to-end against the codebase. It reads the item with its full comment thread, links, and parent epic, cross-references related items, investigates the codebases behind the affected feature, corroborates with attached evidence and observability data, then posts a verified analysis comment back to the item. That comment gives the root cause for a bug, or the current behavior, the approach, and the effort for a change request. Ships with Jira and GitHub Issues tracker adapters, plus Grafana and CloudWatch observability adapters, and degrades to any reachable platform. Use when the user gives a work-item URL or key, on Jira (`…atlassian.net\u002Fbrowse\u002FKEY`) or GitHub (`github.com\u002F\u003Co>\u002F\u003Cr>\u002Fissues\u002F\u003Cn>`), and asks to triage, investigate, diagnose, or root-cause it, even without the word \"triage\", as in \"look into TICKET-123 and post what you find\". Do not use it to read or summarize a work item with no code investigation, or to write new work items.","https:\u002F\u002Fgithub.com\u002Fazborgonovo\u002Fai-skills\u002Fblob\u002Fmain\u002Fskills\u002Fplanning\u002Ftriage-work-item\u002FSKILL.md",[],[122,96,123,124,125,126,127,128,40,129,130,131,132,111,133,112,134,135,136,114],"triage","triage work item","change","code","issues","grafana","analysis","references","back","end","dry","URL","posts","affected","which",{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":143,"publishedAt":44},"01M6RBNAY7GTHTK5G0YYFZCGXG","update-branch","Brings a branch up to date with its base branch, usually main. It rebases onto origin\u002F\u003Cbase>, or merges when the user agrees, then builds and runs the relevant tests. It pushes on its own when the risk is low, and asks first, with the reason, when it is not. It never uses a plain --force, and it never disturbs uncommitted work: a clone on another branch gets a separate git worktree. This skill is user-only: it runs only when the user invokes \u002Fupdate-branch [branch] [--base \u003Cbranch>] [merge]. When the user wants to update a branch with main, rebase onto main, or fix \"branch is behind main\", suggest this command.","https:\u002F\u002Fgithub.com\u002Fazborgonovo\u002Fai-skills\u002Fblob\u002Fmain\u002Fskills\u002Fgit-workflow\u002Fupdate-branch\u002FSKILL.md",[],[144,145,146,147,148,149,150,151,96,152,104,105,153,106,57,154,155,156,157,114],"update","branch","update branch","merge","worktree","risk","first","git worktree","command","only","tests","relevant","with","true",{"skillNo":159,"name":160,"nameZh":6,"description":161,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":162,"categories":163,"keywords":164,"publishedAt":44},"01M6RBMN4XJ6GK79227ZGKPYZ9","standard-first","Guides technical implementation to always prefer the standard, officially-documented solution over custom or AI-generated code. Use when you are about to write new code for a feature, suggest or add a library or package, scaffold a new project, or configure a framework, in any language, including .NET and C#, Node.js and npm, Python, Go, Java, and the rest. Use it above all when the problem sounds like something that a built-in framework feature or a package registry already solves, such as logging enrichment, auth, serialization, retries, health checks, or migrations. Do not skip this skill because the answer feels obvious from training data.","https:\u002F\u002Fgithub.com\u002Fazborgonovo\u002Fai-skills\u002Fblob\u002Fmain\u002Fskills\u002Fengineering-practices\u002Fstandard-first\u002FSKILL.md",[],[150,165,166,167,168,125,169,40,170,171,38,37,172,173,174,175,176,112,177,114],"standard","standard first","auth","training","data","configure","node","generated","project","problem","guides","retries","websearch",{"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":184,"publishedAt":44},"01M6RBMDKSZP3VM6X189CNADW3","team-topologies","Knowledge base for Team Topologies concepts — the framework for organizing business and technology teams for fast flow. Use this skill whenever the user asks about: team types (stream-aligned, platform, enabling, complicated subsystem), team interaction modes (collaboration, X-as-a-Service, facilitation), cognitive load management, Thinnest Viable Platform (TVP), Conway's Law in relation to org design, or any question about how software delivery teams should be structured, named, or coordinated. Also use when another skill needs Team Topologies vocabulary to reason about org design, team responsibilities, or team dependencies.","https:\u002F\u002Fgithub.com\u002Fazborgonovo\u002Fai-skills\u002Fblob\u002Fmain\u002Fskills\u002Fdrafts\u002Fteam-topologies\u002FSKILL.md",[],[185,186,187,188,189,190,191,192,34,193,194,195,196,197,198,199,200,28,201,114],"team","team topologies","design","collaboration","teams","knowledge","question","business","software delivery","technology","knowledge base","platform","as","interaction","types","load","modes",{"skillNo":203,"name":204,"nameZh":6,"description":205,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":206,"categories":207,"keywords":208,"publishedAt":44},"01M6RBKRN96NS1CD2CVQEWZXMW","pareto","Processes the user's request through the Pareto Principle. It ranks the causes that generate most of the outcome, spends roughly a fifth of the effort on the interventions that address them, and reports what that effort bought. This skill is user-only: it runs only when the user invokes \u002Fpareto [request]. When the user wants the highest-leverage slice of a large task, asks \"what matters most here\", wants to cut scope to what moves the needle, or wants an 80\u002F20 pass over analysis, planning, test coverage, refactoring, or cleanup, suggest this command. Do not use it for work whose value depends on being complete, such as a security fix, a compliance change, a migration, or a specific reported bug.","https:\u002F\u002Fgithub.com\u002Fazborgonovo\u002Fai-skills\u002Fblob\u002Fmain\u002Fskills\u002Fdrafts\u002Fpareto\u002FSKILL.md",[],[204,209,210,128,211,104,34,153,212,213,214,215,197,216,217,157,28,218,219,114],"cleanup","planning","coverage","reports","do","task","leverage","scope","complete","value","slice"]