Plan/apply/verify cloud environment config and secret references using env contract + policy targets; detect drift, rotate secrets, and decommission environments with approval gates. Use for staging/prod deployments and maintenance.
Manage cloud environment configuration under the repo-env-contract SSOT model, with a strict plan → approval → apply → verify workflow.
The env-cloudctl skill:
env/contract.yamlenv/values/<env>.yamlenv/secrets/<env>.ref.yaml (refs only)docs/project/policy.yaml (routing + auth/preflight + cloud targets)envfile provider (local or ssh transport)repo-env-contract.
docs/project/env-ssot.jsondocs/project/policy.yamlpolicy.env.cloud.targets[] must match the requested --env (and optional --workload)If either is not true, STOP.
If docs/project/env-ssot.json, docs/project/policy.yaml, or env/contract.yaml does not exist (first-time setup), run:
python3 -B -S .ai/skills/features/environment/env-contractctl/scripts/env_contractctl.py init --root .
Then customize the contract, policy targets, and secret backends before using cloud operations.
Use when the user asks to:
Avoid when:
env-contractctl)env-localctl)--approve-remote before any SSH/SCP remote command.rotate and decommission are only implemented for provider=mockcloud in this template.provider=envfile (local/ssh), use plan/apply/verify/drift. Implement a provider adapter if you need rotation/decommission semantics for real infrastructure.env/contract.yamlenv/values/<env>.yamlenv/secrets/<env>.ref.yamldocs/project/policy.yamlChoose one evidence location (no secrets):
dev-docs/active/<task-slug>/artifacts/env-cloud/.ai/.tmp/env-cloud/<run-id>/Evidence files (templates available in ./templates/):
00-target-and-scope.md01-drift-report.md02-apply-plan.md03-execution-log.md04-post-verify.md05-context-refresh.mddocs/context/env/effective-cloud-<env>.json (redacted)staging / prod / other.python3 -B -S .ai/skills/features/environment/env-cloudctl/scripts/env_cloudctl.py plan --root . --env <env> --workload <optional> --out <EVIDENCE_DIR>/02-apply-plan.md
Remote read (ssh transport only):
python3 -B -S .ai/skills/features/environment/env-cloudctl/scripts/env_cloudctl.py plan --root . --env <env> --workload <optional> --remote --approve-remote --out <EVIDENCE_DIR>/02-apply-plan.md
00-target-and-scope.md and summarize high-risk operations.--approve):python3 -B -S .ai/skills/features/environment/env-cloudctl/scripts/env_cloudctl.py apply --root . --env <env> --workload <optional> --approve --out <EVIDENCE_DIR>/03-execution-log.md
For ssh transport, add --approve-remote.
python3 -B -S .ai/skills/features/environment/env-cloudctl/scripts/env_cloudctl.py verify --root . --env <env> --workload <optional> --out <EVIDENCE_DIR>/04-post-verify.md
Remote hash check (ssh transport only):
python3 -B -S .ai/skills/features/environment/env-cloudctl/scripts/env_cloudctl.py verify --root . --env <env> --workload <optional> --remote --approve-remote --out <EVIDENCE_DIR>/04-post-verify.md
python3 -B -S .ai/skills/features/environment/env-cloudctl/scripts/env_cloudctl.py drift --root . --env <env> --workload <optional> --out <EVIDENCE_DIR>/01-drift-report.md
Remote read (ssh transport only):
python3 -B -S .ai/skills/features/environment/env-cloudctl/scripts/env_cloudctl.py drift --root . --env <env> --workload <optional> --remote --approve-remote --out <EVIDENCE_DIR>/01-drift-report.md
--approve):python3 -B -S .ai/skills/features/environment/env-cloudctl/scripts/env_cloudctl.py rotate --root . --env <env> --workload <optional> --secret <secret_ref_name> --approve --out <EVIDENCE_DIR>/03-execution-log.md
--approve):python3 -B -S .ai/skills/features/environment/env-cloudctl/scripts/env_cloudctl.py decommission --root . --env <env> --workload <optional> --approve --out <EVIDENCE_DIR>/03-execution-log.md
repo-env-contractnode .ai/tests/run.mjs --suite environmentenv/contract.yaml as part of the env-cloudctl workflow.