Skillshub anth-debug-bundle
install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/jeremylongshore/claude-code-plugins-plus-skills/anth-debug-bundle" ~/.claude/skills/comeonoliver-skillshub-anth-debug-bundle && rm -rf "$T"
manifest:
skills/jeremylongshore/claude-code-plugins-plus-skills/anth-debug-bundle/SKILL.mdsource content
Anthropic Debug Bundle
Overview
Collect diagnostic information for Claude API issues. Every API response includes a
request-id header — this is the single most important piece of data for Anthropic support.
Prerequisites
- Anthropic SDK installed
- Access to application logs
set in environmentANTHROPIC_API_KEY
Instructions
Step 1: Capture Request ID
import anthropic client = anthropic.Anthropic() try: message = client.messages.create( model="claude-sonnet-4-20250514", max_tokens=64, messages=[{"role": "user", "content": "test"}] ) print(f"Request ID: {message._request_id}") # req_01A1B2C3... except anthropic.APIStatusError as e: print(f"Request ID: {e.response.headers.get('request-id')}") print(f"Status: {e.status_code}") print(f"Error: {e.message}")
// TypeScript — access raw response headers const response = await client.messages.create({ model: 'claude-sonnet-4-20250514', max_tokens: 64, messages: [{ role: 'user', content: 'test' }], }).asResponse(); console.log('Request ID:', response.headers.get('request-id')); console.log('Rate limit remaining:', response.headers.get('anthropic-ratelimit-requests-remaining'));
Step 2: Debug Bundle Script
#!/bin/bash # anthropic-debug-bundle.sh BUNDLE_DIR="anthropic-debug-$(date +%Y%m%d-%H%M%S)" mkdir -p "$BUNDLE_DIR" echo "=== Anthropic Debug Bundle ===" > "$BUNDLE_DIR/summary.txt" echo "Generated: $(date -u +%Y-%m-%dT%H:%M:%SZ)" >> "$BUNDLE_DIR/summary.txt" # SDK versions echo -e "\n--- SDK Versions ---" >> "$BUNDLE_DIR/summary.txt" pip show anthropic 2>/dev/null | grep -E "^(Name|Version)" >> "$BUNDLE_DIR/summary.txt" npm list @anthropic-ai/sdk 2>/dev/null >> "$BUNDLE_DIR/summary.txt" python3 --version >> "$BUNDLE_DIR/summary.txt" 2>&1 node --version >> "$BUNDLE_DIR/summary.txt" 2>&1 # API key status (NEVER log the key itself) echo -e "\n--- Auth Status ---" >> "$BUNDLE_DIR/summary.txt" echo "ANTHROPIC_API_KEY: ${ANTHROPIC_API_KEY:+SET (${#ANTHROPIC_API_KEY} chars)}" >> "$BUNDLE_DIR/summary.txt" # Connectivity test with headers echo -e "\n--- API Connectivity ---" >> "$BUNDLE_DIR/summary.txt" curl -s -w "\nHTTP %{http_code} | Time: %{time_total}s" \ -o "$BUNDLE_DIR/api-response.json" \ -D "$BUNDLE_DIR/response-headers.txt" \ https://api.anthropic.com/v1/messages \ -H "x-api-key: $ANTHROPIC_API_KEY" \ -H "anthropic-version: 2023-06-01" \ -H "content-type: application/json" \ -d '{"model":"claude-sonnet-4-20250514","max_tokens":8,"messages":[{"role":"user","content":"1"}]}' \ >> "$BUNDLE_DIR/summary.txt" # Rate limit headers echo -e "\n--- Rate Limit Headers ---" >> "$BUNDLE_DIR/summary.txt" grep -i "ratelimit\|request-id\|retry-after" "$BUNDLE_DIR/response-headers.txt" >> "$BUNDLE_DIR/summary.txt" # API status page echo -e "\n--- API Status ---" >> "$BUNDLE_DIR/summary.txt" curl -s https://status.anthropic.com/api/v2/status.json | python3 -c \ "import sys,json; d=json.load(sys.stdin); print(d['status']['description'])" >> "$BUNDLE_DIR/summary.txt" 2>&1 # Package and clean up tar -czf "$BUNDLE_DIR.tar.gz" "$BUNDLE_DIR" rm -rf "$BUNDLE_DIR" echo "Bundle: $BUNDLE_DIR.tar.gz"
Step 3: Redaction Rules
ALWAYS REDACT: API keys, user content/PII, authorization headers
SAFE TO INCLUDE: Request IDs, error messages, rate limit headers, SDK versions, status codes, timestamps
Key Headers for Debugging
| Header | Example | Use |
|---|---|---|
| | Support ticket reference |
| | Your RPM cap |
| | Requests left |
| | Your TPM cap |
| | Tokens left |
| | Seconds to wait (on 429) |
Resources
Next Steps
For rate limit issues, see
anth-rate-limits.