Skills-4-SE 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.
git clone https://github.com/ArabelaTso/Skills-4-SE
T=$(mktemp -d) && git clone --depth=1 https://github.com/ArabelaTso/Skills-4-SE "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/bug-history-summarizer" ~/.claude/skills/arabelatso-skills-4-se-bug-history-summarizer && rm -rf "$T"
skills/bug-history-summarizer/SKILL.mdBug 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
on affected files to find when problematic lines were addedgit blame - Use
to pinpoint the exact commit that introduced the buggit bisect - 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:
## 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:
- Git blame shows the problematic code was added in commit
on 2024-01-15abc123 - Commit analysis reveals it was part of a refactoring to improve performance
- Issue tracker shows bug reported on 2024-02-20 (36 days after introduction)
- Fix attempts:
- First fix (commit
, 2024-02-21): Added null check, but incompletedef456 - Second fix (commit
, 2024-02-25): Comprehensive fix with testsghi789
- First fix (commit
- Regression check: No regressions found
Generated Summary:
## 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:
- Structured timeline in Markdown format
- Key metrics:
- Time to detection
- Number of fix attempts
- Time to resolution
- Regression count
- 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) - Lessons learned and recommendations
Git Commands Reference
Useful commands for bug history analysis:
# 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 <commit-hash>
Tips for Effective Bug History Analysis
- Start with the fix - Work backwards from the fix commit to understand the bug
- Check related files - Bugs often span multiple files
- Read commit messages - They provide context about intent
- Review pull requests - Comments reveal decision-making
- Check test history - Tests added after bugs show learning
- Look for patterns - Similar bugs may have related causes
- Consider context - Deadlines, team changes, and technical debt affect bug introduction