Skip to main content
ClaudeWave
Skill85 repo starsupdated 3mo ago

bug-history-summarizer

Summarizes the complete lifecycle of a bug across code versions, tracking its introduction, detection, fixing attempts, and regression history. Use when users need to: (1) Understand how a bug evolved over time, (2) Trace when and how a bug was introduced, (3) Analyze fix attempts and their effectiveness, (4) Identify regression patterns, (5) Generate bug lifecycle reports for documentation or post-mortems. Takes a repository, bug identifier, and version history as input.

Install in Claude Code
Copy
git clone --depth 1 https://github.com/ArabelaTso/Skills-4-SE /tmp/bug-history-summarizer && cp -r /tmp/bug-history-summarizer/skills/bug-history-summarizer ~/.claude/skills/bug-history-summarizer
Then start a new Claude Code session; the skill loads automatically.

SKILL.md

# Bug History Summarizer

Trace and summarize the complete lifecycle of a bug across code versions.

## Workflow

Follow these steps to generate a comprehensive bug history summary:

### 1. Identify the Bug and Gather Context

Collect essential information:

- **Bug identifier**: Issue number, commit hash, or bug description
- **Repository**: Target codebase with version history
- **Version range**: Specific versions/commits to analyze (or entire history)
- **Related artifacts**: Issue reports, pull requests, commit messages, test results

### 2. Trace Bug Introduction

Identify when and how the bug was introduced:

**Using git blame and bisect:**
- Run `git blame` on affected files to find when problematic lines were added
- Use `git bisect` to pinpoint the exact commit that introduced the bug
- Analyze the introducing commit: author, date, purpose, related changes

**Analyze introduction context:**
- What was the original intent of the change?
- Was it a new feature, refactoring, or bug fix?
- Were there code review comments or warnings?
- What tests existed at the time?

### 3. Track Detection History

Document when and how the bug was discovered:

- **Initial detection**: When was the bug first reported or noticed?
- **Detection method**: User report, automated test, code review, production incident?
- **Time to detection**: How long between introduction and discovery?
- **Severity assessment**: How was the bug initially classified?

### 4. Analyze Fix Attempts

Chronicle all attempts to fix the bug:

**For each fix attempt:**
- Commit hash and date
- Author and reviewer
- Fix approach and code changes
- Test coverage added
- Whether the fix was successful or reverted

**Identify patterns:**
- Multiple fix attempts indicate complexity
- Reverted fixes suggest incomplete understanding
- Test additions show learning from the bug

### 5. Check for Regressions

Identify if the bug reappeared after being fixed:

- Search for related bug reports after the fix
- Check if the fix was reverted or modified
- Look for similar bugs in related code
- Analyze if the bug reoccurred in different contexts

### 6. Generate Summary Report

Create a structured timeline and analysis:

**Timeline format:**
```markdown
## Bug History: [Bug Title/ID]

### Introduction
- **When**: [Date/Commit]
- **Where**: [File:Line]
- **How**: [Description of introducing change]
- **Context**: [Why the change was made]

### Detection
- **Discovered**: [Date]
- **Method**: [How it was found]
- **Time to Detection**: [Duration]
- **Initial Impact**: [Severity/Scope]

### Fix Attempts
1. **Attempt 1** ([Date/Commit])
   - Approach: [Description]
   - Outcome: [Success/Failure/Partial]
   - Tests Added: [Yes/No]

2. **Attempt 2** ([Date/Commit])
   - ...

### Regressions
- **Regression 1** ([Date])
  - Cause: [Why it reappeared]
  - Fix: [How it was resolved]

### Current Status
- [Fixed/Open/Recurring]
- Last modified: [Date]

### Lessons Learned
- [Key insights from the bug's history]
```

## Example

**Input:**
- Repository: `myapp`
- Bug: "Null pointer exception in user login"
- Issue: #456

**Analysis Process:**

1. **Git blame** shows the problematic code was added in commit `abc123` on 2024-01-15
2. **Commit analysis** reveals it was part of a refactoring to improve performance
3. **Issue tracker** shows bug reported on 2024-02-20 (36 days after introduction)
4. **Fix attempts**:
   - First fix (commit `def456`, 2024-02-21): Added null check, but incomplete
   - Second fix (commit `ghi789`, 2024-02-25): Comprehensive fix with tests
5. **Regression check**: No regressions found

**Generated Summary:**

```markdown
## Bug History: Null Pointer Exception in User Login (#456)

### Introduction
- **When**: 2024-01-15 (commit abc123)
- **Where**: src/auth/LoginHandler.java:45
- **How**: Refactoring removed null check during performance optimization
- **Context**: Part of PR #234 to reduce login latency

### Detection
- **Discovered**: 2024-02-20
- **Method**: Production incident report
- **Time to Detection**: 36 days
- **Initial Impact**: High severity - blocking user logins

### Fix Attempts
1. **Attempt 1** (2024-02-21, commit def456)
   - Approach: Added null check for user object
   - Outcome: Partial - fixed main case but missed edge case
   - Tests Added: Yes (1 unit test)

2. **Attempt 2** (2024-02-25, commit ghi789)
   - Approach: Comprehensive null handling with validation
   - Outcome: Success
   - Tests Added: Yes (3 unit tests + 1 integration test)

### Regressions
- None detected

### Current Status
- Fixed (as of 2024-02-25)
- Last modified: commit ghi789

### Lessons Learned
- Performance optimizations should maintain defensive checks
- Initial fix was too narrow - comprehensive testing revealed edge cases
- Added regression tests to prevent reintroduction
```

## Output Format

Provide:

1. **Structured timeline** in Markdown format
2. **Key metrics**:
   - Time to detection
   - Number of fix attempts
   - Time to resolution
   - Regression count
3. **Visual timeline** (optional, using ASCII or Mermaid):
   ```
   2024-01-15: Bug introduced (commit abc123)
        |
        | (36 days)
        |
   2024-02-20: Bug detected (issue #456)
        |
        | (1 day)
        |
   2024-02-21: Fix attempt 1 (partial)
        |
        | (4 days)
        |
   2024-02-25: Fix attempt 2 (success)
   ```
4. **Lessons learned** and recommendations

## Git Commands Reference

Useful commands for bug history analysis:

```bash
# Find when a line was introduced
git blame <file>

# Find the commit that introduced a bug
git bisect start
git bisect bad <bad-commit>
git bisect good <good-commit>

# Search commit messages for bug references
git log --grep="<bug-id>" --oneline

# Show commits that modified a specific file
git log --follow -- <file>

# Show commits in a date range
git log --since="2024-01-01" --until="2024-12-31"

# Find commits by author
git log --author="<name>"

# Show detailed commit information
git show <
abstract-domain-explorerSkill

Applies abstract interpretation using different abstract domains (intervals, octagons, polyhedra, sign, congruence) to statically analyze program variables and infer invariants, value ranges, and relationships. Use when analyzing program properties, inferring loop invariants, detecting potential errors, or understanding variable relationships through static analysis.

abstract-invariant-generatorSkill

Uses abstract interpretation to automatically infer loop invariants, function preconditions, and postconditions for formal verification. Generates invariants that capture program behavior and support correctness proofs in Dafny, Isabelle, Coq, and other verification systems. Use when adding formal specifications to code, generating verification conditions, inferring contracts for functions, or discovering loop invariants for proofs.

abstract-state-analyzerSkill

Performs abstract interpretation over source code to infer possible program states, variable ranges, and data properties without executing the program. Reports potential runtime errors including out-of-bounds accesses, null dereferences, type inconsistencies, division by zero, and integer overflows. Use when analyzing code for potential runtime errors, performing static analysis, checking safety properties, or verifying program behavior without execution.

abstract-trace-summarizerSkill

Performs abstract interpretation to produce summarized execution traces and high-level program behavior representations. Highlights key control flow paths, variable relationships, loop invariants, function summaries, and potential runtime states using abstract domains (intervals, signs, nullness, etc.). Use when analyzing program behavior, understanding execution paths, computing loop invariants, tracking variable ranges, detecting potential runtime errors, or generating program summaries without concrete execution.

acsl-annotation-assistantSkill

Create ACSL (ANSI/ISO C Specification Language) formal annotations for C/C++ programs. Use this skill when working with formal verification, adding function contracts (requires/ensures), loop invariants, assertions, memory safety annotations, or any ACSL specifications. Supports Frama-C verification and generates comprehensive formal specifications for C/C++ code.

agent-browserSkill

CLI-based browser automation with persistent page state using ref-based element interaction. Use when users ask to navigate websites, interact with web pages, fill forms, take screenshots, test web applications, or extract information from web pages.

ambiguity-detectorSkill

Detects and analyzes ambiguous language in software requirements and user stories. Use when reviewing requirements documents, user stories, specifications, or any software requirement text to identify vague quantifiers, unclear scope, undefined terms, missing edge cases, subjective language, and incomplete specifications. Provides detailed analysis with clarifying questions and suggested improvements.

api-design-assistantSkill

Design and review APIs with suggestions for endpoints, parameters, return types, and best practices. Use when designing new APIs from requirements, reviewing existing API designs, generating API documentation, or getting implementation guidance. Supports REST APIs with focus on endpoint structure, request/response schemas, authentication, pagination, filtering, versioning, and OpenAPI specifications. Triggers when users ask to design, review, document, or improve APIs.