Notion-as-source-of-truth dispatch board for running your work like an AI agency. One Tasks database is the source of truth; tasks flow Suggestion through Discussion, To-Do, In Progress, and Done with subtasks, recurring cadences, dependencies, and template subtrees. Batch execution fans approved To-Do rows out to parallel agents with per-task model selection. Use when capturing chat to Notion, running the To-Do queue, suggesting, approving, or discussing tasks, or coordinating multi-task batches. Trigger with "/agency-os" subcommands or natural-language variants ("add a suggestion: …", "let's discuss X", "run the queue").
70
86%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
Notion-as-source-of-truth dispatch board. One Tasks database, one Hub page, one
page per Corpus, one page each for General Guidance and Resources. The skill
mutates Notion via the Notion MCP (mcp__*__notion-* tools); only
references/notion-pointers.json is committed to git.
Skill name decision: the skill is named agency-os (matching the repo). All
commands are /agency-os <cmd>. This is the single plugin entry point; there
is no agency-os/notion sub-namespace. If you embed this plugin alongside
others, prefix commands with agency-os to avoid collisions.
agency-os turns a single Notion database into a multi-status dispatch board for AI work. The model is intentionally narrow:
run fans approved To-Do rows out to parallel agents. Each task carries
its own model selection (Haiku for cheap fan-out, Sonnet for default,
Opus for hard reasoning) and respects declared dependencies.The skill is stateless on disk — the only committed artifact is
references/notion-pointers.json (database/page IDs). All runtime state lives
in Notion.
For the full architecture (status flow, sync protocol, workspace structure,
pointer/cache format), see references/architecture.md.
npx -y @notionhq/notion-mcp-server (declare in .mcp.json)NOTION_TOKEN) with read+write access to your
workspace. Add .env to .gitignore — never commit the token.references/architecture.md § "Workspace structure" for the schema). The
/agency-os init command can scaffold this for you.scripts/query-tasks.py helper.First-time setup:
ccpi install agency-os
# then in Claude Code:
/agency-os init --harness=basic --haiku=cost-tier --sonnet=default --opus=hard-reasoningThe skill is a CLI surface over Notion. Three usage patterns:
Direct command invocation — /agency-os <cmd> [args]. See
references/commands.md for the full reference
of 19 commands (init, scaffold, suggest, discuss, log,
add-subtask, approve, start, refresh, run, done, kill,
next, status, list, show, update, move, plus launch alias).
Natural-language driving — the skill translates conversational chat into
the corresponding command. Examples in
references/natural-language.md.
Batch execution — /agency-os run [--go] fans the entire To-Do queue
out to parallel agents with per-task model selection. See ## Examples
below for the canonical flow.
Status flow is enforced — you cannot skip a stage. Every command performs a
sync preflight to ensure your local view of Notion is current (see
references/architecture.md § "Sync — preflight on every command").
When drafting any user-facing copy (READMEs, blog posts, launch surfaces),
apply the positioning brief at
references/positioning.md before writing.
Every command returns to chat with:
✅ <action> or ⚠️ <reason> (one line, scannable)Batch run additionally emits:
The skill fails closed on five well-defined cases (full details in
references/architecture.md § "Status flow — the dedup gate"):
| Condition | Behavior |
|---|---|
| Notion API auth fails | Halt, print "NOTION_TOKEN missing or invalid", exit 1 |
| Database/page ID drift (pointers stale) | Halt, print "Run /agency-os refresh", exit 1 |
Status-flow violation (e.g. approve on a Suggestion) | Halt with the required prerequisite step quoted |
Dependency cycle detected during run | Halt, list the cycle, exit 1 |
| Task missing required model selection | Halt, print "Run /agency-os update <id> --model <tier>" |
The skill never silently corrects state in Notion — every fix is an explicit command the operator must run.
Capture a chat insight as a Suggestion:
User: add a suggestion: refactor the auth flow to use the new token cache
Skill: → /agency-os suggest "refactor the auth flow to use the new token cache"
✅ Created Suggestion #t-2026-05-23-001 in corpus "platform"
Next: /agency-os discuss t-2026-05-23-001Approve and run a batch:
User: approve t-2026-05-23-{001..003} then run the queue
Skill: ✅ Approved 3 tasks → To-Do
/agency-os run --go
→ fanning to 3 parallel agents...
✅ Done: 2 | ⚠️ Blocked on deps: 1 | Total spend: ~$0.04More examples and the full command catalog are in
references/commands.md.
references/architecture.md — status flow, sync protocol, workspace schemareferences/commands.md — full CLI reference (19 commands)references/natural-language.md — chat-to-command translation tablereferences/positioning.md — canonical brief for user-facing copyreferences/general-guidance.md — shared operating principles applied to every taskreferences/notion-pointers.json — pointer file scaffold (database/page IDs)references/task-page-template.md — Notion page template for new tasksreferences/corpus-template.md — Notion page template for a Corpusreferences/config-template.json — default per-task model routingscripts/query-tasks.py — optional Python helper for offline introspection88dcf65
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.