fix-bug

GitHub

指导修复软件缺陷的技能,基于芝加哥学派TDD和领域驱动设计。涵盖复现问题、编写失败测试及最小化修复验证流程,适用于代码错误修正场景。

.claude/skills/fix-bug/SKILL.md tddworks/SkillsManager

Trigger Scenarios

用户报告程序错误或意外行为 需要修复现有功能的缺陷 用户明确要求修复Bug或功能异常

Install

npx skills add tddworks/SkillsManager --skill fix-bug -g -y
More Options

Non-standard path

npx skills add https://github.com/tddworks/SkillsManager/tree/main/.claude/skills/fix-bug -g -y

Use without installing

npx skills use tddworks/SkillsManager@fix-bug

指定 Agent (Claude Code)

npx skills add tddworks/SkillsManager --skill fix-bug -a claude-code -g -y

安装 repo 全部 skill

npx skills add tddworks/SkillsManager --all -g -y

预览 repo 内 skill

npx skills add tddworks/SkillsManager --list

SKILL.md

Frontmatter
{
    "name": "fix-bug",
    "description": "Guide for fixing bugs in ClaudeBar following Chicago School TDD and rich domain design. Use this skill when:\n(1) User reports a bug or unexpected behavior\n(2) Fixing a defect in existing functionality\n(3) User asks \"fix this bug\" or \"this doesn't work correctly\"\n(4) Correcting behavior that violates the user's mental model"
}

Fix Bug in ClaudeBar

Fix bugs using Chicago School TDD, root cause analysis, and rich domain design.

Workflow

┌─────────────────────────────────────────────────────────────┐
│  1. REPRODUCE & UNDERSTAND                                   │
├─────────────────────────────────────────────────────────────┤
│  • Reproduce the bug                                         │
│  • Identify expected vs actual behavior                      │
│  • Locate the root cause in code                             │
└─────────────────────────────────────────────────────────────┘
                            │
                            ▼
┌─────────────────────────────────────────────────────────────┐
│  2. WRITE FAILING TEST (Red)                                 │
├─────────────────────────────────────────────────────────────┤
│  • Write test that exposes the bug                           │
│  • Test should FAIL before fix                               │
│  • Test should verify CORRECT behavior                       │
└─────────────────────────────────────────────────────────────┘
                            │
                            ▼
┌─────────────────────────────────────────────────────────────┐
│  3. FIX & VERIFY (Green)                                     │
├─────────────────────────────────────────────────────────────┤
│  • Implement minimal fix                                     │
│  • Test now PASSES                                           │
│  • All existing tests still pass                             │
└─────────────────────────────────────────────────────────────┘

Phase 1: Reproduce & Understand

Identify the Bug

  1. Reproduce: Follow exact steps to trigger the bug
  2. Expected: What SHOULD happen (user's mental model)
  3. Actual: What IS happening (current behavior)
  4. Root cause: WHY it's happening (code analysis)

Locate in Architecture

Reference: docs/ARCHITECTURE.md

Layer Location What to look for
Domain Sources/Domain/ Incorrect business logic, missing invariants
Infrastructure Sources/Infrastructure/ Parsing errors, CLI/API issues
App Sources/App/ View state issues, binding problems

Domain Invariants

Check if the bug violates domain invariants that should be maintained:

// Example: QuotaMonitor should maintain selection invariants
// - selectedProviderId should always point to an enabled provider
// - Domain should be self-validating (no external "ensure" calls needed)

Phase 2: Write Failing Test (Red)

Chicago School TDD

We follow Chicago School TDD (state-based testing):

  • Test state changes and return values, not interactions
  • Focus on the "what" (observable outcomes), not the "how" (method calls)
  • Mocks stub dependencies to return data, not to verify calls
  • No verify() calls - assert on resulting state instead

Test Pattern

Test the CORRECT behavior, not the bug:

@Suite
struct {Component}Tests {

    @Test func `{describes correct behavior}`() {
        // Given - setup that triggers the bug scenario
        let settings = makeSettingsRepository()
        let claude = ClaudeProvider(probe: MockUsageProbe(), settingsRepository: settings)
        claude.isEnabled = false  // Bug trigger condition

        // When - action that should work correctly
        let monitor = QuotaMonitor(providers: AIProviders(providers: [claude, codex]))

        // Then - assert EXPECTED behavior (will FAIL before fix)
        #expect(monitor.selectedProviderId == "codex")  // Not "claude"
    }
}

Test Location

Bug Location Test Location
Sources/Domain/Monitor/ Tests/DomainTests/Monitor/
Sources/Domain/Provider/ Tests/DomainTests/Provider/
Sources/Infrastructure/CLI/ Tests/InfrastructureTests/CLI/

Run Test (Should FAIL)

swift test --filter "{TestSuiteName}"

Phase 3: Fix & Verify (Green)

Fix Guidelines

  1. Minimal change: Fix only what's broken
  2. Domain first: Prefer fixing in domain layer when possible
  3. Maintain invariants: Domain should be self-validating
  4. No over-engineering: Don't refactor unrelated code

Domain Design Principles

When fixing domain bugs, ensure:

// 1. Domain maintains its own invariants
public init(...) {
    // Validate on construction
    selectFirstEnabledIfNeeded()  // Called internally, not externally
}

// 2. Public API hides implementation details
public func setProviderEnabled(_ id: String, enabled: Bool) {
    provider.isEnabled = enabled
    if !enabled {
        selectFirstEnabledIfNeeded()  // Private - called automatically
    }
}

// 3. Private methods for internal invariant maintenance
private func selectFirstEnabledIfNeeded() { ... }

Verify Fix

# Run the specific test (should PASS now)
swift test --filter "{TestSuiteName}"

# Run ALL tests to ensure no regressions
swift test

Checklist

  • Bug reproduced and understood
  • Root cause identified in code
  • Failing test written (exposes bug)
  • Test FAILS before fix
  • Minimal fix implemented
  • Test PASSES after fix
  • All existing tests still pass
  • Domain invariants maintained (if applicable)
  • CHANGELOG updated with fix description

Version History

  • 36615df Current 2026-07-06 00:27

Same Skill Collection

.claude/skills/implement-feature/SKILL.md
.claude/skills/improvement/SKILL.md

Metadata

Files
0
Version
36615df
Hash
3a441003
Indexed
2026-07-06 00:27

Главная - Вики-сайт
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-04 13:51
浙ICP备14020137号-1 $Гость$