Claude-code-plugins-plus-skills juicebox-debug-bundle
install
source · Clone the upstream repo
git clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/jeremylongshore/claude-code-plugins-plus-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/saas-packs/juicebox-pack/skills/juicebox-debug-bundle" ~/.claude/skills/jeremylongshore-claude-code-plugins-plus-skills-juicebox-debug-bundle && rm -rf "$T"
manifest:
plugins/saas-packs/juicebox-pack/skills/juicebox-debug-bundle/SKILL.mdsource content
Juicebox Debug Bundle
Overview
Collect Juicebox API connectivity status, dataset health, analysis quota usage, and rate limit state into a single diagnostic archive. This bundle helps troubleshoot failed dataset uploads, stalled AI analysis runs, quota exhaustion, and API authentication problems.
Debug Collection Script
#!/bin/bash set -euo pipefail BUNDLE="debug-juicebox-$(date +%Y%m%d-%H%M%S)" mkdir -p "$BUNDLE" # Environment check echo "=== Juicebox Debug Bundle ===" | tee "$BUNDLE/summary.txt" echo "Generated: $(date -u +%Y-%m-%dT%H:%M:%SZ)" >> "$BUNDLE/summary.txt" echo "JUICEBOX_API_KEY: ${JUICEBOX_API_KEY:+[SET]}" >> "$BUNDLE/summary.txt" # API connectivity — health endpoint HTTP=$(curl -s -o /dev/null -w "%{http_code}" \ -H "Authorization: Bearer ${JUICEBOX_API_KEY}" \ https://api.juicebox.ai/v1/health 2>/dev/null || echo "000") echo "API Status: HTTP $HTTP" >> "$BUNDLE/summary.txt" # Account quota curl -s -H "Authorization: Bearer ${JUICEBOX_API_KEY}" \ "https://api.juicebox.ai/v1/account/quota" \ > "$BUNDLE/quota.json" 2>&1 || true # Datasets and recent analyses curl -s -H "Authorization: Bearer ${JUICEBOX_API_KEY}" \ "https://api.juicebox.ai/v1/datasets?limit=10" > "$BUNDLE/datasets.json" 2>&1 || true curl -s -H "Authorization: Bearer ${JUICEBOX_API_KEY}" \ "https://api.juicebox.ai/v1/analyses?limit=5" > "$BUNDLE/recent-analyses.json" 2>&1 || true # Rate limit headers curl -s -D "$BUNDLE/rate-headers.txt" -o /dev/null \ -H "Authorization: Bearer ${JUICEBOX_API_KEY}" https://api.juicebox.ai/v1/health 2>/dev/null || true tar -czf "$BUNDLE.tar.gz" "$BUNDLE" && rm -rf "$BUNDLE" echo "Bundle: $BUNDLE.tar.gz"
Analyzing the Bundle
tar -xzf debug-juicebox-*.tar.gz cat debug-juicebox-*/summary.txt # Auth + API health jq '{used, limit, remaining}' debug-juicebox-*/quota.json # Quota usage jq '.[] | {id, name, row_count}' debug-juicebox-*/datasets.json # Dataset inventory jq '.[] | {id, status, created_at}' debug-juicebox-*/recent-analyses.json
Common Issues
| Symptom | Check in Bundle | Fix |
|---|---|---|
| API returns 401 | shows HTTP 401 | Regenerate API key in Juicebox Settings > API Keys |
| Dataset upload stuck | shows processing status for >10 min | Check file format (CSV/JSON required); reduce file size below 100MB |
| Analysis quota exhausted | shows remaining at 0 | Upgrade plan or wait for monthly quota reset |
| Analysis run failed | shows error status | Check dataset has required columns; verify data types match analysis type |
| Rate limited (429) | shows Retry-After | Implement exponential backoff; batch dataset queries |
Automated Health Check
async function checkJuicebox(): Promise<void> { const key = process.env.JUICEBOX_API_KEY; if (!key) { console.error("[FAIL] JUICEBOX_API_KEY not set"); return; } const res = await fetch("https://api.juicebox.ai/v1/health", { headers: { Authorization: `Bearer ${key}` }, }); console.log(`[${res.ok ? "OK" : "FAIL"}] API: HTTP ${res.status}`); if (res.ok) { const quota = await fetch("https://api.juicebox.ai/v1/account/quota", { headers: { Authorization: `Bearer ${key}` }, }); if (quota.ok) { const data = await quota.json(); console.log(`[INFO] Quota remaining: ${data.remaining ?? "unknown"}`); } } } checkJuicebox();
Resources
Next Steps
See
juicebox-common-errors.