| name | cos-review |
| description | Diagnose how far along your AI Chief of Staff ("Robin") actually is — a 25-check, 5-layer maturity review across Identity, Sources, Skills, Autonomy, and Output that returns a rank (Intern → Junior Assistant → Trained CoS → Senior CoS → Hand of the King), your weakest layer, and the ONE highest-leverage next move. Evidence-based: it inspects your actual system (identity files, memory, MCP/connectors, skills, scheduled loops) instead of asking you to self-report, then asks only for the behavioral checks it can't detect. Auto-detects Claude Code vs Codex. Use for "/cos-review", "what's my CoS rank", "how good is my Robin", "grade my Chief of Staff", "where is my AI weakest". Modes: `setup` (first full scan + guided fix), bare (bi-weekly re-score vs last time), `status` (30-sec health check of MCPs + skills). |
| license | MIT |
cos-review
You are running the Chief-of-Staff maturity diagnostic for the AI Personal OS
course (Workshop 5, capability rung 8). Your job: give the user an honest,
evidence-based rank for their Robin, name their weakest layer, and hand them
ONE next action — not a lecture, not a to-do list of 25 things.
This is a reckoning, in the instructor's own framing: "you said Robin isn't
bringing enough value yet — let's measure honestly WHY." Lead with the honest
number. Encouragement comes after the number, not instead of it.
Read-only. In every mode you only inspect and report. You never write to the
user's config, never install anything, never "fix" a gap without being asked. The
one file you may write is the saved score (Phase 4), and only with a yes.
The full 25-check rubric, the per-check detection recipes (where to look on disk /
which tool to probe), and the S3 rung mapping live in reference.md — read it
before scoring.
Step 0 — Detect platform + pick the mode (don't ask)
You're running inside Claude Code or Codex — you already know which. Use it to
resolve paths: CC → ~/.claude/, project CLAUDE.md, claude CLI; Codex →
~/.codex/, project AGENTS.md, codex CLI. Below, <ROOT> = CLAUDE.md (CC)
or AGENTS.md (Codex).
Pick the mode from the user's argument:
setup (or first-ever run — no saved score found) → full scan, all 25
checks, score, weakest layer, guided ONE fix. This is the Workshop-5 payoff.
- bare
/cos-review → the bi-weekly review: re-score, compare to the last
saved score, celebrate what moved, suggest the single next action.
status → skip scoring. Just probe every MCP/connector and list skills;
report what's live vs dead in ~30 seconds. Stop after that.
Match the user's language for all conversation (files/labels stay English).
Step 1 — Scan the system (evidence first, ask second)
Work through the five layers in reference.md, in order L1 → L5. For each of the
25 checks, try to detect it before asking:
- L1 Identity & memory — look for
<ROOT>, SOUL.md, user-profile.md (global
and project), any project-level identity file, and cross-session memory
(MEMORY.md / memory/ / managed memory). Detectable on disk.
- L2 Sources (perception) — read the MCP/connector config (
~/.claude.json /
.mcp.json / ~/.codex/config.toml) and the enabled connectors. Map to: email,
a two-way chat channel (S3 = Bot-API Telegram/Slack via /give-robin-a-voice,
not a Telegram user-MCP), web/browser, calendar, one social/research source.
- L3 Procedures (skills) — enumerate installed skills (
~/.claude/skills/,
plugins, ~/.codex/). Check for a journaling skill, an extraction skill
(/atomize), a self-built skill, a decision skill (/council), and whether the
user can name 5+ commands.
- L4 Autonomy — look for a scheduled loop (a Routine / Codex Automation /
LaunchAgent / cron), a deployed listener (
~/.robin/, a Railway worker), any
evidence of sub-agent use, "something runs before you wake", and hooks
(settings.json hooks — note the caveat: hooks don't run in the CC desktop
app, only from the terminal; don't penalize a terminal user who simply uses the
desktop app).
- L5 Output (delivers results) — mostly behavioral, not detectable —
ask these. Has Robin drafted+sent real work content? Produced a briefing you
acted on? Handled a task end-to-end? Is there an outcome that wouldn't exist
without him? Do you use him daily?
Rules: batch what you detect, then ask only what you couldn't (≤8 questions,
L5-heavy — the five L5 checks are almost always asks, plus any L3 "do you actually
use it?" confirms). Every "yes" needs evidence — a file path, a live tool, or the
user's concrete confirmation. A hopeful "I think so" is a no for scoring; say so
kindly. Presence ≠ use: a course-bundle skill file on disk is not a point unless
the user actually uses it (see L3 anti-inflation rule in reference.md). Skip
sensitive content.
Step 2 — Score + rank
1 point per satisfied check, 25 max. Report the rank from reference.md:
| Score | Rank |
|---|
| 0–7 | INTERN |
| 8–14 | JUNIOR ASSISTANT |
| 15–19 | TRAINED CoS |
| 20–23 | SENIOR CoS |
| 24–25 | HAND OF THE KING |
Show a compact per-layer readout: L1 ●●●●○ L2 ●●○○○ … with the total and the
rank. Be honest and specific — most of a 5-week cohort lands Junior/Trained, and
that is on schedule. Don't inflate.
Step 3 — Weakest layer = the ONE move (blind-spot rule)
Count the "no"s per layer. The layer with the most gaps is the highest-leverage
investment. Fix bottom-up: L1 → L2 → L3 → L4 → L5 — a lower layer gates the
ones above it. State the instructor's line:
"A CoS with great procedures but no sources is a skilled assistant locked in a
windowless room. A CoS with initiative but no identity acts in the wrong
direction."
Then give exactly one concrete next action — the single cheapest check that
would move the weakest (lowest-numbered, most-gapped) layer. Name the skill or
step that does it (e.g. "L2 is your gap — wire your calendar; that's one connector
and it unlocks half of L5"). Not a list. One.
The value-gap answer, said plainly: if the user feels Robin "isn't useful yet,"
it is almost always a low L2 (no source that matters) or low L5 (never delivers
end-to-end) — show them that in their own numbers.
Step 4 — Save the score (ask) so next time can compare
Offer to append the result to ./cos-rank.md (or ~/.robin/cos-rank.md): date,
score, per-layer breakdown, the ONE action chosen. In bare mode, read the previous
entry first and lead with the delta ("22 → 24 since W4 — L4 filled in; you're
Senior CoS now"). Only write with a yes.
Notes for you (the assistant running this)
- Honest first, warm second. The number is the point; don't soften it away.
This diagnostic pays the instructor's promise to open the finale on "why isn't
Robin bringing value yet."
- Evidence over self-report. The S2 version was a Y/N quiz; the S3 upgrade is
that you actually look. Detect what you can; ask only the rest.
- Co-equal. Every check works on Claude Code and Codex — resolve the right
paths from Step 0. Bot-API Telegram/Slack (not a user-MCP) is the S3 channel.
- Don't fix mid-diagnostic. If the user says "just fix L2 now," finish the rank
first, then hand off — offer
/give-robin-a-voice, /atomize, /init-robin, or
the relevant step. This skill measures; the others build.
- Power-user variant: re-map the rubric to their own stack and push the top end
(24/25 = Hand of the King) — but keep the checks verifiable; a self-graded 25 that
can't show a single outcome (Q24) is a Trained CoS in denial.