---
name: deployment-sop
description: Deployment workflows, pre-deploy validation, and smoke testing patterns. Use when deploying to staging or production, running smoke tests, or validating deployments.
---

# Deployment SOP Skill

## Purpose

Route to existing deployment SOPs and provide checklists for safe, validated deployments. This skill does NOT duplicate SOP content—it links to authoritative sources.

## When This Skill Applies

- Deploying to staging or production
- Running pre-deploy validation
- Executing post-deploy smoke tests
- Accessing development machines for deployment
- Coordinating release activities

## Authoritative References (MUST READ)

| Document                 | Location                                          | Purpose                     |
| ------------------------ | ------------------------------------------------- | --------------------------- |
| Semantic Release SOP     | `docs/ci-cd/Semantic-Release-Deployment-SOP.md`   | Release automation workflow |
| Staging/UAT Release SOP  | `docs/sop/STAGING-UAT-RELEASE-SOP.md`             | UAT validation process      |
| Linux Dev Machine Access | `docs/deployment/LINUX-DEV-MACHINE-ACCESS-SOP.md` | Dev server access           |
| Production Server Access | `docs/deployment/PRODUCTION-SERVER-ACCESS-SOP.md` | Production deployment       |

## Pre-Deployment Checklist

Before ANY deployment:

- [ ] All CI checks pass (GitHub Actions green)
- [ ] PR merged to target branch
- [ ] No unresolved blockers in Linear
- [ ] Database migrations tested locally
- [ ] Environment variables verified

```bash
# Validate before deploy
yarn ci:validate
yarn build
```

## Post-Deployment Smoke Test

After deployment completes:

- [ ] Health endpoint responds: `curl https://{domain}/api/health`
- [ ] Database connection verified (check health response)
- [ ] Authentication flow works (sign-in/sign-up)
- [ ] Critical user flows functional
- [ ] No new errors in logs

```bash
# Smoke test commands
curl -s https://{domain}/api/health | jq .
# Expected: {"status":"healthy","timestamp":"..."}
```

## Deployment Evidence Template

For Linear ticket attachment:

```markdown
## Deployment Evidence - {TICKET_PREFIX}-XXX

### Environment

- **Target**: Staging / Production
- **Branch**: `{branch_name}`
- **Commit**: `{commit_sha}`

### Pre-Deployment

- [x] CI checks passed
- [x] PR merged
- [x] Migrations verified

### Post-Deployment

- [x] Health check: PASSED
- [x] Auth flow: PASSED
- [x] Smoke tests: PASSED

### Verification

curl -s https://{domain}/api/health
{"status":"healthy","timestamp":"2025-XX-XXTXX:XX:XX.XXXZ"}
```

## Rollback Procedure

If deployment fails:

1. **Identify failure** - Check logs, monitoring dashboards
2. **Revert commit** - `git revert {commit_sha}`
3. **Push revert** - Triggers automatic rollback deployment
4. **Verify rollback** - Run smoke tests again
5. **Document incident** - Update Linear ticket with evidence

## Stop-the-Line Conditions

### FORBIDDEN

- Deploying with failing CI checks
- Skipping smoke tests on production
- Deploying database migrations without local testing
- Force-deploying over active incidents

### REQUIRED

- Health check MUST pass within 5 minutes
- Production deployments MUST have staging validation first
- Rollback plan MUST be documented before production deploy

## Branch → Environment Mapping

| Branch   | Environment | Auto-Deploy |
| -------- | ----------- | ----------- |
| `dev`    | Staging     | Manual pull |
| `main`   | Production  | Automatic   |

**Note**: Merging to `dev` builds Docker image but requires manual pull on staging server.
