Quick Bug Fix Workflow

VerifiedSafe

Analyzes code to identify and fix bugs directly without creating plans. Adds logging for verification and suggests test coverage to prevent regression. Best suited for reported bugs, errors, or unexpected behavior.

Sby Skills Guide Bot
DevelopmentIntermediate
1306/2/2026
Claude Code
#bug-fix#debugging#logging#test-coverage

Recommended for

Our review

Fixes a specific bug by analyzing the codebase directly, applying a fix with logging, and suggesting test coverage.

Strengths

  • Systematic approach to find root cause without plans
  • Mandatory logging for verification and iteration
  • Automatically suggests a test to prevent regression
  • Leverages past patches for faster fixes

Limitations

  • Requires a clear problem description from the user
  • May struggle with complex or cross-cutting bugs
  • User must manually verify the fix works
When to use it

When the user reports a bug, error, or unexpected behavior with enough context to investigate.

When not to use it

For feature requests, architectural changes, or open-ended exploration without a specific issue.

Security analysis

Safe
Quality score90/100

The skill is a bug-fixing workflow that uses standard code analysis and editing tools. It contains no destructive commands, network calls, data exfiltration, or instructions to bypass safety. The Bash usage is limited to creating a directory for patches, which is harmless.

No concerns found

Examples

Login form apostrophe bug
The login form throws an error when the username contains an apostrophe (e.g., O'Brien). Please fix it.
User endpoint 500 error
The API endpoint /users returns a 500 status when passing an empty string for the email parameter. Fix this bug and add logging.
Crash on null date field
The application crashes when a user has a null date of birth. Here's the stack trace: TypeError: Cannot read property 'getFullYear' of null. Please fix it.

name: ai-factory.fix description: Fix a specific bug or problem in the codebase. Analyzes code to find and fix issues without creating plans. Use when user reports a bug, error, or something not working. Always suggests test coverage and adds logging. argument-hint: <bug description or error message> allowed-tools: Read Write Edit Glob Grep Bash AskUserQuestion disable-model-invocation: false

Fix - Quick Bug Fix Workflow

Fix a specific bug or problem by analyzing the codebase directly. No plans, no reports.

Workflow

Step 0: Load Project Context & Past Experience

Read .ai-factory/DESCRIPTION.md if it exists to understand:

  • Tech stack (language, framework, database)
  • Project architecture
  • Coding conventions

Read all patches from .ai-factory/patches/ if the directory exists:

  • Use Glob to find all *.md files in .ai-factory/patches/
  • Read each patch file to learn from past fixes
  • Pay attention to recurring patterns, root causes, and solutions
  • If the current problem resembles a past patch — apply the same approach or avoid the same mistakes
  • This is your accumulated experience. Use it.

Step 1: Understand the Problem

From $ARGUMENTS, identify:

  • Error message or unexpected behavior
  • Where it occurs (file, function, endpoint)
  • Steps to reproduce (if provided)

If unclear, ask:

To fix this effectively, I need more context:

1. What is the expected behavior?
2. What actually happens?
3. Can you share the error message/stack trace?
4. When did this start happening?

Step 2: Investigate the Codebase

Search for the problem:

  • Find relevant files using Glob/Grep
  • Read the code around the issue
  • Trace the data flow
  • Check for similar patterns elsewhere

Look for:

  • The root cause (not just symptoms)
  • Related code that might be affected
  • Existing error handling

Step 3: Implement the Fix

Apply the fix with logging:

// ✅ REQUIRED: Add logging around the fix
console.log('[FIX] Processing user input', { userId, input });

try {
  // The actual fix
  const result = fixedLogic(input);
  console.log('[FIX] Success', { userId, result });
  return result;
} catch (error) {
  console.error('[FIX] Error in fixedLogic', {
    userId,
    input,
    error: error.message,
    stack: error.stack
  });
  throw error;
}

Logging is MANDATORY because:

  • User needs to verify the fix works
  • If it doesn't work, logs help debug further
  • Feedback loop: user provides logs → we iterate

Step 4: Verify the Fix

  • Check the code compiles/runs
  • Verify the logic is correct
  • Ensure no regressions introduced

Step 5: Suggest Test Coverage

ALWAYS suggest covering this case with a test:

## Fix Applied ✅

The issue was: [brief explanation]
Fixed by: [what was changed]

### Logging Added
The fix includes logging with prefix `[FIX]`.
Please test and share any logs if issues persist.

### Recommended: Add a Test

This bug should be covered by a test to prevent regression:

\`\`\`typescript
describe('functionName', () => {
  it('should handle [the edge case that caused the bug]', () => {
    // Arrange
    const input = /* the problematic input */;

    // Act
    const result = functionName(input);

    // Assert
    expect(result).toBe(/* expected */);
  });
});
\`\`\`

Would you like me to create this test?
- [ ] Yes, create the test
- [ ] No, skip for now

Logging Requirements

All fixes MUST include logging:

  1. Log prefix: Use [FIX] or [FIX:<issue-id>] for easy filtering
  2. Log inputs: What data was being processed
  3. Log success: Confirm the fix worked
  4. Log errors: Full context if something fails
  5. Configurable: Use LOG_LEVEL if available
// Pattern for fixes
const LOG_FIX = process.env.LOG_LEVEL === 'debug' || process.env.DEBUG_FIX;

function fixedFunction(input) {
  if (LOG_FIX) console.log('[FIX] Input:', input);

  // ... fix logic ...

  if (LOG_FIX) console.log('[FIX] Output:', result);
  return result;
}

Examples

Example 1: Null Reference Error

User: /fix TypeError: Cannot read property 'name' of undefined in UserProfile

Actions:

  1. Search for UserProfile component/function
  2. Find where .name is accessed
  3. Add null check with logging
  4. Suggest test for null user case

Example 2: API Returns Wrong Data

User: /fix /api/orders returns empty array for authenticated users

Actions:

  1. Find orders API endpoint
  2. Trace the query logic
  3. Find the bug (e.g., wrong filter)
  4. Fix with logging
  5. Suggest integration test

Example 3: Form Validation Not Working

User: /fix email validation accepts invalid emails

Actions:

  1. Find email validation logic
  2. Check regex or validation library usage
  3. Fix the validation
  4. Add logging for validation failures
  5. Suggest unit test with edge cases

Important Rules

  1. NO plans - This is a direct fix, not planned work
  2. NO reports - Don't create summary documents
  3. ALWAYS log - Every fix must have logging for feedback
  4. ALWAYS suggest tests - Help prevent regressions
  5. Root cause - Fix the actual problem, not symptoms
  6. Minimal changes - Don't refactor unrelated code
  7. One fix at a time - Don't scope creep

After Fixing

## Fix Applied ✅

**Issue:** [what was broken]
**Cause:** [why it was broken]
**Fix:** [what was changed]

**Files modified:**
- path/to/file.ts (line X)

**Logging added:** Yes, prefix `[FIX]`
**Test suggested:** Yes

Please test the fix and share logs if any issues.

To add the suggested test:
- [ ] Yes, create test
- [ ] No, skip

Step 6: Create Self-Improvement Patch

ALWAYS create a patch after every fix. This builds a knowledge base for future fixes.

Create the patch:

  1. Create directory if it doesn't exist:

    mkdir -p .ai-factory/patches
    
  2. Create a patch file with the current timestamp as filename. Format: YYYY-MM-DD-HH.mm.md (e.g., 2026-02-07-14.30.md)

  3. Use this template:

# [Brief title describing the fix]

**Date:** YYYY-MM-DD HH:mm
**Files:** list of modified files
**Severity:** low | medium | high | critical

## Problem

What was broken. How it manifested (error message, wrong behavior).
Be specific — include the actual error or symptom.

## Root Cause

WHY the problem occurred. This is the most valuable part.
Not "what was wrong" but "why it was wrong":
- Logic error? Why was the logic incorrect?
- Missing check? Why was it missing?
- Wrong assumption? What was assumed?
- Race condition? What sequence caused it?

## Solution

How the fix was implemented. Key code changes and reasoning.
Include the approach, not just "changed line X".

## Prevention

How to prevent this class of problems in the future:
- What pattern/practice should be followed?
- What should be checked during code review?
- What test would catch this?

## Tags

Space-separated tags for categorization, e.g.:
`#null-check` `#async` `#validation` `#typescript` `#api` `#database`

Example patch:

# Null reference in UserProfile when user has no avatar

**Date:** 2026-02-07 14:30
**Files:** src/components/UserProfile.tsx
**Severity:** medium

## Problem

TypeError: Cannot read property 'url' of undefined when rendering
UserProfile for users without an uploaded avatar.

## Root Cause

The `user.avatar` field is optional in the database schema but the
component accessed `user.avatar.url` without a null check. This was
introduced in commit abc123 when avatar display was added — the
developer tested only with users that had avatars.

## Solution

Added optional chaining: `user.avatar?.url` with a fallback to a
default avatar URL. Also added a null check in the Avatar sub-component.

## Prevention

- Always check if database fields marked as `nullable` / `optional`
  are handled with null checks in the UI layer
- Add test cases for "empty state" — user with minimal data
- Consider a lint rule for accessing nested optional properties

## Tags

`#null-check` `#react` `#optional-field` `#typescript`

This is NOT optional. Every fix generates a patch. The patch is your learning.


DO NOT:

  • ❌ Create PLAN.md or any plan files
  • ❌ Generate reports or summaries (patches are NOT reports — they are learning artifacts)
  • ❌ Refactor unrelated code
  • ❌ Add features while fixing
  • ❌ Skip logging
  • ❌ Skip test suggestion
  • ❌ Skip patch creation
Related skills