/triage
Fix production issues. Run audit, investigate, fix, postmortem.
This is a fixer. It uses /check-production as its primitive. Use /log-production-issues to create issues instead of fixing.
Usage
/triage # Audit and fix highest priority (default) /triage investigate VOL-456 # Deep dive on specific Sentry issue /triage investigate-ci 12345 # Deep dive on specific CI run failure /triage fix # Create PR for current fix /triage postmortem VOL-456 # Generate postmortem after merge
Stage 1: Production Audit
Command: /triage or /triage status
Invoke /check-production primitive for parallel checks:
-
Sentry - Unresolved issues via triage scripts
-
Vercel logs - Recent errors in stream
-
Health endpoints - /api/health response
-
GitHub CI/CD - Failed workflow runs
Output format:
TRIAGE STATUS - 2026-01-23 15:30
SENTRY (volume-fitness) [P0] 3 unresolved issues Top: VOL-456 "PaymentIntent failed" (Score: 147, 23 users)
GITHUB CI/CD [P1] Main branch failing: "CI" workflow (run #1234) Failed: Type check - 2h ago [P2] 2 feature branches blocked
VERCEL LOGS [OK] No errors in last 10 minutes
HEALTH ENDPOINTS [OK] volume.fitness/api/health (200, 45ms)
RECOMMENDATION:
- Investigate VOL-456 immediately - 23 users affected Run: /triage investigate VOL-456
- Fix main branch CI - blocking all deploys Run: /triage investigate-ci 1234
If all clean: "All systems nominal. No action required."
Stage 2: Investigate
Delegation Pattern
For complex issues, delegate investigation to agentic tools (see /delegate ):
-
Codex — Code archaeology, stack trace analysis, debugging
-
Gemini — Research current patterns, check for known issues
-
Thinktank — Validate proposed fix before implementing
Sentry Issues
Command: /triage investigate ISSUE-ID
Actions:
-
Fetch full issue context from Sentry
-
Create branch: fix/ISSUE-ID-description
-
Load affected files from stack trace
-
Check git history for related changes
-
Form root cause hypothesis (delegate to Codex for complex traces)
Output: Investigation summary with hypothesis and next steps.
CI/CD Failures
Command: /triage investigate-ci RUN-ID
Actions:
-
Fetch failed workflow run details gh run view RUN-ID --log-failed
-
Identify failed step and error message
-
Create branch: fix/ci-[workflow-name]-[date]
-
Load affected files based on error
-
Check recent commits that may have caused regression
Common CI failure patterns:
Failure Type Typical Cause Fix Approach
Type check New code with type errors Fix types locally, push
Lint Style violations Run pnpm lint --fix
Test Broken/flaky tests Run tests locally, fix or skip flaky
Build Missing deps, config issues Check package.json, build config
Deploy Env vars, permissions Check Vercel/platform settings
Output: CI investigation summary with specific error and fix approach.
Stage 3: Fix
Command: /triage fix
Prerequisites: On fix/ branch with changes.
Actions:
-
Run tests to verify fix
-
Create PR with standard format
-
Link Sentry issue in PR description
PR format:
Summary
[Fix description]
Sentry Issue
- ID: ISSUE-ID
- Users affected: N
- First seen: DATE
Test Plan
- Test case 1
- Test case 2
Stage 4: Postmortem
Command: /triage postmortem ISSUE-ID
Prerequisites: Fix deployed (PR merged).
Actions:
-
Verify no new errors in Sentry
-
Generate postmortem document from template
-
Resolve Sentry issue
-
Create docs/postmortems/YYYY-MM-DD-ISSUE-ID.md
Scripts
Via Sentry MCP (Preferred)
When Sentry MCP is configured, use direct queries:
-
"Show me unresolved errors in production"
-
"What's the triage score for issue VOL-456?"
-
"Get full context for the top error"
Via CLI Scripts
Multi-source orchestrator
~/.claude/skills/triage/scripts/check_all_sources.sh
Individual checks
~/.claude/skills/triage/scripts/check_sentry.sh ~/.claude/skills/triage/scripts/check_vercel_logs.sh ~/.claude/skills/triage/scripts/check_health_endpoints.sh
Sentry CLI directly
sentry-cli issues list --project=$SENTRY_PROJECT --status=unresolved sentry-cli issues describe ISSUE-ID
Postmortem generator
~/.claude/skills/triage/scripts/generate_postmortem.sh ISSUE-ID
Via GitHub CLI
List failed runs on main branch
gh run list --branch main --status failure --limit 10
List all recent failures
gh run list --status failure --limit 10
View failed run details
gh run view RUN-ID
View only failed step logs
gh run view RUN-ID --log-failed
Re-run failed jobs (after fix pushed)
gh run rerun RUN-ID --failed
Watch a run in progress
gh run watch RUN-ID
Workflow
/triage | v [Issues found?] | +-- Sentry issue --> /triage investigate ISSUE-ID | | | v | [Fix locally] | | | v | /triage fix (creates PR) | | | v | [PR merged & deployed] | | | v | /triage postmortem ISSUE-ID | +-- CI failure --> /triage investigate-ci RUN-ID | | | v | [Fix locally, push] | | | v | [CI re-runs automatically] | | | v | [Verify CI green] | +-- No issues --> "All systems nominal"
Environment Variables
Required for Sentry
SENTRY_AUTH_TOKEN # or SENTRY_MASTER_TOKEN SENTRY_ORG # Organization slug
Auto-detected per project
SENTRY_PROJECT # From .sentryclirc or .env.local
Optional for Vercel
VERCEL_TOKEN # For vercel logs access
MCP Configuration (Recommended)
For AI-assisted triage, configure Sentry MCP:
{ "mcpServers": { "sentry": { "url": "https://mcp.sentry.dev/mcp", "transport": "http" } } }
Or local with token:
{ "mcpServers": { "sentry": { "command": "npx", "args": ["-y", "@sentry/mcp-server"], "env": { "SENTRY_AUTH_TOKEN": "your-token", "SENTRY_ORG": "your-org" } } } }
Reuses
-
~/.claude/skills/sentry-observability/scripts/triage_score.sh
-
~/.claude/skills/sentry-observability/scripts/issue_detail.sh
-
~/.claude/skills/sentry-observability/scripts/resolve_issue.sh
Related
-
/check-production
-
The primitive (audit only)
-
/log-production-issues
-
Create GitHub issues from findings
-
/observability
-
Full observability setup
-
/sentry-observability
-
Sentry-specific operations
-
/verify-fix
-
Verification checklist
-
/delegate
-
Multi-AI orchestration pattern
Visual Deliverable
After completing the core workflow, generate a visual HTML summary:
-
Read ~/.claude/skills/visualize/prompts/triage-status.md
-
Read the template(s) referenced in the prompt
-
Read ~/.claude/skills/visualize/references/css-patterns.md
-
Generate self-contained HTML capturing this session's output
-
Write to ~/.agent/diagrams/triage-{date}.html
-
Open in browser: open ~/.agent/diagrams/triage-{date}.html
-
Tell the user the file path
Skip visual output if:
-
The session was trivial (single finding, quick fix)
-
The user explicitly opts out (--no-visual )
-
No browser available (SSH session)