Skip to content
Back to skills

Ledger Skill

ASecurity

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).

  • 10 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 1, 2026
ai-agentsnodegit

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned September 12, 2026

npx -y skills add shadok-ai/shadok-ai --skill ledger-skill --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ledger Skill?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ledger Skill
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/shadok-ai-ledger-skill/badge)](https://www.skillsdirectory.com/skills/shadok-ai-ledger-skill)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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, in your own words>"
```

**Ask in plain language — don't try to guess how a sibling worded the row.** The
search ranks rows by word overlap, so `check "claude launcher stub spawn
failure"` finds `claude-launcher-stub-breaks-spawns`. Describing the topic in a
few words beats one lucky keyword; extra words that turn out to be absent cost
you nothing.

- 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.
- **related rows — they may NOT answer your question** → exactly what it says:
  the search found no row that answers you, only rows sharing some words. You
  are still in the UNKNOWN case above. Read them as leads (they may point at the
  right topic under another name), never as a status to 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
```

Files in this skill

  • SKILL.md2.7 KB
  • ledger-core.mjs3.8 KB
  • ledger.mjs4.1 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.