Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Collect Hex debug evidence for support tickets and troubleshooting. Use when encountering persistent issues, preparing support tickets, or collecting diagnostic information for Hex problems. Trigger with phrases like "hex debug", "hex support bundle", "collect hex logs", "hex diagnostic".
.claude/skills/jeremylongshore-hex-debug-bundle/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | -27% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 20% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 35% | 0% |
| case-11 | ✗→✓ | ▲ Improved | -52% | 0% |
| case-12 | ✗→✓ | ▲ Improved | -62% | 0% |
Collect Hex API connectivity status, project listing, run history, data connection health, and rate limit state into a single diagnostic archive. This bundle helps troubleshoot failed notebook runs, stale data connections, scheduled run failures, and API authentication issues.
bash#!/bin/bash set -euo pipefail BUNDLE="debug-hex-$(date +%Y%m%d-%H%M%S)" mkdir -p "$BUNDLE" # Environment check echo "=== Hex Debug Bundle ===" | tee "$BUNDLE/summary.txt" echo "Generated: $(date -u +%Y-%m-%dT%H:%M:%SZ)" >> "$BUNDLE/summary.txt" echo "HEX_API_KEY: ${HEX_API_KEY:+[SET]}" >> "$BUNDLE/summary.txt" # API connectivity HTTP=$(curl -s -o /dev/null -w "%{http_code}" \ -H "Authorization: Bearer ${HEX_API_KEY}" \ https://app.hex.tech/api/v1/projects 2>/dev/null || echo "000") echo "API Status: HTTP $HTTP" >> "$BUNDLE/summary.txt" # Project listing curl -s -H "Authorization: Bearer ${HEX_API_KEY}" \ "https://app.hex.tech/api/v1/projects" \ > "$BUNDLE/projects.json" 2>&1 || true # Recent runs (across projects) curl -s -H "Authorization: Bearer ${HEX_API_KEY}" \ "https://app.hex.tech/api/v1/runs?limit=10" \ > "$BUNDLE/recent-runs.json" 2>&1 || true # Data connections and rate limit headers curl -s -D "$BUNDLE/rate-headers.txt" -H "Authorization: Bearer ${HEX_API_KEY}" \ "https://app.hex.tech/api/v1/connections" > "$BUNDLE/connections.json" 2>&1 || true tar -czf "$BUNDLE.tar.gz" "$BUNDLE" && rm -rf "$BUNDLE" echo "Bundle: $BUNDLE.tar.gz"
bashtar -xzf debug-hex-*.tar.gz cat debug-hex-*/summary.txt # Auth + connectivity jq '.[] | {id, title, status}' debug-hex-*/projects.json # Project inventory jq '.[] | {id, status, started_at}' debug-hex-*/recent-runs.json # Run history jq '.[] | {name, type, status}' debug-hex-*/connections.json # Data source health
| Symptom | Check in Bundle | Fix | |---------|----------------|-----| | API returns 401 | summary.txt shows HTTP 401 | Regenerate API token in Hex workspace Settings > API | | Run stuck in pending | recent-runs.json shows pending status for >5 min | Check compute quota; cancel and re-trigger the run | | Data connection failed | connections.json shows error on a source | Re-authenticate the connection; verify DB credentials haven't expired | | Scheduled run not firing | recent-runs.json missing expected scheduled entries | Check project schedule in Hex UI; verify project is published | | Rate limited (429) | rate-headers.txt shows Retry-After | Reduce API polling; batch project queries where possible |
typescriptasync function checkHex(): Promise<void> { const key = process.env.HEX_API_KEY; if (!key) { console.error("[FAIL] HEX_API_KEY not set"); return; } const res = await fetch("https://app.hex.tech/api/v1/projects", { headers: { Authorization: `Bearer ${key}` }, }); console.log(`[${res.ok ? "OK" : "FAIL"}] API: HTTP ${res.status}`); if (res.ok) { const data = await res.json(); console.log(`[INFO] Projects accessible: ${Array.isArray(data) ? data.length : 0}`); } } checkHex();
See hex-common-errors.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 29,554 | 17,075 | -42% | 1 | 1 | 0% | 3,848 | 3,452 | -10% | 0 | 0 | — |
case-02 | fail→fail | 21,719 | 17,351 | -20% | 1 | 1 | 0% | 2,383 | 3,659 | +54% | 0 | 0 | — |
case-03 | fail→fail | 15,984 | 8,572 | -46% | 1 | 1 | 0% | 2,147 | 2,734 | +27% | 0 | 0 | — |
case-04 | fail→pass | 21,329 | 11,530 | -46% | 1 | 1 | 0% | 3,191 | 2,327 | -27% | 0 | 0 | — |
case-05 | fail→pass | 9,850 | 4,633 | -53% | 1 | 1 | 0% | 1,602 | 1,921 | +20% | 0 | 0 | — |
case-06 | pass→pass | 9,663 | 7,623 | -21% | 1 | 1 | 0% | 1,359 | 2,360 | +74% | 0 | 0 | — |
case-07 | fail→pass | 12,336 | 15,089 | +22% | 1 | 1 | 0% | 1,767 | 2,382 | +35% | 0 | 0 | — |
case-08 | pass→pass | 6,851 | 9,856 | +44% | 1 | 1 | 0% | 1,072 | 1,803 | +68% | 0 | 0 | — |
case-09 | pass→pass | 18,866 | 19,735 | +5% | 1 | 1 | 0% | 2,076 | 3,014 | +45% | 0 | 0 | — |
case-10 | pass→fail | 13,261 | 5,098 | -62% | 1 | 1 | 0% | 1,338 | 1,985 | +48% | 0 | 0 | — |
case-16 | pass→pass | 15,907 | 17,808 | +12% | 1 | 1 | 0% | 2,862 | 2,913 | +2% | 0 | 0 | — |
case-11 | fail→pass | 17,959 | 8,217 | -54% | 1 | 1 | 0% | 3,358 | 1,623 | -52% | 0 | 0 | — |
case-12 | fail→pass | 28,695 | 7,652 | -73% | 1 | 1 | 0% | 4,051 | 1,536 | -62% | 0 | 0 | — |
case-13 | fail→pass | 15,860 | 9,475 | -40% | 1 | 1 | 0% | 2,741 | 1,968 | -28% | 0 | 0 | — |
case-14 | fail→pass | 21,333 | 2,624 | -88% | 1 | 1 | 0% | 2,717 | 1,511 | -44% | 0 | 0 | — |
case-15 | pass→pass | 10,196 | 6,707 | -34% | 1 | 1 | 0% | 822 | 1,197 | +46% | 0 | 0 | — |
case-17 | fail→pass | 16,128 | 7,107 | -56% | 1 | 1 | 0% | 1,829 | 1,361 | -26% | 0 | 0 | — |
case-18 | fail→pass | 12,786 | 4,657 | -64% | 1 | 1 | 0% | 1,226 | 1,615 | +32% | 0 | 0 | — |
case-19 | pass→pass | 8,441 | 13,851 | +64% | 1 | 1 | 0% | 1,782 | 2,690 | +51% | 0 | 0 | — |
case-20 | pass→pass | 16,429 | 18,519 | +13% | 1 | 1 | 0% | 2,932 | 3,442 | +17% | 0 | 0 | — |
case-21 | pass→pass | 15,085 | 57,973 | +284% | 1 | 1 | 0% | 1,592 | 2,802 | +76% | 0 | 0 | — |
case-22 | pass→pass | 13,365 | 12,652 | -5% | 1 | 1 | 0% | 2,170 | 3,089 | +42% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +36 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.