From paad
Reviews specs, PRDs, requirements, and design docs for unrelated features, oversized scope, contradictions, feasibility issues, scope imbalance, omissions, ambiguity, security concerns, and git repo conflicts.
npx claudepluginhub ovid/paad --plugin paadThis skill uses the workspace's default tool permissions.
Critically reviews a spec, PRD, requirements document, or design plan before work begins. Checks source control for conflicts with reality, then walks through issues one at a time in severity order so you can fix what matters most.
Reviews specifications and technical requirements for gaps, inconsistencies, and contradictions from Google Docs, GitHub issues, Docmost docs, pasted text, or local files with configurable depth: --quick to --exhaustive.
Reviews PRDs and specs for completeness, ambiguities, edge cases, acceptance criteria quality. Structures findings by severity and offers direct fixes.
Analyzes spec files for inconsistencies, missing information, ambiguities, and structure issues. Detects depth level (full-tech, detailed, high-level) and generates markdown/HTML reports.
Share bugs, ideas, or general feedback.
Critically reviews a spec, PRD, requirements document, or design plan before work begins. Checks source control for conflicts with reality, then walks through issues one at a time in severity order so you can fix what matters most.
This skill does NOT recommend a fresh session. The conversation history may be the spec.
digraph pushback {
"Has $ARGUMENTS?" [shape=diamond];
"Conversation has spec?" [shape=diamond];
"Found in common locations?" [shape=diamond];
"Git repo?" [shape=diamond];
"Source control conflicts?" [shape=diamond];
"Use that file" [shape=box];
"Confirm with user" [shape=box];
"Present candidates, ask user" [shape=box];
"ASK: what spec to review?" [shape=box];
"Present conflicts, resolve first" [shape=box];
"Proceed to Spec Critique" [shape=box];
"Has $ARGUMENTS?" -> "Use that file" [label="yes"];
"Has $ARGUMENTS?" -> "Conversation has spec?" [label="no"];
"Conversation has spec?" -> "Confirm with user" [label="yes"];
"Conversation has spec?" -> "Found in common locations?" [label="no"];
"Found in common locations?" -> "Present candidates, ask user" [label="yes"];
"Found in common locations?" -> "ASK: what spec to review?" [label="no"];
"Use that file" -> "Git repo?";
"Confirm with user" -> "Git repo?";
"Present candidates, ask user" -> "Git repo?";
"ASK: what spec to review?" -> "Git repo?";
"Git repo?" -> "Source control conflicts?" [label="yes"];
"Git repo?" -> "Proceed to Spec Critique" [label="no"];
"Source control conflicts?" -> "Present conflicts, resolve first" [label="yes"];
"Source control conflicts?" -> "Proceed to Spec Critique" [label="no"];
"Present conflicts, resolve first" -> "Proceed to Spec Critique";
}
Resolve the spec to review in this order:
$ARGUMENTS contains a file path → use that filedocs/plans/, docs/specs/, and files named requirements.md, PRD.md, spec.md, or similar in the repo root. If one obvious candidate, confirm. If multiple, present the list and ask.Skip this phase if the project is not a git repository.
Before analyzing the spec itself, check whether recent codebase changes conflict with what the spec assumes:
git log --oneline -50 --since="2 weeks ago" (whichever limit is reached first)This phase surfaces showstoppers early. A spec that assumes deleted infrastructure is wrong before the analysis even starts.
Before digging into individual requirements, check whether the spec has structural problems that should be addressed first.
Do the features in this spec serve different user goals or business objectives? If the spec bundles unrelated features — things that would naturally be separate PRs — flag it.
For each group of unrelated features:
If the user splits, continue reviewing the remaining spec. If they choose to review as-is, proceed — but note it as a scope concern.
Use heuristic signals to assess whether the spec is too large to implement safely:
If large AND a meaningful split exists where each piece delivers independent value: suggest the split with a brief explanation of what each piece delivers on its own.
If large BUT the features are tightly interdependent: flag the size and explain why splitting isn't practical — describe the interdependencies that make the features inseparable. The author knows it's big but also knows the bigness is inherent, not accidental.
If not large: say nothing and move on to Phase 2.
Run cohesion before size. If unrelated features are found and the user agrees to split, the size problem may resolve itself.
Analyze the spec against these categories:
| Category | What to look for |
|---|---|
| Contradictions | Requirements that conflict with each other, or with the current codebase state |
| Feasibility | Requirements that are technically difficult or impossible given the codebase as it exists today — missing infrastructure, incompatible architecture, dependencies that don't support the requirement |
| Scope imbalance | Requirements wildly disproportionate in effort relative to the rest — one bullet point that's a 2-week project next to others that are 2-hour tasks |
| Omissions | Missing requirements that are implied or necessary given context — error handling, edge cases, migration paths, rollback plans, monitoring, permissions |
| Ambiguity | Requirements that could be interpreted multiple ways — vague success criteria, undefined terms, unclear scope boundaries |
| Security concerns | Requirements that introduce or ignore security risks — auth gaps, data exposure, injection surfaces, missing rate limits, privilege escalation |
After all issues are addressed (or user says "good enough" / "stop"):
Ask: "Would you like me to update the spec directly, or write a separate pushback report?"
Write to paad/pushback-reviews/<YYYY-MM-DD>-<spec-name>-pushback.md.
Create the paad/pushback-reviews/ directory if it doesn't exist.
Report template:
# Pushback Review: <spec name or filename>
**Date:** YYYY-MM-DD
**Spec:** <file path or "conversation history">
**Commit:** <current HEAD sha, or "N/A">
## Source Control Conflicts
<conflicts found, or "None — no conflicts with recent changes.">
## Issues Reviewed
### [1] <title>
- **Category:** <contradictions / feasibility / scope imbalance / omissions / ambiguity / security>
- **Severity:** <critical / serious / moderate / minor>
- **Issue:** <what's wrong>
- **Resolution:** <what the user decided>
(Repeat for each issue discussed.)
## Unresolved Issues
Issues not yet discussed (user stopped early). Listed for future reference.
### [N] <title>
- **Category:** ...
- **Severity:** ...
- **Issue:** ...
- **Suggested options:** ...
(Omit section if all issues were addressed.)
## Summary
- **Issues found:** N
- **Issues resolved:** M
- **Unresolved:** N - M
- **Spec status:** <ready for implementation / needs further work>
Ask: "The spec isn't saved to a file yet. Want me to write it to a file first?" Suggest a reasonable path based on the project structure (e.g., docs/plans/, docs/specs/). Then proceed with the chosen output option (update or report).