[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M72T457MBYV2FPFN7136S7F7":3,"skill-same:01M72T457MBYV2FPFN7136S7F7":67},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":18,"linkOnly":19,"markdownContent":20,"markdownBody":21,"frontMatter":22,"refName":27,"commitSha":28,"skillDirectory":29,"forksCount":30,"repositoryHtmlUrl":31,"repositoryHomepageUrl":6,"ownerHtmlUrl":32,"ownerBlogUrl":33,"ownerDescription":6,"updatedAt":34,"install":35,"resources":48},"01M72T457MBYV2FPFN7136S7F7","ywc-infra-design",null,"(ywc) Use when designing cloud\u002Finfrastructure architecture before writing IaC — requirements gathering, provider selection, network\u002Fcompute\u002F storage\u002FIAM topology, and a reliability\u002Fcost\u002Fsecurity pre-check producing infra-design.md for ywc-iac-author. Triggers: \"인프라 설계\", \"클라우드 아키텍처\", \"aws 구성 설계\", \"네트워크 토폴로지\", \"infra design\", \"cloud architecture\", \"design the infrastructure\", \"インフラ設計\", \"クラウド構成\", \"ywc-infra-design\". Do not use for writing IaC (use ywc-iac-author), folder layout (use ywc-project-scaffold), tech comparison alone (use ywc-tech-research — it feeds provider selection here), reviewing existing infrastructure (use ywc-infra-review), or local\u002Fdev docker port collisions (use ywc-docker-isolate).","yongwoon\u002Fywc-agent-toolkit","yongwoon","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F9317029?v=4","01M72SZSF6VKANKG5QTMV4V95S","01M72SZSG8HHC3W2CV5P7EJ5AH",8,"MIT","https:\u002F\u002Fgithub.com\u002Fyongwoon\u002Fywc-agent-toolkit\u002Fblob\u002Fmain\u002Fclaude-code\u002Fskills\u002Fywc-infra-design\u002FSKILL.md",[],[],"2026-11-10 22:39:42",false,"---\nname: ywc-infra-design\ndescription: >-\n  (ywc) Use when designing cloud\u002Finfrastructure architecture before writing\n  IaC — requirements gathering, provider selection, network\u002Fcompute\u002F\n  storage\u002FIAM topology, and a reliability\u002Fcost\u002Fsecurity pre-check producing\n  infra-design.md for ywc-iac-author. Triggers: \"인프라 설계\", \"클라우드\n  아키텍처\", \"aws 구성 설계\", \"네트워크 토폴로지\", \"infra design\", \"cloud\n  architecture\", \"design the infrastructure\", \"インフラ設計\", \"クラウド構成\",\n  \"ywc-infra-design\". Do not use for writing IaC (use ywc-iac-author), folder\n  layout (use ywc-project-scaffold), tech comparison alone (use\n  ywc-tech-research — it feeds provider selection here), reviewing existing\n  infrastructure (use ywc-infra-review), or local\u002Fdev docker port collisions\n  (use ywc-docker-isolate).\ncategory: spec\nphase: planning\nrequires: []\nadvisor_budget: 2\n---\n\n# ywc-infra-design\n\n**Announce at start:** \"I'm using the ywc-infra-design skill to design the cloud\u002Finfrastructure architecture before any IaC is written.\"\n\nThis skill is the design-phase counterpart to `ywc-iac-author`: it gathers requirements, selects a provider, designs the network\u002Fcompute\u002Fstorage\u002FIAM topology, pre-checks the design against the reliability\u002Fcost\u002Fsecurity lenses, and records every material trade-off as an ADR entry — then writes `infra-design.md`, the input contract `ywc-iac-author` loads before authoring a single Terraform module. **This skill never writes IaC.** Terraform is the single fixed IaC tool for this toolkit (design §7); this skill's topology decisions are made with that realization in mind, but the actual `.tf` authoring is `ywc-iac-author`'s job.\n\n## Rationalization Defense\n\nWhen tempted to bypass a rule, check this table first:\n\n| Excuse | Reality |\n|---|---|\n| \"I'll sketch the design and start writing Terraform in the same pass\" | Design and implementation are separate skills on purpose — `ywc-iac-author` consumes a finished `infra-design.md` as its input contract. Collapsing the two loses the reviewable checkpoint and risks re-deriving the topology mid-authoring, the exact drift `ywc-iac-author`'s Common Mistakes section warns against. |\n| \"Requirements gathering is obvious from the feature description, I'll skip to topology\" | Traffic shape, data classification, RTO\u002FRPO, and budget ceiling all change the topology answer (multi-AZ vs single-AZ, managed vs self-hosted DB, hot-standby vs backup-only). Skipping this step produces a topology that looks reasonable but is unverified against the actual constraints. |\n| \"I already have a favorite provider, I'll just declare it instead of calling ywc-tech-research\" | Only skip the `ywc-tech-research` delegation when the provider is genuinely already decided (existing account, mandated vendor, explicit user statement — use `--provider` to record that). When it is actually undecided, picking a favorite instead of delegating the comparison is a design decision made without evidence. |\n| \"The 3-lens pre-check is what ywc-infra-review is for, I can skip it here\" | `ywc-infra-review` reviews already-authored IaC after the fact. This skill's pre-check catches structural mistakes (public subnet for a database tier, no backup strategy, wildcard IAM by default) before a single line of Terraform exists — far cheaper to fix at design time than after authoring. |\n| \"The trade-offs are self-evident from the topology diagram, no need to write an ADR\" | A topology diagram shows the *what*, not the *why*. Without an ADR entry, the next reader — or `ywc-iac-author` — cannot tell whether \"no multi-region\" was a deliberate cost trade-off or an oversight that should be revisited. |\n| \"This is a small change, infra-design.md is overkill\" | Even a small, well-understood change should record its provider, topology, and trade-off in `infra-design.md`. `ywc-iac-author`'s Step 1 either loads this file or falls back to inline-intent clarification; skipping it silently degrades every downstream authoring pass to the weaker inline-intent path. |\n\n**Violating the letter of these rules is violating the spirit.** A design pass that skips requirements, invents a provider, or omits the lens pre-check hands `ywc-iac-author` a topology no one actually verified.\n\n## Arguments\n\n| Parameter | Format | Example | Description |\n|-----------|--------|---------|-------------|\n| `--provider` | `--provider aws\\|gcp\\|azure\\|k8s` | `--provider aws` | Declare an already-decided provider, skipping the `ywc-tech-research` delegation in Step 2. |\n| `--scope` | `--scope \u003Csystem-name>` | `--scope payments-api` | Restrict the design pass to a single service\u002Fsystem instead of the whole architecture. |\n| `--skip-cloud-consult` | flag | `--skip-cloud-consult` | Skip the optional read-only `ywc-cloud-engineer` feasibility consult in Step 3. |\n\n## Workflow\n\n### Step 1: Requirements gathering\n\nGather and record, explicitly — this is the evidence base for every topology decision that follows:\n\n- **Workload characteristics**: request pattern (read-heavy\u002Fwrite-heavy\u002Fmixed), synchronous vs batch vs event-driven, statefulness.\n- **Traffic**: expected concurrency\u002FRPS, peak vs steady-state, growth trajectory over the next 6–12 months.\n- **Data**: volume, growth rate, classification (PII\u002FPHI\u002Fnone), retention requirements.\n- **Regulatory \u002F compliance**: data residency constraints, applicable frameworks (GDPR, HIPAA, SOC 2, industry-specific mandates).\n- **Budget**: monthly ceiling or a per-unit cost target.\n- **RTO\u002FRPO**: acceptable downtime window and acceptable data-loss window.\n\nDo not infer these from the feature description alone — ask the user for anything not already stated, and record the answers verbatim in the eventual `infra-design.md`.\n\n### Step 2: Provider selection\n\nIf `--provider` was passed or the provider is otherwise already decided (existing account, mandated vendor, explicit user statement), record the decision and its rationale, then move to Step 3.\n\nIf the provider is genuinely undecided, delegate the AWS\u002FGCP\u002FAzure\u002FK8s comparison to `\u002Fywc-tech-research` — do not invent the comparison inline. Feed it this step's requirements (traffic, data, budget, compliance) as comparison criteria, and record its recommendation as the Provider Decision.\n\n### Step 3: Topology design\n\nDesign, in this order:\n\n- **Network**: VPC\u002FVNet layout, subnet tiers, public\u002Fprivate boundary, ingress\u002Fegress paths.\n- **Compute**: service shape (managed container, VM, serverless\u002FFaaS) matched to the workload characteristics from Step 1.\n- **Storage**: database engine, object storage, cache layer, matched to the data profile from Step 1.\n- **IAM \u002F identity boundaries**: role structure, least-privilege boundaries, cross-account or cross-service trust relationships.\n\nUnless `--skip-cloud-consult` was passed, optionally dispatch `Task(subagent_type: ywc-cloud-engineer)` in **read-only feasibility-consult mode** — carry the topology sketch and an explicit instruction that this dispatch authors nothing and runs no `terraform apply`\u002F`plan`, it only flags feasibility concerns (quota limits, provider-specific gotchas, an unrealistic network layout) before the design is finalized.\n\n### Step 4: Reliability \u002F cost \u002F security 3-lens pre-check\n\nRead [`..\u002Freferences\u002Flenses\u002Freliability.md`](..\u002Freferences\u002Flenses\u002Freliability.md), [`..\u002Freferences\u002Flenses\u002Fcost.md`](..\u002Freferences\u002Flenses\u002Fcost.md), and [`..\u002Freferences\u002Flenses\u002Fsecurity.md`](..\u002Freferences\u002Flenses\u002Fsecurity.md), then pre-check the Step 3 topology against each lens's taxonomy. Record every finding — even a \"no issue found\" pass — so `ywc-iac-author` and `ywc-infra-review` inherit a documented baseline instead of re-deriving it.\n\n### Step 5: Trade-off records (ADR)\n\nFor every material decision from Steps 2–3 (provider choice, single-AZ vs multi-AZ, managed vs self-hosted database, network exposure boundary, etc.), write an Architecture Decision Record entry with four fields: **Context**, **Decision**, **Alternatives considered**, **Consequences**. A decision without an ADR entry is a decision no future reader can audit.\n\n### Step 6: Output `infra-design.md`\n\nWrite `infra-design.md` at the project root (or the path implied by `--scope`) with the sections in Output Format below. This file is the input contract `ywc-iac-author`'s Step 1 loads — write it so that skill can proceed without re-asking any question this step already answered.\n\n## Output Format\n\n```text\n# infra-design.md\n\n## Requirements\n- Workload: \u003Cpattern>\n- Traffic: \u003CRPS\u002Fconcurrency, peak vs steady, growth>\n- Data: \u003Cvolume, classification, retention>\n- Compliance: \u003Cframeworks, residency>\n- Budget: \u003Cmonthly ceiling \u002F per-unit target>\n- RTO\u002FRPO: \u003Cdowntime window> \u002F \u003Cdata-loss window>\n\n## Provider Decision\nProvider: \u003CAWS|GCP|Azure|K8s>\nSource: \u003C--provider flag | already decided | ywc-tech-research recommendation>\nRationale: \u003C1-3 lines>\n\n## Topology\n### Network\n\u003CVPC\u002FVNet, subnets, public\u002Fprivate boundary>\n### Compute\n\u003Cservice shape + rationale>\n### Storage\n\u003CDB engine, object storage, cache>\n### IAM \u002F Identity Boundaries\n\u003Crole structure, least-privilege boundaries, trust relationships>\n\n## 3-Lens Pre-Check\n- Reliability: \u003Cfindings, or \"no issue found\">\n- Cost: \u003Cfindings, or \"no issue found\">\n- Security: \u003Cfindings, or \"no issue found\">\n\n## ADR Log\n### ADR-001: \u003Cdecision title>\n- Context: ...\n- Decision: ...\n- Alternatives considered: ...\n- Consequences: ...\n```\n\n## Validation Checklist\n\nBefore declaring the design pass complete, verify:\n\n- [ ] Requirements (workload, traffic, data, compliance, budget, RTO\u002FRPO) were gathered explicitly, not inferred\n- [ ] The provider decision was either explicitly declared (`--provider` or prior decision) or delegated to `ywc-tech-research` — never invented inline\n- [ ] Topology covers all four dimensions: network, compute, storage, IAM\u002Fidentity boundaries\n- [ ] The reliability\u002Fcost\u002Fsecurity 3-lens pre-check was run and every finding (including \"no issue found\") is recorded\n- [ ] Every material trade-off has a corresponding ADR entry (Context \u002F Decision \u002F Alternatives \u002F Consequences)\n- [ ] `infra-design.md` was written with all five sections and is ready for `ywc-iac-author` to load directly\n\n## Common Mistakes\n\n- **Jumping straight to Terraform.** This skill's job ends at `infra-design.md` — writing `.tf` files in the same pass is `ywc-iac-author`'s scope, not this skill's.\n- **Treating the cloud-engineer consult as authoring.** The Step 3 `ywc-cloud-engineer` dispatch is read-only feasibility feedback; if it starts producing `.tf` files, the dispatch instruction was wrong.\n- **Skipping the lens pre-check because \"the topology looks fine.\"** The taxonomy in each lens file catches exactly the mistakes that look fine on a quick read (public subnet for a DB, wildcard IAM) — that is why it exists as a checklist, not a gut check.\n- **Writing ADR entries after the fact from memory.** Record each trade-off as it is decided in Step 5, not reconstructed at the end — reconstruction drops the alternatives that were actually considered.\n\n## Integration\n\n- **Upstream**: `ywc-tech-research` (provider comparison when undecided); direct user invocation when requirements and provider are already known.\n- **Downstream**: `ywc-iac-author` (loads `infra-design.md` as its authoring input contract), then `ywc-infra-review` (reviews the resulting IaC before apply).\n- **Consults**: `ywc-cloud-engineer` in read-only mode for topology feasibility, never for authoring.\n- **Must not be paired with**: writing or modifying `.tf` files in the same pass — that boundary belongs to `ywc-iac-author`.\n\n## References\n\n| Reference | Use when |\n|---|---|\n| [`..\u002Freferences\u002Flenses\u002Freliability.md`](..\u002Freferences\u002Flenses\u002Freliability.md) | Step 4 — pre-checking topology for availability\u002Fresilience gaps |\n| [`..\u002Freferences\u002Flenses\u002Fcost.md`](..\u002Freferences\u002Flenses\u002Fcost.md) | Step 4 — pre-checking topology for cost drivers and right-sizing |\n| [`..\u002Freferences\u002Flenses\u002Fsecurity.md`](..\u002Freferences\u002Flenses\u002Fsecurity.md) | Step 4 — pre-checking topology for the IaC misconfiguration taxonomy |\n| [`..\u002Freferences\u002Fproviders\u002Faws.md`](..\u002Freferences\u002Fproviders\u002Faws.md) | Provider decision is AWS — informs realistic topology choices |\n| [`..\u002Freferences\u002Fproviders\u002Fgcp.md`](..\u002Freferences\u002Fproviders\u002Fgcp.md) | Provider decision is GCP — informs realistic topology choices |\n| [`..\u002Freferences\u002Fproviders\u002Fazure.md`](..\u002Freferences\u002Fproviders\u002Fazure.md) | Provider decision is Azure — informs realistic topology choices |\n| [`..\u002Freferences\u002Fproviders\u002Fk8s.md`](..\u002Freferences\u002Fproviders\u002Fk8s.md) | Provider decision includes Kubernetes\u002FHelm (via Terraform providers) |\n","# ywc-infra-design\n\n**Announce at start:** \"I'm using the ywc-infra-design skill to design the cloud\u002Finfrastructure architecture before any IaC is written.\"\n\nThis skill is the design-phase counterpart to `ywc-iac-author`: it gathers requirements, selects a provider, designs the network\u002Fcompute\u002Fstorage\u002FIAM topology, pre-checks the design against the reliability\u002Fcost\u002Fsecurity lenses, and records every material trade-off as an ADR entry — then writes `infra-design.md`, the input contract `ywc-iac-author` loads before authoring a single Terraform module. **This skill never writes IaC.** Terraform is the single fixed IaC tool for this toolkit (design §7); this skill's topology decisions are made with that realization in mind, but the actual `.tf` authoring is `ywc-iac-author`'s job.\n\n## Rationalization Defense\n\nWhen tempted to bypass a rule, check this table first:\n\n| Excuse | Reality |\n|---|---|\n| \"I'll sketch the design and start writing Terraform in the same pass\" | Design and implementation are separate skills on purpose — `ywc-iac-author` consumes a finished `infra-design.md` as its input contract. Collapsing the two loses the reviewable checkpoint and risks re-deriving the topology mid-authoring, the exact drift `ywc-iac-author`'s Common Mistakes section warns against. |\n| \"Requirements gathering is obvious from the feature description, I'll skip to topology\" | Traffic shape, data classification, RTO\u002FRPO, and budget ceiling all change the topology answer (multi-AZ vs single-AZ, managed vs self-hosted DB, hot-standby vs backup-only). Skipping this step produces a topology that looks reasonable but is unverified against the actual constraints. |\n| \"I already have a favorite provider, I'll just declare it instead of calling ywc-tech-research\" | Only skip the `ywc-tech-research` delegation when the provider is genuinely already decided (existing account, mandated vendor, explicit user statement — use `--provider` to record that). When it is actually undecided, picking a favorite instead of delegating the comparison is a design decision made without evidence. |\n| \"The 3-lens pre-check is what ywc-infra-review is for, I can skip it here\" | `ywc-infra-review` reviews already-authored IaC after the fact. This skill's pre-check catches structural mistakes (public subnet for a database tier, no backup strategy, wildcard IAM by default) before a single line of Terraform exists — far cheaper to fix at design time than after authoring. |\n| \"The trade-offs are self-evident from the topology diagram, no need to write an ADR\" | A topology diagram shows the *what*, not the *why*. Without an ADR entry, the next reader — or `ywc-iac-author` — cannot tell whether \"no multi-region\" was a deliberate cost trade-off or an oversight that should be revisited. |\n| \"This is a small change, infra-design.md is overkill\" | Even a small, well-understood change should record its provider, topology, and trade-off in `infra-design.md`. `ywc-iac-author`'s Step 1 either loads this file or falls back to inline-intent clarification; skipping it silently degrades every downstream authoring pass to the weaker inline-intent path. |\n\n**Violating the letter of these rules is violating the spirit.** A design pass that skips requirements, invents a provider, or omits the lens pre-check hands `ywc-iac-author` a topology no one actually verified.\n\n## Arguments\n\n| Parameter | Format | Example | Description |\n|-----------|--------|---------|-------------|\n| `--provider` | `--provider aws\\|gcp\\|azure\\|k8s` | `--provider aws` | Declare an already-decided provider, skipping the `ywc-tech-research` delegation in Step 2. |\n| `--scope` | `--scope \u003Csystem-name>` | `--scope payments-api` | Restrict the design pass to a single service\u002Fsystem instead of the whole architecture. |\n| `--skip-cloud-consult` | flag | `--skip-cloud-consult` | Skip the optional read-only `ywc-cloud-engineer` feasibility consult in Step 3. |\n\n## Workflow\n\n### Step 1: Requirements gathering\n\nGather and record, explicitly — this is the evidence base for every topology decision that follows:\n\n- **Workload characteristics**: request pattern (read-heavy\u002Fwrite-heavy\u002Fmixed), synchronous vs batch vs event-driven, statefulness.\n- **Traffic**: expected concurrency\u002FRPS, peak vs steady-state, growth trajectory over the next 6–12 months.\n- **Data**: volume, growth rate, classification (PII\u002FPHI\u002Fnone), retention requirements.\n- **Regulatory \u002F compliance**: data residency constraints, applicable frameworks (GDPR, HIPAA, SOC 2, industry-specific mandates).\n- **Budget**: monthly ceiling or a per-unit cost target.\n- **RTO\u002FRPO**: acceptable downtime window and acceptable data-loss window.\n\nDo not infer these from the feature description alone — ask the user for anything not already stated, and record the answers verbatim in the eventual `infra-design.md`.\n\n### Step 2: Provider selection\n\nIf `--provider` was passed or the provider is otherwise already decided (existing account, mandated vendor, explicit user statement), record the decision and its rationale, then move to Step 3.\n\nIf the provider is genuinely undecided, delegate the AWS\u002FGCP\u002FAzure\u002FK8s comparison to `\u002Fywc-tech-research` — do not invent the comparison inline. Feed it this step's requirements (traffic, data, budget, compliance) as comparison criteria, and record its recommendation as the Provider Decision.\n\n### Step 3: Topology design\n\nDesign, in this order:\n\n- **Network**: VPC\u002FVNet layout, subnet tiers, public\u002Fprivate boundary, ingress\u002Fegress paths.\n- **Compute**: service shape (managed container, VM, serverless\u002FFaaS) matched to the workload characteristics from Step 1.\n- **Storage**: database engine, object storage, cache layer, matched to the data profile from Step 1.\n- **IAM \u002F identity boundaries**: role structure, least-privilege boundaries, cross-account or cross-service trust relationships.\n\nUnless `--skip-cloud-consult` was passed, optionally dispatch `Task(subagent_type: ywc-cloud-engineer)` in **read-only feasibility-consult mode** — carry the topology sketch and an explicit instruction that this dispatch authors nothing and runs no `terraform apply`\u002F`plan`, it only flags feasibility concerns (quota limits, provider-specific gotchas, an unrealistic network layout) before the design is finalized.\n\n### Step 4: Reliability \u002F cost \u002F security 3-lens pre-check\n\nRead [`..\u002Freferences\u002Flenses\u002Freliability.md`](..\u002Freferences\u002Flenses\u002Freliability.md), [`..\u002Freferences\u002Flenses\u002Fcost.md`](..\u002Freferences\u002Flenses\u002Fcost.md), and [`..\u002Freferences\u002Flenses\u002Fsecurity.md`](..\u002Freferences\u002Flenses\u002Fsecurity.md), then pre-check the Step 3 topology against each lens's taxonomy. Record every finding — even a \"no issue found\" pass — so `ywc-iac-author` and `ywc-infra-review` inherit a documented baseline instead of re-deriving it.\n\n### Step 5: Trade-off records (ADR)\n\nFor every material decision from Steps 2–3 (provider choice, single-AZ vs multi-AZ, managed vs self-hosted database, network exposure boundary, etc.), write an Architecture Decision Record entry with four fields: **Context**, **Decision**, **Alternatives considered**, **Consequences**. A decision without an ADR entry is a decision no future reader can audit.\n\n### Step 6: Output `infra-design.md`\n\nWrite `infra-design.md` at the project root (or the path implied by `--scope`) with the sections in Output Format below. This file is the input contract `ywc-iac-author`'s Step 1 loads — write it so that skill can proceed without re-asking any question this step already answered.\n\n## Output Format\n\n```text\n# infra-design.md\n\n## Requirements\n- Workload: \u003Cpattern>\n- Traffic: \u003CRPS\u002Fconcurrency, peak vs steady, growth>\n- Data: \u003Cvolume, classification, retention>\n- Compliance: \u003Cframeworks, residency>\n- Budget: \u003Cmonthly ceiling \u002F per-unit target>\n- RTO\u002FRPO: \u003Cdowntime window> \u002F \u003Cdata-loss window>\n\n## Provider Decision\nProvider: \u003CAWS|GCP|Azure|K8s>\nSource: \u003C--provider flag | already decided | ywc-tech-research recommendation>\nRationale: \u003C1-3 lines>\n\n## Topology\n### Network\n\u003CVPC\u002FVNet, subnets, public\u002Fprivate boundary>\n### Compute\n\u003Cservice shape + rationale>\n### Storage\n\u003CDB engine, object storage, cache>\n### IAM \u002F Identity Boundaries\n\u003Crole structure, least-privilege boundaries, trust relationships>\n\n## 3-Lens Pre-Check\n- Reliability: \u003Cfindings, or \"no issue found\">\n- Cost: \u003Cfindings, or \"no issue found\">\n- Security: \u003Cfindings, or \"no issue found\">\n\n## ADR Log\n### ADR-001: \u003Cdecision title>\n- Context: ...\n- Decision: ...\n- Alternatives considered: ...\n- Consequences: ...\n```\n\n## Validation Checklist\n\nBefore declaring the design pass complete, verify:\n\n- [ ] Requirements (workload, traffic, data, compliance, budget, RTO\u002FRPO) were gathered explicitly, not inferred\n- [ ] The provider decision was either explicitly declared (`--provider` or prior decision) or delegated to `ywc-tech-research` — never invented inline\n- [ ] Topology covers all four dimensions: network, compute, storage, IAM\u002Fidentity boundaries\n- [ ] The reliability\u002Fcost\u002Fsecurity 3-lens pre-check was run and every finding (including \"no issue found\") is recorded\n- [ ] Every material trade-off has a corresponding ADR entry (Context \u002F Decision \u002F Alternatives \u002F Consequences)\n- [ ] `infra-design.md` was written with all five sections and is ready for `ywc-iac-author` to load directly\n\n## Common Mistakes\n\n- **Jumping straight to Terraform.** This skill's job ends at `infra-design.md` — writing `.tf` files in the same pass is `ywc-iac-author`'s scope, not this skill's.\n- **Treating the cloud-engineer consult as authoring.** The Step 3 `ywc-cloud-engineer` dispatch is read-only feasibility feedback; if it starts producing `.tf` files, the dispatch instruction was wrong.\n- **Skipping the lens pre-check because \"the topology looks fine.\"** The taxonomy in each lens file catches exactly the mistakes that look fine on a quick read (public subnet for a DB, wildcard IAM) — that is why it exists as a checklist, not a gut check.\n- **Writing ADR entries after the fact from memory.** Record each trade-off as it is decided in Step 5, not reconstructed at the end — reconstruction drops the alternatives that were actually considered.\n\n## Integration\n\n- **Upstream**: `ywc-tech-research` (provider comparison when undecided); direct user invocation when requirements and provider are already known.\n- **Downstream**: `ywc-iac-author` (loads `infra-design.md` as its authoring input contract), then `ywc-infra-review` (reviews the resulting IaC before apply).\n- **Consults**: `ywc-cloud-engineer` in read-only mode for topology feasibility, never for authoring.\n- **Must not be paired with**: writing or modifying `.tf` files in the same pass — that boundary belongs to `ywc-iac-author`.\n\n## References\n\n| Reference | Use when |\n|---|---|\n| [`..\u002Freferences\u002Flenses\u002Freliability.md`](..\u002Freferences\u002Flenses\u002Freliability.md) | Step 4 — pre-checking topology for availability\u002Fresilience gaps |\n| [`..\u002Freferences\u002Flenses\u002Fcost.md`](..\u002Freferences\u002Flenses\u002Fcost.md) | Step 4 — pre-checking topology for cost drivers and right-sizing |\n| [`..\u002Freferences\u002Flenses\u002Fsecurity.md`](..\u002Freferences\u002Flenses\u002Fsecurity.md) | Step 4 — pre-checking topology for the IaC misconfiguration taxonomy |\n| [`..\u002Freferences\u002Fproviders\u002Faws.md`](..\u002Freferences\u002Fproviders\u002Faws.md) | Provider decision is AWS — informs realistic topology choices |\n| [`..\u002Freferences\u002Fproviders\u002Fgcp.md`](..\u002Freferences\u002Fproviders\u002Fgcp.md) | Provider decision is GCP — informs realistic topology choices |\n| [`..\u002Freferences\u002Fproviders\u002Fazure.md`](..\u002Freferences\u002Fproviders\u002Fazure.md) | Provider decision is Azure — informs realistic topology choices |\n| [`..\u002Freferences\u002Fproviders\u002Fk8s.md`](..\u002Freferences\u002Fproviders\u002Fk8s.md) | Provider decision includes Kubernetes\u002FHelm (via Terraform providers) |\n",{"name":5,"phase":23,"category":24,"requires":25,"description":7,"advisor_budget":26},"planning","spec",[],2,"main","7e8ac872e53df8c89d75663e031626281a2a2f5c","claude-code\u002Fskills\u002Fywc-infra-design",1,"https:\u002F\u002Fgithub.com\u002Fyongwoon\u002Fywc-agent-toolkit","https:\u002F\u002Fgithub.com\u002Fyongwoon","https:\u002F\u002Fwww.webhani.com","2026-11-08 17:14:59",{"source":8,"skillName":5,"commands":36,"prompt":46,"zipAvailable":47},[37,40,43],{"tool":38,"command":39},"npx","npx skills add yongwoon\u002Fywc-agent-toolkit --skill ywc-infra-design",{"tool":41,"command":42},"bunx","bunx skills add yongwoon\u002Fywc-agent-toolkit --skill ywc-infra-design",{"tool":44,"command":45},"pnpm","pnpm dlx skills add yongwoon\u002Fywc-agent-toolkit --skill ywc-infra-design","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fyongwoon\u002Fywc-agent-toolkit\u002Fblob\u002Fmain\u002Fclaude-code\u002Fskills\u002Fywc-infra-design\u002FSKILL.md",true,[49,55,59,63],{"path":50,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":53,"sourceHtmlUrl":54},"README.en.md","REFERENCE","参考文档",2671,"https:\u002F\u002Fgithub.com\u002Fyongwoon\u002Fywc-agent-toolkit\u002Fblob\u002Fmain\u002Fclaude-code\u002Fskills\u002Fywc-infra-design\u002FREADME.en.md",{"path":56,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":57,"sourceHtmlUrl":58},"README.ja.md",2910,"https:\u002F\u002Fgithub.com\u002Fyongwoon\u002Fywc-agent-toolkit\u002Fblob\u002Fmain\u002Fclaude-code\u002Fskills\u002Fywc-infra-design\u002FREADME.ja.md",{"path":60,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":61,"sourceHtmlUrl":62},"README.ko.md",2875,"https:\u002F\u002Fgithub.com\u002Fyongwoon\u002Fywc-agent-toolkit\u002Fblob\u002Fmain\u002Fclaude-code\u002Fskills\u002Fywc-infra-design\u002FREADME.ko.md",{"path":64,"resourceType":51,"resourceTypeDesc":52,"sizeBytes":65,"sourceHtmlUrl":66},"README.md",2858,"https:\u002F\u002Fgithub.com\u002Fyongwoon\u002Fywc-agent-toolkit\u002Fblob\u002Fmain\u002Fclaude-code\u002Fskills\u002Fywc-infra-design\u002FREADME.md",[68,74,80,87,94,101],{"skillNo":69,"name":70,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":71,"categories":72,"keywords":73,"publishedAt":18},"01M72TQ84GTCPCV2VJ778V17TW","missing-frontmatter","https:\u002F\u002Fgithub.com\u002Fyongwoon\u002Fywc-agent-toolkit\u002Fblob\u002Fmain\u002Fscripts\u002Ffixtures\u002Fcodex-description-limit\u002Fmissing-frontmatter\u002FSKILL.md",[],[],{"skillNo":75,"name":76,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":79,"publishedAt":18},"01M72TQ6M4BFWE7P9EPW0GZDCM","malformed-frontmatter","https:\u002F\u002Fgithub.com\u002Fyongwoon\u002Fywc-agent-toolkit\u002Fblob\u002Fmain\u002Fscripts\u002Ffixtures\u002Fcodex-description-limit\u002Fmalformed-frontmatter\u002FSKILL.md",[],[],{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":18},"01M72TQ3ESGKXZ4QRWGTX92BKJ","fixture-501-fail","(ywc) Use when aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Do not use for x.","https:\u002F\u002Fgithub.com\u002Fyongwoon\u002Fywc-agent-toolkit\u002Fblob\u002Fmain\u002Fscripts\u002Ffixtures\u002Fcodex-description-limit\u002F501-fail\u002FSKILL.md",[],[],{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":18},"01M72TQ0HJ8H3R37J9WPWGKJZR","fixture-500-pass","(ywc) Use when aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Do not use for x.","https:\u002F\u002Fgithub.com\u002Fyongwoon\u002Fywc-agent-toolkit\u002Fblob\u002Fmain\u002Fscripts\u002Ffixtures\u002Fcodex-description-limit\u002F500-pass\u002FSKILL.md",[],[],{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":18},"01M72TPWNCC7NEYD0D9N12KSQS","ywc-worktrees","(ywc) Use when creating, auditing, pruning, or resolving git worktrees for isolated task workspaces, whether delegated from an executor or used standalone. Triggers: \"worktree 생성\", \"worktree audit\", \"worktree 정리\", \"worktree prune\", \"ywc-worktrees\", \"create worktree\". Do not use for branch creation\u002Fdeletion alone, PR creation (use ywc-create-pr), CI or merge delivery (use ywc-finish-branch), task orchestration (use ywc-sequential-executor or ywc-parallel-executor), or non-git isolation.","https:\u002F\u002Fgithub.com\u002Fyongwoon\u002Fywc-agent-toolkit\u002Fblob\u002Fmain\u002Fplugins\u002Fywc-agent-toolkit\u002Fskills\u002Fywc-worktrees\u002FSKILL.md",[],[],{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":107,"publishedAt":18},"01M72TPRNR3E6QWB91GM98ABBV","ywc-wayfinder","(ywc) Use when a large or uncertain change needs multi-session discovery with a deterministic local map and exactly one active ticket before planning or implementation. Triggers: \"wayfinder\", \"길찾기\", \"discovery map\", \"multi-session discovery\", \"탐색 ticket\", \"経路整理\", \"探索マップ\", \"ywc-wayfinder\". Do not use for ordinary planning (use ywc-plan), idea clarification (use ywc-brainstorm), direct implementation, or tracker\u002Fdatabase writes outside the local Markdown map.","https:\u002F\u002Fgithub.com\u002Fyongwoon\u002Fywc-agent-toolkit\u002Fblob\u002Fmain\u002Fplugins\u002Fywc-agent-toolkit\u002Fskills\u002Fywc-wayfinder\u002FSKILL.md",[],[]]