Tiers & approval gates
Every command declares a tier in its frontmatter. Tiers decide whether a command runs directly, asks once, or opens a full gate with alternatives.
The three tiers
LIGHT
<5k tokensRuns directly. No gate. Safe reads, status checks, small utilities.
Examples:
- /hub:status
- /hub:help
- /hub:ledger
- /hub:preview
MEDIUM
~10k–60kOne-line preview + y/n/tweak prompt. Single-agent dispatch.
Examples:
- /hub:debug
- /hub:plan
- /hub:brainstorm
- /hub:test generate
HEAVY
~40k–250kFull gate: planned agents, skills, token estimate, MoSCoW scope, ≥2 alternatives.
Examples:
- /hub:create
- /hub:enhance
- /hub:deploy
- /hub:orchestrate
What the HEAVY gate looks like
Before any HEAVY command runs, the model shows a block like this and waits for approval:
HEAVY — /hub:create "Next.js SaaS with Stripe"
Planned agents:
- hub:project-planner (plan.md, task graph)
- hub:backend-specialist (API routes, webhooks)
- hub:frontend-specialist (landing, dashboard, pricing)
- hub:database-architect (schema for users + subscriptions)
- hub:devops-engineer (Vercel + Stripe CLI config)
Skills loaded:
nextjs-react-expert, tailwind-patterns, api-patterns,
database-design, deployment-procedures, clean-code
Token estimate: ~140k (P50: ~110k, P95: ~190k)
Session budget: OK (6.2M / 10M)
MoSCoW scope:
MUST — landing, checkout, webhook, dashboard skeleton
SHOULD — pricing tiers, password reset
COULD — email confirmations, audit log
WON'T — SSO, team invites (left for /hub:enhance later)
Lighter alternatives:
A) /hub:enhance — if you already have a Next.js base
B) /hub:plan only — ship the plan first, build tomorrow
Proceed? [y/n/tweak]Bypassing gates
Pass --yes or -y as the first argument after the command. Usage still logs to .hub/usage.json.
/hub:create -y "Next.js SaaS with Stripe"Where tiers come from
Each command file (commands/<name>.md) declares its tier in the frontmatter. The approval-gate skill reads that field, renders the correct gate, and appends a row to the usage log. You can hand-override by editing the frontmatter, but the declared tier should reflect real observed spend.
The /hub:ledger by-tiercommand shows observed token spend per tier in your project. If a command's observed tier is consistently different from declared, that's a contribution worth sending upstream.