Name the Human

If this is wrong, whose name is on it?

One page, one row per thing that runs without you, ending in a name or a blank you can see.

Shipped with Episode 12

The scripts, schema and privacy statement on GitHub Download the skill, v0.1.0

The download is a tagged release, v0.1.0, of the repository linked above, github.com/snapsynapse/skill-name-the-human. Open it and read it before a model runs it. Whether that repository publishes its own assistant guide is stated in its README; this page makes no claim on its behalf.

The decision it forces

The question isn't "is it secure" or "is it compliant". It is narrower and harder to wriggle out of. Not a team. Not a role. Not whoever is on call. A person. A surface counts if something acts on its output without a human deciding first. A linter does not count, because a person reads the result and decides. A scheduled job whose output goes straight into a channel someone acts on does count.

Name the Human's filled panel: three things that act alone, site chat, nightly job and approval bot, with the name and blank boxes left empty for a human, and the stamp reads named, 0 of 3.

To run it, copy the prompt below into any model you already use, or use the script.

Decisions nobody is making any more

Most of us are running things we never individually approved. A scheduled workflow someone added two years ago. A cron that posts to a channel. A hook that fires on every commit. An agent with an API key. Each one was a reasonable idea at the time, and together they are a set of decisions nobody is making any more.

The fields

One page, nine columns, one row per surface. The left of the table is filled by a machine. The right is five columns a machine may never fill, and the tool emits null and moves on.

Column What goes in it Who fills it
Surface What the thing is machine
Unattended action What it does when nobody is watching machine
Who finds out, and how long Who notices if it goes wrong, and how long that takes machine
Reach How far the damage goes machine
Accountable The person whose name is on it you
Fallback Who stands in for them you
Can they stop it alone Whether that person can stop it without asking you
Last human check When a human last looked you
Verdict Named, turned off, or unresolved you

That emptiness is the deliverable. A register where every owner field is populated with a squad name tells you nothing. A page where four rows say nothing at all in the accountable column tells you exactly where to spend Thursday.

There is no worked example on this page. A filled inventory names real systems and real people, and that belongs inside the organisation that runs them, not on a public page.

The verdict rule

A team, a role or "whoever is on call" is a blank, not a name. Every verdict starts as unresolved, and only you change it. The page ends in a count: how many you reviewed, how many you named, how many you turned off. The last number is the one worth reporting.

Running it as a script

The method ships as a small read-only tool, and the two buttons above are the whole distribution. Plain Node 22, no dependencies to install, MIT licensed, and every line is readable in an afternoon. If you use Claude Code or Codex, the download is an agent skill your harness can load directly; if you do not, it is five scripts you can run by hand. There is also a copy-paste prompt further down for any model at all, which needs nothing installed.

The privacy posture matters more than usual here, because the thing reads dotfiles. It reads only. It writes exactly one file, the output path you name. It makes no network calls of any kind, in any script. It records the names of secrets it sees, such as EVAL_API_KEY, and never their values, and the test suite checks that a fixture value cannot reach the output. It refuses to run without directories you name out loud, because there is no safe default for a tool like this. Every file it opened is listed in its own output, so you can check exactly what it touched.

The repository carries the schema, the privacy statement in full, and a table of every path the harvest reads and why.

Run it with any model

No installation, no account, nothing to sign up for. Paste this into whatever chat window you already trust. It works in two modes: if the model can read your files it scans the directories you name, and if it cannot it interviews you instead. Same output either way.

Copy-paste prompt
Help me build an accountability inventory of the automated things I run. This is
not a security audit and not a compliance exercise. I am answering one question
per surface: if this thing is wrong, whose name is on it?

A surface counts if something acts on its output without a human deciding first.
A linter does not count. A scheduled job whose output someone reads and acts on
does count. When in doubt, include it and let me cut it.

MODE
If you can read my files, work in SCAN mode over the directories I name, and
only those. Do not walk my home directory or the current directory unless I name
it. Find candidates by looking for: scheduled workflows and cron entries, Vercel
crons, launch agents, harness hook files, registered MCP servers, webhooks and
callbacks, anything holding an API key, and any script invoked on a timer or by
another system. Read any CODEOWNERS file you find and record what it claims, as
evidence only. List every file you opened, list what you excluded and why, and
list anything you noticed but were not given as a proposal for me to add next
time.
If you cannot read files, work in INTERVIEW mode. Ask me what runs without me
touching it. Ask at most three questions at a time and keep going until I say
stop.

FOR EACH SURFACE, GIVE ME
- id: stable across runs, built from where it lives and what triggers it
- surface: what it is, in the words I would use to a colleague
- location: path, URL, or platform
- schedule: the trigger as written
- existing_owner_signal: what the repo or platform already claims about
  ownership. A CODEOWNERS entry, a catalog owner field, a registry record.
  Report it verbatim as evidence. It is not an answer to the accountable
  question and you must not promote it into one
- secret_names_referenced: the NAMES of any env var or secret the source
  references. Never a value
- unattended_action: what it does when nobody is watching. "Drafts" and "sends"
  are different surfaces; do not merge them
- detection.who_finds_out: who notices if the output is wrong. A person, a
  system, "nobody", or "not-determinable-from-source" when the source shows no
  detection path either way. The last one is a correct answer, not a failure,
  and it is different from "nobody"
- detection.lag: immediately, next-run, a-quarter, never, or
  not-determinable-from-source
- blast_radius: internal-draft, internal-decision, or external
- moves_personal_data: true or false, independent of blast radius
- stop_authority.how: the actual mechanism to stop it, or "unknown"
- basis: under every one of the judged fields above, a short quote of the line
  you judged it from

RULES YOU DO NOT BREAK
1. Leave accountable and fallback as null. Always. You may not name a person,
   suggest a person, or infer one from commit history, file ownership,
   CODEOWNERS, or anything else. Those fields are mine to fill and the point of
   this exercise is that I can see where they are empty.
2. Leave last_human_check, stop_authority.can_stop_alone and
   stop_authority.ever_tested as null. Same reason.
3. Do not invent surfaces. Only what you actually found or what I told you.
4. If I answer with a team, a role, or "whoever is on call", tell me that is a
   blank and move on. Do not record it.
5. Do not set any verdict. Leave every one as "unresolved".
6. Do not soften anything. If detection is "nobody" and "never", write that down
   plainly.
7. Do not guess. When the source does not show a detection path, write
   "not-determinable-from-source".

OUTPUT
Valid JSON matching the schema name-the-human/v0.3 at
https://raw.githubusercontent.com/snapsynapse/skill-name-the-human/v0.1.0/name-the-human/references/schema.json,
with a manifest of what you scanned, excluded and proposed, and a totals object
where reviewed is the count and the other three are zero and reviewed
respectively: named 0, killed 0, unnamed_still_running equal to reviewed. Then
render it as a markdown table, one row per surface, nine columns: surface,
unattended action, who finds out and how long, reach, accountable, fallback, can
they stop it alone, last human check, verdict. Leave the last five columns for
me.
Finish with the shortest list you can of the surfaces I should look at first,
ordered by blast radius and then by detection lag, and say why each one is on
that list.

I do not need to give you any credentials, customer names, or secrets to do
this, and you should not ask for any.

What to check in the answer

It may scan the directories you name, or interview you, and fill the left of the table: what the thing is, what it does unattended, who finds out, how far it reaches. It may report a CODEOWNERS entry as evidence, and it may write "not-determinable-from-source" when the source shows no detection path.

It may never fill the accountable or fallback columns, never name a person or infer one from commit history or file ownership, never fill the stop authority or last human check, and never set a verdict beyond unresolved. If the answer names an owner, or records a team as one, it broke the rules and the column is empty again. Check also that every file it says it opened is one you named.

The part that's not optional

Fill the five human columns yourself, alone, in one sitting. Do not delegate it, do not let a model draft it for you, and do not accept a team name in the accountable column. The moment a machine fills that field, the only load-bearing claim on the page is gone and you are back to a register that looks complete and means nothing.

Then act on the count. A surface with no name, no detection and wide reach is not a documentation problem. It is a thing to turn off.

For builders

The answer format

The schema isn't embedded on this page. It lives with the method in the skill-name-the-human repository on GitHub, at the version the prompt names, and the prompt links to the exact file.

Report back

Ran this? Tell us what happened. What broke and what you changed are the useful parts, because that's how the next version gets better.

Email your report

Or write to hey@sigsub.show with Takeaway: name-the-human as the subject. It's a plain email: no form, no account, nothing tracked. Nothing you send appears here unless you say yes, and you choose how you're named.

Rather talk it through in public? Comment on the Sunday issue on Substack, the same issue on LinkedIn or the episode on YouTube. Those threads live on their platforms, under their rules; nothing from them runs on this page.