Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Debug complex Claude issues — inconsistent outputs, tool use failures, Use when working with advanced-troubleshooting patterns. streaming problems, and edge cases. Trigger with "claude inconsistent", "anthropic advanced debug", "claude tool use broken", "anthropic streaming issues".
.claude/skills/jeremylongshore-clade-advanced-troubleshooting/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 30% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 69% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 2% | 0% |
| case-03 | ✓→✓ | = Same ✓ | 36% | 0% |
| case-16 | ✓→✓ | = Same ✓ | 200% | 0% |
Debug complex Claude integration issues that go beyond basic error handling — inconsistent outputs, tool use failures where Claude calls nonexistent tools, streaming connection drops, max_tokens truncation, and image/vision format problems.
Symptom: Same prompt gives different answers each time. Cause: temperature defaults to 1.0 (maximum randomness).
typescript// Fix: Set temperature to 0 for deterministic outputs const message = await client.messages.create({ model: 'claude-sonnet-4-20250514', max_tokens: 1024, temperature: 0, // Deterministic messages, });
Symptom: Claude calls a tool that doesn't exist or sends wrong parameters.
typescript// Always validate tool calls before executing const toolUse = response.content.find(b => b.type === 'tool_use'); if (toolUse) { const validTools = tools.map(t => t.name); if (!validTools.includes(toolUse.name)) { console.error(`Claude requested unknown tool: ${toolUse.name}`); // Send error back as tool_result messages.push({ role: 'assistant', content: response.content }); messages.push({ role: 'user', content: [{ type: 'tool_result', tool_use_id: toolUse.id, is_error: true, content: `Tool "${toolUse.name}" does not exist. Available: ${validTools.join(', ')}`, }]}); } }
Symptom: Stream stops mid-response without message_stop event.
typescript// Detect incomplete streams const stream = client.messages.stream({ ... }); let gotStop = false; for await (const event of stream) { if (event.type === 'message_stop') gotStop = true; // ... process events } if (!gotStop) { console.error('Stream ended without message_stop — connection dropped'); // Retry the request }
max_tokens TruncationSymptom: Response cuts off mid-sentence.
typescriptconst message = await client.messages.create({ ... }); if (message.stop_reason === 'max_tokens') { console.warn('Response truncated — increase max_tokens or ask for shorter output'); // Option 1: Increase max_tokens // Option 2: Add "Be concise" to system prompt // Option 3: Continue the response with another call }
Symptom: Claude says it can't see the image.
data field)typescript// Correct image format { type: 'image', source: { type: 'base64', media_type: 'image/png', // Must match actual format data: buffer.toString('base64'), // Raw base64, no "data:image/png;base64," prefix }, }
stop_reason check| Error | Cause | Solution | |-------|-------|----------| | API Error | Check error type and status code | See clade-common-errors |
See Inconsistent Outputs (temperature fix), Tool Use Failures (validation), Streaming Connection Drops (detection), max_tokens Truncation (stop_reason check), and Image/Vision Issues (correct format) above.
See clade-debug-bundle for collecting support evidence.
clade-common-errors for basic error handlingEach section contains production-ready code examples. Copy and adapt them to your use case.
Integrate the patterns that match your requirements. Test each change individually.
Run your test suite to confirm the integration works correctly.
Other measured skills in the registry, with their headline benchmark lift.