jotbook-review — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited jotbook-review (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
The user is reviewing the jot list to decide which subjects still feel worth inking into a long-form entry — or worth penciling first as a provisional draft before committing. Your job is to surface and recommend, not to delete or merge unilaterally. Every destructive action needs explicit confirmation.
Read .claude/jotbook.local.md if present. From its frontmatter, extract:
| field | default | meaning |
|---|---|---|
jots_dir | docs/jotbook/_jots/ | where staged jots live |
pencils_dir | docs/jotbook/_pencils/ | where pencils live — checked to flag jots that already have one |
If jots_dir doesn't exist or contains no jots, report that in one line and stop.
List every *.md file under jots_dir (excluding any README.md). For each, read the file and extract:
YYYY-MM-DD- prefix and .md suffix)staged: date<pencils_dir>/<slug>.md or <pencils_dir>/<slug>.html exists. If so, note "has pencil from <drafted-date>" (and "revised <date>" if the pencil's frontmatter has a revised: field).Sort by age, oldest first.
Group jots that look topically related. Signals:
Files: lineNote these as suggested merges, not forced ones.
Output a compact, scannable summary. Don't over-format — the user will be making decisions from this view. Suggested shape:
Jots (N total):
▸ 2026-05-12 cache-eviction-policy (10d) [has pencil from 2026-05-18]
How the LRU cache evicts on hot keys.
Files: src/cache/lru.ts, src/cache/metrics.ts
▸ 2026-05-15 feature-flag-rollout (7d)
How the gradual rollout schedule advances cohorts.
▸ 2026-05-15 feature-flag-telemetry (7d)
How flag-evaluation events flow to analytics.
Suggested consolidations:
• feature-flag-rollout + feature-flag-telemetry → both touch the flag
subsystem and could share an entry; consider merging into
"feature-flag-system".
Recommendations:
• cache-eviction-policy: pencil already exists — consider running
`/jot review pencils` to evaluate it instead of re-deciding from
the jot alone.
• feature-flag-system (merged): plausible candidate for pencil if
you want to see the long-form before committing.
• drop none unless the user has lost interest in any.When a jot has a pencil, prefer recommending the user review the pencil (which has more material to judge from) rather than re-deciding from the jot alone.
Lead with the inventory; put your recommendations at the end. Keep the whole thing scannable — short lines, no walls of prose.
Ask the user, in plain language, what to do. Don't present a numbered menu — let them respond in free form. Every action surfaced here is acted on directly in step 5 — ink and pencil dispatch into their respective skills inside this same flow; no follow-up slash command is required. Mention all six available actions so the user knows the surface. Example:
Decisions? You can say things like "drop the feature-flag pair", "merge X and Y into Z", "tweak cache-eviction to focus on hot keys", "ink cache-eviction-policy", "pencil feature-flag-system" (draft first, decide later), or "keep everything for now".
Apply structural actions (drop / merge / tweak) first, then dispatch ink and pencil actions. For each decided action:
Files: lines; delete the merged-in originals. Date the merged jot today.Files: line if the new framing implicates different sources. This stays lightweight — apply the change in one pass, do not enter a back-and-forth discussion. If the directive is genuinely ambiguous, ask exactly one clarifying question, then apply and move on.jotbook-ink on that slug. The ink skill takes it from there (including its own pencil-promotion question if a pencil already exists for the slug).--html) — leave the jot file in place and hand off to jotbook-pencil on that slug, forwarding --html if the user specified it.If the user marked more than one jot for ink and/or pencil in a single decision turn, ask once before dispatching:
"You marked <N> jots for ink/pencil. Checkpoint between each (so you can redirect partway), or batch through them in order?"
Default to checkpoint if the user doesn't pick. Either way, dispatch them in the order the user named them.
After all actions complete, give a one-line summary:
Dropped N, merged M into K, tweaked T, kept P, inked: <list>, penciled: <list>.Omit the trailing fields when their lists are empty.
jotbook-stage for that.jotbook-ink or jotbook-pencil.jotbook-ink or jotbook-pencil without an explicit user mark. The user's free-form reply IS the mark — once they've said "ink X" or "pencil Y", dispatch directly; do not ask them to re-issue the request as a slash command./jot review pencils so they can judge from the long form.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.