Maintain an external state ledger for any multi-step task (3+ steps, multi-PR, anything spanning more than one turn or touching production). Triggered when you notice yourself re-deriving "where am I" with repeated gh/git/curl dumps, when a task crosses turns, or when the user asks "why are you stuck/lost". Prevents the "lost" failure mode: re-discovering state every turn instead of reading it.
Scanned 9/3/2026
Install to Claude Code
npx -y skills add IgorGanapolsky/ThumbGate --skill task-state-ledger --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Task State Ledger?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/igorganapolsky-task-state-ledger)More formats (shields.io, HTML) on the badges page.
---
name: task-state-ledger
description: >
Maintain an external state ledger for any multi-step task (3+ steps, multi-PR,
anything spanning more than one turn or touching production). Triggered when you
notice yourself re-deriving "where am I" with repeated gh/git/curl dumps, when a
task crosses turns, or when the user asks "why are you stuck/lost". Prevents the
"lost" failure mode: re-discovering state every turn instead of reading it.
---
# Task State Ledger — Stop Getting Lost
## The failure this prevents
You re-derive state every turn (where's the PR, what's on main, what's deployed)
with expensive `gh`/`git`/`curl` dumps. The dumps flood context, bury the signal,
and you lose the thread. This is the "constantly stuck and lost" failure. The fix
is mechanical: **write state down once, update it as you go, read it instead of
re-deriving it.** (Anthropic context-engineering: external structured note-taking
is one of the three core long-horizon techniques, alongside compaction and
sub-agents — see https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents)
## The rule
For any task with 3+ steps or that crosses a turn, the FIRST action is to create
or open a ledger at `.thumbgate/implementation-notes.md` or a task-specific
gitignored `.thumbgate/implementation-notes/<date>-<task>.md`. Do not write
operator scratchpads under tracked `.claude/implementation-notes/`; those are
private working notes, not product documentation. The ledger is the single
source of truth.
## Ledger format (keep it short — it's a dashboard, not a diary)
```markdown
# <task> — <date>
## Goal (one sentence)
<the actual end state that means "done">
## Current step
<the ONE thing in flight right now>
## State (verified facts only — each with how/when verified)
- main HEAD: <sha> (git rev-parse origin/main @ HH:MM)
- deployed buildSha: <sha> (curl /health @ HH:MM)
- PR #NNNN: <state>/<mergeState> (gh pr view @ HH:MM)
## Steps (sequential — one in_progress at a time)
- [x] step that's done — evidence
- [ ] step in flight ← YOU ARE HERE
- [ ] next step
- [ ] ...
## Decisions & corrections
- <decision> because <why> (mark VERIFIED / UNVERIFIED)
- WRONG: <thing I claimed that was false> → corrected to <truth> @ HH:MM
## Blockers / open questions for the CEO
- <thing only the user can unblock>
```
## Protocol
1. **Open the ledger before doing anything else** on a multi-step task. If it
exists, read it instead of re-deriving state.
2. **Update "Current step" + "State" after each verification**, not at the end.
When you run the verifying command, write its result + timestamp into the ledger.
3. **One step `in_progress` at a time.** If you're tempted to start a second, stop
— see the `scope-discipline` skill.
4. **Log corrections inline.** When "are you sure?" reveals you were wrong, write
the WRONG→corrected line. This stops you re-making the same wrong claim.
5. **Read the ledger at the start of every turn** on a continuing task. That is
how you stop being "lost": the answer to "where am I" is a file read, not 10
tool calls.
## Anti-patterns
| Pattern | Fix |
|---|---|
| 10 `gh`/`git` calls to recover "where am I" | Read the ledger; it has verified state + timestamps |
| State lives only in your head across turns | State lives in the file; head is cache |
| "I'll remember to update notes at the end" | Update after each step — there may be no clean end |
| Re-running a verify you already ran this session | Check the ledger's State block first |
## Exit criteria
The ledger's Goal is met, every step is `[x]` with evidence, and the State block's
verified facts confirm it (e.g. deployed buildSha == main HEAD). Then — and only
then — say "done", once, with the evidence inline.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!