claude/dev-tools/skills/document-changes/SKILL.md
Generate a markdown report documenting codebase changes from the current session — files added, modified, deleted, and a summary of what was done. Use when asked to "document changes", "generate change report", "save changes report", "what did I change", "session report", "summarize my changes", or "write a changes report".
npx skillsauth add sequenzia/agent-alchemy document-changesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Generate a structured markdown report documenting codebase changes from the current working session. The report captures files changed, commit history, and a human-readable summary suitable for team reviews, handoff documentation, or personal records.
$ARGUMENTS — Optional scope or description for the report (e.g., "auth refactor", "add OAuth2 support"). Used to name the output file and populate the report's scope field. If not provided, scope is inferred from commit messages or changed file paths.Execute these 4 steps in order. Stop early if Step 1 or Step 2 determines there is nothing to report.
Verify the current directory is inside a git repository:
git rev-parse --is-inside-work-tree
false, stop and report: "Not inside a git repository. This skill requires git to gather change data."Collect all change data by running these git commands. If any individual command fails, continue with the data that is available.
git branch --show-current
git config user.name
git remote get-url origin 2>/dev/null
date "+%Y-%m-%d %H:%M %Z"
git status --porcelain
git diff --stat
git diff --name-status
git diff --cached --stat
git diff --cached --name-status
git log --oneline -20
git log --format="%H|%s|%an|%ai" -20
If there are recent commits (N > 0 from Step 2.4):
git diff --stat HEAD~N..HEAD
git diff --name-status HEAD~N..HEAD
Replace N with the number of recent commits found (capped at 20). If the repo has fewer than N commits, use git diff --stat $(git rev-list --max-parents=0 HEAD)..HEAD instead.
Build a unified list of all affected files from Steps 2.2–2.5, deduplicating entries. For each file, track:
Stop condition: If there are no uncommitted changes (Step 2.2 is empty), no staged changes (Step 2.3 is empty), and no recent commits (Step 2.4 is empty), stop and report: "No changes found in the current repository. Nothing to document."
Create a short kebab-case description (2-4 words) for the filename:
$ARGUMENTS is provided: Convert to kebab-case (e.g., "auth refactor" → auth-refactor)$ARGUMENTS is not provided: Infer from the most common theme in commit messages or changed file paths (e.g., api-bug-fixes, add-oauth2-support, ui-component-updates)Build the recommended path: internal/reports/<description>-YYYY-MM-DD.md using today's date.
Use AskUserQuestion:
Where should the change report be saved?
Recommended: internal/reports/<description>-YYYY-MM-DD.md
Options:
internal/reports/<description>-YYYY-MM-DD.mdIf user selects "Custom path": Use a follow-up AskUserQuestion asking for the full file path.
.mdmkdir -pBuild the markdown report with the following structure, then write it using the Write tool.
# Codebase Changes Report
## Metadata
| Field | Value |
|-------|-------|
| **Date** | YYYY-MM-DD |
| **Time** | HH:MM TZ |
| **Branch** | {current branch} |
| **Author** | {git user.name} |
| **Base Commit** | {earliest commit hash before session changes, or N/A} |
| **Latest Commit** | {most recent commit hash, or "uncommitted"} |
| **Repository** | {remote URL, or "local only"} |
**Scope**: {from $ARGUMENTS, or inferred from changes}
**Summary**: {1-2 sentence executive summary of what was done}
## Overview
{High-level stats paragraph}
- **Files affected**: N
- **Lines added**: +N
- **Lines removed**: -N
- **Commits**: N
## Files Changed
| File | Status | Lines | Description |
|------|--------|-------|-------------|
| `path/to/file.ts` | Modified | +12 / -3 | Brief description of changes |
| `path/to/new.ts` | Added | +45 | Brief description |
| `path/to/old.ts` | Deleted | -20 | Brief description |
## Change Details
### Added
- **`path/to/new.ts`** — Description of the new file and its purpose.
### Modified
- **`path/to/file.ts`** — What was changed and why (based on diff context).
### Deleted
- **`path/to/old.ts`** — Why it was removed or what replaced it.
## Git Status
### Staged Changes
{List of staged files from `git diff --cached --name-status`, or "No staged changes."}
### Unstaged Changes
{List of unstaged modifications from `git diff --name-status`, or "No unstaged changes."}
### Untracked Files
{List of untracked files from `git status --porcelain` (lines starting with `??`), or "No untracked files."}
## Session Commits
| Hash | Message | Author | Date |
|------|---------|--------|------|
| `abc1234` | feat: add login flow | Author Name | 2026-02-21 |
{Or "No commits in this session." if no recent commits}
mkdir -p {parent_directory}
Write tool to create the report file at the chosen path.AskUserQuestion to offer an alternative path.After writing the report, present a brief summary of what was generated, then use AskUserQuestion:
Report written to {path}.
Summary: {1-2 sentence overview}
Files documented: N | Commits: N | Lines: +N / -N
What would you like to do next?
Options:
Read/git-commit to commit outstanding changes| Scenario | Action |
|----------|--------|
| Not a git repo | Stop with clear message (Step 1) |
| No changes found | Stop with clear message (Step 2) |
| Individual git command fails | Continue with available data |
| Write fails | Offer alternative path via AskUserQuestion |
| Cannot determine scope | Use "session-changes" as the fallback description |
--stat output to extract per-file line additions/deletions. If unavailable, omit the Lines column.development
Systematic, hypothesis-driven debugging workflow with triage-based track routing. Use when asked to "fix this bug", "debug this", "why is this failing", "this is broken", "investigate this error", "track down this issue", or any debugging situation. Supports --deep flag to force full investigation.
development
Executes diagnostic investigation tasks to test debugging hypotheses. Runs tests, traces execution, checks git history, and reports evidence. (converted from agent)
content-media
Provides architectural pattern knowledge for designing feature implementations including MVC, event-driven, microservices, and CQRS patterns. Use when designing system architecture or choosing implementation patterns.
documentation
Provides Mermaid diagram syntax, best practices, and styling rules for technical visualizations. Use when creating diagrams, flowcharts, sequence diagrams, class diagrams, state diagrams, ER diagrams, architecture diagrams, C4 diagrams, or any visual documentation in markdown.