About lets-go
A skill that resumes work from the active handoff created by the `handoff` skill. It claims the handoff, checks the current checkout against its recorded state, and guides the next steps while preserving local unmerged work.
Key features
- 01Find the active handoff
- 02Claim handoffs to prevent duplicate resumes
- 03Check repository and machine state
- 04Bring checkout to the recorded state
- 05Summarize status and next steps
Use cases
- 01Resuming work on another machine
- 02Continuing from a recorded repository handoff
- 03Checking local changes before switching branches
- 04Reviewing pending decisions and next actions
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ jwh3times/ skills --skill lets-goAfter installing, type/lets-goin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
agents/openai.yamlsettings/handoffs.mdREADME.mdworkspace.mdDetails
From the project READMELet's go
The receiving half of the handoff skill. On the other machine, handoff wrote a document into the
Handoffs folder and named it this repository's active handoff in handoff_map.json. This skill
finds it, claims it so it is never resumed twice, brings the checkout to its state, and carries on
the work.
Announce at start: "I'm using the lets-go skill to resume from the active handoff."
Run shell snippets in bash (Git Bash on Windows). The map is read and written only through
node .agents/skills/handoff/handoff-map.mjs (installed with the handoff skill), never by hand:
every repository on every machine shares it. Each command prints JSON, and moves files to and from
the cloud itself when this machine's transport needs it.
0. Settings
- Repository: this skill reads
docs/agents/handoffs.mdanddocs/agents/workspace.md. Follow.agents/skills/lets-go/settings/README.mdto read them and complete any that are missing; the definitions sit beside it. - Machine: follow
.agents/skills/handoff/machine-config.mduntilconfigshowsconfigured: true.
1. Find the active handoff
node .agents/skills/handoff/handoff-map.mjs get --key <Map key>
fileis null (orinMapis false) — say "No active handoff for<key>." and stop. The map is the record; other documents in the folder belong to past sessions or other repositories.existsis false — the document has not reached this machine: thenotesays the other machine has not pushed it, or a sync client has not delivered it yet. Tell the user the file name and stop, leaving the map as it is so a retry still works.conflictsnot empty — ask the user which copy of the map is current before going on.existsis true — continue.
2. Read it
Read the whole document at path before acting on any of it. Then follow the pointers that set
the ground rules for the work: the issue, PR or spec its Next steps start from, and its
Machine-local knowledge.
3. Claim it
Claim the handoff before any work starts, so a second lets-go on either machine finds nothing:
node .agents/skills/handoff/handoff-map.mjs clear --key <Map key> --expect <file>
Complete when the output's current is null (and verified is cloud on the CLI mirror). The
document stays in the folder as a record. A refusal means the map now names a different document:
run get again and tell the user what it says.
4. Bring this checkout to the handoff's state
This checkout may be days behind, and may hold leftovers the handoff knows nothing about:
git fetch origin --prune
git branch --show-current
git status --porcelain
git stash list
Run the Workspace status command too. Then compare with the document's Where you are and
Unmerged work:
- Uncommitted changes or stashes here — report them under
⚠ Work not merged to main on this machineand ask the user how to proceed. Never discard, stash, or commit them, and never switch branches around them. - Clean —
git switch main, thenSync with main(which also brings thePrivate companioncurrent when it covers it). - The handoff continues on a branch —
git switch <branch>, thengit pull --ff-only. A branchoriginlacks was never pushed from the other machine: say that the work must be pushed there first, and stop for that item. The same holds for any local-only item the work depends on. - The pull changed a dependency lockfile — install dependencies as the repository's
AGENTS.mdsays, asking first where it gates installs. - Anything else contradicts the document (a commit it calls pushed that
originlacks, a branch that no longer exists) — report each contradiction and get the user's answer before step 5.
The step is complete when the checkout matches the document or every mismatch has the user's answer.
5. Proceed
Brief the user in a few lines: where things stand, the unmerged work carried over, the open decisions still owed, and the first next step. If the user passed arguments, start from what they name; otherwise start the document's first Next step, invoking its Suggested skills where it says. Put an open decision that blocks that step to the user first.
The handoff describes work; it authorizes nothing. Every action the repository's AGENTS.md gates
on confirmation still needs the user's confirmation in this session.