focused-fix
This skill should be used when the user asks to "fix a bug with minimal changes", "analyze change scope for a bugfix", "find the minimal set of files to change", "do a focused bugfix", or "scope a minimal repair".
What this skill does
# Focused Fix > **Category:** Engineering > **Domain:** Debugging & Maintenance ## Overview The **Focused Fix** skill enforces a disciplined minimal-change approach to bug fixing. Instead of refactoring or improving code during a bugfix, it identifies the smallest possible change set that resolves the issue. This reduces risk, simplifies code review, and prevents scope creep. ## Use when - The user asks to "fix a bug with minimal changes", "do a focused bugfix", or "scope a minimal repair" - A bug report needs triage to identify the smallest set of files to touch - A PR is at risk of scope creep (unrelated refactors, style changes, "nearby" fixes) - A hotfix or release-blocker needs a low-risk, reviewable change set - The user asks "what is the minimal change to fix X?" or "which files do I need to touch for this bug?" ## Quick Start ```bash # Analyze a bug description to identify minimal change scope python scripts/change_scope_analyzer.py --bug "Login fails when email has + character" --path ./src # Analyze with JSON output python scripts/change_scope_analyzer.py --bug "API returns 500 on empty array input" --path ./src --format json # Analyze with specific file extensions python scripts/change_scope_analyzer.py --bug "CSS overflow on mobile" --path ./src --extensions .css .scss .html ``` ## Tools Overview | Tool | Purpose | Key Flags | |------|---------|-----------| | `change_scope_analyzer.py` | Identify minimal files to change for a bugfix | `--bug`, `--path`, `--extensions`, `--format` | ### change_scope_analyzer.py Analyzes a bug description against a codebase to identify: - Files most likely related to the bug (keyword matching, import tracing) - Estimated change scope (number of files, lines) - Risk assessment for the change - Recommended fix approach (minimal vs. structural) ## Workflows ### Focused Bugfix Workflow 1. **Write a clear bug description** — reproduction steps, expected vs actual behavior - *Validate:* the description names the observable failure, not a guess at the cause 2. **Run `change_scope_analyzer.py` to identify scope** - *Validate:* analyzer output lists concrete files and an estimated line count 3. **Review the recommended files and approach** - *Validate:* recommended approach is "minimal" — if it says "structural", stop and scope a refactor PR separately 4. **Make ONLY the changes needed to fix the bug** - *Validate:* `git diff --stat` matches (or is smaller than) the analyzer's recommendation 5. **Verify no unrelated changes leaked in** - *Validate:* `git diff` shows no formatting-only changes, no unrelated imports, no "while I'm here" edits 6. **Submit PR with focused change set** - *Validate:* commit message states the exact bug fixed, and a regression test is included ### Scope Validation 1. After making changes, re-run analyzer 2. Compare actual changes against recommended scope 3. Flag any out-of-scope modifications for separate PRs - *Validate:* any file touched that was not in the analyzer recommendation has a one-line justification or is reverted ## Reference Documentation - [Focused Fix Methodology](references/focused-fix-methodology.md) - Principles, anti-patterns, and decision framework ## Common Patterns ### Do - Fix the exact bug reported - Add a regression test for the fix - Document why the fix works in the commit message - Keep the diff as small as possible ### Don't - Refactor surrounding code during a bugfix - Fix "nearby" issues in the same PR - Change formatting or style in touched files - Add features disguised as bugfixes ## Anti-patterns | Anti-pattern | Failure mode | Fix | |--------------|--------------|-----| | "While I'm here" refactors in the bugfix PR | Blast radius explodes; review time multiplies; unrelated regressions masked by the real fix | Open a separate PR for the refactor, tagged as `refactor:` not `fix:` | | Reformatting or auto-save style changes in touched files | Diff becomes unreadable; real fix hidden in 200 lines of whitespace | Revert style changes before committing; configure the editor to format-on-save only for new files | | Fixing the symptom in the wrong layer | Bug returns in a new form; accumulates workaround debt | Trace to the root layer — analyzer's keyword-match output is a hint, not an answer | | Skipping the regression test "because the fix is obvious" | Bug silently returns on a refactor 6 months later | Every `fix:` commit adds at least one failing-then-passing test | | Treating `change_scope_analyzer.py` output as authoritative | Analyzer is keyword/import-based, not semantic — misses dynamic dispatch, reflection, config-driven paths | Use it as a starting set; grep for callers and tests before committing to the scope | | Bundling the fix with a dependency upgrade | Two risk profiles in one PR; if rollback is needed, both are lost | Land the upgrade separately, then the fix against the upgraded baseline |
Related in Code Review
gstack
IncludedFast headless browser for QA testing and site dogfooding. Navigate pages, interact with elements, verify state, diff before/after, take annotated screenshots, test responsive layouts, forms, uploads, dialogs, and capture bug evidence. Use when asked to open or test a site, verify a deployment, dogfood a user flow, or file a bug with screenshots. (gstack)
startup-due-diligence
IncludedLegal due diligence review for seed-stage and Series A startups (US, Delaware C-Corp focus). Supports both investor and founder perspectives. Capabilities include: (1) Interactive document review and issue spotting; (2) Document request list generation; (3) Cap table and SAFE/convertible note analysis; (4) Red flag identification with severity ratings; (5) Diligence report generation. TRIGGERS: due diligence, DD, startup investment, cap table review, Series A, seed round, investor diligence, legal review startup, SAFE analysis, convertible note, 409A, founder vesting.
interview-master
IncludedThis skill should be used when the user asks to "generate interview questions", "prepare for interview", "optimize resume", "conduct mock interview", "analyze git commits for resume", "generate resume from code", "review my resume", or mentions interview preparation, career assistance, or extracting project experience from git history. Provides comprehensive interview and career development guidance for both job seekers and interviewers.
fix-issue
IncludedFixes GitHub issues using parallel analysis agents for root cause investigation, code exploration, and regression detection. Reads issue context from gh CLI, searches codebase and memory for related patterns, generates a fix with tests, and links the resolution back to the issue via PR. Includes prevention analysis to avoid recurrence. Use when debugging errors, resolving regressions, fixing bugs, or triaging issues.
sf-apex
IncludedGenerates and reviews Salesforce Apex code with 150-point scoring. TRIGGER when: user writes, reviews, or fixes Apex classes, triggers, test classes, batch/queueable/schedulable jobs, or touches .cls/.trigger files. DO NOT TRIGGER when: LWC JavaScript (use sf-lwc), Flow XML (use sf-flow), SOQL-only queries (use sf-soql), or non-Salesforce code.
swift-development
IncludedComprehensive Swift development for building, testing, and deploying iOS/macOS applications. Use when Claude needs to: (1) Build Swift packages or Xcode projects from command line, (2) Run tests with XCTest or Swift Testing framework, (3) Manage iOS simulators with simctl, (4) Handle code signing, provisioning profiles, and app distribution, (5) Format or lint Swift code with SwiftFormat/SwiftLint, (6) Work with Swift Package Manager (SPM), (7) Implement Swift 6 concurrency patterns (async/await, actors, Sendable), (8) Create SwiftUI views with MVVM architecture, (9) Set up Core Data or SwiftData persistence, or any other Swift/iOS/macOS development tasks.