review-history
Original:🇺🇸 English
Translated
Analyze how code changed over time. Use when investigating regressions, understanding why code was written a certain way, or finding when a behavior changed.
62installs
Added on
NPX Install
npx skill4agent add nielsmadan/agentic-coding review-historyTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Review History
Investigate how code evolved over time to understand current behavior or find regressions.
Usage
/review-history src/auth/login.ts
/review-history the authentication flow
/review-history UserProfile componentWorkflow
Step 1: Identify Target Files
From the provided topic, identify the relevant files:
- If a file path is given, use it directly
- If a feature/function name, locate relevant files using this strategy:
- Grep for the exact function/class name to find where it is defined and used
- Glob for files with the feature name in the path (e.g., )
**/*payment* - Prioritize source files over test files; include tests only if investigating test behavior
- Limit to the 5 most relevant files to keep the analysis focused
Step 2: Git History Analysis
Run these in parallel:
Recent commits touching the area:
bash
git log --oneline -20 -- <file_or_directory>Detailed blame for key sections:
bash
# For files > 200 lines: target the specific function or section under investigation.
# Use Grep to find the line range first, then:
git blame -L <start>,<end> <file>
# For files ≤ 200 lines: blame the entire file:
git blame <file>Find when specific code was introduced:
bash
git log -S "<search_term>" --oneline -- <file>Check for recent refactors:
bash
git log --oneline --since="3 months ago" -- <file_or_directory>Adjust the time window based on context:
- Investigating a recent regression: use
--since="2 weeks ago" - Understanding a feature's evolution: use or omit
--since="6 months ago"entirely--since - If the initial window returns fewer than 3 commits, double the window and retry once
Step 3: Search Past Issue Logs
Check if this problem occurred before:
-
List past issue logs:
- Glob pattern:
docs/log/*.md
- Glob pattern:
-
Search logs for relevant keywords:
- Grep pattern: path:
{keywords}docs/log/
- Grep pattern:
Look for:
- Similar error messages
- Same file/function names
- Related symptoms
Step 4: Synthesize Findings
Populate the report using these methods:
- Recent Changes: List commits from , most recent first. Include only commits that touch the target code.
git log - Key Code Introduction: Use results to identify when the function/feature first appeared and its last substantive change (skip formatting-only commits).
git log -S - Related Past Issues: Direct matches from Step 3. If none found, state "None found in docs/log/".
- Regression Risk: Compare current behavior against commit history. If code worked before a specific commit and broke after, name that commit. If no clear regression point, state "No clear regression identified — behavior may be by design."
Report:
markdown
## History Analysis: {target}
### Recent Changes
| Date | Commit | Author | Summary |
|------|--------|--------|---------|
| {date} | {hash} | {author} | {message} |
### Key Code Introduction
- `{function/feature}` introduced in {commit} on {date}
- Last modified: {commit} by {author}
### Related Past Issues
{any matching docs/log entries, or "None found"}
### Regression Risk
{assessment: was this working before? when did it break?}Examples
Trace when a payment bug was introduced:
/review-history processPayment
Uses and to trace the payment processing function, identifies the commit that changed the rounding logic three weeks ago, and cross-references with past issue logs to confirm this is when the billing discrepancy started.
git log -Sgit blameUnderstand why validation works a certain way:
/review-history src/validators/address.ts
Analyzes the git history of the address validator, surfaces the original commit that added the unusual postal code regex along with its commit message explaining a partner API requirement, and checks past issue logs for related context.
Troubleshooting
Relevant commit was squashed or rebased away
Solution: Use to find the original commit before the squash or rebase. If the reflog has expired, search for the change using to locate it in any branch or dangling commit.
git refloggit log -S "<code_snippet>" --allHistory is too large to analyze effectively
Solution: Narrow the scope by passing a specific file path or function name instead of a broad directory. Use with to limit the time window, or focus on a single author's contributions with .
--sincegit log--authorNotes
- Focus on commits from the last 3-6 months unless investigating older issues
- Pay attention to refactors, dependency updates, and merge commits
- If a past issue log matches, read it fully - it may contain the solution