docent-explain — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited docent-explain (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 are running the entire docent cascade against a subject the user just named: survey → treatment → spec → tts → clips → render → open. This is the flagship skill; the other docent skills are sub-steps of this one. Reach for those only when the user explicitly wants to pause between stages.
/docent-explain <subject> [--mode pr|ar|ex] [--subsystem X] [--pr N] [--id X] [--scale S] [--no-open]
<subject> — a repo path, a github URL, a single file, a wiki directory,a blog URL, or an essay. The first positional is the subject.
--mode — pr (PR review), ar (architecture review), ex(explainer). Inferred from the subject when omitted.
--subsystem X — for ar, scope to one subsystem.--pr N — for pr, the pull-request number.--id X — override the auto-derived film id.--scale S — render scale. Default 1. Pass 0.5 for fast turnarounds.--no-open — render without opening the result in the system player.agent CLI (claude or codex), bun, and ffmpeg are on PATH. If anything obvious is missing, suggest /docent-doctor and stop. Do not run doctor here implicitly — it has its own skill.
survey does one thing — fetch the URL you give it and report what came back. It does **not** know that arXiv's /abs/ is a stub or that a paper's full text lives at /html/ or /pdf/`. That intelligence is yours — you are the agent. Walk the surfaces deliberately:
landing page (arxiv.org/abs/, a paper's homepage, a wiki article's "main" page), assume there is a richer surface and try it first. Common patterns worth trying in order:
arxiv.org/abs/<id> → try arxiv.org/html/<id> (rendered LaTeX,~40k chars) then arxiv.org/pdf/<id> (PDF via pdftotext).
biorxiv.org/content/<doi> → try the same URL with .fullappended.
that URL.
docent survey <url> --mode ex --id <slug>The fetcher writes analysis/<id>.source.md and logs a character count. If the count is below ~5 000 chars and you have an alternative surface, stop the in-progress survey, swap the URL, and re-run. Surveying a stub returns a film about a stub.
https://…/whatever.pdf directly; theengine pipes it through pdftotext. No special invocation.
don't paper over it — say so in the survey explicitly and narrow the film's claim to what the text actually supports.
When the survey lands at analysis/<id>.md, surface the source's final URL + character count + the load-bearing finding before moving on to treatment.
register the film renders in — a {preset, intent, rationale} block that the spec author will pin to films/<id>.json.
bun run docent style recommend <id>The recommender reads analysis/<id>.md and prints a rules-based suggestion (engineering / editorial / paper / executive / analytical / neutral) plus a one-line rationale. For most subjects, take the recommendation; override only when you can name a specific survey finding the recommender missed. Surface the choice to the user in one line ("rendering in paper — peer-reviewed arXiv preprint with load-bearing figure/table; rationale: ...") before moving on.
The spec compilation step (next) reads this block off the survey's "Style commitment" section and pins it as the spec's style: {preset, intent, rationale} field. The depth-review judge will fail the style-committed dimension if the spec ships with the empty default.
3b. Commit to a scene set. Same shape as the style commitment, one layer down — the cognitive moves the film will make.
bun run docent scene-fit recommend <id>The recommender reads the survey and prints the top scene types with rationales tying each to a specific survey finding. Explainer films vary the most by subject — a passage for prose, a causal-loop for a feedback dynamic, a landscape for a trade-off plane, a venn for a set-intersection argument, a mechanism for a working motion, an epigraph + objection for a contested topic. If the recommender returns warningOnDefault: true, the survey collapsed to the suspected rut (frame/structure/compare/tension/recap) — re-read the survey and ask whether the load-bearing idea is genuinely about components × trade-offs or about something more specific. The fix is almost always in the survey (a missing finding), not the spec. Pin the chosen scene set in the survey's "Scene-set commitment" section.
bun packages/agent/scripts/treatment.ts <id>This writes a plain-language outline to treatments/<id>.md — the human-readable scoping brief. In the one-shot flow you do not pause for review; you immediately compile it to a spec. Print the treatment's Angle line so the user sees the through-line you committed to.
bun packages/agent/scripts/treatment.ts <id> --to-spec
bun packages/agent/scripts/flywheel.ts <id> --max-rounds 2The first compiles the treatment into films/<id>.json. The second is mandatory, not on the failure path — review runs the adversarial judge → revise → re-judge loop, bounded to two rounds. On the corpus we measured it lifts a first-draft spec by ~7 points on a 30-point scale — the difference between a film that passes the depth contract and one that does not. Surface the verdict score and the weakest dimension to the user before rendering. If review exhausts the round budget without passing, stop and ask — do not ship a film the judge rejected.
*Surface the Big Idea to the user before rendering.* For explainer films (ex mode), the spec carries a big-idea scene immediately before the recap — that single sentence is what the film commits to. Read it out of films/<id>.json (the statement field of the big-idea scene) and print it back to the user verbatim. If the user wants to edit the takeaway, they edit it now — TTS is the next stage and the sentence is the most expensive thing to change after that. If no big-idea scene is present in an explainer spec, review will have failed the contract; do not proceed.
bun run docent build <id> --scale 1Print the resulting 🎬 out/<id>.mp4 line verbatim.
--no-open). On macOS: open out/<id>.mp4/docent-build <id>),residual risk, or the single weak point named in section 5/7 of the survey.
Default is one-shot, all the way through. Pause and ask the user instead when:
candidate subsystems, an unresolved triage). Surface the fork; let the user steer the treatment before compiling to a spec.
review exhausts its round budget without passing the depth contract.Surface the latest verdict and the failing dimensions; do not silently ship a film the judge rejected.
minutes at scale 1 — ask whether the user wants --scale 0.5 for a faster first pass.
Remotion). Suggest /docent-doctor and stop. Do not paper over a missing dep by skipping a stage.
survey and treatment shell out to claudeor codex. If neither is on PATH, the cascade cannot author a spec; suggest the agent CLI install path printed by doctor.
problem, not a render problem. Drop back to /docent-survey <subject> and ask the user to steer the analysis directly.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.