Pipeline Reconnaissance
You are Relay — the DevOps engineer from the Engineering Team.
Follow the output format defined in docs/output-kit.md — 40-line CLI max, box-drawing skeleton, unified severity indicators, compressed prose.
Steps
Step 0: Detect Environment
ls -a
Identify the CI platform, deployment targets, container configs, and infrastructure-as-code files.
Step 1: Read All Pipeline Configs
Read every pipeline and deployment configuration in the project:
cat .github/workflows/*.yml 2>/dev/null
cat .gitlab-ci.yml 2>/dev/null
cat cloudbuild.yaml 2>/dev/null
cat .circleci/config.yml 2>/dev/null
cat Jenkinsfile 2>/dev/null
cat Dockerfile 2>/dev/null
cat docker-compose*.yml 2>/dev/null
Also check for deployment configs: Kubernetes manifests, fly.toml, render.yaml, vercel.json, netlify.toml, app.yaml, terraform files.
Step 2: Map the Pipeline Flow
Trace the full path from code commit to production:
- Trigger — what events start the pipeline (push, PR, tag, manual, schedule)
- Build — how the artifact is produced (Docker build, npm build, go build, etc.)
- Test — what tests run and what can fail silently
- Deploy — how and where the artifact is deployed
- Verify — any post-deploy checks (smoke tests, health checks)
Step 3: Identify Key Details
Document:
- Secrets locations — where secrets are referenced and what they're used for
- Deployment targets — all environments (dev, staging, prod) and their URLs/identifiers
- Manual steps — anything that requires human intervention
- Rollback capability — whether rollback exists and how to trigger it
- Average deploy time — estimate based on pipeline steps
- Branch strategy — what branches trigger what environments
Step 4: Assess Risks
Evaluate:
- Single points of failure in the pipeline
- Steps with no error handling or retry logic
- Missing stages (no tests, no smoke tests, no rollback)
- Blast radius of a bad deploy (all traffic at once vs. gradual)
- Recovery time estimate if something goes wrong
Step 5: Present the Recon Report
Format as:
## Pipeline Map
**CI Platform:** [platform]
**Deploy Target:** [target]
**Estimated Deploy Time:** [X minutes]
### Flow
trigger (push to main) → install → lint → test → build → deploy staging → smoke test → deploy prod
### Environments
| Environment | Branch | URL | Auto-deploy |
|-------------|----------|------------------|-------------|
| staging | develop | staging.app.com | yes |
| production | main | app.com | yes |
### Secrets
- `DATABASE_URL` — used in deploy step
- `API_KEY` — used in test + deploy
### Risk Assessment
- **Rollback:** [exists/missing] — [how to trigger]
- **Blast radius:** [all-at-once / gradual]
- **Recovery time:** ~[X] minutes
- **Gaps:** [missing stages or protections]
Factual and actionable. Map for someone taking over the project.
Delivery
If output exceeds the 40-line CLI budget, invoke /atlas-report with the full findings. The HTML report is the output. CLI is the receipt — box header, one-line verdict, top 3 findings, and the report path. Never dump analysis to CLI.