Mission init
Bootstrap an orchestrated mission: create a dated folder under docs/missions/ with GOAL.md, features.json, PROGRESS.md, and the first WORKER_TASK from the repo's templates. MUST be used whenever the user says "start a mission", "new goal", "bootstrap the loop", "let's run the orchestration on X", or asks to begin orchestrated work of any kind. Also use to re-scope an existing mission. Produces files mechanically from docs/missions/templates/ — never freestyle the formats. Runs fleet-inventory at GATE 0 and always shows the seat→model map for human confirm/swap. Default chair is Opus (Cursor intake plans briefly; Opus weighs and orchestrates) unless the human names otherwise.From its SKILL.md
npx -y skills add hashorva/purrfect-harness --skill mission-initAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
5.2 KB, ~1.2k tokens by cl100k_base, as published. Nobody here has run it
Mission init (orchestrator only)
Step 0 — Preconditions
- No active mission: run
bash scripts/active-mission.sh. If it prints a path, STOP and ask the human whether to finish (status: done), keep waiting on a gate, or re-scope. Never start a secondin-progress/awaiting-gatemission. - Also refuse leftover root
GOAL.md/features.json(pre-2.0 layout) — move or delete them first. - Read AGENTS.md (hard rules constrain every feature) and skim docs/ filenames so features reference real docs.
- Load
docs/missions/MODEL_ROUTING.mdonce for this GATE 0 decision.
Chair resolution (before writing files)
Default brain = Opus. Exceptions (human must say, or session already is):
| Signal | Chair |
|---|---|
| Already on Opus (Claude Code or Cursor UI) | This session |
| “You are the orchestrator” / “no handoff” | Current model |
| “No orchestration — just execute” | STOP mission-init; implement in chat |
| “Orchestrator = Fable” | Fable (named only — never auto-escalate) |
| “Orchestrator = Codex highest” / Sol | Inventory brain_codex / family sol |
Cursor intake: if a brief plan exists in a Cursor (often Grok) chat, Opus reads it, weighs whether the split looks balanced, then continues mission-init. Do not treat the intake chat as the orchestrator unless named above.
Step 0b — Local CLI inventory (mandatory)
command -v claude; command -v codex; command -v agent; command -v agy
bash scripts/fleet-inventory.sh
Always present the printed seat→model map at GATE 0. Human may remap any seat (economy ↔ premium, or brain) before approval. Copy approved binds into GOAL Fleet. Missing a CLI → strike that row; do not invent invocations.
Step 1 — Extract the mission (interview only if needed)
From the user's paragraph (and any Cursor intake brief), determine: outcome,
forcing function, out-of-scope, human gates, chair (above), fleet tier
(economy | premium | mixed). Slug: YYYYMMDD-short-kebab-name. At most 3
clarifying questions. Do not write files until the outcome is unambiguous.
Step 2 — Write the mission folder FROM TEMPLATES
SLUG="{{YYYYMMDD-short-name}}"
MISSION="docs/missions/$SLUG"
mkdir -p "$MISSION/tasks"
cp docs/missions/templates/GOAL.template.md "$MISSION/GOAL.md"
cp docs/missions/templates/features.template.json "$MISSION/features.json"
cp docs/missions/templates/PROGRESS.template.md "$MISSION/PROGRESS.md"
cp docs/missions/templates/WORKER_TASK.template.md "$MISSION/tasks/T-001.md"
Fill placeholders. Set status: draft. Paste inventory binds into Fleet.
Validate: python3 -c "import json; json.load(open('$MISSION/features.json'))".
Only create tasks/T-001.md at init (later tasks after reviews).
Step 3 — GATE 0 (mandatory stop)
Brain CLI proof (mandatory unless human names current-chat chair):
bash scripts/fleet-inventory.sh
bash scripts/spawn-brain.sh "$MISSION" mission-init # real claude --model opus
# If human said "you are the orchestrator" / already on Opus in this chat:
# bash scripts/spawn-brain.sh "$MISSION" waiver --reason "already on Opus in Cursor"
bash scripts/verify-mission.sh "$MISSION" # must pass before greenlight
PROGRESS prose is not proof. Greenlight = .tasks/receipts/brain-*.json with
exit: 0 and cli: claude (or documented waiver).
Present:
- Feature list (id + description + priority)
- Full fleet inventory map (seat / CLI / model / family) — confirm or swap
- Resolved brain + concrete model + brain receipt path
- T-001 worker + tier (premium Grok vs economy Composer for Cursor, etc.)
- Assumptions
DO NOT dispatch until the human approves the features and the bind map
and verify-mission.sh is green for brain.
On approval:
- Append Human — GATE 0 PROGRESS entry (include approved binds + receipt path).
- Set GOAL
status: approved→in-progresson first spawn. - Follow
.agents/skills/dispatch-worker/SKILL.mdwithscripts/spawn-worker.sh … --tier … --feature F00X.
Never
- Never invent file formats — templates only.
- Never write features AGENTS.md forbids.
- Never auto-escalate to Fable.
- Never put mission files at repo root.
- Never skip showing the inventory map at GATE 0.
- Never flip
passes: trueorstatus: donewithoutbash scripts/verify-mission.shgreen. - Never claim Claude/Cursor CLI ran without a matching
.tasks/receipts/*.json. - Never implement allow-listed worker files in the orchestrator chat when spawn-worker is available.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.