Trace an author's file contributions on a branch, even through renames.
Copy the install command and let the AI configure it · recommended for beginners
Please install the "author-contributions" skill from askskill: 1. Download https://raw.githubusercontent.com/microsoft/vscode/main/.github/skills/author-contributions/SKILL.md 2. Save it as ~/.claude/skills/author-contributions/SKILL.md 3. Reload skills and tell me it's ready
Run as a subagent: find every file author “Zhang San” contributed to on branch feature/login compared to main, trace renames, and return a table with Status, File Path, Lines (+/-), plus a total.
A file list with DIRECT / VIA_RENAME status, per-file line stats, and a total summary.
Compare release-v2.1 against upstream, identify which files author “Li Si” affected directly or through renames, and return a readable table.
Show which merge-diff files are the author’s direct or rename-traced contributions.
Use this when you need to know which files a specific author truly changed on a branch. It follows commits and rename chains, which is useful before merging.
When files have been renamed multiple times, it can trace back to the original authored paths so refactors are not misattributed.
It is useful for turning a branch’s author-related changes into a concise table for humans or LLMs to review quickly.
This document explains how to identify all files a specific author contributed to on a branch compared with its upstream, while tracing file renames across history. It emphasizes running the skill as a subagent, matching the author exactly, collecting direct commits, building a branch-wide rename map, and then summarizing the merge-diff files in a concise table with status, paths, and line counts.
When asked to find all files a specific author contributed to on a branch (compared to main or another upstream), follow this procedure. The goal is to produce a simple table that both humans and LLMs can consume.
This skill involves many sequential git commands. Delegate it to a subagent with a prompt like:
Find every file that author "Full Name" contributed to on branch
<branch>compared to<upstream>. Trace contributions through file renames. Return a markdown table with columns: Status (DIRECT or VIA_RENAME), File Path, and Lines (+/-). Include a summary line at the end.
git log --format="%an <%ae>" <upstream>..<branch> | sort -u
Match the requested person to their exact --author= string. Do not guess — short usernames won't match full display names (resolve via git log or the GitHub MCP get_me tool).
git log --author="<Exact Name>" --format="%H" <upstream>..<branch>
For each commit hash, extract touched files:
git diff-tree --no-commit-id --name-only -r <hash>
Union all results into a set (author_files).
For every commit on the branch (not just the author's), extract renames:
git diff-tree --no-commit-id -r -M <hash>
Parse lines with R status to build a map: new_path → {old_paths}.
git diff --name-only <upstream>..<branch>
These are the files that will actually land when the branch merges.
For each file in step 4:
author_files → DIRECTauthor_files → VIA_RENAMEgit diff --stat <upstream>..<branch> -- <file1> <file2> ...
Format the result as a markdown table:
| Status | File | +/- |
|--------|------|-----|
| DIRECT | src/vs/foo/bar.ts | +120/-5 |
| VIA_RENAME | src/vs/baz/qux.ts | +300 |
| ... | ... | ... |
**Total: N files, +X/-Y lines**
.py script, run it, then delete it.--author does substring matching but you must verify the right person is matched (e.g., don't match "Joshua Smith" when looking for "Josh S."). Use the GitHub MCP get_me tool or git log output to resolve the correct full name.contrib/chat/ → agentSessions/ → sessions/. The rename map must be walked transitively.import subprocess, os
os.chdir('<repo_root>')
UPSTREAM = 'main'
AUTHOR = '<Author Name>' # Resolve via `git log` or GitHub MCP `get_me`
# Step 2: author's files
commits = subprocess.check_output(
['git', 'log', f'--author={AUTHOR}', '--format=%H', f'{UPSTREAM}..HEAD'],
text=True).strip().split('\n')
author_files = set()
for h in (c for c in commits if c):
files = subprocess.check_output(
['git', 'diff-tree', '--no-commit-id', '--name-only', '-r', h],
text=True).strip().split('\n')
author_files.update(f for f in files if f)
# Step 3: rename map from ALL commits
all_commits = subprocess.check_output(
['git', 'log', '--format=%H', f'{UPSTREAM}..HEAD'],
text=True).strip().split('\n')
…
It compares a branch with its upstream, finds files contributed by a specific author, and traces contributions through renames. The result is a concise table.
You need the target author, the branch name, and the upstream branch. The author identity should match the exact git name and email as closely as possible.
Yes. The docs require building a rename map across the branch and tracing multi-hop rename chains to the final file.
Generate or update session run commands for faster project startup and testing.
Create hook JSON files for policy enforcement and agent lifecycle automation.
Update the GitHub Copilot CLI or SDK to a newer version.
Analyze V8 heap snapshots to find memory leaks and object retention.
Merge session branch changes back into the base branch cleanly.
Launch VS Code OSS in isolation for automation and multi-process debugging.
Explain Git diffs, flag risks, and generate code review checklists.
Group AI-generated code changes into reviewable commit candidates before approval.
Detects omitted co-changing files and C# members around your code edits.
Enable AI agents and IDEs to search codebases with hybrid retrieval and precise line-level citations.
Run a structured code review before commit or release on local or PR branches.
Review local changes, branch diffs, and patches for AI-assisted coding.