Collect the following from the user, one question at a time. For update mode, pre-populate answers from existing files and ask only about changes.
a. Architecture overview — "What does this stack deploy, and what is its role in the architecture?"
Example: "A queue tier with SQS, DLQ, worker Lambda, and a jobs DynamoDB table"
b. AWS service and key resources — "What AWS service does this stack deploy?" and "What CloudFormation resource types will the template create?"
c. Parameters — For each parameter beyond Namespace and Environment, collect:
- Name, Type, Default value, Validation pattern or allowed values, Error message
- Classification: Configuration, Wirable — Required, Wirable — Optional, or Pattern-provided (see REFERENCE.md Section 5)
- For Wirable parameters: which upstream stack and output provides the value
d. Feature flags (tier stacks) — "Which feature flags should this stack support?" Feature flags control conditional resources within tier stacks (e.g., DynamoDB tables, SQS integration). Defaults are false.
Example: Backend with EnablePassengersTable, Queue with EnableJobsTable
e. Outputs — For each output, collect:
- Name, Description
- Used By: which downstream stacks or operational steps consume it
f. Capabilities — Does the template create IAM resources?
- If yes ->
CAPABILITY_NAMED_IAM
- If no ->
none
g. Stack name suffix — Confirm suffix for {APP_NAMESPACE}-{APP_ENV}-{suffix}. Default: service name.
h. Multi-instance support (single-service only) — Can this stack be deployed multiple times with different suffixes?
i. Build requirements — Does this stack need a pre-built artifact (container image, frontend bundle)?
j. Security posture — Collect:
- Deployment IAM actions, Runtime permissions, Security controls, Known deferrals