NAI OS
A script counts what can be counted; you answer what cannot. Nothing leaves the machine.
The odd one out on this map. Every other system here produces something about the world — a briefing, a tax pack, an option study. This one produces something about the repo itself: how many subagents, commands, skills, MCP servers, and guardrails it contains, merged with the five things a script cannot know. Its command file states the boundary in its own opening line: “You measure and draft; you NEVER submit — posting the result to the shared cohort space is the human's call, after they have reviewed exactly what leaves their machine.”
%%{init: {'theme':'neutral', 'flowchart':{'htmlLabels':false,'nodeSpacing':45,'rankSpacing':55}}}%%
flowchart TD
H["Human types /nai-cohort-census<br/>[participant name or alias]"] --> C
subgraph L1 ["1 - Orchestrator (.claude/commands)"]
C["/nai-cohort-census<br/>counts, then interviews,<br/>then merges into the template"]
end
C -->|"prefer"| S["scripts/cohort-census/census.py<br/>deterministic collector"]
C -->|"fallback, if no Python 3"| M["the same scan, by hand<br/>read-only"]
S --> R
M --> R
subgraph L2 ["2 - What gets counted (names and counts only)"]
R[".claude/agents · .claude/commands<br/>.cursor/skills · .mcp.json<br/>.claude/settings.json hooks + rules"]
end
C ==>|"5 questions, 'skip' always valid"| Q["Human interview<br/>real use · hours reclaimed · autonomy<br/>best build · best failure"]
R --> OUT
Q --> OUT
OUT["markdown block, shown in chat<br/>written to a file only if you name one"]
OUT -.->|"human posts it, or does not"| X["the cohort channel"]
classDef orch fill:#dcefe9,stroke:#0f6f63,stroke-width:2px
classDef tool fill:#f4f1ea,stroke:#8a7a5a
classDef human fill:#fdf3e0,stroke:#8a5a00,stroke-width:2px
classDef offrepo fill:#ece5f7,stroke:#6b3fa0,stroke-dasharray: 4 3
class C orch
class S,M,R tool
class H,Q,OUT human
class X offrepo
A census is only safe to share because of what it refuses to collect. The command file is
explicit: “Never include file contents, prompt text, or any data an agent has touched —
names and counts only. That boundary is what makes the census safe to share.” The optional
--no-names flag tightens it one notch further, to counts alone.
That is why the deterministic collector is preferred over asking the model to scan. A script that
counts .claude/agents/*.md cannot accidentally quote one. The hand-scan fallback exists
only for machines without Python 3, and carries the same read-only, names-and-counts-only
instruction — emitting the same markdown shape as
scripts/cohort-census/SUBMISSION-TEMPLATE.md.
Five questions, one short round, no interrogation — and skip is a valid answer to every one:
01 Preparation/tasks-eating-time.md?Question 3 is the one worth pausing on. It asks what was actually run, not what the systems are capable of — and for this repo the honest answer stays low, because the promise every system here holds is that it prepares and stops.
There is no checker here and no loop. Counts come from a deterministic script, so a second agent re-deriving them would add cost and no confidence; the interview answers are the human's own, and nothing in this repo is in a position to adversarially check whether someone reclaimed four hours a week or two. This is the fourth shape in four shapes of verification — no cross-check, chosen because a wrong answer here costs a slightly inaccurate line in a shared channel that the human reads before posting, not a mis-filed tax return.
Next/nai-document →