Create `.context/plans/*.md` files with standard YAML frontmatter, phases/tasks/waves decomposition, and post-creation validation. Infers section conventions from existing plans in `.context/plans/` to match the local style. Integrates with plan-review for a create → review → iterate loop. Triggers: 'create a plan', 'new plan', 'draft a plan', 'plan scaffold', 'write a plan'. Do NOT use for plans outside `.context/plans/`, ephemeral notes, or the main project SKILL.md.
70
86%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Create .context/plans/ files that pass structural validation and match
local conventions. The workflow ensures every plan has valid frontmatter,
clear phases and tasks, and can be immediately reviewed by the
plan-review skill.
context-file skill available if frontmatter repair is neededplan-review skill available for post-creation validation (optional)plan-reviewAsk the user about the plan. Collect at minimum:
Scan existing plans to understand what sections this repo uses:
grep -r '^## ' .context/plans/*.md | sed 's/.*## //' | sort | uniq -c | sort -rnFrom the frequency table, identify:
Also check the naming convention: timestamped (topic-YYYY-MM-DD.md) or
topic-only (short-description.md). Follow whatever the majority of plans use.
Construct the plan file following the structure in assets/templates/plan-scaffold.yaml. The template is validated against assets/schemas/plan-scaffold.schema.json.
The plan always includes:
title, type: PLAN, status: DRAFT, date (today),
effort (S/M/L/TBD), value (HIGH/MEDIUM/LOW), themes (ordered
list from the theme vocabulary, primary-first)## Goal section -- one paragraph describing the desired end state## Phases section -- numbered phases with tasks and wave annotations## Open Questions section -- unresolved items for the reviewerAdditional sections based on what the user provided and what the local
conventions suggest (from step 2): ## Scope, ## Risks, ## Verification.
Run the frontmatter validation script (see the context-index skill's
scripts/validate-context-frontmatter.sh):
validate-context-frontmatter.sh .context/plans/<plan-file>.mdIf validation fails, fix the frontmatter and re-run. Do not proceed until validation passes -- a plan with invalid frontmatter is invisible to the index.
Offer to run the plan-review skill on the newly created plan:
"I created the plan at
.context/plans/<file>. Would you like me to run theplan-reviewskill on it now to catch any issues?"
If the user accepts, load the plan-review skill and follow its workflow.
This completes the create → review → iterate loop.
Confirm the file was created with its path and a summary:
Created: .context/plans/<file>.md
Title: <title>
Status: draft
Phases: <N> phases, <M> tasks total
Next: Run plan-review on it, or mark status: READY once reviewed and approved
(status becomes ACTIVE on its own once a worktree/branch for it exists)After creating the plan, run these checks:
Frontmatter validation -- run validate-context-frontmatter.sh on the
file. If it fails, fix the frontmatter before presenting the result.
validate-context-frontmatter.sh <file>Structure check -- verify the plan has at minimum ## Goal and
## Phases sections. If the local convention requires others (from step 2),
add those too.
Phase completeness -- verify each phase has 2-5 concrete tasks and an exit criterion. Phases with more than 8 tasks should be split.
Wave annotation -- verify tasks that can run in parallel are marked (e.g., "Wave A: frontend, Wave B: backend -- can run concurrently").
Effort declared -- frontmatter has effort set to S/M/L/TBD.
If TBD, confirm the corresponding Open Question actually explains what's
blocking the estimate.
Value graded -- frontmatter has value set to HIGH/MEDIUM/LOW,
graded against the value rubric (see
Grading Effort, Value, and Themes)
rather than guessed.
Themes tagged -- frontmatter has a non-empty themes list, ordered
primary-first, with every member drawn from the controlled theme vocabulary
(same reference) -- no invented themes.
status: DRAFT. Promote to READY only after the
plan is reviewed and approved -- AVOID skipping straight to READY UNLESS the
work is genuinely trivial enough to skip review entirely (see When NOT to Use).
ACTIVE is not a manual promotion at all -- it's entered automatically once a
worktree/branch referencing the plan exists (see planning-flow.md)..context/index.yaml and to every agent that reads it.effort and grading value is RECOMMENDED to happen against the
rubric in Grading Effort, Value, and Themes,
not from gut feel -- a guessed grade misleads the reader more than a stated
TBD with an Open Question.NEVER -- Create a plan without YAML frontmatter
SYMPTOM: The file renders fine in markdown but never appears in the context index. Future agents never discover the plan.
CONSEQUENCE: Effort goes into a plan no one reads. The plan is orphaned until someone manually finds it and adds frontmatter.
WHY: The context index and pre-commit hooks both require frontmatter. A plan without it is invisible machinery.
BAD: Starting the file with # Plan: My Title directly.
GOOD: Always open with ---\ntitle: "Plan: My Title"\ntype: PLAN\nstatus: DRAFT\ndate: YYYY-MM-DD\n---.
NEVER -- Skip the convention inference step
SYMPTOM: The created plan uses a structure that doesn't match any other plan
in the repo -- no ## Open Questions, no ## Scope. It feels out of place.
CONSEQUENCE: Agents that parse plans expecting ## Steps instead of
## Phases may skip sections. The plan is technically valid but practically
misaligned.
WHY: The local convention reflects what agents in this repo expect. A plan that doesn't follow it is harder to review, harder to index, and harder to discover.
BAD: Hardcoding "Goal → Steps → Open Questions" without scanning first.
GOOD: Running grep -r '^## ' .context/plans/*.md and using the actual
frequencies.
NEVER -- Create a phase with more than 8 tasks
SYMPTOM: "Phase 1: Everything" with 15 tasks and no sub-structure. The phase cannot be shipped independently -- it's the whole plan.
CONSEQUENCE: No meaningful checkpoint exists. If the plan runs out of time, there's no partial delivery. The cost of splitting later is higher than splitting now.
WHY: A phase should be small enough to review, implement, and ship in a sprint (1-2 weeks). 8+ tasks means the phase is underspecified.
BAD: A flat list of 15 tasks with no phase grouping. GOOD: 3 phases, each with 3-5 tasks and an exit criterion.
NEVER -- Omit or guess the effort field
SYMPTOM: The plan has no effort in frontmatter, or has one picked
arbitrarily to satisfy validation rather than reflecting an actual estimate.
CONSEQUENCE: A reader scanning .context/index.yaml for quick wins vs.
big lifts can't distinguish them without opening every plan file. A fake
number is worse than a missing one -- it looks authoritative but isn't.
WHY: effort exists so plans are triageable at a glance, the same way
status lets a reader triage by lifecycle stage. validate-context-frontmatter.sh
requires it for any type: PLAN with status: DRAFT, READY, or ACTIVE.
BAD: Setting effort: S on a plan nobody has actually sized, just to pass
validation.
GOOD: effort: TBD with an Open Question stating exactly what decision
blocks sizing (see migrate-off-tessl-eval-2026-06-29.md for a real example).
| Topic | Reference | When to Use |
|---|---|---|
| Common plan sections, their purpose, and file-naming conventions | Plan Structure Reference | Step 2, inferring which sections to include and how to name the file |
| Effort/value/themes rubric, allowed values, worked example | Grading Effort, Value, and Themes | Step 1, whenever effort, value, or themes need grading rather than guessing |
| Repairing frontmatter on an existing file | context-file skill | When a plan's frontmatter is invalid and needs fixing, not creating from scratch |
| Post-creation multi-perspective audit | plan-review skill | Step 5, after a plan is drafted and ready for review |
| Regenerating the index after creation | context-index skill | After a plan is created or its frontmatter changes, to keep .context/index.yaml in sync |
a1083f4
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.