Verify whether something is already resolved/decided before you assert or act on its status, and record resolutions/decisions so sibling agents don't re-surface them. Use before reporting a bug, proposing a feature, saying "X isn't done", or acting on a premise like "the PR isn't merged" — and whenever you resolve, decide, or change something notable. Not for code/PR status (use git/gh); for everything without a system of record (infra, marketing, site, ops, tasks).
Scanned 9/1/2026
Install to Claude Code
npx -y skills add shadok-ai/shadok-ai --skill ledger-skill --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Ledger Skill?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/shadok-ai-ledger-skill)More formats (shields.io, HTML) on the badges page.
---
name: shadok-ledger
description: Verify whether something is already resolved/decided before you assert or act on its status, and record resolutions/decisions so sibling agents don't re-surface them. Use before reporting a bug, proposing a feature, saying "X isn't done", or acting on a premise like "the PR isn't merged" — and whenever you resolve, decide, or change something notable. Not for code/PR status (use git/gh); for everything without a system of record (infra, marketing, site, ops, tasks).
---
# shadok-ledger
A shared **state table** across this instance's agents: **one current status per
entity** (a bug, a task, a campaign, an extraction job, a decision…). It exists
because agents run siloed and keep re-raising things another agent already
handled. It is a *table*, not a log: re-recording an entity **supersedes** its
row, so it stays small.
**Source of truth first.** For code and pull requests, the truth is `git` / `gh`
— check those, not this ledger. Use the ledger for everything that has **no
system of record**: infra changes, marketing actions, site activity, ops, tasks.
## Before you assert or act on a status
Run `check` and let it steer you:
```
node ~/.claude/skills/shadok-ledger/ledger.mjs check "<topic or entity>"
```
- a row says **resolved / done** → do NOT re-raise or re-act; report it as handled.
- **nothing recorded** → treat as **UNKNOWN**, not as "not done": ask the human
or hedge ("from memory, still to do — tell me if it is already handled"),
don't assert.
- a **stale** row (many days old) → hedge and confirm before acting.
This fires on status-dependent claims (a bug being open, a PR unmerged, a task
undone, a campaign live). A **durable lesson/constraint** ("don't buy the
opposite-intent keyword") is not a status — use it freely, don't gate it.
## When you resolve, decide, or change something notable
Record it so the next agent doesn't redo it:
```
node ~/.claude/skills/shadok-ledger/ledger.mjs record \
--entity "<name>" --status <resolved|open|in-progress|decided> \
--note "<one line>" --source "<PR#, session, who>"
```
Re-recording the same entity **supersedes** its row (no duplicates). Log facts —
resolutions, decisions, state changes, launched actions — never chatter.
Every row has a short **id** (shown as `[id]` in `check`/`list` and in the ledger
block pushed ahead of your messages). To update a row you already saw, quote its
id instead of retyping the name — no risk of a typo forking a second row:
```
node ~/.claude/skills/shadok-ledger/ledger.mjs record \
--id <id> --status resolved --note "<one line>"
```
## To consult the whole table
```
node ~/.claude/skills/shadok-ledger/ledger.mjs list
```

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!