Use when a repeated process lives in one person's head, breaks when they are away, gets re-explained to every new hire, or produces inconsistent results — and needs writing down once so anyone or any agent can run it the same way. Also for auditing and rewriting an SOP that is stale, ignored or missing its branches. NOT capturing a meeting's decisions and action items (that is `meeting-notes`), NOT running a one-time project plan with milestones (that is `project-ops`).
npx skills add https://github.com/ericrisco/rsc-harness --skill sop-builder
You keep re-explaining the same process. Write it down once, correctly, so it
runs without you. That is the whole job: take a workflow living in one person's
head, a Slack thread, or a screen recording, and turn it into a **standard
operating procedure** — a document another human or agent can follow to get the
same result every time.
An SOP is not a meeting note and not a project plan. Hold the line:
meeting-notes. That records a moment; you record a *recurring task*.project-ops. A project finishes; an SOP repeats forever.technical-writing. That writes for a customer; you write for the person inside the org who runs the routine.compliance owns the regulatory gating. You write the operational document; defer the sign-off framework to them.automation-flows. You document; they automate.people-ops. You write the *reusable* procedure they'll follow, not their personal tracker.The payoff is real but conditional: standardizing a process can cut errors by
up to ~90% — only when the SOP is clear and easy to follow. A correct SOP
nobody can read changes nothing. Usability is the whole game.
This is the spine. Run it in order; do not skip the test step.
name the trigger and the output, you're scoping a department, not an SOP.
transcript. Capture how it actually runs, not how it's supposed to.
break when the owner is out? These are what a linear draft will miss.
parallel, and each wants a different shape.
a question, the SOP has a gap — fix the document, not the person.
dead on arrival.
Steps 3 and 6 are the ones teams skip and the reason most SOPs fail in the
wild — a happy-path document breaks the moment reality forks.
An SOP and a work instruction are different documents. Per ISO 9001:2015 a
procedure is "a specified way to carry out an activity." Don't bloat an SOP with
keystroke detail — that's a separate work instruction, and one SOP links to
several of them.
| Altitude | Answers | Example line | Belongs in |
| --- | --- | --- | --- |
| SOP | *who* does *what* and *when* (the roadmap) | "The editor approves the draft before it's scheduled." | The SOP body |
| Work instruction | *how* one operator does one task (the GPS) | "Click Settings → Schedule → pick 09:00, hit Confirm." | A linked WI, not inline |
Rule of thumb: if removing a line wouldn't change *who* is accountable or *what*
the next decision is, it's probably a keystroke — link it out or cut it. A
reader who already knows the tool should not have to scroll past click-by-click
detail to find the one decision that matters.
Match format to the shape of the work, not to preference. A mismatched format is
a top adoption killer — people abandon an SOP that fights how the task actually
moves.
| Flow shape | Use | Why |
| --- | --- | --- |
| Strictly linear, every time the same | Numbered step-by-step | The order *is* the procedure; numbers carry it. |
| Many parallel pieces, done by experienced people | Checklist | They know *how*; they need to not forget a piece, not be walked through it. |
| Has decision points / forks / "it depends" | Flowchart or decision table | A numbered list hides branches inside prose and readers miss them. |
If the process has even one real "if X then Y" fork, do not force it into a
flat numbered list. The fork is exactly the part that breaks under pressure, and
a flat list buries it.
Garbage in, garbage SOP. Capture how the work *actually* runs.
From a recording (the fast path). A team hand-writing one SOP spends ~3–5
hours; recording the task once (10–15 min) and extracting steps from the
video/transcript is reported 10–20x faster. Treat the recording as the single
source of truth, then prune to the SOP. Crucially: **do not invent steps the
source never shows.** If the transcript skips a step, flag the gap — don't
backfill it from imagination.
From an interview, surface the hidden branches with probes the owner won't
volunteer:
branch-finder; it surfaces the tacit knowledge that lives only in their head.
People who actually do the work must be in the capture loop. An SOP written
*about* people instead of *with* them is the classic reason it goes unfollowed.
The full 10–12 question interview script is in
references/sop-skeleton.md.
Four sections are load-bearing and appear in essentially every credible
template: purpose, scope, responsibilities, procedure. Everything else is
supporting structure. Mark sections mandatory vs optional-by-size:
| Section | Status | Note |
| --- | --- | --- |
| Title + ID/version | Mandatory | One process, one document. |
| Purpose | Mandatory | Why this exists, in one sentence. |
| Scope | Mandatory | What's in, what's out, when it triggers. |
| Owner (the "A" in RACI) | Mandatory | Exactly one accountable person. |
| Trigger | Mandatory | The event that starts the procedure. |
| Steps | Mandatory | The numbered/checklist/branched body. |
| Decision points | If it branches | The forks, written explicitly. |
| Quality check | Mandatory | How you know the output is correct. |
| Output | Mandatory | The defined thing produced. |
| Exceptions / escalation | If it can fail | What to do when it goes wrong. |
| RACI matrix | If >1 role | Only when the process spans roles. |
| Change log | Mandatory | Version, date, author, one-line what-changed. |
| Next-review date | Mandatory | See "Keep it alive". |
A RACI clarifies ownership when more than one role touches the process:
Responsible does it, Accountable owns the outcome (exactly one), Consulted gives
input, Informed is kept in the loop. A solo task does not need a matrix —
don't add ceremony the process doesn't carry. The full copy-paste template with
per-field guidance lives in
references/sop-skeleton.md.
SOPs go unfollowed because of the document, not the people: lack of clarity,
cognitive overload from length and jargon, and staleness. Under pressure people
default to memory over a wall of text. So write short, active, and concrete.
think they're done.
Bad → Good:
Bad: The newsletter should be reviewed and then it gets scheduled, making
sure that everything is fine before it goes out.
Good: 1. Editor reviews the draft against the checklist in §4.
2. Editor schedules the approved draft for 09:00 Tuesday.
3. Editor confirms the send shows in the queue.
The bad version hides three actions, names no actor, and uses passive voice that
lets everyone assume someone else did the check.
Branching logic, exceptions/escalations, and the change log are the three
sections SOPs most often omit, and the reason they fail in production. Write the
fork explicitly; don't bury it in prose.
Step 4 — Check the invoice total.
- If total ≤ €1,000 → approve and proceed to Step 5.
- If total > €1,000 → route to Finance lead for sign-off, then Step 5.
- If the PO number is missing → STOP. Escalate to <owner>; do not approve.
Every exception needs a named escalation target and a clear stop condition. "If
unsure, ask someone" is not an escalation — name the role and the trigger. You
don't need a sprawling flowchart for three forks; inline if X then Y lines are
enough until the branch count makes a decision table or flowchart clearer (see
"Pick the format").
An SOP without an owner and a review date is already dead. Every SOP carries:
it, nobody trusts which version is current.
a process or tool change, after an incident, or after an audit.
Treat an SOP unreviewed for 18+ months as unreliable — it likely describes a
process that no longer exists. When the review fires, re-run the capture loop on
the diff, not the whole document.
For regulated quality systems (GxP, formal approval workflows, audit-trail
sign-off), write the operational content here and hand the approval/gating
framework to compliance. Once the SOP is stable and
you want the steps executed automatically, hand it to
automation-flows.
| Anti-pattern | Why it fails | Do instead |
| --- | --- | --- |
| Keystroke-level SOP ("click Settings, then…") | Bloats the doc; rots the day the UI changes | Keep SOP at who/what/when; link work instructions |
| Flat numbered list for a branching process | Hides the forks that break under pressure | Use a decision table / flowchart for branches |
| Happy-path only, no exceptions | Breaks the first time reality forks | Write if X then Y + a named escalation |
| No owner, no review date | Goes stale silently, nobody trusts it | Name one accountable owner + a next-review date |
| Written *about* the doer, not *with* them | Misses tacit steps; gets ignored | Interview/record the person who runs it |
| Inventing steps the recording never showed | Ships a procedure that doesn't match reality | Flag gaps; capture the missing step, don't guess |
| Wall of passive-voice prose | Cognitive overload; people fall back to memory | One action per step, active voice, named actor |
| RACI on a solo task | Ceremony the process doesn't carry | Add a matrix only when >1 role touches it |
Pull the full fill-in template, the 10–12 question capture interview script, the
format-selection decision table, and a complete worked Bad→Good example SOP from
references/sop-skeleton.md. Keep this body lean;
reach for the template when you're actually drafting.
Take ericrisco/sop-builder from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.