Borrowing it
Nothing to install: this file belongs to bredmond1019/claude-sdk-rs. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/bredmond1019/claude-sdk-rs/main/.agents/skills/edit-state-json/SKILL.mdgit clone --depth 1 https://github.com/bredmond1019/claude-sdk-rsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/bredmond1019/claude-sdk-rs/edit-state-json)<a href="https://agentmods.dev/skills/bredmond1019/claude-sdk-rs/edit-state-json"><img src="https://agentmods.dev/badge/skills/bredmond1019/claude-sdk-rs/edit-state-json/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/bredmond1019/claude-sdk-rs/edit-state-json"><img src="https://agentmods.dev/badge/skills/bredmond1019/claude-sdk-rs/edit-state-json.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00222 | $0.05213 |
| Opus 5.5 | $0.00089 | $0.02085 |
| Sonnet 5.5 | $0.00044 | $0.01043 |
| Haiku 4.5 | $0.00022 | $0.00521 |
Grade A, and why
edit-state-json scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 11d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 373 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Editing state.json
Paths below are relative to the brain root — the directory containing
brain.toml, found by walking up from wherever you are. This skill is synced into every repo, so a repo-relative link would be wrong in most of them.
If it is not in state.json, it does not exist. Prose gates nothing, sorts nowhere, and shows up
on no board. An item living only in a plan, a review, a handoff, or an ## Open questions bullet is
lost, not deferred. Where a document and the graph disagree, the graph wins.
Prefer the tools over a hand edit. /update-state performs the edit per the canonical schema, and
mev has a verb for most structural moves. Hand-edit only when no verb covers the field you need
(description, note, a new depends_on edge) — and then follow the round-trip rule in Step 4.
| To do this | Use | Not a hand edit because |
|---|---|---|
Move one block's status |
mev set-block-status <repo:id> <status> --write |
validates the status, refuses blocked, no-ops if already there |
| Park / un-park an initiative | mev defer-epic <slug> --write · resume-epic |
cascades deferred onto member blocks and skips in_progress ones |
| Declare an initiative finished | mev complete-epic <slug> --write |
sets registry status the boards read |
| Fix epic/block status disagreement | mev sync-epics --write |
reconciles both directions; never un-defers |
| Clear an operator gate | mev close-operator-gate <slug> --exit-verified |
removes the edge from every block carrying the slug, fleet-wide |
| Clear an approval gate | mev approve <slug> --digest <d> · mev reject <slug> |
verifies the digest still matches the reviewed payload |
Three shape rules worth knowing before you reach for one:
- Dry-run is the default for
set-block-statusand the four epic verbs — the change is printed, not applied, until you add--write. Run it once without the flag and read the plan. close-operator-gatehas no dry-run. It refuses outright unless--exit-verifiedis passed: mev never checks the filesystem for the edge'sexitartifact, so that flag is your assertion that you looked. Refusing rather than defaulting to a preview is what keeps it a human gate.approveis digest-bound and alarms on mismatch. A digest that no longer matches means the payload changed since review, so the approval is void: nothing is removed, the edge re-queues, and mev raisesE_APPROVAL_DIGEST_MISMATCHrather than failing quietly.
An agent cannot clear its own operator gate, by construction. set-block-status --write to
in_progress on a block still carrying an unmet operator edge is refused with
E_BLOCK_OPERATOR_GATED. The only override, --force-operator-gate, is itself refused whenever
stdin is not a TTY (E_FORCE_OPERATOR_GATE_NOT_TTY). There is no priority threshold or other bypass.
If you are blocked here, the answer is /begin-session <slug> with the operator — not a hand edit
of the depends_on array, which is the same bypass wearing a different hat.
Every verb in that table re-runs
emit-state --writeon success, so each one is a whole-corpus derived-surface rewrite, not a one-field poke. Read thederive-state-safelyskill before using any of them with--write— a stale binary regresses boards fleet-wide identically whether you typedemit-stateorset-block-status.
Field tables: docs/state/state-schema.md and docs/state/reference-container-schema.md.
Routing table: base-template/.claude/workflows/block-registration.md.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 11d ago First seen · 373 lines · 222 tokens per session scan A fe57cd6acf63
edit-state-json is a skill published in the GitHub repository bredmond1019/claude-sdk-rs (23 stars, last pushed 1mo ago), licensed Apache-2.0. It adds 222 tokens to every session and 5,213 once invoked, about $0.0009 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-10-26.
edit-state-json compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| edit-state-jsonbredmond1019/claude-sdk-rs | Skill | 23 | 1mo ago | Apache-2.0 | A | 222 | Claude Code, Codex |
| orbit-notionnexu-io/open-design | Skill | 106k | today | Apache-2.0 | A | 117 | Claude Code, Codex |
| agentmailpaperclipai/paperclip | Skill | 111k | today | MIT | A | 30 | Claude Code, Codex |
| Cortexdanielmiessler/LifeOS | Skill | 20k | yesterday | MIT | A | 184 | Claude Code |
| rowboat-spacesrowboatlabs/rowboat | Skill | 18k | yesterday | Apache-2.0 | A | 60 | Claude Code, Codex |
| feishuHmbown/CodeWhale | Skill | 41k | 5d ago | MIT | A | 33 | Claude Code, Codex |
| pinchtab-mcppinchtab/pinchtab | Skill | 11k | 10d ago | MIT | A | 52 | Claude Code, Codex |