Skills DirectorySkills Directory
SkillsLearnSecurityCategoriesDocsCommunityBlog
Sign InSubmit Skill
Skills Directory

Security-tested agent skills for Claude, coding agents, and AI workflows.

Directory

  • Browse Skills
  • All Skills A–Z
  • Claude Skills
  • Claude Code Skills
  • Agent Skills
  • Categories
  • Authors
  • Submit a Skill

Learn

  • Learn Hub
  • Install Claude Skills
  • Write SKILL.md
  • Skills vs MCP
  • Directories Compared

Security

  • Security
  • Methodology
  • Secure Claude Skills
  • Security Badges

Company

  • About
  • Community
  • Blog
  • API Docs
  • Advertise

2026 Skills Directory. All rights reserved.

ProTermsPrivacyRefunds
Back to skills

Plan Review

ASecurity

Engineering review that locks PLAN.md before code - end-to-end data-flow trace, failure modes per phase with detection and recovery, the test matrix the plan implies but doesn't state, hidden assumptions with their cheapest probes, and a LOCKED or CHANGES REQUIRED verdict. Use when the user asks to review, lock, or sanity-check the plan before building. For doc-vs-reality drift use /audit docs; for interrogating the brief use /challenge.

2 stars
0 votes
0 copies
0 views
Added 9/28/2026
ai-agentsrustgobash

Security Analysis

A100/100

Scanned 9/28/2026

Install to Claude Code

$npx -y skills add AaravChadha/acstack --skill plan-review --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Plan Review?

Add the live security badge to your README — it updates automatically with every re-scan.

Security grade badge for Plan Review
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/aaravchadha-plan-review/badge)](https://www.skillsdirectory.com/skills/aaravchadha-plan-review)

More formats (shields.io, HTML) on the badges page.

Files
SKILL.md
---
name: plan-review
description: Engineering review that locks PLAN.md before code - end-to-end data-flow trace, failure modes per phase with detection and recovery, the test matrix the plan implies but doesn't state, hidden assumptions with their cheapest probes, and a LOCKED or CHANGES REQUIRED verdict. Use when the user asks to review, lock, or sanity-check the plan before building. For doc-vs-reality drift use /audit docs; for interrogating the brief use /challenge.
argument-hint: "[phase N | notes]"
---

# /plan-review — the engineering lock

The written pushback /plan's gate promises, made mechanical. The plan is
reviewed as an engineering artifact: flows must connect, failures must be
detectable, criteria must be runnable, assumptions must be named.

`Adjacent skills:` /audit docs (does the doc match reality — drift, not
soundness) · /challenge (interrogates the brief's premise, not the plan's
engineering).

<!-- acstack:runtime -->
Run before the skill's steps — per invocation, not per session (4.36); failures degrade to markdown:
```bash
link="$(readlink "$HOME/.claude/skills/health" 2>/dev/null || true)"   # empty = not symlinked
pack="$(dirname "$(dirname "$link")")"   # NEVER trust this unless $link was non-empty
if [ "${link#/}" != "$link" ] && [ -x "$pack/bin/acstack-config" ] && ! "$pack/bin/acstack-config" runtime | grep -q '=off'; then
  "$pack/bin/acstack-config" || true          # resolved keys, with sources
  "$pack/bin/acstack-update-check" || true    # ≤1 fetch/day; silent ONLY if already checked today
  "$pack/bin/acstack-recall" || true          # LEARNINGS.md + bug-class names, capped 3KB
else
  echo "runtime off — proceeding without recall/update-check"
fi
```
<!-- /acstack:runtime -->

<!-- acstack:principles -->
## Operating principles

- Be direct. Push back in writing when the plan or the user is wrong. No sycophancy.
- Never delete a decision. Supersede it: `~~old~~ → **Verdict (YYYY-MM-DD):** new call — reason.`
- Never fix, tune, or delete a test or eval case to raise a score. Log the miss honestly and leave the case unchanged.
- Name exact things: regex patterns, function signatures, model names, before → after numbers. Never "fixed bugs".
- Attribution: follow the project's `attribution` setting (default `none`) — no AI-tool mentions in generated docs, no attribution trailers in commits or PRs. Commit with explicit `-m`/`-F` messages only.
- Config: read `.claude/acstack.md` at the project root (fall back to `~/.claude/acstack.md`) before acting. `## Settings` keys override pack defaults; a `## <skill-name>` section overrides both. Unknown keys and sections are ignored.
- Docs: BRIEF.md (frozen seed) / PLAN.md (living plan) / JOURNAL.md (rolling journal). If the repo uses legacy names (PLANNING_PROMPT.md / PLANNING.md / STATUS.md), use those instead — never create both.
- Recall: if `LEARNINGS.md` exists at the project root, read it before starting.
- Conduct: follow the `acstack-conduct` block in this repo's AGENTS.md — the word is the mode; the user sets the pace.
- Hackathon lane: if the project's AGENTS.md carries the `acstack:hackathon-lane` block, only `/do` changes the repository during the event. Any other skill that would write a tracked file, commit or push says what it would have done and stops; a change that is not a task goes through the lane's operator route.
<!-- /acstack:principles -->

**One document set.** Resolve exactly ONE BRIEF/PLAN/JOURNAL set and name
its path in the report's scope line. If more than one candidate set exists
— a monorepo, nested products, an `apps/*` tree each with its own docs —
list the candidates and STOP. Never pick one silently: a confident answer
about the wrong product is worse than no answer (conduct rule 8).

## Precondition and scope

Read PLAN.md and BRIEF.md (legacy names per the principles block). No plan →
point at `/plan build`, stop. Scope defaults to the whole plan; a `phase N`
argument narrows it — say which scope was reviewed either way.

## The four dimensions

Question sets and finding formats in `references/review-dimensions.md`.

### 1. Data-flow trace

Walk the primary flow end to end, naming the actual component, file, or
store at every hop; every hop names its producer and its consumer. A hop
the plan doesn't cover is a finding, not a footnote. Where the plan names
a table, config key, or format, the trace uses that exact name — mismatched
names across phases are exactly the class of bug this catches.

### 2. Failure modes

Per phase in scope: what breaks first under bad input, partial failure,
and volume — each with how it would be DETECTED and what the recovery is.
"It won't fail" is not a detection story; neither is "we'd notice".

### 3. Test matrix

The dimensions × cases table the plan implies but doesn't state. Then flag,
by ID: every phase whose `**Exit criterion:**` is not literally runnable
(prose like "works well"), and every task group missing `**Acceptance:**`.

### 4. Hidden assumptions

A numbered list of things the plan treats as true without evidence:
library capabilities, data shapes, rate limits, auth behavior, third-party
uptime. Each with the CHEAPEST probe that would confirm or kill it — a
one-line script, a doc lookup, a 10-row sample query.

## Verdict

**Stated as the report's FIRST line**, before the four dimensions —
they are its evidence, not its build-up. Restate it here at the end.

- **`LOCKED`** — the plan survives all four dimensions. Append one additive
  line under PLAN.md's Gate verdict block:
  `**Plan review (YYYY-MM-DD): locked** — <one-line summary>`. That line is
  the only edit this skill ever makes.
- **`CHANGES REQUIRED`** — findings listed as exact supersede-style edits
  (`~~old~~ → **Verdict (date):** new — reason`, new tasks with IDs and
  acceptance lines) for the user to apply via `/plan replan`.

/plan-review proposes; it does not rewrite. The review's authority comes
from the user applying its findings, not from the reviewer holding the pen.

## Hard rules

- Every finding cites the plan line or phase it concerns; findings that
  can't name their target aren't findings.
- Review the plan that exists, not the plan you'd have written — style
  preferences are not findings.
- State what was NOT reviewed (phases out of scope, externals not probed).
- A `LOCKED` verdict with zero findings across all four dimensions means
  the review didn't dig; the trace and matrix are mandatory work products
  even when the verdict is clean.

Attribution

AaravChadhaAaravChadha
View sourceMore from AaravChadha →
SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments (0)

No comments yet. Be the first to comment!

SSkills DirectorySkills Directory

Ship a skill? Prove it's safe.

Free 120-pattern security scan, letter grade, and an embeddable README badge.

Submit a skill

Related Skills

Caveman

Ultra-compressed communication mode that cuts output tokens while keeping technical accuracy. Levels: lite, full, ultra and the wenyan variants. Use for /caveman, "caveman mode", "talk like caveman", "be brief" or "less tokens".

1074701 votes

Hyperplan

Adversarial multi-agent planning skill. Self-orchestrates 5 hostile category members (unspecified-low, unspecified-high, deep, ultrabrain, artistry) via team-mode for ruthless cross-critique debate, distills only the defensible insights, then MANDATORILY hands the distilled insight bundle to the `plan` agent for executable plan formalization. Use when planning needs maximum rigor and surfacing of weak assumptions, blind spots, and over-engineering. Triggers: 'hyperplan', 'hpp', '/hyperplan', ...

695601 votes

Mcp Code Execution

Routes multi-tool workflows through MCP servers for large datasets and pipelines. Use when Bash tool overhead is limiting throughput on data-heavy tasks.

3351 votes

catchup

Recovers the conversation and failed tool calls of a previous Codex, Claude Code, Antigravity, Cline, Copilot CLI, Cursor, DeepSeek Harness, Kimi, OpenCode, Pi Agent, or ZCode session. Use when the user says "catch up", "what did the last session do", "get me up to speed", "I switched agents", asks to recover/summarize a previous session before continuing, or asks to diagnose or report a catchup failure. Do NOT use for the current conversation, git history, or any non-agent log.

691 votes

math-skill

A comprehensive mathematical reasoning skill for AI assistants — handles arithmetic to research-level problems with rigorous step-by-step reasoning, systematic verification, and transparent uncertainty handling

381 votes
View all in ai-agents →