personal-commit-review
Personal Commit Review
Write a short Markdown retrospective of a person's GitHub work. Make it read like a written review, not a changelog and not a bullet-only summary.
Default Behavior
- If the user does not specify a time period, default to the last 7 days and say so plainly.
- Default deliverable: one Markdown note, about one page total, usually 400-700 words.
- Use scripts only when they materially help. This skill is primarily a workflow for gathering evidence and writing well.
Workflow
1. Set the review window
- If the period is ambiguous, ask once. If asking would only slow down an otherwise straightforward request, default to the last 7 days and state the assumption.
- Prefer exact
--sinceand--untildates for weekly, monthly, quarterly, or release reviews. - Decide whether the user wants the review only in chat or also written to a Markdown file.
2. Gather the contribution map
- Start with GitHub totals and the touched repositories. This gives the frame of the review before you study individual commits.
- Manual
ghusage is fine for v1 and should be the default for small review windows or a small number of repos. - Use the helper script only when the time window or repo count makes manual collection annoying.
gh api graphql -f query='query {
viewer {
login
contributionsCollection(from:"2026-03-01T00:00:00Z", to:"2026-03-07T23:59:59Z") {
totalCommitContributions
restrictedContributionsCount
commitContributionsByRepository(maxRepositories:25) {
repository {
nameWithOwner
description
isPrivate
url
primaryLanguage { name }
}
contributions(first:7) {
nodes { occurredAt commitCount }
}
}
}
}
}'
- If you want the helper path, use:
uv run .agents/skills/personal-commit-review/scripts/collect_commit_review.py \
--since 2026-03-01 \
--until 2026-03-07 \
--output /tmp/commit-review.json \
--brief-out /tmp/commit-review-brief.md
- Treat GitHub's contribution totals as authoritative counts and the retrieved commit objects as the visible research set.
- Open github-collection-notes.md when the data looks incomplete or the GitHub queries need adjustment.
3. Understand the repos before interpreting the commits
- Do not infer meaning from commit messages alone.
- For each repo that looks important, gather the minimum context needed to understand what the work was for:
- repo description and primary language
- README, architecture note, or docs if the repo has them
- touched file paths and folder names
- one or two neighboring commits if a headline is too vague
- Prefer understanding the product or subsystem before writing about what changed in it.
Useful commands:
gh repo view OWNER/REPO --json nameWithOwner,description,primaryLanguage,url
gh api --method GET repos/OWNER/REPO/commits -f author=USERNAME -f since=2026-03-01T00:00:00Z -f until=2026-03-07T23:59:59Z -f per_page=20
gh api --method GET repos/OWNER/REPO/commits/SHA
- Example: if a commit mentions Liquid Glass, verify whether the repo is a macOS app, which window or settings files changed, and whether the repo context supports that description.
- If the repo context is still unclear, describe the change more conservatively.
4. Pick the storylines
- Pick 2-4 themes for the review, not 10 separate commit bullets.
- Good themes are usually product-facing or architectural:
- interface polish and design alignment
- release and packaging work
- infrastructure or tooling improvements
- a feature thread that moved from idea to working implementation
- Support each theme with concrete evidence from commits, repo context, and changed paths.
5. Parallelize research when it actually helps
- If the review spans many repos or many strong highlights, split follow-up work by repo or theme.
- Give each subagent exclusive ownership of specific repos or highlight commits.
- Do not have every subagent repeat the full discovery step.
- Keep the main agent responsible for the final narrative voice and the final fact check.
6. Write the review as prose
- Use the default structure in output-template.md.
- Do not return a wall of paragraphs. The final Markdown should read like a compact report.
- Start with a short framing paragraph that includes the key stats: commit count, repo count, major languages, and any caveat that materially changes interpretation.
- Include a small stats overview table near the top.
- Include a repository overview table with Markdown links to the repos when GitHub exposed the repo URLs.
- Then write 2-3 short body sections that tell the story of the week.
- Name specific repos and changes inside the prose. Example style: "
trnscrbmoved closer to native macOS conventions, with settings-window work explicitly calling out HIG and Liquid Glass patterns." - Mention 3-5 standout changes, but weave them into the text instead of turning them into a checklist.
- Include 2-4 linked highlights near the end, pointing to repos or commits where that helps the report feel concrete.
- Keep the whole review to about one page total.
- End with one compact caveat note only if needed: restricted contributions, incomplete visibility, inaccessible repos, or uncertain attribution.
Troubleshooting
- Only verify GitHub access if the data collection step fails or returns clearly wrong results.
gh auth status
gh api rate_limit
- Do not require extra GitHub scopes by default.
- Open github-collection-notes.md if the contribution totals and visible commit set do not line up cleanly.
Output Standard
- Prefer Markdown if writing to a file.
- Keep the tone reflective and concrete.
- Use stats to anchor the story, not to dominate it.
- Use report structure: heading, one-line deck, stats table, repository table, prose sections, compact highlights.
- Link repo names with standard Markdown links whenever the repo URL is known, including private repos that were explicitly surfaced by the authenticated GitHub query.
- Avoid raw commit dumps, long bullet lists, or one-sentence-per-commit writing.
- Avoid filling the whole page with caveats. The caveat note should stay short unless the data is genuinely unusable.
Anti-Patterns
- Do not treat the helper script as mandatory.
- Do not brute-force every accessible repository when a few repos clearly dominate the review.
- Do not claim details for restricted contributions. Say they exist, not what they were.
- Do not require
gh auth refresh -s userunless the user explicitly wants deeper email-based matching. - Do not write from commit headlines alone if the repo context is available.
- Do not paste raw JSON or raw API dumps into the final review.
- Do not omit repo links and stats when the data is available.
Resources
- references/output-template.md Default Markdown structure for the final review.
scripts/collect_commit_review.pyOptional helper for broad repo discovery and compact briefing when manual collection is too slow.- references/github-collection-notes.md Open when debugging data gaps, tuning limits, or changing the GitHub collection strategy.
More from jwa91/agentskills
interactive-learner
Personal AI tutoring skill that deeply researches any topic, then creates rich, interactive HTML courses with quizzes, simulators, debug challenges, explain-back exercises, real-world missions, and more. Tracks per-concept mastery across sessions with spaced repetition. Use when: (1) the user wants to learn a new topic, (2) the user says 'teach me X' or 'I want to learn X', (3) the user asks for an interactive lesson or course, (4) the user wants to study or review a subject. Works for any topic: technical, conceptual, creative, math, languages.
15mac-cleanup
Interactive macOS system cleanup for any dev machine. Frees disk space by pruning caches, package managers, unused apps, stale dev artifacts, and more. Discovers what's installed rather than assuming a specific setup. Always consults the user before deleting anything. Use when the user asks to: clean up their Mac, free disk space, remove unused apps, prune caches, clean developer artifacts, or any disk space maintenance task.
8spec
Interviews the user about a product idea or feature using structured questions, then generates a detailed spec document (SPEC.md). Use when the user wants to flesh out an idea, plan a feature, or create a buildable specification.
5env-inspector
Safely inspect .env files by showing key names and clearly non-sensitive values while redacting anything that looks like a secret. Best-effort heuristic redaction (keyword block + token-pattern blocklist + Shannon-entropy check + value allowlist) — not a cryptographic guarantee. Use when you need to understand a project's environment configuration without exposing credentials.
2vps-dependency-overview
Generate an offline-first dependency overview across services in a Docker-compose monorepo. Reports image tags & pinning quality, Dockerfile base images, runtime hints (Node/Python via .nvmrc, .python-version, package.json engines, pyproject.toml), and lockfile presence. Use when you want a single report of "what am I running and where are my update surfaces?" — no network calls, no pulls.
2vps-service-status
Quick health checks for a Dockerized VPS. Use to verify services are running, check container status, view logs, or get a system overview (disk, memory, CPU). Read-only by design — anything that would change state is routed through the clipboard for the user to paste.
2