plugins/pm-engineering/skills/cicd-playbook/SKILL.md
Write a CI/CD pipeline playbook for a service or team. Use when asked to document a CI/CD pipeline, write a deployment process, define release gates, document build and test stages, or create a deployment guide. Produces a structured playbook covering pipeline stages, environment definitions, deployment gates, rollback procedures, and on-call responsibilities.
npx skillsauth add mohitagw15856/pm-claude-skills cicd-playbookInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Produce a complete, actionable CI/CD playbook for a service or team — covering everything a new engineer needs to understand, contribute to, and operate the pipeline safely.
A good playbook is not a diagram. It is a document that answers: what runs, when, why, who owns it, and what to do when it breaks.
Ask for these if not already provided:
Service: [Name] | Team: [Team name] Last updated: [Date] | Owner: [Name / role] Pipeline platform: [CI tool] → [CD tool / platform]
[2–3 sentences describing what this service does and why the CI/CD pipeline is structured the way it is. Include the deployment target and how frequently the team ships.]
Deployment frequency: [Multiple times per day / Daily / Weekly / On-demand] Average pipeline duration: [X minutes] Rollback time (p95): [X minutes]
[Branch push]
│
▼
[1. Build & Lint] ──fail──▶ ❌ Block PR
│
▼
[2. Unit Tests] ──fail──▶ ❌ Block PR
│
▼
[3. Integration Tests] ──fail──▶ ❌ Block PR
│
▼
[4. Security Scan] ──fail──▶ ⚠️ [Block / Warn — specify]
│
▼
[5. Build Artefact / Container Image]
│
▼
[6. Deploy to Staging] ──fail──▶ ❌ Block promotion
│
▼
[7. Smoke Tests (Staging)]
│
▼
[8. Manual Approval Gate] ──(if required)
│
▼
[9. Deploy to Production] ──fail──▶ 🔁 Auto-rollback (if configured)
│
▼
[10. Post-deploy checks]
What runs: [Build command] + [Linter — e.g. ESLint, golangci-lint, flake8] Trigger: Every commit to any branch Blocking: Yes — PR cannot be merged if this fails Typical duration: [X minutes] Owner if it fails: PR author
Common failure causes:
npm install locally before pushing]npm run lint --fix to auto-fix most issues]What runs: [Test command — e.g. npm test, go test ./..., pytest]
Coverage gate: [X]% minimum — pipeline fails below this threshold
Trigger: Every commit
Blocking: Yes
Typical duration: [X minutes]
Coverage report: [Where to find it — e.g. uploaded to Codecov, available in CI artifacts]
What runs: [Test suite description — e.g. "API integration tests against a test database using Docker Compose"]
Environment: [Ephemeral test environment / shared test DB / etc.]
Trigger: Every commit to main and feature branches targeting main
Blocking: Yes
Typical duration: [X minutes]
If slow: [e.g. "Integration tests can be skipped locally with SKIP_INTEGRATION=true — never skip in CI"]
Tools: [e.g. Snyk, Trivy, OWASP Dependency Check, Semgrep]
What it checks: [Dependency vulnerabilities / SAST / secrets detection — list what applies]
Blocking on: Critical and High severity findings
Non-blocking on: Medium and Low (flagged, not blocking)
Trigger: Every commit to main
How to handle a flagged vulnerability:
What is produced: [Docker image / binary / zip — be specific]
Registry: [ECR / GCR / Docker Hub / Artifactory — URL]
Tagging convention: [service-name]:[git-sha] (also tagged :latest on main)
Trigger: Commits to main only (not feature branches)
Deployment method: [e.g. Helm upgrade / kubectl apply / ecs deploy / Terraform apply]
Staging URL: [URL]
Trigger: Automatic on successful artefact build from main
Who can deploy to staging: Any engineer (automatic)
Environment variables: Managed in [Vault / AWS SSM / GitHub Secrets / etc.] Staging is not production: [Any differences in config, scale, or data — state them here]
What runs: [Description — e.g. "10 critical path tests covering login, core API endpoints, and payment flow"] Tool: [e.g. Playwright / Postman / custom script] Pass criteria: All smoke tests pass within [X seconds] timeout Blocking: Yes — production deploy will not proceed if smoke tests fail
Smoke test suite location: [Link to test files or folder]
Required for: [Production deploys / deploys affecting >X% of traffic / deploys to specific regions] Who can approve: [e.g. Any engineer on the team / Lead engineer / On-call engineer] Approval timeout: [e.g. 24 hours — auto-cancelled if no approval] How to approve: [GitHub Actions approve step / Slack command / other — with link]
When to withhold approval:
Deployment method: [Same as staging or different — specify] Deployment window: [e.g. Monday–Thursday 09:00–16:00 UTC — no deploys on Fridays or before bank holidays] Canary / progressive rollout: [Yes — X% initial traffic, full rollout after Y minutes / No — full deploy] Deployment notifications: [Slack channel — #deployments]
Who is on-call during deploy: Deploying engineer is responsible until post-deploy checks pass.
Automated checks (run for [X minutes] after deploy):
Where to watch: [Datadog / Grafana / CloudWatch dashboard — link]
If a check fails: See Rollback Procedure below.
| Environment | Purpose | Deploy trigger | URL | Data | |---|---|---|---|---| | Dev | Local development | Manual | localhost | Seeded test data | | Staging | Pre-production validation | Automatic (main) | [URL] | Anonymised prod copy | | Production | Live traffic | Manual approval | [URL] | Live data |
Model: [Trunk-based / GitFlow / GitHub Flow — describe briefly]
| Branch | Purpose | Who merges | Deploy target |
|---|---|---|---|
| main | Production-ready code | PR + review | Staging → Production |
| feature/* | Feature development | Author | None (CI only) |
| hotfix/* | Critical production fixes | Lead engineer | Can bypass staging gate with approval |
Hotfix process: [Describe when and how to use a hotfix branch — what level of incident justifies bypassing the standard process]
Automated rollback: [Yes — triggered if post-deploy error rate exceeds [X]% / No — manual only]
Manual rollback steps:
# 1. Identify the last known good image tag
[command to list recent deployments]
# 2. Deploy the previous version
[deployment command with previous tag]
# 3. Confirm rollback is live
[smoke test command or health check URL]
# 4. Notify the team
[Slack command or template]
Rollback decision authority: Any engineer on-call can initiate a rollback without waiting for approval.
After a rollback:
Secret store: [Vault / AWS SSM / GitHub Secrets / Doppler — specify] How to add a new secret:
Never do: Commit secrets to source control, even in .env files. The pipeline includes secret scanning (Stage 4) which will flag this.
| Failure | Likely cause | Fix |
|---|---|---|
| Build fails with "module not found" | Dependency not installed | Run [install command] and commit lock file |
| Integration tests timeout | Test DB not seeded / external service down | Check [service] status; re-run pipeline |
| Smoke tests fail after staging deploy | Environment variable missing | Check [config location]; compare staging and prod env vars |
| Production deploy stuck at approval | Approver not notified | Tag @[on-call handle] in #deployments |
| Post-deploy error rate spike | Bad deploy / upstream dependency | Check [dashboard]; initiate rollback if >5 min |
#deploymentsdevelopment
Build a framework for creating shareable, high-reach social media content. Use when asked to plan viral content, develop a shareable content strategy, create a hook writing system, or build a repeatable process for content that gets shared. Produces a platform-specific viral content framework with hook formulas, content structures, shareability triggers, and a content testing system.
development
Generate article or newsletter thumbnail candidates using the Gemini API from inside Claude Code. Claude reads article copy, proposes composition concepts, writes image generation prompts incorporating brand specs, calls Gemini to generate the images, evaluates the results via computer vision, and returns ranked candidates with rationale. Use when asked to create thumbnails, generate cover images, or produce visual candidates for an article or newsletter.
testing
Flips Claude's default from "find reasons you're right" to "find reasons you're wrong." A genuine thinking partner, not a mirror with grammar. Use before high-stakes decisions, plans, assumptions, or pitches you haven't stress-tested.
development
Scrapes a Substack Notes page and exports engagement data (likes, comments, restacks) to a formatted .xlsx file with conditional formatting and summary stats.