NAI OS

/nai-cohort-census — the repo census

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
No subagents at all. This is the second command on the map with no dispatch wave — /nai-issue-check is the other — and for the same reason: there is no judgment to delegate. Counting files is deterministic, so it belongs in a script rather than a prompt; the parts that are judgment are asked of the human directly rather than guessed by an agent. The dashed purple box is off this machine entirely: the command produces the block and stops there.

The privacy boundary is the whole design

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.

What the human is asked

Five questions, one short round, no interrogation — and skip is a valid answer to every one:

  1. Which agent systems are in real recurring use — not demos?
  2. Roughly how many hours/week reclaimed, against the tasks-eating-time list in 01 Preparation/tasks-eating-time.md?
  3. Highest autonomy level actually run — read-only, drafts-for-review, acts-with-approval, or acts-unattended?
  4. Best build so far, one sentence?
  5. Best failure or lesson, one sentence?

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.

Verification shape: none, by design

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