scratchboard AGENTS.md

Repository instructions for scratchboard, a tool that turns Markdown tickets into a self-contained, read-only kanban board—a visual board of work cards—without runtime dependencies.

In plain words
What is it for?
Use them when modifying scratchboard, checking its dependency rule, validating ticket scanning, or running its tests and tooling.
Why use it?
They document strict constraints such as no installed dependencies, supported Node versions, and how to verify scanner changes.

Instructions file for CodexOpenCode

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add instructions/darecstowell/scratchboard/agents-md
Clone the repo
git clone --depth 1 https://github.com/darecstowell/scratchboard

Made for: Codex, OpenCode.

Per session 2,279 This file is loaded in full into every session.
When invoked 2,279 The same file — it is already loaded in full.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5 $0.02279 $0.02279
Opus 5 $0.01140 $0.01140
Sonnet 5 $0.00456 $0.00456
Haiku 4.5 $0.00228 $0.00228

Measured 2d ago against content hash af100ca5360b, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

scratchboard AGENTS.md 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 2d 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.

AGENTS.md · 170 lines

How it starts

The opening of the file, as written. The whole thing — 170 lines — stays where its author put it; the contents beside it link to each section on GitHub.

scratchboard

npx scratchboard renders the markdown tickets already in a repo as a kanban board, baked into one self-contained HTML file. Read-only by choice: tickets are agent-driven, so the agent moves the card.

The rules that bite

Zero dependencies, and the rule is the install graph of npx scratchboard. node:test and node:assert only. The rule is the product, because an npx run that installs nothing is why anyone tries this. A dependency that runs only during a bake breaks it too, because npx installs it either way. npm test needs nothing installed, and a line under dependencies or devDependencies in package.json is the tell that the rule broke. tools/guard.mjs holds the line.

The lint and type tooling is the one hole, and it is written down rather than patched. npx fetches those tools for the run at a pinned version, in CI and locally alike, and they are never declared. The pin does not reach their own transitive dependencies, so the tooling runs unpinned code in CI. It never reaches a user's install or a published board, which is why it is stated here instead of fixed here. The lockfile ticket owns the fix.

Node 18 is the floor. A version check failing on first contact is a bad first impression, so run the suite on 18 as well as current before calling a change done.

The payload is the contract. scan.mjs emits it, the browser renders it, and src/ui/ reads nothing else. Adding a field is a change to both sides. src/ui/payload.mjs is the one reader: normalizePayload holds every default and every type check, so board.js gets a payload it can trust. test/ui-payload.test.mjs calls it, and the bake concatenates it ahead of the board script, the same way it does the renderer.

A pure helper leaves board.js, because a test can call it. Nothing here runs a DOM, so a helper that stays inside the board script can only be tested by a regular expression over its own source. src/ui/board-render.mjs holds the data in and string out half of the view: the link resolver, the group header, the columns, the cards, and the downstream walk. It touches no document and no window, and every piece of state it needs comes in as a parameter. test/ui-board-render.test.mjs calls it. board.js keeps the event wiring, and the bake concatenates the module ahead of it. The three modules share one scope in the baked page, so a name two of them declare is a syntax error in the browser rather than a red test.

Read the full file on GitHub · 170 lines

Changes

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.

  1. 2d ago First seen · 170 lines · 2,279 tokens per session scan A af100ca5360b

Subscribe to this mod's changes

scratchboard AGENTS.md is an instructions file published in the GitHub repository darecstowell/scratchboard (6 stars, last pushed 3d ago), licensed MIT. It adds 2,279 tokens to every session, about $0.0114 per session on Opus 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-08-31.