
Deployment Engineer
- 633 installs
- 65 repo stars
- Updated June 21, 2026
- charon-fan/agent-playbook
Deployment Engineer is a Claude Code skill that generates CI/CD pipelines, selects deployment strategies, and outputs Kubernetes and GitHub Actions configurations for developers automating production releases.
About
Deployment Engineer is a Claude Code skill in charon-fan/agent-playbook for CI/CD pipeline design and deployment automation. It helps developers scaffold GitHub Actions workflows, Kubernetes manifests, and environment-specific deploy configs while choosing among blue-green, rolling, and canary strategies. The skill ships Python helpers—generate_deploy.py for environment configs and validate_deploy.py for pre-flight checks—so agents produce reviewable artifacts instead of hand-waving YAML. Developers reach for Deployment Engineer when standing up first pipelines, standardizing multi-environment releases, or encoding zero-downtime rollback patterns. Trigger phrases include “set up CI/CD,” “create deployment pipeline,” and “configure GitHub Actions.” Outputs are validated pipeline files, strategy rationale, and deployment configs ready for repository commit.
- Generates Blue-Green, Rolling, and Canary deployment strategies with zero-downtime and rollback guidance
- Creates ready-to-use GitHub Actions workflows and Kubernetes deployment YAML
- Produces monitoring checklists covering request rate, error rate, p50/p95/p99 latency, structured logs, and SLO-based al
- Includes Python scripts for config generation and deployment validation
- Hard-gate: always validate deployment config before merging to main
Deployment Engineer by the numbers
- 633 all-time installs (skills.sh)
- Ranked #229 of 1,453 DevOps & CI/CD skills by installs in the Skillselion catalog
- Security screen: LOW risk (skills.sh audit)
- Data as of Jul 28, 2026 (Skillselion catalog sync)
npx skills add https://github.com/charon-fan/agent-playbook --skill deployment-engineerAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 633 |
|---|---|
| repo stars | ★ 65 |
| Security audit | 3 / 3 scanners passed |
| Last updated | June 21, 2026 |
| Repository | charon-fan/agent-playbook ↗ |
How do you scaffold CI/CD with Kubernetes?
Generate CI/CD pipelines, choose deployment strategies, and produce Kubernetes and GitHub Actions configurations.
Who is it for?
Backend and platform engineers introducing or standardizing automated deploy pipelines across staging and production environments.
Skip if: Pure local prototyping with no target cluster, registry, or CI provider to wire into generated configs.
When should I use this skill?
A developer asks to set up CI/CD, create a deployment pipeline, configure GitHub Actions, or choose blue-green versus canary rollout.
What you get
GitHub Actions workflows, Kubernetes manifests, environment deploy configs, and validation reports.
- CI/CD workflow YAML
- Kubernetes manifests
- Validated deploy configuration
By the numbers
- Documents 3 deployment strategies: blue-green, rolling, and canary
- Bundles 2 Python scripts: generate_deploy.py and validate_deploy.py
Files
Deployment Engineer
Specialist in deployment automation, CI/CD pipelines, and infrastructure management.
When This Skill Activates
Activates when you:
- Set up deployment pipeline
- Configure CI/CD
- Manage releases
- Automate infrastructure
CI/CD Pipeline
Pipeline Stages
stages:
- lint
- test
- build
- security
- deploy-dev
- deploy-staging
- deploy-productionGitHub Actions Example
name: 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 deployDeployment Strategies
1. Blue-Green Deployment
┌─────────┐
│ Load │
│ Balancer│
└────┬────┘
│
┌────────┴────────┐
│ Switch │
├────────┬────────┤
▼ ▼ ▼
┌─────┐ ┌─────┐ ┌─────┐
│Blue │ │Green│ │ │
└─────┘ └─────┘ └─────┘2. Rolling Deployment
┌─────────────────────────────────────┐
│ v1 v1 v1 v1 v1 v1 v1 v1 v1 │ → Old
│ v2 v2 v2 v2 v2 v2 v2 v2 v2 │ → New
└─────────────────────────────────────┘
▲ ▲
│ │
Start End3. Canary Deployment
┌──────────────────────────────────────┐
│ 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%)Environment Configuration
Environment Variables
# 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/devConfiguration Management
// config/production.ts
export default {
database: {
url: process.env.DATABASE_URL,
poolSize: 20,
},
redis: {
url: process.env.REDIS_URL,
},
};Health Checks
// 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);
});Rollback Strategy
# Kubernetes
kubectl rollout undo deployment/app
# Docker
docker-compose down
docker-compose up -d --scale app=<previous-version>
# Git
git revert HEAD
git pushMonitoring & Logging
Metrics to Track
- Deployment frequency
- Lead time for changes
- Mean time to recovery (MTTR)
- Change failure rate
Logging
// Structured logging
logger.info('Deployment started', {
version: process.env.VERSION,
environment: process.env.NODE_ENV,
timestamp: new Date().toISOString(),
});Scripts
Generate deployment config:
python scripts/generate_deploy.py <environment>Validate deployment:
python scripts/validate_deploy.pyReferences
references/pipelines.md- CI/CD pipeline examplesreferences/kubernetes.md- K8s deployment configsreferences/monitoring.md- Monitoring setup
Deployment Engineer
A Claude Code skill for CI/CD pipelines and deployment automation.
Installation
This skill is part of the agent-playbook collection.
Usage
You: Set up CI/CD
You: Create deployment pipeline
You: Configure GitHub ActionsDeployment Strategies
| Strategy | Description |
|---|---|
| Blue-Green | Zero downtime, instant rollback |
| Rolling | Gradual replacement |
| Canary | Test with small traffic first |
Scripts
Generate deployment config:
python scripts/generate_deploy.py <environment>Validate deployment:
python scripts/validate_deploy.pyResources
Kubernetes Deployment Skeleton
apiVersion: apps/v1
kind: Deployment
metadata:
name: app
spec:
replicas: 2
selector:
matchLabels:
app: app
template:
metadata:
labels:
app: app
spec:
containers:
- name: app
image: example/app:1.0.0
ports:
- containerPort: 8080
readinessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 15
periodSeconds: 20
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 512Mi
securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
runAsNonRoot: trueMonitoring Checklist
Metrics
- Request rate
- Error rate
- Latency (p50/p95/p99)
Logs
- Structured logs with request IDs
- Include error context and stack traces
Alerts
- Define SLO-based alerts
- Avoid noisy, low-signal alerts
CI/CD Pipeline Patterns
Recommended Stages
- lint
- test
- build
- security
- deploy
Notes
- Keep pipelines fast and deterministic
- Fail fast on lint and unit tests
#!/usr/bin/env python3
# Template generator for deployment plan.
from pathlib import Path
import argparse
import textwrap
def write_output(path: Path, content: str, force: bool) -> bool:
if path.exists() and not force:
print(f"{path} already exists (use --force to overwrite)")
return False
path.parent.mkdir(parents=True, exist_ok=True)
path.write_text(content, encoding="utf-8")
return True
def main() -> int:
parser = argparse.ArgumentParser(description="Generate a deployment plan.")
parser.add_argument("--output", default="deploy-plan.md", help="Output file path")
parser.add_argument("--name", default="example", help="Service or app name")
parser.add_argument("--env", default="production", help="Target environment")
parser.add_argument("--owner", default="team", help="Owning team")
parser.add_argument("--force", action="store_true", help="Overwrite existing file")
args = parser.parse_args()
content = textwrap.dedent(
f"""\
# Deployment Plan
## Overview
- Service: {args.name}
- Environment: {args.env}
- Owner: {args.owner}
## Preconditions
- Release approved
- Change window confirmed
- Backups verified
## Steps
1. Build and publish artifacts
2. Deploy to staging and run smoke tests
3. Run migrations (if needed)
4. Deploy to {args.env}
5. Verify health checks and dashboards
## Verification
- Health endpoint returns 200
- Key metrics within baseline
- Error budget stable
## Rollback
- Revert to last known good release
- Disable feature flags
- Communicate rollback status
## Observability
- Dashboard links
- Alert channels
"""
).strip() + "\n"
output = Path(args.output)
if not write_output(output, content, args.force):
return 1
print(f"Wrote {output}")
return 0
if __name__ == "__main__":
raise SystemExit(main())
#!/usr/bin/env python3
# Template validator for deployment plan.
from pathlib import Path
import argparse
DEFAULT_REQUIRED = [
"## Overview",
"## Preconditions",
"## Steps",
"## Verification",
"## Rollback",
"## Observability",
]
def main() -> int:
parser = argparse.ArgumentParser(description="Validate a generated artifact.")
parser.add_argument("--input", default="deploy-plan.md", help="Input file path")
parser.add_argument(
"--require",
action="append",
default=[],
help="Additional required section heading",
)
args = parser.parse_args()
path = Path(args.input)
if not path.exists():
print(f"Missing file: {path}")
return 1
text = path.read_text(encoding="utf-8", errors="ignore")
text_lower = text.lower()
required = DEFAULT_REQUIRED + args.require
missing = [section for section in required if section.lower() not in text_lower]
if missing:
print("Missing required sections: " + ", ".join(missing))
return 1
print(f"Validated {path}")
return 0
if __name__ == "__main__":
raise SystemExit(main())
Related skills
How it compares
Use Deployment Engineer for opinionated pipeline scaffolding; reach for infra-as-code modules when org standards already codify every resource.
FAQ
What deployment strategies does Deployment Engineer support?
Deployment Engineer documents blue-green for instant rollback, rolling for gradual replacement, and canary for small-traffic validation first. The skill helps pick a strategy and encode it in generated pipeline and Kubernetes configs.
How do Deployment Engineer scripts work?
Deployment Engineer bundles generate_deploy.py to emit environment-specific deployment configuration and validate_deploy.py to check configs before merge. Run them from the skill’s scripts directory after the agent drafts initial YAML.
Is Deployment Engineer safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.