/update-progress
/update-progress kanban board
Verify a session's handoff document and update the repo's docs and kanban board from it. Run in a fresh session after session-handoff.
- invocation model + user
- prereqs gh, authenticated with the project OAuth scope:…
- tested used daily
- suggested model · effort opus · medium
Install
Install just this, from a clone of the repo. Anything it needs comes with it.
./scripts/install-skills.sh --skill update-progress # bash, Git Bash, macOS, Linux
.\scripts\install-skills.ps1 -Skill update-progress # Windows PowerShell
Needs: next (installed with it).
What it does
Takes a handoff document, verifies its claims (git log, tests, code review), then updates the repo's docs, the board and the issue to match what actually happened.
When to use
In a fresh session after session-handoff. The verifier agent runs it end to end.
How to invoke
/update-progress [path to handoff doc]
- Omit the path to use the newest file by mtime in
skilleddocs/handoffs/across all worktrees (then the OS temp dir). - Claude can also run it itself.
How it works
- Locate the handoff: the given path, or the newest by mtime.
- Looks in the handoff folder (
AGENTS.md/CLAUDE.md's, elseskilleddocs/handoffs/) of everygit worktree listentry, current first. - In other worktrees, only untracked files.
- Skips a handoff whose issues already carry a "verified, merged" comment.
- If several share the newest mtime, it lists them and asks you.
- If none is found there, it checks the OS temp dir.
- Looks in the handoff folder (
- Verify claims:
git logover the handoff's base SHA..head (elsegit merge-base <default> <branch>).- Fetches first. Head counts as merged when it is on
origin/<default>or the branch has a merged PR containing it. Squash and rebase merges count. A deleted PR branch is read via the PR'spull/<n>/headref. A check that errors never counts as merged. - Runs the repo's test suite on the handoff's code.
It uses the default checkout (fast-forwarded) if head is merged, else the worktree with the branch checked out, else a temporary
git worktree addof head. - Doesn't trust "tests pass".
- Fetches first. Head counts as merged when it is on
- Code review via the
code-reviewskill if product code changed. - Update docs that exist (only once the work is merged into the default branch):
- Roadmap checkboxes, status doc rows + dated entry, decisions doc (only if a decision was recorded), else README status section /
CHANGELOG.md/docs/. - Moves a "current phase" marker to where merges are landing.
- Fixes README feature lists that miss merged capabilities.
- Never invents doc structure.
- Roadmap checkboxes, status doc rows + dated entry, decisions doc (only if a decision was recorded), else README status section /
- Update the board: comments on the issue.
- Closes it and moves the card to Done if complete, verified and merged.
- Complete and verified but unmerged → In Review with a "verified, awaiting merge" comment.
- Otherwise sets the card/label to where it stands.
- Label mode: creates
status:donefirst if missing. When complete, verified and merged,status:in-review(or a never-movedstatus:in-progress) becomesstatus:done. Partial or blocked work keeps its label.
- Escalate deviations: if the handoff's
## Board statuslists deviations/innovations, callsconsult-plan. - Commits the doc edits and the handoff on the default branch.
- The handoff is moved into the default checkout first if it sits in the task's worktree, so it can't block that branch's next merge.
- The handoff is committed only if it was left uncommitted and the repo is in commit mode per
TRACKING.md. - If the default branch is protected, the edits go on a
docs/branch instead (or the repo's own branch prefix). Protected means a PR is required by classic protection or a ruleset. If the answer is unclear (e.g. no admin rights on the classic endpoint), it asks. - Pushes, and opens that PR, only on your yes.
- Ends by calling (or telling you to call)
next.
Flow
Card status flow: todo → in-progress → in-review → done.
- todo: set explicitly by
gh project item-editwhen an issue is added —item-addalone leaves Status empty. - in-progress: set by
pairormeta-orchestratorwhen they create the branch (their guarded agents can only read withgh). - in-review: set by
session-handoff. - done: set by
update-progress, once verified and merged; unmerged stays in-review. - Label-mode
status:*labels are created on first use (gh label create --color <hex> --force, colors innext/BOARD.md), not assumed to exist.
Design principles
- Every claim is unverified until checked. "Tests pass" in a handoff means nothing until
git logand a real test run agree. - Fresh session. Verification runs in a new context, not the one that did the work.
- Update only what exists. It ticks boxes and adds rows in the docs the repo already has; it never invents doc structure.
- Drift is fixed here. A merged capability missing from the README or status summary gets added, and a "current phase" marker follows where merges land.
Shared context for these principles: Matt Pocock's video.
Use cases
- Closing the loop after
/session-handoff: verify, update docs, move the card to Done. - Checking a handoff someone (or an agent) else wrote before you trust it.
- Inside the
verifieragent at the end of each task in ameta-orchestratorrun. - Routing a session's deviations to
consult-planinstead of letting them silently change the plan.
Tips
- Run it in a fresh session.
- With no argument it picks the newest file by mtime in the handoff folder of any worktree, so pass the path if several sessions ended recently.
- Only complete, verified and merged work goes to Done and closes the issue.
- Verified but unmerged waits in In Review.
- Anything else is set to where it really stands.
- Code review only runs when product code changed; the
verifieragent skips it withreview-done=yes. - It ends with
next, so the following task is already on screen.
Example
/update-progress
- Picks the newest handoff,
skilleddocs/handoffs/2026-10-15-csv-export.md, for #31. git logfrom the handoff's base SHA shows 3 commits, already merged intomain; runsnpm testthere (green), matching the handoff.- Product code changed, so it runs
code-reviewon those commits. - Ticks #31 in
ROADMAP.mdand adds aCHANGELOG.mdentry, both already present in the repo; the README's feature list lacked CSV export, so it adds it. - Comments a summary on #31, moves the card to Done and closes the issue.
## Board statuslists a "streaming writer" deviation, so it callsconsult-planon it.- Runs
next, which suggests #28.
Related
- Input from
session-handoff; callscode-review,consult-plan,next. - Preloaded by the
verifieragent (which can skip step 3 withreview-done=yes).
Prereqs
gh, authenticated with theprojectOAuth scope: rungh auth refresh -s project -s read:projectonce (seekanban/README.md).consult-planandnextinstalled.- A
code-reviewskill for the review step.
Sample workflows
- Close one session, start the next
session-handoff → you → update-progress → next → you
Install just this one:./scripts/install-skills.sh --workflow close-the-loopor.\scripts\install-skills.ps1 -Workflow close-the-loop
Use cases & tips from the community