BB ceo-todo
Maintains one canonical markdown file as a CEO's single source of truth for everything they're on the hook for, and runs the Getting Things Done loop over it — capture, clarify, organize, reflect, engage. Turns pasted emails, meeting notes, and asks into clarified next-actions with an owner and a priority, tracks status with a fixed vocabulary ([OPEN]/[DONE]/[STALE]/[WAITING]), ages open items to [STALE] after 7 days, flags [WAITING] items past their reply-by date, archives done work without ever deleting it, and never auto-closes an item the CEO added by hand. Every mutating run is snapshot-backed and gated by a bundled deterministic validator so a commitment is never lost, corrupted, or silently changed. Use this skill whenever the user says "run my to-do", "update my todo doc", "what am I on the hook for", "GTD", "getting things done", "capture this", "triage my inbox into my todos", "weekly review", "single source of truth", "CEO to-do", "/ceo-todo", or points at a markdown to-do file and asks to keep it current. Based on the single-doc system Brian Halligan shared publicly. For the automated Gmail + Slack daily version, see the ceo-todo-daily agent.
Maintains one canonical markdown file as a CEO's single source of truth for everything they're on the hook for, and runs the Getting Things Done loop over it…
As a process B 67/100 · Nearly there — weak spots: result and completion, inputs and preconditions
How to improve
- Shorten the description to 1024 characters.
- Your own cases (evals/evals.json, 4–6 real requests with expected answers): the full check would then run those instead of a model-drafted suite.
- A spec.yaml with trigger phrases and assertions — a behaviour contract for CI; `skilltest init` writes a template.
Guard findings · 0
✓ No critical or high findings
Files scanned: 6. Evidence is masked. Grey chips explain why severity was lowered.
Against the Agent Skills spec
- error
description-longdescription is 1172 chars, limit 1024
Process rating: all ten parameters 67/100
- 0Result and completion. Does not say what the result is
- 0Inputs and preconditions. Does not say what the process needs to start
- 55Failures and branches. 1 branches
- 70When it triggers. States when to use, but not when not to
- 100Tools and files. No external tools needed
- 100Steps. 39 steps
- 100Consistency. Name and required fields are in place
- 100Execution cost. Instruction body is 2296 tokens
- 100Running it twice. Mutating operations check current state
- 100Progress reporting. Reports progress
- medium Safety rules and hard prohibitions inside a skill: they belong in the system prompt, here they protect nothing
- low 10 top-level sections: this looks like several domains in one skill
Everything here is measured from the skill text rather than judged by a model, so the numbers are checkable. A parameter weighs more when it is a more common reason for the process to stall.
Quality signals
- +4Description does not say when NOT to use the skill (false activations)
- +3Description length 1172: 120–800 characters recommended
- +3Output format is not stated: the model decides each time
- -5TODO / placeholder text left in the skill
- +1No license
- +2Single-language instructions
- +5Description quotes 10 example trigger phrases
- +4Structure: 12 headings
- +3Step-by-step instructions: 39 items
- +4Has examples (5 code blocks)
- +4Reference files are cited in the instructions (1 of 1)
Quality base 70; lint remarks subtract, signals add up to 100. Result: 60.