Generates interactive HTML project recap of current state, recent git activity, key decisions, architecture, and cognitive debt hotspots. Auto-activates on recap/summary/status requests; accepts time window (2w/30d/3m).
From vision-powersnpx claudepluginhub leejuoh/claude-code-zero --plugin vision-powersThis skill is limited to using the following tools:
references/section-structure.mdDesigns and optimizes AI agent action spaces, tool definitions, observation formats, error recovery, and context for higher task completion rates.
Implements structured self-debugging workflow for AI agent failures: capture errors, diagnose patterns like loops or context overflow, apply contained recoveries, and generate introspection reports.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
Generate a visual project recap as a self-contained interactive HTML report. Rebuilds mental model of a project's current state, recent activity, architecture, decisions, and cognitive debt hotspots.
Parse the time window from $1:
| Input | --since value | Notes |
|---|---|---|
2w | "2 weeks ago" | Default if no argument |
30d | "30 days ago" | |
3m | "3 months ago" | |
1w, 5d, etc. | Parse <N><unit> → "<N> <unit> ago" | w=weeks, d=days, m=months |
| Non-time text | Use as context, default to 2w |
Determine the output language:
--lang <code> (e.g., --lang ko, --lang fr, --lang zh) → use that language. Any language code is validWhy: A recap for someone returning from vacation differs from a status update for leadership. The audience determines what to highlight — technical debt vs. milestone progress vs. decision context.
If the user's message already conveys clear intent, skip this step.
If the request is ambiguous (e.g., just a time window with no context), use AskUserQuestion to ask up to 2 questions:
Defaults:
Pass audience and focus context to the report generation phase.
Why: Git history is ground truth, but file names alone can't describe architecture. Reading actual source files (imports, exports) is essential for accurate descriptions.
Collect comprehensive data about the project. Run git commands in parallel where possible.
Step 1 — Project identity (parallel):
README.md, CHANGELOG.md, package.json / Cargo.toml / pyproject.toml / go.mod for name, description, version, dependencies* at root)Step 2 — Recent activity (parallel):
git log --oneline --since=<window>
git log --stat --since=<window>
git shortlog -sn --since=<window>
git log --format="%h|%an|%s|%ai" --since=<window>
Step 3 — Current state (parallel):
git status
git branch --no-merged
TODO|FIXME in recently changed filesStep 4 — Decision context:
**/RFC*, **/ADR*, **/plan*)CLAUDE.md or similar project conventionsStep 5 — Architecture scan:
git log --since=<window> --pretty=format: --name-only | sort | uniq -c | sort -rn | head -20CRITICAL: Read actual source files — do not infer architecture from file names alone. Understanding module relationships requires reading imports and exports.
Why: Quantitative claims (commit counts, file counts) must exactly match git output. Behavioral claims must be traceable to specific source files.
Before generating the report, produce a structured fact sheet:
If any claim cannot be sourced, mark it as uncertain rather than stating it as fact.
Use extended thinking for the analysis above. The depth of analysis directly determines report quality.
Follow ../../references/report-generation-workflow.md with these parameters:
| Parameter | Value |
|---|---|
{output-path} | ${CLAUDE_PLUGIN_DATA}/reports/{project-name}-project-recap.html — where {project-name} is the project directory name |
{template-name} | project-recap.html |
{skill-prefix} | project-recap |
{expected-sections} | 8 |
{report-title} | "Project Recap: {project-name} ({time-window})" |
{aesthetic-hint} | "Paper-ink" |
{agent-prompt-data} | All gathered data: identity, activity, state, decisions, architecture, cognitive debt |
git log --since="2 weeks ago" in a repo less than 2 weeks old returns the entire history. This is fine, but the report should note the actual project age rather than implying it's a 2-week window.git shortlog and --stat summaries rather than reading every individual commit. Focus on the top 20 most-changed files.TODO|FIXME in large codebases can return hundreds of results, many ancient. Filter to only recently changed files (within the time window) and cap at 20 results.README.md or package.json. Don't treat this as an error — infer project identity from directory name and top-level file structure instead.../../references/report-generation-workflow.md — Shared report generation steps (resolve paths, delegate, assemble, validate, cleanup)references/section-structure.md — HTML structure patterns for each report section