jotbook-pencil — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited jotbook-pencil (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
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.
You're producing the long-form version of a jot (or merged jots) for later evaluation. A pencil is a draft: it lives in pencils_dir, the source jot(s) stay in jots_dir, and no cross-links into existing entries are written. Promotion to a finished entry happens later, via /jot review pencils.
Read .claude/jotbook.local.md if present. From the frontmatter, extract:
| field | default | meaning |
|---|---|---|
jots_dir | docs/jotbook/_jots/ | where staged jots live |
pencils_dir | docs/jotbook/_pencils/ | where pencils are written |
output_format | markdown | global output mode — informs cross-link style but does NOT change a pencil's format unless --html is passed |
template_path | (none) | path to an HTML template — required when --html is passed |
The body of the settings file (everything after the closing ---) is optional house-style guidance — voice, tone, conventions, terminology. If present, treat it as authoritative for stylistic decisions.
If pencils_dir does not exist, create it — but first briefly note to the user what you're doing and why, e.g. "Creating `<pencils_dir>` to hold pencil drafts (first time penciling in this project, or the directory was renamed in settings)." This avoids a context-free mkdir prompt.
--html flag (anywhere in the arguments).Files: line.--html flag in the arguments and remove it from the slug list.--html was set, verify template_path is set in settings and points to a real file. If not, stop and tell the user:"I can't pencil this in HTML —template_pathisn't set (or points to a missing file). Either run/jotbook-template(or/jot template) to set up the template first, or re-run as/jot pencil <slug>(without--html) for a Markdown pencil."
This is a lighter-weight version of the same gate the ink skill enforces — a missing template is recoverable here because Markdown is always available as a fallback.
jots_dir. For each argument that matches an existing jot, use it directly.jotbook-stage (infer the one-line description and Files: line from the most recent explainer, or from the subject phrase the user gave), write the pointer file under jots_dir, narrate it in one line (Jotted: <slug>), then continue this procedure with that freshly-staged jot as the source. Don't pause for confirmation — staging is cheap and the pencil is the thing the user asked for.Files: line.YYYY-MM-DD- date prefix).Check whether <pencils_dir>/<slug>.md or <pencils_dir>/<slug>.html already exists. If so, ask the user:
"A pencil for<slug>already exists (drafted<date>). Overwrite, abort, or revise (apply notes to the existing pencil)?"
If they pick revise, jump to the Revise sub-procedure at the end of this skill. If overwrite, continue normally. If abort, stop.
Files: (across all source jots).Before writing, decide and briefly share with the user:
Tell the user the planned section list before writing the file, so they can redirect early if the shape is off.
Cross-links into other entries in `entries_dir` are NOT written for pencils. That side-effect fires at ink time, not now. If a related entry is worth mentioning, do it inline in prose without making a clickable link.
Determine the output path:
<pencils_dir>/<slug>.<ext>Where <ext> is md (default — even when output_format: obsidian or output_format: html) or html (only when --html was passed). The slug has no date prefix.
#### Markdown pencil (default)
Write a Markdown file with pencil frontmatter:
---
status: pencil
drafted: YYYY-MM-DD
from_jots:
- YYYY-MM-DD-source-jot-slug
sources:
- path/to/file_one.ext
- path/to/file_two.ext
---
# <Title>
<one or two sentence standfirst>
## <Section 1>
...drafted: is today's date (use currentDate from context if available; otherwise the system date).from_jots: lists each source jot's full filename (with YYYY-MM-DD- prefix), one per line.sources: lists the deduplicated union of every source jot's Files: line.No trailing *Sources:* line in the body — that's an ink-time concern. The frontmatter carries the provenance here.
#### HTML pencil (--html only)
Read the template at template_path and replace any {{PLACEHOLDER}} tokens using the planned title, standfirst, sections, etc. Match the template's conventions (numbering schemes, masthead fields, colophon) — do not invent your own. Never paste CSS inline if the template links a stylesheet.
Leave the template's {{NAV}} and {{TOC}} tokens empty in a pencil: pencils live one directory deeper than entries and aren't in the index, so a back-to-index link would be a dangling path, and the Contents TOC is an inked-entry nicety. Strip the template's guiding HTML comments (section pattern, delete-if-unused hints, token notes) from the rendered pencil — but keep the pencil's own metadata comment described below.
Pencil metadata travels in an HTML comment at the very top of the file, so it doesn't render in browsers but survives round-trips:
<!--
status: pencil
drafted: YYYY-MM-DD
from_jots:
- YYYY-MM-DD-source-jot-slug
sources:
- path/to/file_one.ext
-->
<!DOCTYPE html>
...Do NOT edit any file in entries_dir. Cross-link creation is an ink-time side-effect — pencils never write to other entries.
Do NOT delete any file in jots_dir. Source jots are preserved until the pencil resolves (via promotion to ink, or explicit drop in /jot review pencils).
Tell the user, in one short paragraph:
jots_dir./jot review pencils when they're ready to evaluate it.Example:
Penciledcache-eviction-policy.mdatdocs/jotbook/_pencils/. Source jot stayed in place. Run/jot review pencilsto ink, revise, or drop it.
When the user picks revise (either because a pencil already exists and they want to apply notes, or because the pencil-review flow handed off here), the procedure is:
<pencils_dir>/<slug>.<ext>.drafted: date. Set or update revised: YYYY-MM-DD to today./jot pencil <slug> with the opposite flag and an overwrite.The revise sub-procedure does NOT re-read source files unless the user's notes specifically point to them. Trust the existing pencil as the starting point.
entries_dir from this skill.--html. Do not infer from output_format.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.