Grade an implementation plan on a 0-10 scale using the plan-grader rubric. This skill is
content-only: inspect, score, explain, and produce a paste-back prompt. Do not edit files, run
formatters, commit changes, or implement the plan being graded.
Use when the user asks to grade, score, review, evaluate, improve, or calibrate a plan, especially
plans produced by Claude Code, Codex, GitHub Copilot, Gemini CLI, or similar agentic CLIs. Also
trigger directly via /plan-grader.
Inputs
$ARGUMENTS may be any of:
<path> or file:<path>: read the plan from a local Markdown/text file.
"..." or text:"...": grade the quoted inline plan text exactly as provided.
latest claude plan, latest codex plan, latest copilot plan, or latest gemini plan:
discover candidate plan/session files using references/plan-discovery.md.
- Optional
--json: emit only the structured JSON object described below.
- Optional
--blind: strip source-agent attribution before scoring. Keep explicit harness context
that affects safety, validation, or repo fit.
If the input is ambiguous, ask for the plan path or paste. Do not guess a plan from unrelated chat.
Reference Order
Before grading, read these references:
references/rubric.md
references/context-resolution.md
references/plan-discovery.md when discovery, imports, symlinks, oversized content, or
transcript extraction are involved
references/agent-formats.md when the source agent is known or a paste-back prompt is needed
- Relevant examples in
references/calibration-plans/
Workflow
Parse flags and input mode.
--json changes output format only.
--blind removes agent identity from the plan before scoring.
file: forces file mode.
text: forces inline text mode.
- Top-level quoted text is inline plan text, not a path.
Resolve the plan text.
- For file inputs, read the target file.
- For inline text, use the supplied text verbatim.
- For
latest <agent> plan, follow references/plan-discovery.md.
- If discovery returns multiple candidates, present the top three most recent candidate paths and
ask the user to choose.
- Refuse oversized inputs that cannot fit the context budget. Do not silently truncate.
Resolve intent sources.
- Treat files mentioned by the plan as intent evidence, especially
@roadmap.md,
@spec.md, file:docs/foo.md, or explicit local paths.
- Resolve transitive
@ imports to the depth documented in references/plan-discovery.md.
- If a referenced intent file is unreadable, record the missing file and lower confidence.
- If a readable intent file contradicts the plan, apply the relevant rubric cap.
Resolve harness context.
- Read project-level
AGENTS.md first as the cross-agent baseline when present.
- Layer agent-specific project overrides:
CLAUDE.md, GEMINI.md,
.github/copilot-instructions.md, .github/instructions/*.instructions.md, and
AGENTS.override.md.
- Consider user/global harness files only as preference context. They cannot weaken repo-local
safety, validation, protected-path, release, or CI rules.
- Detect whether the plan violates configured harnesses or protected gates.
Calibrate before scoring.
- Read at least the two calibration anchors closest to the expected score band.
- Use the anchors to normalize severity and avoid over-rewarding format polish.
Score the plan.
- Score each rubric dimension from 0 to 10.
- Compute the weighted score using rubric version
2.0.0.
- Apply caps, then auto-reject rules, then floor at 0, then round to one decimal.
- Record
confidence as high, medium, or low.
Produce output.
- Default: concise human-readable report with score, verdict, dimension table, caps, blocking
gaps, non-blocking polish, and a paste-back prompt.
--json: emit only valid JSON with exactly these top-level keys:
rubric_version, score, verdict, confidence, dimensions, caps_fired,
blocking_gaps, non_blocking, paste_back_prompt.
Human Output Shape
Plan grade: X.X / 10
Verdict: <approve | approve with minor changes | revise before execution | reject>
Confidence: <high | medium | low>
<One short paragraph explaining the main reason for the grade.>
| Dimension | Weight | Score | Reasoning |
| --------- | -----: | ----: | ---------------------- |
| ... | 0.XX | N/10 | Evidence-backed reason |
Caps fired:
- <cap id or "None">
Blocking gaps:
1. <gap>
Non-blocking improvements:
- <improvement>
Paste-back prompt:
<agent-aware prompt from references/agent-formats.md>
JSON Output Shape
{
"rubric_version": "2.0.0",
"score": 8.4,
"verdict": "approve with minor changes",
"confidence": "high",
"dimensions": [
{
"name": "Goal and scope clarity",
"weight": 0.15,
"score": 9,
"reasoning": "The plan defines the output contract and non-goals.",
"evidence": ["plan.md:12"]
}
],
"caps_fired": [],
"blocking_gaps": [],
"non_blocking": ["Add one explicit smoke test for malformed input."],
"paste_back_prompt": "Revise the plan to add one malformed-input smoke test..."
}
Rules
- Do not mutate files or implement the plan being graded.
- Do not score from vibes. Cite concrete evidence from the plan, intent files, harness files,
repo paths, tests, CI, or explicit missing evidence.
- Mention when the grade is based on incomplete transcript extraction rather than a real plan file.
- Auto-reject dangerous caps even when the weighted score is high.
- Keep all weights from
references/rubric.md exactly. Do not silently reweight.
- For
--blind, do not penalize or reward the plan because it came from Claude, Codex, Copilot, or
Gemini. Grade the content and repo fit.
- If a plan references images or diagrams, do not OCR them. Mark that portion partially ungradable.
- If a plan would touch protected paths, verify it includes the required Spec ID or No-spec
rationale in the PR plan.
- Always include a paste-back prompt unless the user explicitly asks for only the numeric grade.
1---2name: plan-grader3description: Grade implementation plans on a 0-10 scale without mutating the workspace. Accepts plan files, quoted inline plans, or best-effort latest-plan discovery for Claude, Codex, Copilot, and Gemini.4---56Grade an implementation plan on a 0-10 scale using the plan-grader rubric. This skill is7content-only: inspect, score, explain, and produce a paste-back prompt. Do not edit files, run8formatters, commit changes, or implement the plan being graded.910Use when the user asks to grade, score, review, evaluate, improve, or calibrate a plan, especially11plans produced by Claude Code, Codex, GitHub Copilot, Gemini CLI, or similar agentic CLIs. Also12trigger directly via `/plan-grader`.1314## Inputs1516`$ARGUMENTS` may be any of:1718- `<path>` or `file:<path>`: read the plan from a local Markdown/text file.19- `"..."` or `text:"..."`: grade the quoted inline plan text exactly as provided.20- `latest claude plan`, `latest codex plan`, `latest copilot plan`, or `latest gemini plan`:21 discover candidate plan/session files using `references/plan-discovery.md`.22- Optional `--json`: emit only the structured JSON object described below.23- Optional `--blind`: strip source-agent attribution before scoring. Keep explicit harness context24 that affects safety, validation, or repo fit.2526If the input is ambiguous, ask for the plan path or paste. Do not guess a plan from unrelated chat.2728## Reference Order2930Before grading, read these references:31321. `references/rubric.md`332. `references/context-resolution.md`343. `references/plan-discovery.md` when discovery, imports, symlinks, oversized content, or35 transcript extraction are involved364. `references/agent-formats.md` when the source agent is known or a paste-back prompt is needed375. Relevant examples in `references/calibration-plans/`3839## Workflow40411. Parse flags and input mode.42 - `--json` changes output format only.43 - `--blind` removes agent identity from the plan before scoring.44 - `file:` forces file mode.45 - `text:` forces inline text mode.46 - Top-level quoted text is inline plan text, not a path.47482. Resolve the plan text.49 - For file inputs, read the target file.50 - For inline text, use the supplied text verbatim.51 - For `latest <agent> plan`, follow `references/plan-discovery.md`.52 - If discovery returns multiple candidates, present the top three most recent candidate paths and53 ask the user to choose.54 - Refuse oversized inputs that cannot fit the context budget. Do not silently truncate.55563. Resolve intent sources.57 - Treat files mentioned by the plan as intent evidence, especially `@roadmap.md`,58 `@spec.md`, `file:docs/foo.md`, or explicit local paths.59 - Resolve transitive `@` imports to the depth documented in `references/plan-discovery.md`.60 - If a referenced intent file is unreadable, record the missing file and lower confidence.61 - If a readable intent file contradicts the plan, apply the relevant rubric cap.62634. Resolve harness context.64 - Read project-level `AGENTS.md` first as the cross-agent baseline when present.65 - Layer agent-specific project overrides: `CLAUDE.md`, `GEMINI.md`,66 `.github/copilot-instructions.md`, `.github/instructions/*.instructions.md`, and67 `AGENTS.override.md`.68 - Consider user/global harness files only as preference context. They cannot weaken repo-local69 safety, validation, protected-path, release, or CI rules.70 - Detect whether the plan violates configured harnesses or protected gates.71725. Calibrate before scoring.73 - Read at least the two calibration anchors closest to the expected score band.74 - Use the anchors to normalize severity and avoid over-rewarding format polish.75766. Score the plan.77 - Score each rubric dimension from 0 to 10.78 - Compute the weighted score using rubric version `2.0.0`.79 - Apply caps, then auto-reject rules, then floor at 0, then round to one decimal.80 - Record `confidence` as `high`, `medium`, or `low`.81827. Produce output.83 - Default: concise human-readable report with score, verdict, dimension table, caps, blocking84 gaps, non-blocking polish, and a paste-back prompt.85 - `--json`: emit only valid JSON with exactly these top-level keys:86 `rubric_version`, `score`, `verdict`, `confidence`, `dimensions`, `caps_fired`,87 `blocking_gaps`, `non_blocking`, `paste_back_prompt`.8889## Human Output Shape9091```markdown92Plan grade: X.X / 1093Verdict: <approve | approve with minor changes | revise before execution | reject>94Confidence: <high | medium | low>9596<One short paragraph explaining the main reason for the grade.>9798| Dimension | Weight | Score | Reasoning |99| --------- | -----: | ----: | ---------------------- |100| ... | 0.XX | N/10 | Evidence-backed reason |101102Caps fired:103104- <cap id or "None">105106Blocking gaps:1071081. <gap>109110Non-blocking improvements:111112- <improvement>113114Paste-back prompt:115<agent-aware prompt from references/agent-formats.md>116```117118## JSON Output Shape119120```json121{122 "rubric_version": "2.0.0",123 "score": 8.4,124 "verdict": "approve with minor changes",125 "confidence": "high",126 "dimensions": [127 {128 "name": "Goal and scope clarity",129 "weight": 0.15,130 "score": 9,131 "reasoning": "The plan defines the output contract and non-goals.",132 "evidence": ["plan.md:12"]133 }134 ],135 "caps_fired": [],136 "blocking_gaps": [],137 "non_blocking": ["Add one explicit smoke test for malformed input."],138 "paste_back_prompt": "Revise the plan to add one malformed-input smoke test..."139}140```141142## Rules143144- Do not mutate files or implement the plan being graded.145- Do not score from vibes. Cite concrete evidence from the plan, intent files, harness files,146 repo paths, tests, CI, or explicit missing evidence.147- Mention when the grade is based on incomplete transcript extraction rather than a real plan file.148- Auto-reject dangerous caps even when the weighted score is high.149- Keep all weights from `references/rubric.md` exactly. Do not silently reweight.150- For `--blind`, do not penalize or reward the plan because it came from Claude, Codex, Copilot, or151 Gemini. Grade the content and repo fit.152- If a plan references images or diagrams, do not OCR them. Mark that portion partially ungradable.153- If a plan would touch protected paths, verify it includes the required Spec ID or No-spec154 rationale in the PR plan.155- Always include a paste-back prompt unless the user explicitly asks for only the numeric grade.