/progress-report
/progress-report review and report
Write a short progress report of what an orchestrated or long session did since the last report (never overlapping): done, what worked, what didn't, concerns, decisions made for the user, manual steps. Use for "update doc", "what's been done", "write up progress".
- invocation model + user
- prereqs gh to resolve the repo URL for links.
- tested used daily
- suggested model · effort sonnet · low
Install
Install just this, from a clone of the repo. Anything it needs comes with it.
./scripts/install-skills.sh --skill progress-report # bash, Git Bash, macOS, Linux
.\scripts\install-skills.ps1 -Skill progress-report # Windows PowerShell
Needs: handoff-auto (installed with it).
What it does
Turns a run's ledger into a short progress report (1–2 pages) covering only what happened since the last report — never overlapping.
- Markdown by default,
.docxon request. - Every issue/PR/commit reference is a link.
When to use
- "Make a report", "an update doc", "what's been done", "write up progress".
- Typically during or after a
meta-orchestratorrun, but works on any long session (reconstructs a ledger if none exists).
How to invoke
/progress-report [reports folder] [docx] [full]
docx— Word file instead of Markdown (uses thedocxskill if available, elsepython-docx).full— ignore the watermark, cover everything, titled "Full report".
Claude also runs it when you ask for "an update doc".
How it works
- Find the source. Reports folder (default the repo's
skilleddocs/reports/); ledger atskilleddocs/orchestrator/ledger.md.- No ledger → reconstructs one from
git log, merged PRs, issues and the conversation, and says so.
- No ledger → reconstructs one from
- Watermark.
.last-reportedrecords where the last report stopped:<NNN> <report filename> <entry NNN's timestamp>, where NNN is the last reported ledger entry.- The new report covers entries
NNN + 1through the latest. - If a new run restarted the ledger at 001, the stored timestamp no longer matches, so the report covers the ledger from 001.
- It also covers commits or merged PRs since the watermark that have no ledger entry, marked "not in ledger". The reporting commits themselves are skipped.
- Earlier items only reappear under "Revisions to earlier reports" if they changed (revert, reversed decision, broken "done").
- The new report covers entries
- Fixed sections. Empty → "none".
- Header (report number, date, time range in your local zone, ledger range).
- Summary.
- Done (table).
- What worked.
- What didn't.
- Concerns (ranked, blocking flagged).
- Decided for you.
- Assumed decisions open (
A-nstill unconfirmed). - Manual steps for you.
- Revisions to earlier reports.
- Next up.
- Link everything. Resolves the repo URL once.
#n,PR #n/PR#n, commit hashes and decision ids (if the repo has a decisions doc/ADRs) become links in every section.- Existing links, bare URLs, code spans, headings and decimal CI run ids are left as they are.
- Checks the link count afterwards.
- Write
NNN-YYYY-MM-DD-<slug>.md(or.docx) in the reports folder.- Never overwrites an earlier report.
- Reads it back to check.
- Advance the watermark. Updates
.last-reported, appends areportentry to the ledger.- In commit mode it commits them with the report, on the default branch. If the default branch is protected, it commits on a docs branch instead (
TRACKING.md). - Prints the path and entry range.
- In commit mode it commits them with the report, on the default branch. If the default branch is protected, it commits on a docs branch instead (
Reads: skilleddocs/orchestrator/ledger.md, .last-reported, git/gh.
Writes: the report, .last-reported, a ledger entry.
Design principles
- Never overlapping. A watermark (
.last-reported) means each report covers only new ledger entries; anything earlier reappears only under "Revisions to earlier reports" when it changed. - Readable in two minutes. Fixed sections, bullets with one idea each, numbers in a table, 1 to 2 pages.
- Every reference is a link, every time is real. Issues, PRs, commits and decision ids are linked; times come from the ledger,
git logor API timestamps in your local zone, never estimated.
Shared context for these principles: Matt Pocock's video.
Use cases
- Catching up after a
meta-orchestratorrun you left unattended. - A periodic update during a long run, each one picking up where the last stopped.
- Writing up a long manual session with no ledger (it reconstructs one from git, PRs, issues and the conversation, and says so).
- A Word document to send to someone else (
docx).
Tips
- Use
fullwhen you want everything in one document regardless of earlier reports; the watermark is ignored for that run. - Reports are numbered and never overwritten, so the folder is a running history.
- The "Decided for you" and "Manual steps for you" sections are the ones to read first after an unattended run.
- Pass a folder to keep reports outside
skilleddocs/reports/; its.last-reportedfile lives in that folder.
Example
Watermark says 5; ledger is at 22.
- Writes
skilleddocs/reports/002-2026-09-23-auth-and-export.mdcovering entries 6–22 (Done table with 4 merged PRs, one flaky-CI item under "What didn't", two decisions made on your behalf). - Sets
.last-reportedto022 002-2026-09-23-auth-and-export.mdplus entry 022's timestamp. - Appends a
reportledger entry. - Prints the path.
Related
meta-orchestratorwrites the ledger it reads.docxskill (optional) for Word output.
Prereqs
ghto resolve the repo URL for links.- For
docx: thedocxskill orpython-docx.
Sample workflows
- Run the backlog unattended
you → lanes → you → meta-orchestrator → planner → manager → implementer → verifier → you → switch → remind → progress-report → you
Install just this one:./scripts/install-skills.sh --workflow unattended-backlogor.\scripts\install-skills.ps1 -Workflow unattended-backlog - Hand the project to a teammate
progress-report → teammate-brief → you → you
Install just this one:./scripts/install-skills.sh --workflow brief-a-teammateor.\scripts\install-skills.ps1 -Workflow brief-a-teammate
Use cases & tips from the community