CloudFormation list, fmt, and Native CI details
Detail for atmos aws cloudformation list, fmt, and the native CI integration. The main
SKILL.md links here.
list
atmos aws cloudformation list [--stack <stack>] [--status <status,...>] [--region <region>] [--identity <name>]
calls ListStacks account-wide and prints a table with a header row (MANAGED, STATUS,
STACK NAME).
- Managed vs. unmanaged. A deployed stack is
managedwhen its name equals thestack_nameof anaws/cloudformationcomponent. With--stack, only that Atmos stack's components count. Without it, every Atmos stack's components count. An unknown--stackis anErrStackNotFounderror, not an rc-0 listing of everything asunmanaged. - Identity. An explicit
--identitywins. Otherwiselistscans the stack manifests for a singledefault: trueidentity (listhas no component, so it cannot read one component'sauthsection). With no resolvable identity and no SDK credentials, the credential error carries a hint to pass--identity. --status. Matched case-insensitively against the SDK'sStackStatusvalues (create_completeworks) and validated before any auth or AWS call. An unknown value is anErrInvalidFlagerror that names it and lists every valid status. The default excludesDELETE_COMPLETE.
fmt
fmt --check prints <path>: already formatted for a clean template and <path>: not formatted for
a dirty one (plain formatted is printed only after a write). With --all, --affected, --tags,
or --labels, --check checks every selected template, prints each result, and exits non-zero once
at the end with ErrAwsCloudFormationFmtNotClean listing every unformatted file. Components sharing
one template file check it once per run, keyed by the resolved file path.
Native CI
The plugin (pkg/ci/plugins/cloudformation) fires on after.aws/cloudformation.{diff,apply,delete,drift-detect,drift-describe}.
- Summary titles and commands use the verb the user ran:
planis not reported asdiff, anddeployis not reported asapply. The reproduce command includes--fail-on-driftwhen the drift run used it. - "CloudFormation output" section.
apply/deploylist the stack Outputs;diff/planlist the changeset's resource changes (action, type, logical ID, replacement);drift describelists drifted resources with property differences. Outputs come from the same masked setoutputpresents, so NoEcho-dependent values are redacted. - "No changes". A no-op
diff/applychangeset says so instead of showing an empty summary. - Output variables (
$GITHUB_OUTPUT, honoringci.output.enabledandci.output.variables):stack,component,command,stack_name,exit_code,changeset_name,has_changes(diff/apply),stack_status(delete),drifted,drift_status,drifted_resource_count(drift verbs), andoutput_<Key>for each stack Output afterapply(masked, never filtered by the allow-list). There are still no commit statuses, PR comments, or artifacts. - Hooks. Only these five verb pairs fire events;
--skip-hooks(no value skips all,--skip-hooks=a,bskips named hooks) andATMOS_SKIP_HOOKSskip them.
See atmos-ci for the native-CI plumbing this rides on.