From navan-pack
Provides runbook for Navan platform incidents—booking failures, expense syncs, OAuth errors—with severity triage, Ava AI checks, and curl/jq API health probes.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin navan-packThis skill is limited to using the following tools:
Structured incident response for Navan travel platform disruptions. Navan uses raw REST APIs with OAuth 2.0 — there is no SDK and no sandbox. All diagnostic commands run against production.
Diagnoses and fixes Navan API errors like 401 Unauthorized, 403 Forbidden, 429 Rate Limit using curl diagnostics, token refresh, and permission checks.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Share bugs, ideas, or general feedback.
Structured incident response for Navan travel platform disruptions. Navan uses raw REST APIs with OAuth 2.0 — there is no SDK and no sandbox. All diagnostic commands run against production.
client_id, client_secret) stored in your secret managercurl and jq for API health probing| Severity | Condition | Response Time | Escalation |
|---|---|---|---|
| P1 — Critical | API fully down, all bookings failing | Immediate | Navan support + Ava AI + internal exec |
| P2 — High | Degraded performance, partial failures | 15 minutes | Navan support + internal travel admin |
| P3 — Medium | Intermittent errors, expense sync delays | 1 hour | Internal triage, monitor |
| P4 — Low | Cosmetic issues, non-blocking warnings | Next business day | Internal backlog |
Before manual debugging, use Navan's built-in AI assistant:
# Test OAuth authentication
AUTH_RESPONSE=$(curl -s -w "\n%{http_code}" \
-X POST "https://api.navan.com/ta-auth/oauth/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials&client_id=$NAVAN_CLIENT_ID&client_secret=$NAVAN_CLIENT_SECRET")
HTTP_CODE=$(echo "$AUTH_RESPONSE" | tail -1)
BODY=$(echo "$AUTH_RESPONSE" | sed '$d')
echo "Auth endpoint: HTTP $HTTP_CODE"
echo "$BODY" | jq '{token_present: (.access_token != null), error: .error}' 2>/dev/null
# Test booking retrieval (requires valid token)
TOKEN=$(echo "$BODY" | jq -r '.access_token')
curl -s -w "\nHTTP %{http_code}" \
-H "Authorization: Bearer $TOKEN" \
"https://api.navan.com/v1/bookings?page=0&size=50" | tail -1
Booking API Failure (P1/P2):
OAuth Token Failure (P1):
curl against /ta-auth/oauth/token — expect HTTP 200 with access_token fieldPOST /ta-auth/oauth/token with grant_type=client_credentialsExpense Sync Failure (P2/P3):
Flight Cancellation / Disruption (P2):
/v1/bookings for the affected booking UUID| Level | Contact | When |
|---|---|---|
| L1 | Ava AI assistant | Always start here |
| L2 | Navan Help Center | Ava cannot resolve; app.navan.com/app/helpcenter |
| L3 | Navan account manager | P1/P2 unresolved after 30 minutes |
| L4 | Internal executive sponsor | Business-critical travel disruption |
After resolution, create a post-incident record:
cat > "incident-$(date +%Y%m%d-%H%M%S).md" <<'INCEOF'
## Incident Report
- **Severity**: P?
- **Duration**: Start — End
- **Impact**: Number of affected travelers/bookings
- **Root Cause**: (API outage / credential issue / sync failure / ...)
- **Resolution**: Steps taken
- **Prevention**: Changes to avoid recurrence
INCEOF
| HTTP Code | Meaning | Runbook Action |
|---|---|---|
| 401 | Authentication failed | Check credential rotation; re-authenticate |
| 403 | Access denied | Verify API integration is enabled in admin |
| 429 | Rate limited | Back off; check Retry-After header value |
| 500 | Server error | Navan-side issue; escalate to L2/L3 |
| 502/503 | Service unavailable | Platform outage; escalate immediately |
Quick API status check during an incident:
# One-liner health probe
curl -s -o /dev/null -w "Auth: %{http_code} (%{time_total}s)\n" \
-X POST "https://api.navan.com/ta-auth/oauth/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials&client_id=$NAVAN_CLIENT_ID&client_secret=$NAVAN_CLIENT_SECRET"
navan-debug-bundle to collect full diagnostic data for support ticketsnavan-prod-checklist to harden your integration against future incidentsnavan-common-errors for detailed error code interpretation