exa-debug-bundle
Generate a diagnostic bundle for Exa troubleshooting and support communication.
Install
mkdir -p .claude/skills/exa-debug-bundle && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/4792" && unzip -o skill.zip -d .claude/skills/exa-debug-bundle && rm skill.zipInstalls to .claude/skills/exa-debug-bundle
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Collect Exa debug evidence for support tickets and troubleshooting.Key capabilities
- →Perform quick connectivity tests to Exa API
- →Capture request and response details for debugging
- →Collect environment information (Node, npm, OS)
- →Identify Exa SDK version
- →Bundle diagnostic information into an archive
- →Provide guidance on sensitive data handling
How it works
The skill executes a script that gathers system information, performs an Exa API connectivity test, and bundles the results into an archive for support.
Inputs & outputs
When to use exa-debug-bundle
- →Perform Exa API connectivity testing
- →Collect logs for support tickets
- →Verify environment configuration
- →Identify common installation issues
About this skill
Exa Debug Bundle
Current State
!node --version 2>/dev/null || echo 'N/A'
!npm list exa-js 2>/dev/null | grep exa-js || echo 'exa-js not installed'
!echo "EXA_API_KEY: ${EXA_API_KEY:+SET (${#EXA_API_KEY} chars)}"
Overview
Collect all necessary diagnostic information for Exa support tickets. Exa error responses include a requestId field — always include it when contacting support at [email protected].
Instructions
Step 1: Quick Connectivity Test
set -euo pipefail
echo "=== Exa Connectivity Test ==="
echo "API Key: ${EXA_API_KEY:+SET (${#EXA_API_KEY} chars)}"
echo ""
# Test basic search endpoint
HTTP_CODE=$(curl -s -o /tmp/exa-debug.json -w "%{http_code}" \
-X POST https://api.exa.ai/search \
-H "x-api-key: $EXA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query":"debug connectivity test","numResults":1}')
echo "HTTP Status: $HTTP_CODE"
if [ "$HTTP_CODE" = "200" ]; then
echo "Status: HEALTHY"
python3 -c "import json; d=json.load(open('/tmp/exa-debug.json')); print(f'Results: {len(d.get(\"results\",[]))}')" 2>/dev/null
else
echo "Status: UNHEALTHY"
echo "Response:"
cat /tmp/exa-debug.json | python3 -m json.tool 2>/dev/null || cat /tmp/exa-debug.json
fi
Step 2: Capture Request/Response Details
import Exa from "exa-js";
const exa = new Exa(process.env.EXA_API_KEY);
async function debugSearch(query: string) {
const startTime = performance.now();
try {
const result = await exa.searchAndContents(query, {
numResults: 3,
text: { maxCharacters: 500 },
});
const duration = performance.now() - startTime;
console.log("=== Debug Info ===");
console.log(`Query: "${query}"`);
console.log(`Duration: ${duration.toFixed(0)}ms`);
console.log(`Results: ${result.results.length}`);
console.log(`Has autoprompt: ${!!result.autopromptString}`);
for (const r of result.results) {
console.log(` [${r.score.toFixed(3)}] ${r.title} (${r.url})`);
console.log(` Text: ${r.text ? `${r.text.length} chars` : "none"}`);
}
} catch (err: any) {
const duration = performance.now() - startTime;
console.error("=== Error Debug ===");
console.error(`Query: "${query}"`);
console.error(`Duration: ${duration.toFixed(0)}ms`);
console.error(`Status: ${err.status || "unknown"}`);
console.error(`Message: ${err.message}`);
console.error(`RequestId: ${err.requestId || err.request_id || "none"}`);
console.error(`Error tag: ${err.error_tag || err.tag || "none"}`);
}
}
Step 3: Create Debug Bundle Script
#!/bin/bash
set -euo pipefail
# exa-debug-bundle.sh
BUNDLE_DIR="exa-debug-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$BUNDLE_DIR"
echo "=== Exa Debug Bundle ===" > "$BUNDLE_DIR/summary.txt"
echo "Generated: $(date -u +%Y-%m-%dT%H:%M:%SZ)" >> "$BUNDLE_DIR/summary.txt"
# Environment info
echo "" >> "$BUNDLE_DIR/summary.txt"
echo "--- Environment ---" >> "$BUNDLE_DIR/summary.txt"
echo "Node: $(node --version 2>/dev/null || echo 'N/A')" >> "$BUNDLE_DIR/summary.txt"
echo "npm: $(npm --version 2>/dev/null || echo 'N/A')" >> "$BUNDLE_DIR/summary.txt"
echo "OS: $(uname -a)" >> "$BUNDLE_DIR/summary.txt"
echo "EXA_API_KEY: ${EXA_API_KEY:+SET}" >> "$BUNDLE_DIR/summary.txt"
# SDK version
echo "" >> "$BUNDLE_DIR/summary.txt"
echo "--- SDK ---" >> "$BUNDLE_DIR/summary.txt"
npm list exa-js 2>/dev/null >> "$BUNDLE_DIR/summary.txt" || echo "exa-js not found" >> "$BUNDLE_DIR/summary.txt"
# API connectivity test
echo "" >> "$BUNDLE_DIR/summary.txt"
echo "--- API Test ---" >> "$BUNDLE_DIR/summary.txt"
HTTP_CODE=$(curl -s -o "$BUNDLE_DIR/api-response.json" -w "%{http_code}" \
-X POST https://api.exa.ai/search \
-H "x-api-key: ${EXA_API_KEY:-missing}" \
-H "Content-Type: application/json" \
-d '{"query":"debug test","numResults":1}' 2>/dev/null)
echo "HTTP Status: $HTTP_CODE" >> "$BUNDLE_DIR/summary.txt"
# Package bundle
tar -czf "$BUNDLE_DIR.tar.gz" "$BUNDLE_DIR"
echo "Bundle created: $BUNDLE_DIR.tar.gz"
echo ""
echo "IMPORTANT: Review $BUNDLE_DIR/summary.txt before sharing."
echo "Include the requestId from any error responses when contacting [email protected]"
Output
exa-debug-YYYYMMDD-HHMMSS.tar.gzarchive containing:summary.txt— environment, SDK version, API connectivityapi-response.json— raw API response from test query
Sensitive Data Handling
Always redact before sharing:
- API keys and tokens
- Query content containing PII
- Internal URLs or domain names
Safe to include:
- HTTP status codes and error tags
requestIdfrom error responses- SDK and runtime versions
- Latency measurements
Error Handling
| Issue | Cause | Solution |
|---|---|---|
curl: command not found | curl not installed | Install curl or use node script |
| Empty API response | Network firewall | Check outbound HTTPS to api.exa.ai |
| 401 in connectivity test | Bad API key | Regenerate at dashboard.exa.ai |
| Bundle script fails | Missing permissions | Run with bash not sh |
Resources
Next Steps
For rate limit issues, see exa-rate-limits. For common error solutions, see exa-common-errors.
When not to use it
- →When not troubleshooting issues with Exa integrations
- →When sensitive data cannot be safely redacted before sharing
Limitations
- →Requires `curl` to be installed for connectivity tests
- →Requires `node` and `npm` for SDK version detection
- →Requires `tar` for bundling the output
How it compares
This skill automates the collection of specific diagnostic information for Exa, unlike manually gathering logs and system details for support tickets.
Compared to similar skills
exa-debug-bundle side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| exa-debug-bundle (this skill) | 1 | 27d | Caution | Beginner |
| godot | 1,044 | 5mo | Review | Intermediate |
| python-testing-patterns | 77 | 2mo | Review | Intermediate |
| error-handling-patterns | 35 | 2mo | No flags | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by jeremylongshore
View all by jeremylongshore →You might also like
godot
bfollington
This skill should be used when working on Godot Engine projects. It provides specialized knowledge of Godot's file formats (.gd, .tscn, .tres), architecture patterns (component-based, signal-driven, resource-based), common pitfalls, validation tools, code templates, and CLI workflows. The `godot` command is available for running the game, validating scripts, importing resources, and exporting builds. Use this skill for tasks involving Godot game development, debugging scene/resource files, implementing game systems, or creating new Godot components.
python-testing-patterns
wshobson
Implement comprehensive testing strategies with pytest, fixtures, mocking, and test-driven development. Use when writing Python tests, setting up test suites, or implementing testing best practices.
error-handling-patterns
wshobson
Master error handling patterns across languages including exceptions, Result types, error propagation, and graceful degradation to build resilient applications. Use when implementing error handling, designing APIs, or improving application reliability.
chrome-devtools
mrgoonie
Browser automation, debugging, and performance analysis using Puppeteer CLI scripts. Use for automating browsers, taking screenshots, analyzing performance, monitoring network traffic, web scraping, form automation, and JavaScript debugging.
unreal-engine-cpp-pro
sickn33
Expert guide for Unreal Engine 5.x C++ development, covering UObject hygiene, performance patterns, and best practices.
python-performance-optimization
wshobson
Profile and optimize Python code using cProfile, memory profilers, and performance best practices. Use when debugging slow Python code, optimizing bottlenecks, or improving application performance.