From planning-tools
This skill should be used by the plan-verifier agent and the /plan-verify command to audit a drafted master plan against a fixed checklist. Covers universal-core completeness, the v0.3.0+ no-tables-for-phases-or-questions rule, trigger-based section-coverage gaps, phase actionability (heading + per-phase TL;DR + bulleted scope + exit criteria), the v0.3.1+ per-phase TL;DR requirement, the v0.3.2+ plain-bullet scope shape (legacy `- [ ]`/`- [x]` accepted silently), the v0.3.3+ context-block shape (plan-level `**TL;DR:**` + bulleted metadata, legacy `>` blockquote accepted silently), integer phase numbering enforcement, dependency traceability, citation resolution, callout/evidence convention compliance, Open Questions placement, and the one-PR-per-master-plan rule. Single-owner of the audit checklist.
How this skill is triggered — by the user, by Claude, or both
Slash command
/planning-tools:plan-verification-checklistThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill codifies the audit performed by `/planning-tools:plan-verify` and the `plan-verifier` agent. It is the single owner of the checklist; the command and agent both reference it rather than duplicating rules.
This skill codifies the audit performed by /planning-tools:plan-verify and the plan-verifier agent. It is the single owner of the checklist; the command and agent both reference it rather than duplicating rules.
The checklist applies to any master plan written under the master-plan-methodology skill. Findings are graded Critical, Important, or Suggestion.
Verify every required section is present and in the prescribed order:
**TL;DR:** and contains 2–4 sentences (what the plan does + why). Missing or empty = Important (readability gap, not Critical; PASS still reachable). Mirrors the per-phase TL;DR rule.- **Ticket(s):** …, - **PRD / Source:** …, - **Evidence:** …, - **Depends on:** …, - **Constraints:** …, optional leading - **Ticket:** <url>) immediately under the TL;DR. Legacy > blockquote context blocks (pre-v0.3.3) are accepted silently — no finding either way.### Phase <N>: <name> <emoji> H3 headings and - bulleted scope items (no table; v0.3.2+ canonical shape is plain bullets, legacy - [ ]/- [x] accepted silently)Missing universal-core sections = Critical.
For each trigger observed in the plan, check the corresponding optional section is present:
| If the plan mentions | Then it must include |
|---|---|
| SQL, schema changes, migrations, new tables/columns | Data Model / Schema AND Rollback Procedure |
| React components, UI changes, new screens/dialogs | Component Architecture, UI States or Skeleton Screens, Manual QA Checklist |
| Novel UI surfaces | Visual Design — ASCII Mockups |
| Multiple locales | i18n table |
| New analytics events or tracking | Analytics section |
| Cost-bearing infrastructure (e.g., cloud spend) | Cost Summary |
| Failure modes, dependencies, external risks | Risks + Mitigations |
| Manual deploy steps or post-merge ops | Deployment Steps |
| Production validation requirements | Verification (post-merge / post-deploy) |
| Production incident remediation | Recovery for Affected Records |
| File-level impact across phases | Code Changes (file × phase) |
| ≥5 design decisions referenced | Design Decisions table |
| Tests required for any phase | Tests breakdown |
| External prerequisites (other tickets) | Prerequisites |
Missing trigger-driven section = Important.
Every phase must be one ### Phase <N>: <verb-led name> <emoji> H3 heading followed by a **TL;DR:** callout and a plain unordered bulleted list of scope items. Each phase block must contain:
### Phase <N>: <verb-led name> <emoji> where <N> is a positive integer and <emoji> is one of ⏳ 🚧 ✅ ❌ and is the last token on the line**TL;DR:** and contain 1–3 sentences capturing what the phase does and why. Missing or empty TL;DR = Important. Existing v0.3.0 plans without TL;DRs are flagged Important but not Critical — the rest of the audit still proceeds and PASS verdict is still reachable if no other Critical findings exist.- scope item with a concrete file path or named symbol (when the work touches code). Legacy - [ ] / - [x] shapes are accepted silently — no finding either way for v0.3.2+ plans.**Exit criteria:** … scope item describing definition of done**Tests:** … scope item when the phase requires tests (omit when no tests are needed)Phases with vague scope ("update the UI", "improve performance") = Critical. Phases missing exit criteria = Critical. Phases missing any - scope item at all = Critical. Phases missing TL;DR = Important (not Critical).
Scan every "Phase" reference in the document:
1, 2, 3, …)0.5, 1.5)1A, 2B)Phase A, Phase B)Phase 0–5)Sub-Phases or Implementation Sub-Phases headingAny violation = Critical.
The context block's Depends on: line, plus any inline Depends on references, must specify the artifact that creates the dependency, not just the ticket:
Depends on: CI-22 (src/features/cases/lib/sf-links.ts helpers + i18n key + ADR-28 amendment)Depends on: CI-22Vague dependencies = Important.
Every evidence claim must be traceable:
ADR-NN or full path<repo-relative-path>:<line>Unresolvable or vague citations = Important. Fabricated citations (linked source does not exist) = Critical.
Bold-prefix callouts must use the prescribed labels:
**Decision:** … for settled choices**Rationale:** … for reasoning**Risk:** … for known risks**Mitigation:** … for risk responses**Note:** … for informational asidesBlockquotes (>) are used only for invariants/constraints. The top-of-file context block is not a blockquote (v0.3.3+: plan-level **TL;DR:** + bullets); legacy blockquote context blocks are accepted silently. GitHub-style > [!NOTE] admonitions are not used.
Misused callout labels = Suggestion.
If Open Questions is at the bottom = Important.
**Size:** or **Effort:** bolded scope items in any phaseSizing present = Important (will be deleted on next revision).
Scan every phase scope and every section other than Release:
gh pr create instructions inside a phasemain, master, or developPer-phase git commit and git push to the working branch are allowed — do not flag them.
Per-phase PR creation, merging, or review-request = Critical. The fix is to remove the per-phase PR prose and move it (if needed) into a single Release section at the bottom of the plan.
### Phase <N>: heading ends with one of ⏳ 🚧 ✅ ❌ as the last token on the line (separated from the phase name by exactly one space)Mixed conventions = Suggestion. Missing heading emoji = Important.
Per-bullet checkbox well-formedness is not audited (v0.3.2+). Plain - bullets are canonical; legacy - [ ]/- [x] shapes pass through silently.
Implementation Phases, Open Questions, and Resolved Questions must use the v0.3.0 list shape — not markdown tables.
### Phase <N>: <name> <emoji> H3 headings with - bulleted scope items (v0.3.2+; legacy - [ ]/- [x] accepted silently), not a | Phase | Name | Status | Scope | markdown table- **Q<N> — <question>:** ... lines, not a | Q | Blocking? | table- **Q<N> — <question>:** <resolution> lines, not a | Q | Resolution | tableAny of these three sections rendered as a markdown table (i.e., a header row with | delimiters) = Critical, pointing the user at planning-tools:master-plan-methodology for the v0.3.0 shape.
Narrow-cell tables elsewhere in the plan (Architecture matrices, Code Changes file × phase, Dependency tables, Cost summaries, etc.) are explicitly allowed and do not trigger this finding. The ban is scoped to wide-cell sections only.
The verifier emits findings in this exact shape:
# Verification Report: <plan filename>
> Verified: <date>
> Plan path: <path>
## Critical findings
### <#>: <Short title>
- **Location:** <file>:<line>
- **Rule violated:** <which audit dimension>
- **Quote:** <verbatim excerpt>
- **Fix:** <concrete fix>
## Important findings
### <#>: <Short title>
- **Location:** <file>:<line>
- **Rule:** <dimension>
- **Why:** <impact>
- **Fix:** <concrete fix>
## Suggestions
### <#>: <Short title>
- **Location:** <file>:<line>
- **Note:** <polish improvement>
## Summary
| Severity | Count |
|---|---|
| Critical | <n> |
| Important | <n> |
| Suggestion | <n> |
**Verdict:**
- `PASS` — zero Critical, ≤ 2 Important. Safe to append the Verified marker to the context block — a `- **Verified:** <date>` bullet (v0.3.3+), or a `> **Verified:** <date>` line on a legacy blockquote plan.
- `FAIL` — any Critical or > 2 Important. Plan must be revised.
**Top 3 highest-impact fixes:**
1. …
2. …
3. …
The verifier agent does not call AskUserQuestion — it emits the report only. The main conversation (in /planning-tools:plan-verify) presents the report and calls AskUserQuestion to ask the user whether to append the Verified marker to the context block when the verdict is PASS — a - **Verified:** YYYY-MM-DD bullet (v0.3.3+), or a > **Verified:** YYYY-MM-DD line on a legacy blockquote plan.
npx claudepluginhub oborchers/fractional-cto --plugin planning-toolsCreates structured, bite-sized implementation plans from specs or requirements before writing code. Useful for breaking down multi-step tasks into testable steps with file structure and task boundaries.