con un clic
debugging-strategies
When isolating and fixing unpredictable or complex software bugs.
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
When isolating and fixing unpredictable or complex software bugs.
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación ocupacional SOC
When improving read performance and reducing database load.
When designing loosely coupled systems that react to state changes asynchronously.
When setting up telemetry, debugging distributed systems, or standardizing application output.
When creating or extending an HTTP API for client consumption.
When addressing slow application endpoints, high database CPU usage, or standardizing data access patterns.
When designing how a system recovers from and reports failures.
| name | debugging-strategies |
| description | When isolating and fixing unpredictable or complex software bugs. |
| version | 2.0.0 |
| category | dev-tools |
| tags | ["dev-tools","debugging","troubleshooting"] |
| skill_type | debugging |
| author | skiLLM |
| license | MIT |
| compatible_agents | ["claude-code","cursor","copilot","codex"] |
| estimated_context_tokens | 1400 |
| dangerous | false |
| requires_review | false |
| security_level | safe |
| dependencies | [] |
| triggers | ["bug","debug","error","failing test","reproduction"] |
| permissions | {"filesystem":{"read":true,"write":true},"network":{"outbound":false},"shell":{"execute":true}} |
| input_requirements | ["failing code or test","reproducible scenario"] |
| output_contract | ["failing test","root cause identified","fix minimal"] |
| failure_conditions | ["cannot reproduce bug","test passes but bug exists","no hypothesis formed"] |
| last_updated | "2026-05-15T00:00:00.000Z" |
"Guess and check" programming wastes hours. This skill replaces randomness with the scientific method: reproduce the bug reliably, isolate the failing component via binary search, formulate testable hypotheses, and apply minimal fixes. The goal is deterministic bug resolution, not random fixes that seem to work.
git bisect, add logging) to locate the exact module causing the issue❌ Anti-pattern (Shotgun debugging, multiple changes, no hypothesis):
// User reports: "Login sometimes fails"
// Response: randomly change stuff
// Change 1: Remove cache (wild guess)
Cache.clear();
// Change 2: Increase timeout (wild guess)
timeout = 5000;
// Change 3: Retry login (wild guess)
retry();
// Change 4: Restart server
process.restart();
// "It works now!" - but which change fixed it?
✅ Correct pattern (Systematic, hypothesis-driven, minimal fix):
// User reports: "Login sometimes fails with 'Session token invalid'"
// 1. Create failing test
test('login should succeed with valid credentials', async () => {
const user = await login('user@test.com', 'password');
expect(user).toBeDefined();
});
// 2. Run test 10 times - fails randomly - good, reproducible
for (let i = 0; i < 10; i++) {
npm test; // Run failing test
}
// 3. Isolate subsystem with logging
function validateToken(token) {
console.log('Token:', token, 'Expires:', token.expiresAt, 'Now:', Date.now());
if (token.expiresAt < Date.now()) {
throw new Error('Token expired');
}
}
// 4. Hypothesis: Token generation race condition in parallel requests
// 5. Test: Run login twice simultaneously
Promise.all([login(...), login(...)]);
// Confirm: Second request gets token from first request but with different expiresAt
// 6. Minimal fix: Add mutex to token generation
const mutex = new Mutex();
async function generateToken() {
return mutex.runExclusive(async () => {
return createToken();
});
}
// 7. Verify: Failing test now passes 100 times
// 8. Add regression test
test('concurrent logins should not fail', async () => {
const results = await Promise.all([
login('user@test.com', 'password'),
login('user@test.com', 'password')
]);
expect(results.every(r => r)).toBe(true);
});