| name | formae-stack-design |
| description | Use when the user is deciding how to group resources into stacks, where to draw stack boundaries, or how stacks/targets/policies relate — stack design and reconciliation-boundary guidance. |
Design Formae Stacks
Help the user decide how to group resources into stacks, where to draw boundaries, and how stacks, targets, and policies relate. This is a guidance skill — it does not mutate infrastructure. It results in a proposed design that the user then authors.
Before advising, read formae://docs/stack-design for the canonical reference. Also read formae://docs/forma-structure if the user is about to start authoring files.
Core model: stack = reconciliation boundary
The most important fact about stacks: apply --mode reconcile makes the stack match its PKL exactly. It will delete any resource in the stack that is not declared in the PKL. The stack is the blast radius of one reconcile.
Ask the user:
- Which resources change together? Which are long-lived vs. ephemeral?
- Which resources are "protected" (production databases) vs. easy to recreate?
- Are there resources with very different risk levels that should not share a blast radius?
Rule of thumb: don't put resources with very different change cadences or risk levels in the same stack.
Stacks are orthogonal to targets
A target is a cloud account or endpoint (e.g., an AWS account, a Kubernetes cluster, a Grafana instance). A stack is a reconcile group. These two concepts are independent:
- One stack can span multiple targets (e.g., an AWS resource and a k8s resource that belong together).
- One target's resources can be split across multiple stacks (e.g., a shared EKS cluster in one stack; per-service k8s deployments in another).