Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Deployment automation specialist for CI/CD pipelines and infrastructure. Use when setting up deployment, configuring CI/CD, or managing releases.
.claude/skills/deployment-engineer/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 423% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 86% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 48% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 109% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 18% | 0% |
Specialist in deployment automation, CI/CD pipelines, and infrastructure management.
Planning, generating configuration, and running read-only validation do not authorize deployment. Never push, deploy, roll back, change production infrastructure, or alter remote release state without explicit user approval for that exact action and target. Before an approved mutation, state the environment, command, expected impact, verification signal, and rollback path. Stop if the target or authority is ambiguous.
Activates when you:
yamlstages: - lint - test - build - security - deploy-dev - deploy-staging - deploy-production
yamlname: CI/CD on: push: branches: [main, develop] pull_request: branches: [main] jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '20' - run: npm ci - run: npm run lint test: runs-on: ubuntu-latest needs: lint steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 - run: npm ci - run: npm test build: runs-on: ubuntu-latest needs: test steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 - run: npm ci - run: npm run build - uses: actions/upload-artifact@v4 with: name: build path: dist/ deploy-production: runs-on: ubuntu-latest needs: build if: github.ref == 'refs/heads/main' environment: production steps: - uses: actions/checkout@v4 - uses: actions/download-artifact@v4 with: name: build path: dist/ - run: npm run deploy
┌─────────┐
│ Load │
│ Balancer│
└────┬────┘
│
┌────────┴────────┐
│ Switch │
├────────┬────────┤
▼ ▼ ▼
┌─────┐ ┌─────┐ ┌─────┐
│Blue │ │Green│ │ │
└─────┘ └─────┘ └─────┘┌─────────────────────────────────────┐
│ v1 v1 v1 v1 v1 v1 v1 v1 v1 │ → Old
│ v2 v2 v2 v2 v2 v2 v2 v2 v2 │ → New
└─────────────────────────────────────┘
▲ ▲
│ │
Start End┌──────────────────────────────────────┐
│ v1 v1 v1 v1 v1 v1 v1 v1 v1 v1 │ → Old
│ v2 v2 v2 v2 │ → Canary (5%)
└──────────────────────────────────────┘
Monitor metrics, then:
│ v1 v1 v1 v1 │ → Old (50%)
│ v2 v2 v2 v2 v2 v2 v2 v2 v2 v2 │ → New (50%)bash# Production NODE_ENV=production DATABASE_URL=postgresql://... API_KEY=${API_KEY} SENTRY_DSN=https://example.com/123 # Development NODE_ENV=development DATABASE_URL=postgresql://localhost:5432/dev
typescript// config/production.ts export default { database: { url: process.env.DATABASE_URL, poolSize: 20, }, redis: { url: process.env.REDIS_URL, }, };
typescript// GET /health app.get('/health', (req, res) => { const health = { status: 'ok', timestamp: new Date().toISOString(), checks: { database: 'ok', redis: 'ok', external_api: 'ok', }, }; if (Object.values(health.checks).some(v => v !== 'ok')) { health.status = 'degraded'; return res.status(503).json(health); } res.json(health); });
bash# Kubernetes kubectl rollout undo deployment/app # Docker docker-compose down docker-compose up -d --scale app=<previous-version> # Git git revert HEAD git push
typescript// Structured logging logger.info('Deployment started', { version: process.env.VERSION, environment: process.env.NODE_ENV, timestamp: new Date().toISOString(), });
Generate deployment config:
bashpython3 scripts/generate_deploy.py --env <environment> --name <service-name>
Validate deployment:
bashpython3 scripts/validate_deploy.py --input deploy-plan.md
references/pipelines.md - CI/CD pipeline examplesreferences/kubernetes.md - K8s deployment configsreferences/monitoring.md - Monitoring setup| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-24 | pass→pass | 15,479 | 17,085 | +10% | 1 | 1 | 0% | 2,685 | 3,968 | +48% | 0 | 0 | — |
case-01 | fail→pass | 9,082 | 12,976 | +43% | 1 | 1 | 0% | 531 | 2,778 | +423% | 0 | 0 | — |
case-02 | fail→pass | 24,208 | 14,754 | -39% | 1 | 1 | 0% | 1,502 | 2,787 | +86% | 0 | 0 | — |
case-03 | fail→pass | 15,173 | 11,221 | -26% | 1 | 1 | 0% | 1,614 | 2,393 | +48% | 0 | 0 | — |
case-04 | fail→fail | 13,354 | 13,045 | -2% | 1 | 1 | 0% | 1,322 | 2,599 | +97% | 0 | 0 | — |
case-05 | fail→pass | 10,945 | 9,705 | -11% | 1 | 1 | 0% | 1,115 | 2,328 | +109% | 0 | 0 | — |
case-06 | pass→pass | 10,738 | 9,191 | -14% | 1 | 1 | 0% | 783 | 2,088 | +167% | 0 | 0 | — |
case-07 | pass→pass | 12,536 | 9,362 | -25% | 1 | 1 | 0% | 1,007 | 2,149 | +113% | 0 | 0 | — |
case-08 | pass→pass | 20,066 | 29,061 | +45% | 1 | 1 | 0% | 2,753 | 4,370 | +59% | 0 | 0 | — |
case-09 | fail→pass | 16,938 | 11,104 | -34% | 1 | 1 | 0% | 2,329 | 2,741 | +18% | 0 | 0 | — |
case-10 | fail→pass | 10,060 | 9,535 | -5% | 1 | 1 | 0% | 920 | 2,042 | +122% | 0 | 0 | — |
case-11 | pass→pass | 7,054 | 8,461 | +20% | 1 | 1 | 0% | 259 | 1,819 | +602% | 0 | 0 | — |
case-12 | fail→fail | 17,785 | 27,608 | +55% | 1 | 1 | 0% | 2,126 | 3,280 | +54% | 0 | 0 | — |
case-13 | fail→pass | 13,446 | 15,005 | +12% | 1 | 1 | 0% | 1,254 | 2,849 | +127% | 0 | 0 | — |
case-14 | fail→pass | 11,906 | 8,273 | -31% | 1 | 1 | 0% | 1,224 | 2,638 | +116% | 0 | 0 | — |
case-15 | fail→pass | 16,857 | 4,238 | -75% | 1 | 1 | 0% | 2,970 | 1,800 | -39% | 0 | 0 | — |
case-16 | fail→pass | 10,884 | 3,943 | -64% | 1 | 1 | 0% | 1,047 | 2,041 | +95% | 0 | 0 | — |
case-17 | fail→pass | 16,015 | 9,130 | -43% | 1 | 1 | 0% | 2,392 | 3,325 | +39% | 0 | 0 | — |
case-18 | pass→pass | 24,078 | 12,224 | -49% | 1 | 1 | 0% | 2,910 | 3,668 | +26% | 0 | 0 | — |
case-19 | pass→pass | 12,758 | 10,418 | -18% | 1 | 1 | 0% | 1,406 | 2,249 | +60% | 0 | 0 | — |
case-20 | fail→fail | 20,405 | 8,580 | -58% | 1 | 1 | 0% | 2,220 | 3,039 | +37% | 0 | 0 | — |
case-21 | pass→pass | 11,104 | 10,949 | -1% | 1 | 1 | 0% | 1,754 | 2,233 | +27% | 0 | 0 | — |
case-22 | pass→pass | 4,365 | 2,992 | -31% | 1 | 1 | 0% | 797 | 2,033 | +155% | 0 | 0 | — |
case-23 | pass→fail | 2,610 | 3,039 | +16% | 1 | 1 | 0% | 400 | 1,883 | +371% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 24 cases were attempted. The headline lift of +42 percentage points is the difference between those two pass rates over the 24 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/2/2026 | +36% |
| gemini-3.6-flash | verified | 7/24/2026 | +32% |
Other measured skills in the registry, with their headline benchmark lift.