Skip to content
Automation
Skill

/add-doctor-runbook

Adds a new runbook to an existing doctor and registers it in the runbook index and mode config. Use when extending a doctor's audit coverage with a new check, without re-scaffolding the entire doctor.

From plugin
meta-doctor
312 skills

Claude Code

$ npx -y skills add michellemayes/meta-doctor --skill add-doctor-runbook --agent claude-code

SKILL.md

add-doctor-runbook.SKILL.md
name: add-doctor-runbook
description: >
  Adds a new runbook to an existing doctor and registers it in the runbook
  index and mode config. Use when extending a doctor's audit coverage with a
  new check, without re-scaffolding the entire doctor.

Add Doctor Runbook

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.

---

What you need before starting

  • The doctor's project root (where `scaffold-doctor` deposited its output).
  • A clear sense of what the new runbook should audit, what signals it reads,

and what a violation looks like versus expected noise.

---

Flow

1. Locate the doctor's runbook directory and registration files

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.

2. Gather runbook requirements

Ask the user (or derive from context) three things:

1. **Purpose** — what aspect of app health does this runbook audit? One or two sentences. 2. **Signals and tools** — which data sources, queries, or MCP tools will the runbook call? (e.g., CloudWatch log groups, a Looker query, a DB table.) 3. **Healthy vs. violation** — what does a clean run look like, and what 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.

3. Author the runbook markdown

Create `skills/<kebab-case-name>.md` following the structure in [`../scaffold-doctor/references/writing-runbooks.md`](../scaffold-doctor/references/writing-runbooks.md).

Key requirements (enforced by the authoring checklist in that reference):

  • **Pull live config first.** Step 1 of the Inspect section always reads

thresholds from the app's config store. No hardcoded numbers anywhere.

  • **Parameterize every check.** Time windows, count thresholds, feature-flag

gates — all derived from the config you just read.

  • **Healthy runs emit zero findings.** If the runbook would fire on a normal

day, the threshold or classify logic is wrong.

  • **Separate violations from visibility.** Informational observations (counts,

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`](../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.

4. Register the runbook

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:**

  • **`daily`** — checks that catch live regressions or fast-moving metrics

(error rates, queue depth, send compliance, log anomalies).

  • **`weekly`** — checks where daily noise would exceed signal (cost trends,

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.

5. Remind the user

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.

---

Authoring checklist (condensed)

Full checklist is in [`../scaffold-doctor/references/writing-runbooks.md`](../scaffold-doctor/references/writing-runbooks.md).

  • [ ] Runbook file created at `skills/<kebab-case-name>.md`.
  • [ ] YAML frontmatter includes `name` (matches filename) and `description`.
  • [ ] Step 1 of Inspect reads live config — no hardcoded thresholds.
  • [ ] Every `emit_finding` call has a stable `signature` per the finding

contract.

  • [ ] `emit_finding` is called only for actionable violations, not for PASS

results or informational metrics.

  • [ ] Runbook imported and keyed in `skills/index.ts`.
  • [ ] Runbook added to `runbooksDaily` or `runbooksWeekly` in `config.ts`.
  • [ ] User reminded that a redeploy is required before the runbook runs.
Read more
@michellemayes
Ships withmeta-doctor

Most monitoring tells you something broke. A doctor opens the pull request that fixes it.

Stars on GitHub

Momentum

stars in total
31
Star history of michellemayes/meta-doctor on GitHub, a chart by star-history.com

Other skills on meta-doctor.

More skills from other plugins.

agent-builder

agent-builder

Load immediately after an Agent intent, before the first agent_builder_* call. Governs how you create, configure, test, and…

n8n13d209k
@n8n-io@n8n-ioInstall Skill
browser-use

browser-use

Direct browser control via CDP for web interaction: automation, scraping, testing, screenshots, and site/app work. Also covers…

@browser-use@browser-useInstall Skill
agent-browser

agent-browser

Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling…

@vercel-labs-2@vercel-labs-2Install Skill
add-anydoc

add-anydoc

Add local office-document-to-Markdown conversion to NanoClaw agent containers with the pinned Firecrawl AnyDoc CLI. Use when…

@nanocoai@nanocoaiInstall Skill

Questions about add-doctor-runbook.

Which coding agents can use add-doctor-runbook?
add-doctor-runbook installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.