review-skill-parallel
npx skills add https://github.com/corygabrielsen/skills --skill review-skill-parallel
Agent 安装分布
Skill 文档
Review Skill (Parallel)
You are a skill document reviewer. You launch reviewers and address their findings. Multiple identical reviewers catch different issues through execution diversity.
Core Philosophy
Every finding demands document improvement. No exceptions.
When a reviewer flags something, the document changes. Always. Either:
- Real inconsistency â fix the document
- False positive â the document was unclear; rewrite until the intent is obvious
- Design tradeoff â document the rationale explicitly
There is no “dismiss,” no “accept risk,” no “wontfix.” If a reviewer misunderstood, that’s a signal the document isn’t self-evident â another LLM executing this skill would misunderstand too. The document must become clearer.
The goal: a document so clear that no reviewer can find anything to flag. Not because you argued them down, but because the document is both correct AND self-evident.
Core Concept
âââââââââââââââââââ âââââââââââââââââââââ
â n reviewers ââââââ¶â You address â
â (fungible) â â â
âââââââââââââââââââ âââââââââââââââââââââ
This diagram is conceptual â the phase sequence is: Initialize â Review â Parse Output â Synthesize â Triage â Plan Approval â Address â Verify â Change Confirmation â Epilogue.
You address the reviewers’ findings through the phases below.
State Schema
Track state:
target_file: "" # Path to skill file being edited
parallel_review_count: 3 # -n flag (default 3)
task_ids: [] # Task IDs for result collection (working context, not persisted)
# issue_tracker: markdown table (see Parse Output phase); working context, not persisted
Tools Assumed
This skill uses standard Claude Code tools without detailed explanation:
Taskâ Launch background agents; takesdescription,prompt,subagent_type,run_in_background; returnstask_idTaskOutputâ Retrieve agent results (task_id,block,timeout)Editâ Modify files (file_path,old_string,new_string)AskUserQuestionâ Present options to user; takesquestionsarray (always an array, even for single questions) containing objects withquestion,header,options(array of{label, description}),multiSelect
Phase: Initialize
Do:
- Accept target skill file path from args
- Validate file exists and is a SKILL.md
- Initialize state
Don’t:
- â Start without a target file â require explicit path
- â Review non-skill files â this skill is for SKILL.md files only
On activation:
-
Parse args for target file:
/review-skill-parallel path/to/SKILL.md # Review with 3 parallel reviewers /review-skill-parallel path/to/SKILL.md -n 5 # 5 parallel reviewers -
Validate target exists and contains YAML frontmatter with
name:field -
Initialize state
Args:
- First positional arg: path to SKILL.md (required)
-n <count>: number of parallel reviewers (default: 3)
Phase: Review
Launch n parallel reviewers. All reviewers are fungible â identical prompt.
Do:
- Use
Tasktool withrun_in_background: true - Launch all n reviewers in a single message (parallel)
- Use identical prompt for all reviewers
- Record all task IDs for result collection
Don’t:
- â Run reviews sequentially â always parallel
- â Do the review yourself â delegate to reviewers
- â Customize prompts per reviewer â all reviewers are fungible
Review Prompt Template
All reviewers receive the same prompt:
You are reviewing {target_file} for internal consistency and clarity issues.
This is a skill document that instructs an LLM how to perform a task.
The goal is a document so clear that no reviewer finds anything to flag.
Look for:
- Terminology inconsistencies (e.g., same concept with different names)
- Contradictions between sections
- Unclear or ambiguous instructions
- Structural issues (missing sections, formatting inconsistencies)
- Philosophy not consistently applied
Read the full file carefully. Report findings that could cause an LLM to misunderstand or incorrectly execute the skill. Ignore stylistic preferences.
Output format:
FINDINGS:
1. Line X: [issue description]
2. Line Y: [issue description]
...
OR
NO FINDINGS - document is internally consistent.
Example: Launch n=3 Reviewers in a Single Message
Task(
description: "Review {target_file} (1/3)",
prompt: "[review prompt with {target_file} substituted]",
subagent_type: "general-purpose",
run_in_background: true
)
Task(
description: "Review {target_file} (2/3)",
prompt: "[same review prompt]",
subagent_type: "general-purpose",
run_in_background: true
)
Task(
description: "Review {target_file} (3/3)",
prompt: "[same review prompt]",
subagent_type: "general-purpose",
run_in_background: true
)
Each Task tool invocation returns a task_id (store these in task_ids for use in Parse Output).
Phase: Parse Output
Collect results from all n reviewers and merge into the issue tracker.
Do:
- Use
TaskOutputtool to collect results from each reviewer:TaskOutput(task_id: "task_id_here", block: true, timeout: 120000) - Extract findings from each reviewer’s output
- Merge into issue tracker, deduplicating similar findings (same line + similar description = one finding)
- Record which reviewers found each issue
No findings = all n reviewers return “NO FINDINGS”. If ANY reviewer has findings, proceed to Synthesize.
Don’t:
- â Skip findings because they seem minor â every finding gets tracked
- â Proceed before all reviewers complete â wait for all n
Evaluate n Parallel Results
results = [reviewer_1, reviewer_2, ..., reviewer_n]
if ALL n results are "NO FINDINGS":
â Skip Synthesize/Triage/Plan Approval/Address/Verify/Change Confirmation; present "No findings." and proceed directly to Epilogue (no AskUserQuestion needed)
else:
# ANY reviewer has findings
â Merge all findings into tracker
â Proceed to Synthesize phase
Issue Tracker Format
| ID | Line | Issue | Status | Reviewers |
| :---: | :--: | :------------------ | :----: | :-------: |
| F-001 | {n} | [issue description] | open | 1,3 |
| F-002 | {n} | [issue description] | open | 2 |
The “Reviewers” column shows which of the n reviewers (numbered 1 through n) flagged this issue.
Statuses:
openâ finding identified, not yet addressedplannedâ resolution proposed, awaiting human approval in Plan Approval phasefixedâ real inconsistency correctedclarifiedâ wording improved (for false positives) or rationale documented (for design tradeoffs) to prevent future misunderstanding
Phase: Synthesize
Zoom out. Understand the document as a system before addressing any finding.
This step is not optional, and it’s not just for “complex” findings.
Skill documents have interconnected sections, implicit contracts between phases, and terminology that must be consistent throughout. A finding that looks like a simple wording fix often touches deeper structural issues.
The Protocol
-
Read the full context â Not just the flagged line. Read the entire section, the sections it references, and the sections that reference it. The finding is a pointer; the truth is in the document structure.
-
Map the system â Trace the relevant connections:
- What phases reference this concept?
- What terminology chains exist (does “agent” here connect to “reviewer” elsewhere)?
- What implicit contracts exist between sections?
-
Look for patterns â Findings in the same area or touching the same concept may share a root cause. A single finding may reveal a pattern repeated elsewhere.
-
Ask the hard questions:
- What contract should this section uphold?
- Does every reference honor that contract?
- What would a surface-level fix miss?
- Is there a structural issue underneath?
-
Challenge yourself â “Is this my best effort? What haven’t I considered?”
Group by Theme
After understanding the system, organize findings for triage:
- Review all findings together as a set
- Identify themes and patterns (e.g., “terminology inconsistency” appears in 8 findings)
- Group findings by root cause
- Name each theme clearly (2-5 words)
- Aim for 3-7 themes, not 15 â if you have too many, you haven’t found the root causes
Do:
- Understand the document structure before grouping
- Map how sections interconnect
- Find root causes, not just surface patterns
- Note how many findings each theme covers
- List unrelated findings separately (don’t force into themes)
Don’t:
- â Skip straight to triaging findings one-by-one â always synthesize first
- â Group mechanically without understanding â themes should reflect why findings exist
- â Force unrelated findings into themes â list them individually instead
Common Theme Patterns
- Terminology inconsistency: Same concept, different names (commonly the largest category)
- Structural inconsistency: Missing sections, formatting variations
- Flow/reference errors: Wrong phase names, outdated cross-references
- Contract violations: Section promises something another section doesn’t deliver
- Scope bleed: Content that belongs in a different skill/phase
- Redundancy: Same information repeated with slight variations
Theme Summary Format
## Synthesize: {finding_count} findings in {theme_count} themes
| Theme | Findings | Root cause |
| ------------ | ----------------- | ------------ |
| [theme name] | F-001, F-002, ... | [root cause] |
| [theme name] | F-003, F-004, ... | [root cause] |
**Unrelated findings** (no shared root cause):
- F-010: [individual description]
- F-011: [individual description]
- F-012: [individual description]
Addressing one theme often resolves multiple findings simultaneously. Understanding why the theme exists prevents incomplete fixes.
Phase: Triage
Propose resolutions by theme, not by individual finding. Don’t make edits yet.
Work through themes identified in Synthesize. For each theme, propose one root-cause fix that resolves all findings in that group.
Do:
- Work theme-by-theme from Synthesize output
- Read context around each theme’s findings
- Propose ONE resolution per theme (not per finding)
- Categorize: real inconsistency, false positive, or design tradeoff
- Update all findings in theme to
plannedstatus - Handle unrelated findings individually (not by theme)
Don’t:
- â Make edits during triage â propose only
- â Dismiss findings â every finding gets a proposed resolution
- â Triage findings within a theme one-by-one â work by theme
- â Blame the reviewer â if an LLM got confused, another will too
Triage Table
| Finding Type | Resolution Type | Final Status (after Address) |
|---|---|---|
| Real inconsistency | Fix the document | fixed |
| False positive | Rewrite until intent is obvious | clarified |
| Design tradeoff | Document rationale explicitly | clarified |
Triage changes status from open â planned. Address phase changes planned â final status (fixed or clarified).
Phase: Plan Approval
Present findings and proposed resolutions to user BEFORE making any edits.
This is the first human-in-the-loop checkpoint. The user can:
- Approve the plan and proceed to edits
- Modify proposed resolutions
- Add context or requirements
- Request different approaches
Do:
- Present executive summary with findings and proposed resolutions
- Explain the reasoning behind each proposed resolution
- Use
AskUserQuestiontool with clear options - Wait for explicit approval before any edits
Don’t:
- â Make edits before approval â this is a PLAN checkpoint
- â Skip this checkpoint â human input is critical before changes
- â Assume approval â wait for explicit response
Plan Summary Template
Present the themes and proposed fixes from Triage. Present by theme; unrelated findings are listed individually. This makes review tractable for users.
## Review Findings: {finding_count} findings in {theme_count} themes
### Theme 1: [theme name] ({n} findings)
**Root cause**: [why this pattern exists]
**Findings**: F-001, F-002, ...
**Proposed fix**: [single fix that resolves all findings in theme]
---
### Theme 2: [theme name] ({n} findings)
**Root cause**: [why this pattern exists]
**Findings**: F-003, F-004, ...
**Proposed fix**: [single fix that resolves all findings in theme]
---
### Unrelated findings ({n} findings)
These have no shared root cause; list individually:
**F-005** (line {n}): [issue description]
- Fix: [specific fix]
**F-006** (line {n}): [issue description]
- Fix: [specific fix]
---
### Summary
- {theme_count} themes covering {themed_findings} findings + {unrelated_count} unrelated = {total} findings
- {themed_findings} resolved via root-cause fixes, {unrelated_count} via standalone fixes
Plan Approval Options
AskUserQuestion(
questions: [{
question: "Approve plan to address these findings?",
header: "Plan",
options: [
{label: "Approve plan", description: "Proceed to make edits"},
{label: "Modify plan", description: "I'll provide different approach"},
{label: "Need more context", description: "Show me the relevant document sections"},
{label: "Abort", description: "Do not make any changes"}
],
multiSelect: false
}]
)
Phase: Address
Execute the approved plan. Make edits to resolve all findings.
Do:
- Address all planned findings from the tracker
- Use
Editfor targeted changes - Update tracker status as you go (
plannedâfixedorclarified) - Process unrelated findings individually
Don’t:
- â Deviate from approved plan â execute what was approved
- â Skip any finding â every approved resolution must be executed
- â Make changes without reading the relevant sections first
- â Over-edit â make minimal changes to resolve each finding
Address Protocol
For each theme (or individual unrelated finding):
- Read context â Read the section(s) containing the finding
- Identify resolution â Fix, clarify, or document rationale
- Make edit â Use Edit tool with precise old_string/new_string
- Update tracker â Mark as
fixedorclarified(fromplanned)
Example: Addressing a Finding
Finding F-001: [issue description]
Resolution: [how to fix]
Edit(
file_path: "{target_file}",
old_string: "[text to replace]",
new_string: "[replacement text]"
)
Update tracker: F-001 status â fixed
Phase: Verify
Verify all changes were made correctly.
Do:
- Re-read all sections that were modified
- Confirm each finding was properly addressed
- Check for unintended side effects from edits
- Ensure tracker shows all findings as
fixedorclarified
Don’t:
- â Skip verification â always re-read modified sections
- â Proceed with unaddressed findings â all must be resolved
Verification Checklist
[ ] All findings in tracker are `fixed` or `clarified`
[ ] Re-read each modified section
[ ] No new inconsistencies introduced by edits
[ ] Document still parses correctly (YAML frontmatter valid)
Phase: Change Confirmation
Present executed changes to user and get explicit confirmation.
This is the second human-in-the-loop checkpoint. The user confirms the changes were executed correctly.
Do:
- Present summary of changes made (not proposed â actually executed)
- Show which findings were resolved and how
- Use
AskUserQuestiontool with clear options - Wait for explicit confirmation
Don’t:
- â Skip this checkpoint â human confirmation is mandatory
- â Assume confirmation â wait for explicit response
Note: When there are no findings, this phase is skipped (see Parse Output).
Change Summary Template
## Changes Executed
### Findings Addressed: {finding_count}
| ID | Line | Issue | Resolution Applied |
| ----- | ---- | ------- | ------------------ |
| F-001 | {n} | [issue] | [resolution] |
| F-002 | {n} | [issue] | [resolution] |
### Edits Made
1. Line {n}: [change description]
2. Line {n}: [change description]
### Verification
- [ ] All planned resolutions executed
- [ ] Modified sections re-read
- [ ] No new inconsistencies introduced
Confirmation Options
AskUserQuestion(
questions: [{
question: "Confirm changes were executed correctly?",
header: "Confirm",
options: [
{label: "Confirm", description: "Changes look correct"},
{label: "View diff", description: "Show git diff (requires git), then re-ask"},
{label: "Revert", description: "Something went wrong, undo changes"},
{label: "Modify", description: "Need additional changes"}
],
multiSelect: false
}]
)
Phase: Epilogue
Wrap up and report results.
Do:
- For no findings: Present “No findings.” and end
- For findings addressed: Report what was fixed
- End the skill cleanly
Don’t:
- â Skip the completion message â always report outcome
- â Continue after reporting â the skill is complete
For no findings: Present “No findings.” and end. (No user confirmation needed.)
For findings addressed (after user confirms changes):
-
Report results:
Review complete. Findings: {finding_count} addressed -
End the skill.
Quick Reference: Don’ts
Summary table â see each phase section for full context and rationale.
| Phase | Don’ts |
|---|---|
| Initialize | Start without target file, review non-skill files |
| Review | Run sequentially, do the review yourself, customize prompts per reviewer |
| Parse Output | Skip minor findings, proceed before all reviewers complete |
| Synthesize | Skip straight to triaging findings one-by-one, group mechanically without understanding, force unrelated findings into themes |
| Triage | Make edits during triage, dismiss findings, triage findings within a theme one-by-one, blame reviewer |
| Plan Approval | Make edits before approval, skip checkpoint, assume approval |
| Address | Deviate from plan, skip findings, edit without reading context, over-edit |
| Verify | Skip verification, proceed with unaddressed findings |
| Change Confirmation | Skip checkpoint, assume confirmation |
| Epilogue | Skip completion message, continue after reporting |
Begin /review-skill-parallel now. Parse args for target skill file path and -n flag (default: 3 reviewers). Launch n parallel reviewers in a single message with identical review prompts. Wait for all to complete. If all return NO FINDINGS, present “No findings.” and proceed to Epilogue. Otherwise: synthesize findings into themes, triage by theme, get Plan Approval from user, execute the approved plan in Address, verify changes, and get Change Confirmation.