Install
$ agentstack add skill-smykla-skalski-sai-plan-critic ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
Plan Critic (Copilot)
Critique an implementation plan before any code is written. The cost of revising a plan is near-zero; the cost of revising executed code is hours of rework. This skill keeps orchestration in-session: the current Copilot agent triages the plan, builds one Grounding Brief from the codebase, delegates to three native persona reviewer agents, and synthesizes a single verdict. Nothing is approved until three independent personas have inspected the plan against ground truth.
Core principle: A plan that names files generically has not been read. A plan that references verify_jwt_token at auth/middleware.go:42 has been read. The job of this skill is to tell those apart and force the second.
The reviewers (3 native agents)
Bundled as custom agents under agents/ (namespaced, e.g. plan-critic:skeptic-reviewer). Their exact instruction blocks live in [references/personas.md](references/personas.md) - read it before Phase 3 so you brief each reviewer faithfully.
| Reviewer agent | Lens | |---|---| | skeptic-reviewer | What's missing - hidden assumptions, edge cases, failure modes, rollback gaps, missing verification criteria | | architect-reviewer | Is it built right - file selection, execution order, convention fit, scope, backward compatibility, system impact | | verifier-reviewer | Did the author actually read the code, or skim file names - symbol specificity, cross-check vs the Grounding Brief, architectural awareness |
Keep this reviewer framing internal (see Privacy / scope).
Parsing the request
The user's text (or an attached file / pasted block) is the plan to review. Resolve it first: read the file if a path was given, use the inline text if pasted, or adopt the most recent plan produced in this conversation. If no plan is resolvable, ask which plan to review - do not invent one.
Workflow
Phase 1 - Triage (fast, do not delegate)
Resolve the plan input, then run a fast scope check. This phase never delegates - if it finds a fundamental issue, report it and stop.
- Is this actually a plan? It must describe what will change and where, not just narrative discussion. If it has no concrete file/function/step list, ask the user to convert it into a plan first, then stop.
- Plan size scan. Count files mentioned, count distinct steps/phases, and note whether line numbers or symbol names appear.
- Trivial-change escape hatch. If the plan describes a change that fits in one sentence (typo, single-line fix, rename in one file), tell the user planning overhead is not warranted - recommend executing directly - and stop. Do not delegate to reviewers for trivial plans.
- Scope warning. If the plan touches 7 or more files, surface this immediately: context degrades plan quality past this threshold and reviewers begin missing cross-file interactions. Recommend splitting into sub-plans before review, or proceeding only with explicit acknowledgment.
If triage finds a fundamental issue (not a plan, trivial, or oversized), report and stop here.
Phase 2 - Grounding Brief (build INLINE, do not delegate)
Build the Grounding Brief yourself in the orchestrator by grep/read over the codebase. All three reviewers share this one brief - do not delegate this phase and do not let each persona re-explore.
Produce, against the real code:
- File verification - for every file the plan names, confirm it exists; list missing/misnamed paths.
- Symbol verification - for every function/type/symbol the plan names, locate it (
path:line) and flag any that do not exist or are misnamed (e.g. plan saysUserStore.Save, code hasUserRepository.Persistatstore/user.go:118). - Caller blast radius - for functions the plan modifies, count callers and list 3-5 locations.
- Existing patterns - find 2-3 existing examples of the kind of change proposed (e.g. existing handlers a new handler should mirror).
- Related tests - find tests covering the modules being changed, and note coverage gaps.
Grounding Brief shape:
## Grounding Brief
### File verification
### Symbol verification
### Callers (blast radius)
### Existing patterns
### Related tests
The Brief is load-bearing - pass it verbatim to every reviewer. Trust the Brief over the plan's claims: when the plan says X exists and the Brief says X not found, the Brief wins.
Phase 3 - Reviewer delegation (sequential by default)
Read [references/personas.md](references/personas.md), then delegate each reviewer through the agent tool, giving each one: the full plan text, the Grounding Brief from Phase 2, that persona's mandate, and the instruction that its first response line must be ## review. Delegate the Skeptic, then the Architect, then the Verifier.
Default to sequential reviewer delegation - one agent at a time. Copilot parallel fan-out over-parallelizes and burns AI credits and offers no reliability guarantee; sequential is the reliable path. Only fan out in parallel if the user explicitly asks, then supervise with listagents/readagent and confirm each returned a payload before synthesizing.
Validate each reviewer result: it must start with ## review and contain the persona's contract sections. If a result is malformed or empty, re-delegate that reviewer once with the same plan + Brief; if still malformed, continue and note the missing lens in the synthesis. Never surface raw reviewer envelopes or readiness text.
Phase 4 - Synthesis and verdict
Recall the Phase 1 scope flags and the Phase 2 Grounding Brief before reading reviewer output, so the verdict stays anchored to verified evidence rather than persona assertion. Then merge the three reviews into one verdict - do not concatenate them:
- Deduplicate - if two reviewers flagged the same missing file or symbol, merge into one finding.
- Separate blockers from improvements - blocking issues first, then refinements, then nits.
- Surface disagreement, don't flatten it - if one reviewer leans APPROVE and another REJECT, present the conflict explicitly and let the user adjudicate; trust the more conservative reviewer when forced to pick.
- Cross-cutting insight - call out findings that emerge only from combining perspectives (e.g. Verifier says a file was not read + Architect says the plan ignores its 20 callers + Skeptic says no test covers the new behavior = one strong blocker).
- Pick one verdict:
- APPROVE - strategy sound, depth adequate, no critical gaps. Safe to execute.
- REFINE - on the right track but needs specific, concrete additions/corrections first. Provide an ordered refinement list (if it grows past ~5 items, switch to REJECT).
- REJECT - fundamental issues (wrong approach, missed key files, hallucinated symbols, surface reading). Must be re-planned after the author reads more code.
Return findings only - do not rewrite the plan yourself; evaluation and authorship are different jobs.
Synthesis output shape
# Plan Review
## Verdict: [APPROVE | REFINE | REJECT]
**One-line summary:**
**Plan stats:**
## Triage notes
## Grounding Brief
## Findings
refinements -> nits>
## Disagreement
## Refinement list
## Rejection rationale
## Next action
and re-plan from scratch.">
Privacy / scope
The reviewer personas are internal review aids. Keep reviewer framing internal - present one synthesized verdict to the user, not three raw envelopes; if a finding leaves the team, restate it in your own voice. This skill reviews a plan, before code exists - it does not execute the plan, and it is not a substitute for reviewing an already-written diff (use a staff-level or language-specific code review for that).
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: smykla-skalski
- Source: smykla-skalski/sai
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.