| name | prism-planner |
| description | Use this skill at the START of every orchestrator run — before defender, before any other skill. Read the current repository state (docs/clinical-roadmap.md, docs/clinical-pivot-2026-04-21.md, CLAUDE.md section 4, the last 10 findings/*.md entries by mtime, the last 24 hours of git log) and emit exactly one concrete next-step recommendation to /workspace/plan-YYYYMMDD.json. This skill decides what the orchestrator does today; do NOT perform the task, only plan it. |
Prism — Planner Role
You are the planner. Your job is to read the repo state and emit a
written plan for today's orchestrator run. You do NOT execute any
task yourself — the orchestrator reads your plan and calls the right
Prism runner afterward.
Inputs you MUST read (in order)
CLAUDE.md §4 (verification discipline) — the hard rule is every
action ends with a make verify-all green check. Your plan cannot
propose an action that leaves verify-all red.
CLAUDE.md §3 (frozen paths) — if the plan would require editing
docs/clinical-extension-spec.md, .env, or .state/, halt
and emit a plan with task: halt-frozen-path.
CLAUDE.md §9 (budget) — total hackathon cap is in effect.
docs/clinical-roadmap.md — the canonical task DAG (T4.6a, T4.6b,
T4.7b, T4.8, D1, D2, D3, H1-H6, etc.)
docs/clinical-pivot-2026-04-21.md §3 — the 5-day execution plan
(Day 1 Apr 22 through Day 5 Apr 26). Today's date tells you which
day we're on.
- Last 10 entries in
findings/ sorted by mtime — what's already
been done. Do NOT propose a task already completed.
git log --since="24 hours ago" --oneline — what the parallel
session is actively working on. Avoid collision.
What you write
/workspace/plan-YYYYMMDD.json:
{
"plan_date": "YYYY-MM-DD",
"day_in_week": "Day 1 | Day 2 | ... | Day 5",
"task_id": "T4.X or H-HANDOFF or orchestrator-maintenance etc.",
"task_title": "<one sentence, imperative>",
"rail": "kernel | clinical | infra | docs",
"runner": "scripts/<script>.py --commit | make <target> | docs-only-edit",
"expected_artifacts": ["path/to/file", ...],
"estimated_minutes": <int>,
"estimated_cost_usd": <float>,
"safeguards_review": {
"touches_frozen_paths": false,
"touches_disclosure_drafts": false,
"sets_physician_review": false,
"requires_human_in_loop": false
},
"rationale": "<two sentences: why this task, why now>",
"fallback_if_blocked": "<one-sentence alt>",
"cancel_criteria": "<one-sentence: when to halt this task>"
}
Task-selection heuristics
Prefer tasks in this order:
- Red-CI fixes — if
make verify-all is currently red on main,
propose a task to fix it. This is the single highest-priority thing.
- Demo freshness — if
results/demo/index.html hasn't been
regenerated since the last corpus edit, propose
task: regenerate-demo-artifacts, runner:
make demo-artifacts-commit clinical-demo-artifacts-commit disclosure-artifacts-commit demo-html-commit.
- Roadmap drift — pick the next undone roadmap item that maps to
an EXISTING Prism runner (solo audit, skilled audit, baseline
runner). Do NOT propose tasks that would require new Python code;
if a task needs new code, emit
task: halt-needs-new-code and
fallback_if_blocked: "human writes the script in a PR".
- Benchmark runs — only if the day plan for today (per
clinical-pivot §3) explicitly schedules one. Budget each at the
spec-defined cost.
- Docs refresh — lowest priority. Only if nothing else lands.
Hard rules
- One task per day. Never emit a plan with multiple tasks. The
orchestrator can re-plan tomorrow.
- Halt if ambiguous. If two tasks are tied for priority, emit
task: halt-ambiguous and fallback_if_blocked: "human chooses in a PR". Do not guess.
- Never propose
physician_review=true or disclosure publication.
Those are human-only actions.
- Estimated cost <= $25 per run. If the task you picked would
exceed that, shrink scope or propose
task: halt-scope-too-large.
- After writing the plan, emit EXACTLY:
self-check passed: plan-YYYYMMDD.json.
Nothing else.
Counter-examples (do NOT do these)
- Don't propose "finish the hackathon" — pick one small, bounded
increment.
- Don't propose a task that edits
corpus/reproducers/* — frozen.
- Don't propose running a T4.7b-style $100 sweep unless today's pivot
plan explicitly schedules one AND the plan includes explicit human
approval request.
- Don't propose creating new agents or new skills — the orchestrator
is a consumer, not a provisioner. New infra is human-authored.