mistral-debug-bundle
Generates a redacted diagnostic bundle containing environment info, SDK versions, and logs for Mistral AI support.
Install
mkdir -p .claude/skills/mistral-debug-bundle && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/3524" && unzip -o skill.zip -d .claude/skills/mistral-debug-bundle && rm skill.zipInstalls to .claude/skills/mistral-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 Mistral AI debug evidence for support tickets and troubleshooting.Key capabilities
- →Collect environment information like Node.js and Python versions
- →Gather installed Mistral AI SDK versions for Node.js and Python
- →Test API connectivity and list available Mistral models
- →Redact sensitive data from logs and configuration files
- →Generate a minimal reproduction script for API calls
- →Bundle diagnostic information into a tar.gz archive
How it works
This skill executes a bash script to collect environment details, SDK versions, API connectivity status, and redacted logs, then bundles them into a compressed archive.
Inputs & outputs
When to use mistral-debug-bundle
- →Prepare diagnostic logs for support requests
- →Debug connectivity issues with Mistral API
- →Collect environment metadata for troubleshooting
- →Redact sensitive data for support bundles
About this skill
Mistral AI Debug Bundle
Current State
!node --version 2>/dev/null || echo 'N/A'
!python3 --version 2>/dev/null || echo 'N/A'
Overview
Collect all necessary diagnostic information for Mistral AI support tickets. Creates a redacted bundle with environment info, SDK versions, API connectivity test, available models, and recent error logs.
Prerequisites
- Mistral AI SDK installed
- Access to application logs
MISTRAL_API_KEYset (for connectivity test)
Instructions
Step 1: Complete Debug Script
#!/bin/bash
# mistral-debug-bundle.sh — Creates redacted support bundle
set -e
BUNDLE_DIR="mistral-debug-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$BUNDLE_DIR"
echo "Creating Mistral AI debug bundle..."
# === Environment Info ===
cat > "$BUNDLE_DIR/summary.txt" << EOF
=== Mistral AI Debug Bundle ===
Generated: $(date -u +%Y-%m-%dT%H:%M:%SZ)
Hostname: $(hostname)
--- Environment ---
Node.js: $(node --version 2>/dev/null || echo 'not installed')
Python: $(python3 --version 2>/dev/null || echo 'not installed')
npm: $(npm --version 2>/dev/null || echo 'not installed')
OS: $(uname -a)
MISTRAL_API_KEY: ${MISTRAL_API_KEY:+[SET, length=${#MISTRAL_API_KEY}]}${MISTRAL_API_KEY:-[NOT SET]}
EOF
# === SDK Versions ===
echo -e "\n--- SDK Versions ---" >> "$BUNDLE_DIR/summary.txt"
npm list @mistralai/mistralai 2>/dev/null >> "$BUNDLE_DIR/summary.txt" \
|| echo "Node SDK: not installed" >> "$BUNDLE_DIR/summary.txt"
pip show mistralai 2>/dev/null | grep -E "^(Name|Version)" >> "$BUNDLE_DIR/summary.txt" \
|| echo "Python SDK: not installed" >> "$BUNDLE_DIR/summary.txt"
# === API Connectivity ===
echo -e "\n--- API Connectivity ---" >> "$BUNDLE_DIR/summary.txt"
if [ -n "${MISTRAL_API_KEY:-}" ]; then
HTTP_STATUS=$(curl -s -o "$BUNDLE_DIR/api-response.json" -w "%{http_code}" \
-H "Authorization: Bearer ${MISTRAL_API_KEY}" \
https://api.mistral.ai/v1/models 2>/dev/null)
echo "HTTP Status: $HTTP_STATUS" >> "$BUNDLE_DIR/summary.txt"
if [ "$HTTP_STATUS" = "200" ]; then
echo -e "\n--- Available Models ---" >> "$BUNDLE_DIR/summary.txt"
jq -r '.data[].id' "$BUNDLE_DIR/api-response.json" >> "$BUNDLE_DIR/summary.txt" 2>/dev/null
fi
rm -f "$BUNDLE_DIR/api-response.json"
else
echo "Skipped (no API key)" >> "$BUNDLE_DIR/summary.txt"
fi
# === Dependencies ===
if [ -f "package.json" ]; then
echo -e "\n--- Dependencies ---" >> "$BUNDLE_DIR/summary.txt"
jq '{dependencies, devDependencies}' package.json 2>/dev/null >> "$BUNDLE_DIR/summary.txt"
fi
# === Recent Logs (redacted) ===
echo "--- Recent Logs (redacted) ---" > "$BUNDLE_DIR/logs.txt"
if [ -d "logs" ]; then
grep -i "mistral\|error\|429\|401\|500" logs/*.log 2>/dev/null | tail -100 >> "$BUNDLE_DIR/logs.txt"
fi
# === Config (redacted) ===
if [ -f ".env" ]; then
sed 's/=.*/=***REDACTED***/' .env > "$BUNDLE_DIR/config-redacted.txt"
fi
# === Reproduction Script ===
cat > "$BUNDLE_DIR/reproduce.sh" << 'SCRIPT'
#!/bin/bash
set -euo pipefail
curl -X POST https://api.mistral.ai/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ${MISTRAL_API_KEY}" \
-d '{"model":"mistral-small-latest","messages":[{"role":"user","content":"ping"}]}' 2>&1
echo -e "\nExit code: $?"
SCRIPT
chmod +x "$BUNDLE_DIR/reproduce.sh"
# === Package ===
tar -czf "$BUNDLE_DIR.tar.gz" "$BUNDLE_DIR"
rm -rf "$BUNDLE_DIR"
echo "Bundle: $BUNDLE_DIR.tar.gz"
echo "IMPORTANT: Review for sensitive data before sharing!"
Step 2: TypeScript Debug Helper
import { Mistral } from '@mistralai/mistralai';
interface DebugInfo {
timestamp: string;
nodeVersion: string;
apiKeySet: boolean;
apiKeyLength: number;
connectivity: 'ok' | 'auth_error' | 'network_error' | 'unknown_error';
availableModels: string[];
latencyMs: number;
lastError?: { message: string; status?: number };
}
async function collectDebugInfo(error?: Error): Promise<DebugInfo> {
const info: DebugInfo = {
timestamp: new Date().toISOString(),
nodeVersion: process.version,
apiKeySet: !!process.env.MISTRAL_API_KEY,
apiKeyLength: process.env.MISTRAL_API_KEY?.length ?? 0,
connectivity: 'unknown_error',
availableModels: [],
latencyMs: 0,
};
if (error) {
info.lastError = {
message: error.message,
status: (error as any).status,
};
}
if (info.apiKeySet) {
const start = performance.now();
try {
const client = new Mistral({ apiKey: process.env.MISTRAL_API_KEY });
const models = await client.models.list();
info.connectivity = 'ok';
info.availableModels = models.data?.map(m => m.id) ?? [];
info.latencyMs = Math.round(performance.now() - start);
} catch (e: any) {
info.latencyMs = Math.round(performance.now() - start);
info.connectivity = e.status === 401 ? 'auth_error' : 'network_error';
}
}
return info;
}
// Usage in catch blocks
try {
await client.chat.complete({ model: 'mistral-small-latest', messages });
} catch (error) {
const debug = await collectDebugInfo(error as Error);
console.error('Debug info:', JSON.stringify(debug, null, 2));
}
Step 3: Request/Response Logger for Debugging
function createDebugClient(): Mistral {
const client = new Mistral({ apiKey: process.env.MISTRAL_API_KEY });
// Wrap chat.complete to log request/response metadata
const originalComplete = client.chat.complete.bind(client.chat);
client.chat.complete = async (params: any) => {
const start = performance.now();
console.debug('[MISTRAL REQUEST]', {
model: params.model,
messageCount: params.messages?.length,
hasTools: !!params.tools?.length,
temperature: params.temperature,
});
try {
const response = await originalComplete(params);
console.debug('[MISTRAL RESPONSE]', {
durationMs: Math.round(performance.now() - start),
finishReason: response.choices?.[0]?.finishReason,
usage: response.usage,
hasToolCalls: !!response.choices?.[0]?.message?.toolCalls?.length,
});
return response;
} catch (error: any) {
console.debug('[MISTRAL ERROR]', {
durationMs: Math.round(performance.now() - start),
status: error.status,
message: error.message,
});
throw error;
}
};
return client;
}
Sensitive Data Rules
ALWAYS REDACT: API keys, passwords, PII (emails, names), internal URLs SAFE TO INCLUDE: Error messages, stack traces, SDK versions, HTTP status codes, model IDs
Output
mistral-debug-YYYYMMDD-HHMMSS.tar.gzcontaining:summary.txt— environment, SDK versions, API statuslogs.txt— recent redacted error logsconfig-redacted.txt— config with secrets maskedreproduce.sh— minimal reproduction script
Error Handling
| Item | Purpose |
|---|---|
| Environment versions | Compatibility check |
| SDK version | Version-specific bug identification |
| API connectivity test | Network/auth diagnosis |
| Available models | Key scope verification |
| Error logs (redacted) | Root cause analysis |
Resources
Next Steps
For rate limit issues, see mistral-rate-limits. For common errors, see mistral-common-errors.
Prerequisites
How it compares
This skill automates the collection and redaction of diagnostic data into a single bundle, unlike manually gathering each piece of information.
Compared to similar skills
mistral-debug-bundle side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| mistral-debug-bundle (this skill) | 1 | 27d | Caution | Beginner |
| optimizing-performance | 1 | 2mo | Review | Intermediate |
| langsmith-fetch | 6 | 7mo | Review | Intermediate |
| fireflies-debug-bundle | 1 | 27d | Caution | Beginner |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by jeremylongshore
View all by jeremylongshore →You might also like
optimizing-performance
CloudAI-X
Analyzes and optimizes application performance across frontend, backend, and database layers. Use when diagnosing slowness, improving load times, optimizing queries, reducing bundle size, or when asked about performance issues.
langsmith-fetch
ComposioHQ
Debug LangChain and LangGraph agents by fetching execution traces from LangSmith Studio. Use when debugging agent behavior, investigating errors, analyzing tool calls, checking memory operations, or examining agent performance. Automatically fetches recent traces and analyzes execution patterns. Requires langsmith-fetch CLI installed.
fireflies-debug-bundle
jeremylongshore
Collect Fireflies.ai debug evidence for support tickets and troubleshooting. Use when encountering persistent issues, preparing support tickets, or collecting diagnostic information for Fireflies.ai problems. Trigger with phrases like "fireflies debug", "fireflies support bundle", "collect fireflies logs", "fireflies diagnostic".
sentry-debug-bundle
jeremylongshore
Execute collect debug information for Sentry support tickets. Use when preparing support requests, debugging complex issues, or gathering diagnostic information. Trigger with phrases like "sentry debug info", "sentry support ticket", "gather sentry diagnostics", "sentry debug bundle".
groq-common-errors
jeremylongshore
Diagnose and fix Groq common errors and exceptions. Use when encountering Groq errors, debugging failed requests, or troubleshooting integration issues. Trigger with phrases like "groq error", "fix groq", "groq not working", "debug groq".
sentry-error-capture
jeremylongshore
Execute advanced error capture and context enrichment with Sentry. Use when implementing detailed error tracking, adding context, or customizing error capture behavior. Trigger with phrases like "sentry error capture", "sentry context", "enrich sentry errors", "sentry exception handling".