add-doctor-runbook — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited add-doctor-runbook (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.
Extends an existing doctor (scaffolded by scaffold-doctor) with one new runbook — the internal markdown audit definition that drives a single health check in the doctor's agentic loop.
scaffold-doctor deposited its output).and what a violation looks like versus expected noise.
Inside the scaffolded doctor, runbooks live in skills/. The two registration files are:
| File | Purpose |
|---|---|
skills/index.ts | Runbook index — imports every runbook and exports a bundledSkills record. |
config.ts | Mode config — assigns each runbook to runbooksDaily or runbooksWeekly. |
Read both files before writing anything. Confirm the existing runbook names and the mode lists so you can slot the new runbook in correctly.
Ask the user (or derive from context) three things:
sentences.
runbook call? (e.g., CloudWatch log groups, a Looker query, a DB table.)
specific conditions should trigger emit_finding?
Do not proceed to authoring until all three are clear. If any is ambiguous, ask a targeted question — a vague boundary between healthy and violation is the most common source of miscalibrated runbooks.
Create skills/<kebab-case-name>.md following the structure in ../scaffold-doctor/references/writing-runbooks.md.
Key requirements (enforced by the authoring checklist in that reference):
thresholds from the app's config store. No hardcoded numbers anywhere.
gates — all derived from the config you just read.
day, the threshold or classify logic is wrong.
rates, scorecards) go in the narrative; only actionable violations reach emit_finding.
For every emit_finding call, assign a stable signature using the format for the finding's category, per ../scaffold-doctor/references/finding-contract.md:
| Category | Signature format |
|---|---|
| Code bug with stack frame | {ExceptionClass}:{relativeFilePath}:{lineNumber} |
| Code bug without stack frame | {ExceptionClass}:unknown:{md5_12chars_of_normalized_message} |
| Audit finding | {runbook}:{category}:{bucketDate} (ISO week / date / month) |
Unstable signatures cause duplicate PRs and tickets. When in doubt, err toward broader bucketing — false dedups are cheaper than duplicate work items.
Two edits required — both must be made before the doctor is redeployed.
`skills/index.ts` — import the new file and add it to bundledSkills:
import myRunbook from "./my-runbook.md";
export const bundledSkills: Record<RunbookName, string> = {
// ... existing runbooks ...
"my-runbook": myRunbook,
};The key must exactly match the name field in the runbook's YAML frontmatter.
`config.ts` — assign the runbook to a mode:
runbooksDaily: [
"existing-runbook",
"my-runbook", // add here for daily checks
],
runbooksWeekly: [
"aws-cost-analysis", // or here for weekly checks
],Choose the mode:
(error rates, queue depth, send compliance, log anomalies).
coverage drift, long-horizon metrics).
A runbook not in the index never runs. A runbook not assigned to a mode is imported but never scheduled.
Tell the user: the runbook is inert until the doctor is redeployed. Point them to the doctor's deploy instructions (typically sam deploy or the doctor's CI pipeline). The new runbook will not execute in the next scheduled audit cycle until the updated build is live.
Full checklist is in ../scaffold-doctor/references/writing-runbooks.md.
skills/<kebab-case-name>.md.name (matches filename) and description.emit_finding call has a stable signature per the findingcontract.
emit_finding is called only for actionable violations, not for PASSresults or informational metrics.
skills/index.ts.runbooksDaily or runbooksWeekly in config.ts.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.