Deployment Composer
Compose the smallest safe deployment workflow from the repository's actual branching model, CI setup, deploy provider, and release risk. Routes work to focused skills instead of treating every deploy as the same checklist.
Authorized Scope
Apply this engine only within the user's requested task and existing explicit
authorization. Loading or delegating to it grants no additional authority.
Preserve report-only restrictions and the caller's target, host, provider, and
cost limits. Existing approval satisfies a gate only for the same actions and
scope; obtain approval before expanding them. Forward these limits to delegates.
Contract
Inputs:
- Repository root
- Desired release/deploy goal
- Optional target environment, source branch, target branch, PR number, or provider
Outputs:
- Deployment route: release PR, provider deploy, CI setup, or repair
- Selected delegated skills
- Quality gate state
- Confirmation gates still required
Creates/Modifies:
- Nothing during discovery
- May create local release notes or PR body files
- May create GitHub PRs only through
release-pr-gates after confirmation rules are satisfied
External Side Effects:
- Reads git/GitHub metadata and workflow status
- May trigger provider deployment commands through delegated skills
Confirmation Required:
- Before production deploys or merges
- Before creating GitHub PRs when the user did not explicitly request PR creation
- Before running provider commands with production flags
Delegates To:
release-pr-gates
deploy
github-fix-ci
ec2-backend-deployer
testing-cicd-init
changelog-generator
Composed Skills
| Stage |
Use |
release-pr-gates |
GitHub release PRs, branch discovery, gate + cut releases on the trunk, waiting for checks |
deploy |
General staging/production deploy checklist, local quality gates, post-deploy monitoring |
github-fix-ci |
Failed GitHub Actions checks on release or deploy PRs |
ec2-backend-deployer |
Docker + GitHub Actions + EC2 backend deployment setup |
testing-cicd-init |
Missing or weak GitHub Actions/test infrastructure |
changelog-generator |
Release notes from commit history |
| Provider-specific skills |
Vercel, Docker, Turborepo, monitoring, or app-specific deployment when present |
Discovery Phase
Always inspect before choosing a path:
git status -sb
git remote -v
git branch -r
find . -maxdepth 3 -type f \( -name 'package.json' -o -name 'vercel.json' -o -name 'Dockerfile' -o -name 'docker-compose.yml' -o -name 'docker-compose.yaml' -o -name 'turbo.json' \)
find .github/workflows -maxdepth 1 -type f 2>/dev/null
For GitHub repos:
gh repo view --json nameWithOwner,defaultBranchRef
gh workflow list
Capture:
- Current branch and dirty worktree state
- Default (trunk) branch and remote branch list
- CI provider and required checks
- Deploy provider: Vercel, EC2/Docker, GitHub Actions, custom scripts, or unknown
- Package manager and quality commands
- Environment targets: preview, staging, production
Routing Rules
Release
If the user wants to cut a release:
- Use
release-pr-gates to gate the release on the trunk (default branch).
- A short-lived feature or fix branch is merged into the trunk via PR; the release is then cut from the trunk as a semver tag + GitHub release.
staging and production are deployment environments driven by CI/tags — not git branches.
- Wait for quality gates before calling the release ready.
- Use
github-fix-ci if checks fail.
Direct Provider Deploy
If the user wants to deploy the current branch/app to an environment:
- Use
deploy for local pre-deploy checks and post-deploy verification.
- Route provider setup or execution:
- Vercel project: use Vercel-specific guidance or CLI.
- EC2/Docker backend: use
ec2-backend-deployer.
- Turborepo: inspect
turbo.json and use affected builds where appropriate.
- Unknown provider: inspect scripts and workflow files before acting.
- Do not deploy production without explicit confirmation.
CI Setup or Repair
If the repo has no CI or weak gates:
- Use
testing-cicd-init to add baseline checks.
- Use
deploy after CI exists.
- For failing existing checks, use
github-fix-ci.
Release Notes
If the release needs user-facing notes or a PR body:
- Use
changelog-generator for commit summaries.
- Include migrations, env changes, and rollback notes when visible.
Deployment Workflow
Discover repo topology and deployment provider.
Choose the narrowest route from the routing rules.
Run local gates before every release PR or deployment. Format, lint, and type-check are mandatory:
bun run format || npm run format || npx biome check --write .
bun run lint || npm run lint || bunx turbo lint
bun run typecheck || bun run type-check || npm run typecheck || npm run type-check || npx tsc --noEmit
bun run test || npm test
bun run build || npm run build
Fix format, lint, and type-check failures before pushing or deploying. Tests
and build should run when configured; report absent scripts as coverage gaps.
Execute the selected release or deploy path.
Wait for remote checks or deployment status.
Verify the deployed environment:
- health endpoint
- critical page/API path
- logs or monitoring when available
Report final status and blockers.
Safety Rules
- Never hide a dirty worktree; identify whether local changes are part of the deploy.
- Never bypass branch protection or required checks.
- Never merge or deploy production without explicit confirmation.
- Never assume a
staging environment is configured; verify CI/deployment settings.
- Never call skipped or absent checks green.
- Prefer existing repo scripts and workflows over inventing new deploy commands.
- If a provider cannot be identified, stop after discovery and report what is missing.
Output Shape
Return a compact deployment state:
Deployment route: [release PR / provider deploy / CI setup / repair]
Repository: [owner/repo]
Branches: [source] -> [target] or [current branch]
Provider: [Vercel/EC2/Docker/GitHub Actions/custom/unknown]
Checks: [passing/failing/pending/not configured]
Deployment: [not started/in progress/succeeded/failed]
Verification: [passed/failed/not available]
Needs confirmation: [production merge/deploy, if applicable]
1---2name: deployment-composer3description: Compose deployment workflows from smaller skills and repo signals, including trunk-based releases, CI quality gates, provider deployment, post-deploy verification, rollback, and failed-check diagnosis. Use when the user asks for a deployment plan, release workflow, ship-to-staging/production environments, or a smart deploy process across GitHub, Vercel, EC2, Docker, or custom CI.4---5
6# Deployment Composer
7
8Compose the smallest safe deployment workflow from the repository's actual branching model, CI setup, deploy provider, and release risk. Routes work to focused skills instead of treating every deploy as the same checklist.
9
10## Authorized Scope
11
12Apply this engine only within the user's requested task and existing explicit
13authorization. Loading or delegating to it grants no additional authority.
14Preserve report-only restrictions and the caller's target, host, provider, and
15cost limits. Existing approval satisfies a gate only for the same actions and
16scope; obtain approval before expanding them. Forward these limits to delegates.
17
18## Contract
19
20Inputs:
21
22- Repository root
23- Desired release/deploy goal
24- Optional target environment, source branch, target branch, PR number, or provider
25
26Outputs:
27
28- Deployment route: release PR, provider deploy, CI setup, or repair
29- Selected delegated skills
30- Quality gate state
31- Confirmation gates still required
32
33Creates/Modifies:
34
35- Nothing during discovery
36- May create local release notes or PR body files
37- May create GitHub PRs only through `release-pr-gates` after confirmation rules are satisfied
38
39External Side Effects:
40
41- Reads git/GitHub metadata and workflow status
42- May trigger provider deployment commands through delegated skills
43
44Confirmation Required:
45
46- Before production deploys or merges
47- Before creating GitHub PRs when the user did not explicitly request PR creation
48- Before running provider commands with production flags
49
50Delegates To:
51
52- `release-pr-gates`
53- `deploy`
54- `github-fix-ci`
55- `ec2-backend-deployer`
56- `testing-cicd-init`
57- `changelog-generator`
58
59## Composed Skills
60
61| Stage | Use |
62|-------|-----|
63| `release-pr-gates` | GitHub release PRs, branch discovery, gate + cut releases on the trunk, waiting for checks |
64| `deploy` | General staging/production deploy checklist, local quality gates, post-deploy monitoring |
65| `github-fix-ci` | Failed GitHub Actions checks on release or deploy PRs |
66| `ec2-backend-deployer` | Docker + GitHub Actions + EC2 backend deployment setup |
67| `testing-cicd-init` | Missing or weak GitHub Actions/test infrastructure |
68| `changelog-generator` | Release notes from commit history |
69| Provider-specific skills | Vercel, Docker, Turborepo, monitoring, or app-specific deployment when present |
70
71## Discovery Phase
72
73Always inspect before choosing a path:
74
75```bash
76git status -sb
77git remote -v
78git branch -r
79find . -maxdepth 3 -type f \( -name 'package.json' -o -name 'vercel.json' -o -name 'Dockerfile' -o -name 'docker-compose.yml' -o -name 'docker-compose.yaml' -o -name 'turbo.json' \)
80find .github/workflows -maxdepth 1 -type f 2>/dev/null
81```
82
83For GitHub repos:
84
85```bash
86gh repo view --json nameWithOwner,defaultBranchRef
87gh workflow list
88```
89
90Capture:
91
92- Current branch and dirty worktree state
93- Default (trunk) branch and remote branch list
94- CI provider and required checks
95- Deploy provider: Vercel, EC2/Docker, GitHub Actions, custom scripts, or unknown
96- Package manager and quality commands
97- Environment targets: preview, staging, production
98
99## Routing Rules
100
101### Release
102
103If the user wants to cut a release:
104
1051. Use `release-pr-gates` to gate the release on the trunk (default branch).
1062. A short-lived feature or fix branch is merged into the trunk via PR; the release is then cut from the trunk as a semver tag + GitHub release.
1073. `staging` and `production` are deployment environments driven by CI/tags — not git branches.
1084. Wait for quality gates before calling the release ready.
1095. Use `github-fix-ci` if checks fail.
110
111### Direct Provider Deploy
112
113If the user wants to deploy the current branch/app to an environment:
114
1151. Use `deploy` for local pre-deploy checks and post-deploy verification.
1162. Route provider setup or execution:
117 - Vercel project: use Vercel-specific guidance or CLI.
118 - EC2/Docker backend: use `ec2-backend-deployer`.
119 - Turborepo: inspect `turbo.json` and use affected builds where appropriate.
120 - Unknown provider: inspect scripts and workflow files before acting.
1213. Do not deploy production without explicit confirmation.
122
123### CI Setup or Repair
124
125If the repo has no CI or weak gates:
126
1271. Use `testing-cicd-init` to add baseline checks.
1282. Use `deploy` after CI exists.
1293. For failing existing checks, use `github-fix-ci`.
130
131### Release Notes
132
133If the release needs user-facing notes or a PR body:
134
1351. Use `changelog-generator` for commit summaries.
1362. Include migrations, env changes, and rollback notes when visible.
137
138## Deployment Workflow
139
1401. Discover repo topology and deployment provider.
1412. Choose the narrowest route from the routing rules.
1423. Run local gates before every release PR or deployment. Format, lint, and type-check are mandatory:
143
144 ```bash
145 bun run format || npm run format || npx biome check --write .
146 bun run lint || npm run lint || bunx turbo lint
147 bun run typecheck || bun run type-check || npm run typecheck || npm run type-check || npx tsc --noEmit
148 bun run test || npm test
149 bun run build || npm run build
150 ```
151
152 Fix format, lint, and type-check failures before pushing or deploying. Tests
153 and build should run when configured; report absent scripts as coverage gaps.
154
1554. Execute the selected release or deploy path.
1565. Wait for remote checks or deployment status.
1576. Verify the deployed environment:
158 - health endpoint
159 - critical page/API path
160 - logs or monitoring when available
1617. Report final status and blockers.
162
163## Safety Rules
164
165- Never hide a dirty worktree; identify whether local changes are part of the deploy.
166- Never bypass branch protection or required checks.
167- Never merge or deploy production without explicit confirmation.
168- Never assume a `staging` environment is configured; verify CI/deployment settings.
169- Never call skipped or absent checks green.
170- Prefer existing repo scripts and workflows over inventing new deploy commands.
171- If a provider cannot be identified, stop after discovery and report what is missing.
172
173## Output Shape
174
175Return a compact deployment state:
176
177```markdown
178Deployment route: [release PR / provider deploy / CI setup / repair]
179Repository: [owner/repo]
180Branches: [source] -> [target] or [current branch]
181Provider: [Vercel/EC2/Docker/GitHub Actions/custom/unknown]
182Checks: [passing/failing/pending/not configured]
183Deployment: [not started/in progress/succeeded/failed]
184Verification: [passed/failed/not available]
185Needs confirmation: [production merge/deploy, if applicable]
186```