MaintainX Production Checklist
Overview
Comprehensive pre-deployment and post-deployment checklist for MaintainX integrations covering security, reliability, observability, and data integrity.
Prerequisites
- MaintainX integration developed and tested
- Production MaintainX account with API access
- Deployment infrastructure ready (Cloud Run, K8s, or similar)
Instructions
Step 1: Authentication & Security
# Verify production API key works
curl -s -o /dev/null -w "HTTP %{http_code}" \
https://api.getmaintainx.com/v1/users?limit=1 \
-H "Authorization: Bearer $MAINTAINX_API_KEY_PROD"
# Verify no secrets in codebase
npx gitleaks detect --source . --no-git
Step 2: Error Handling & Resilience
// Verify retry logic is configured
const client = axios.create({
baseURL: 'https://api.getmaintainx.com/v1',
timeout: 30_000, // 30 second timeout
headers: { Authorization: `Bearer ${apiKey}` },
});
Step 3: Data Integrity
Step 4: Observability
Step 5: Performance
Step 6: Deployment
Post-Deployment Verification
#!/bin/bash
echo "=== Post-Deployment Verification ==="
# 1. Health check
echo -n "Health check: "
curl -s http://YOUR_SERVICE_URL/health | jq -r '.status'
# 2. API connectivity
echo -n "MaintainX API: "
curl -s -o /dev/null -w "%{http_code}" \
https://api.getmaintainx.com/v1/users?limit=1 \
-H "Authorization: Bearer $MAINTAINX_API_KEY_PROD"
echo ""
# 3. Create test work order
echo "Creating test work order..."
WO=$(curl -s -X POST https://api.getmaintainx.com/v1/workorders \
-H "Authorization: Bearer $MAINTAINX_API_KEY_PROD" \
-H "Content-Type: application/json" \
-d '{"title":"Post-deploy verification test","priority":"LOW"}')
WO_ID=$(echo $WO | jq -r '.id')
echo " Created: #$WO_ID"
# 4. Verify retrieval
echo -n "Retrieve test: "
curl -s "https://api.getmaintainx.com/v1/workorders/$WO_ID" \
-H "Authorization: Bearer $MAINTAINX_API_KEY_PROD" | jq -r '.status'
# 5. Clean up
curl -s -X PATCH "https://api.getmaintainx.com/v1/workorders/$WO_ID" \
-H "Authorization: Bearer $MAINTAINX_API_KEY_PROD" \
-H "Content-Type: application/json" \
-d '{"status":"CLOSED"}' > /dev/null
echo " Cleaned up test work order #$WO_ID"
# 6. Check metrics endpoint
echo -n "Metrics endpoint: "
curl -s -o /dev/null -w "%{http_code}" http://YOUR_SERVICE_URL/metrics
echo ""
echo "=== Verification complete ==="
Go-Live Readiness Summary
| Category |
Requirement |
Priority |
| Auth |
Secret manager, no hardcoded keys |
P0 |
| Errors |
Retry + backoff for 429/5xx |
P0 |
| Data |
Pagination, idempotency, sync state |
P0 |
| Observability |
Logging, metrics, health check |
P0 |
| Performance |
Connection pooling, caching |
P1 |
| Security |
Input validation, audit logging |
P1 |
| Deployment |
Docker, non-root, resource limits |
P1 |
| Recovery |
Rollback procedure, reconciliation |
P2 |
Output
- All P0 checklist items verified before go-live
- Post-deployment verification script run successfully
- Test work order created and cleaned up in production
- Health check and metrics endpoints responding
- Go-live readiness documented
Error Handling
| Issue |
Check |
Solution |
| Health check fails post-deploy |
curl /health |
Check API key is mounted, restart pod |
| Test work order creation fails |
Check HTTP status |
Verify API key permissions and plan tier |
| Metrics endpoint 404 |
Check route config |
Ensure metrics server started on correct port |
| High error rate after deploy |
Check logs |
Roll back, investigate, fix, redeploy |
Resources
Next Steps
For API version migrations, see maintainx-upgrade-migration.
Examples
Automated pre-deploy gate in CI:
# .github/workflows/deploy.yml
jobs:
pre-deploy-check:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npx gitleaks detect --source . --no-git
- run: npm run test -- --coverage --coverageThreshold='{"global":{"branches":80}}'
- run: npm run lint
- run: npm run typecheck
Source: jeremylongshore/claude-code-plugins-plus-skills → skills/.curated/maintainx-prod-checklist/SKILL.md
Also appears in: jeremylongshore/claude-code-plugins-plus-skills/plugins/saas-packs/maintainx-pack/skills/maintainx-prod-checklist/SKILL.md
1---
2name: maintainx-prod-checklist
3description: "'Production deployment checklist for MaintainX integrations. Use when preparing to deploy a MaintainX integration to production, verifying production readiness, or auditing existing deployments. Trigger with phrases like \"maintainx production\", \"deploy maintainx\", \"maintainx go-live\", \"maintainx production checklist\", \"maintainx launch\". '"
4allowed-tools: "Read, Write, Edit, Bash(npm:*), Bash(node:*)"
5category: productivity-and-workflow
6source_repo: jeremylongshore/claude-code-plugins-plus-skills
7source_path: "skills/.curated/maintainx-prod-checklist/SKILL.md"
8source_url: https://github.com/jeremylongshore/claude-code-plugins-plus-skills/blob/HEAD/skills/.curated/maintainx-prod-checklist/SKILL.md
9---
10
11# MaintainX Production Checklist
12
13## Overview
14
15Comprehensive pre-deployment and post-deployment checklist for MaintainX integrations covering security, reliability, observability, and data integrity.
16
17## Prerequisites
18
19- MaintainX integration developed and tested
20- Production MaintainX account with API access
21- Deployment infrastructure ready (Cloud Run, K8s, or similar)
22
23## Instructions
24
25### Step 1: Authentication & Security
26
27```bash
28# Verify production API key works
29curl -s -o /dev/null -w "HTTP %{http_code}" \
30 https://api.getmaintainx.com/v1/users?limit=1 \
31 -H "Authorization: Bearer $MAINTAINX_API_KEY_PROD"
32
33# Verify no secrets in codebase
34npx gitleaks detect --source . --no-git
35```
36
37- [ ] API key stored in secret manager (not env file or code)
38- [ ] `.env` and `*.key` files in `.gitignore`
39- [ ] Pre-commit hook blocking secret commits
40- [ ] API key rotation schedule set (every 90 days)
41- [ ] Input validation on all user-provided data (Zod or similar)
42
43### Step 2: Error Handling & Resilience
44
45- [ ] Retry logic with exponential backoff for 429 and 5xx errors
46- [ ] `Retry-After` header honored on 429 responses
47- [ ] Circuit breaker for cascading failure prevention
48- [ ] Graceful degradation when MaintainX API is down
49- [ ] Request timeout set (30 seconds recommended)
50
51```typescript
52// Verify retry logic is configured
53const client = axios.create({
54 baseURL: 'https://api.getmaintainx.com/v1',
55 timeout: 30_000, // 30 second timeout
56 headers: { Authorization: `Bearer ${apiKey}` },
57});
58```
59
60### Step 3: Data Integrity
61
62- [ ] Cursor-based pagination handles all list endpoints
63- [ ] Idempotency keys on webhook handlers (prevent duplicate processing)
64- [ ] Data sync state persisted (survives restarts)
65- [ ] Reconciliation job runs daily to detect drift
66- [ ] Work order status transitions follow valid paths only
67
68### Step 4: Observability
69
70- [ ] Structured JSON logging (not console.log in production)
71- [ ] API request metrics (count, latency, error rate)
72- [ ] Health check endpoint (`/health`) returning API connectivity status
73- [ ] Readiness probe (`/ready`) for container orchestration
74- [ ] Alerting configured for error rate > 5%, latency > 5s, sync lag > 15min
75
76### Step 5: Performance
77
78- [ ] Connection pooling with keep-alive enabled
79- [ ] Response caching for static resources (users, locations, teams)
80- [ ] Max page size (100) used for pagination
81- [ ] Webhook-driven updates instead of polling where possible
82- [ ] Rate limiting to stay within API quotas
83
84### Step 6: Deployment
85
86- [ ] Multi-stage Docker build (small production image)
87- [ ] Non-root user in container
88- [ ] Resource limits set (CPU, memory)
89- [ ] Auto-scaling configured (min 1 instance for webhooks)
90- [ ] Rollback procedure documented and tested
91
92## Post-Deployment Verification
93
94```bash
95#!/bin/bash
96echo "=== Post-Deployment Verification ==="
97
98# 1. Health check
99echo -n "Health check: "
100curl -s http://YOUR_SERVICE_URL/health | jq -r '.status'
101
102# 2. API connectivity
103echo -n "MaintainX API: "
104curl -s -o /dev/null -w "%{http_code}" \
105 https://api.getmaintainx.com/v1/users?limit=1 \
106 -H "Authorization: Bearer $MAINTAINX_API_KEY_PROD"
107echo ""
108
109# 3. Create test work order
110echo "Creating test work order..."
111WO=$(curl -s -X POST https://api.getmaintainx.com/v1/workorders \
112 -H "Authorization: Bearer $MAINTAINX_API_KEY_PROD" \
113 -H "Content-Type: application/json" \
114 -d '{"title":"Post-deploy verification test","priority":"LOW"}')
115WO_ID=$(echo $WO | jq -r '.id')
116echo " Created: #$WO_ID"
117
118# 4. Verify retrieval
119echo -n "Retrieve test: "
120curl -s "https://api.getmaintainx.com/v1/workorders/$WO_ID" \
121 -H "Authorization: Bearer $MAINTAINX_API_KEY_PROD" | jq -r '.status'
122
123# 5. Clean up
124curl -s -X PATCH "https://api.getmaintainx.com/v1/workorders/$WO_ID" \
125 -H "Authorization: Bearer $MAINTAINX_API_KEY_PROD" \
126 -H "Content-Type: application/json" \
127 -d '{"status":"CLOSED"}' > /dev/null
128echo " Cleaned up test work order #$WO_ID"
129
130# 6. Check metrics endpoint
131echo -n "Metrics endpoint: "
132curl -s -o /dev/null -w "%{http_code}" http://YOUR_SERVICE_URL/metrics
133echo ""
134
135echo "=== Verification complete ==="
136```
137
138## Go-Live Readiness Summary
139
140| Category | Requirement | Priority |
141|----------|------------|----------|
142| Auth | Secret manager, no hardcoded keys | P0 |
143| Errors | Retry + backoff for 429/5xx | P0 |
144| Data | Pagination, idempotency, sync state | P0 |
145| Observability | Logging, metrics, health check | P0 |
146| Performance | Connection pooling, caching | P1 |
147| Security | Input validation, audit logging | P1 |
148| Deployment | Docker, non-root, resource limits | P1 |
149| Recovery | Rollback procedure, reconciliation | P2 |
150
151## Output
152
153- All P0 checklist items verified before go-live
154- Post-deployment verification script run successfully
155- Test work order created and cleaned up in production
156- Health check and metrics endpoints responding
157- Go-live readiness documented
158
159## Error Handling
160
161| Issue | Check | Solution |
162|-------|-------|----------|
163| Health check fails post-deploy | `curl /health` | Check API key is mounted, restart pod |
164| Test work order creation fails | Check HTTP status | Verify API key permissions and plan tier |
165| Metrics endpoint 404 | Check route config | Ensure metrics server started on correct port |
166| High error rate after deploy | Check logs | Roll back, investigate, fix, redeploy |
167
168## Resources
169
170- MaintainX API Reference
171- [MaintainX Status Page](https://status.getmaintainx.com)
172- [12-Factor App](https://12factor.net/)
173
174## Next Steps
175
176For API version migrations, see `maintainx-upgrade-migration`.
177
178## Examples
179
180**Automated pre-deploy gate in CI**:
181
182```yaml
183# .github/workflows/deploy.yml
184jobs:
185 pre-deploy-check:
186 runs-on: ubuntu-latest
187 steps:
188 - uses: actions/checkout@v4
189 - run: npx gitleaks detect --source . --no-git
190 - run: npm run test -- --coverage --coverageThreshold='{"global":{"branches":80}}'
191 - run: npm run lint
192 - run: npm run typecheck
193```
194
195---
196
197**Source:** [`jeremylongshore/claude-code-plugins-plus-skills`](https://github.com/jeremylongshore/claude-code-plugins-plus-skills) → `skills/.curated/maintainx-prod-checklist/SKILL.md`
198
199**Also appears in:** `jeremylongshore/claude-code-plugins-plus-skills/plugins/saas-packs/maintainx-pack/skills/maintainx-prod-checklist/SKILL.md`