| title | doc-review: Multi-agent documentation quality review |
| name | doc-review |
| description | Review a single file or all files in a folder for data inconsistencies, reference errors, typos, and unclear terminology using parallel sub-agents |
| tags | quality-assurance, shared-architecture, multi-agent, validation, documentation |
| custom_fields | [object Object] |
| version | 1.1.0 |
| document_control | [object Object] |
doc-review
Description: Multi-agent documentation quality review system that analyzes a single file or all files in a folder for data inconsistencies, reference errors, typos, and unclear terminology.
Category: Quality Assurance
Complexity: High (multi-agent coordination)
Purpose
Comprehensive documentation quality review using specialized sub-agents to detect:
- Data inconsistencies: Contradictory information, wrong data, confusing content
- Reference errors: Broken links, invalid cross-references, missing anchors
- Typos and spelling: Misspellings, grammatical errors, formatting issues
- Terminology issues: Undefined terms, inconsistent naming, ambiguous language
Analysis Modes
| Mode | Input | Behavior |
|---|---|---|
| Single File | /doc-review path/to/file.md |
Analyzes one file in depth |
| Folder | /doc-review path/to/folder/ |
Analyzes ALL files in folder together, including cross-file consistency |
Folder mode provides additional cross-file checks:
- Terminology consistency across all documents
- Cross-document reference validation
- Duplicate content detection across files
- Consistent naming conventions
When to Use This Skill
Use doc-review when:
- Reviewing documentation before publication
- Validating files after batch creation
- Performing quality audits on markdown/YAML files
- Checking cross-reference integrity
- Pre-commit quality validation
- Reviewing a single file or entire folder
Do NOT use when:
- Full traceability validation needed (use trace-check)
- Code-specific review needed (use code-review)
- Single document structure validation (use doc-*-validator skills)
Skill Inputs
| Input | Type | Required | Description | Example |
|---|---|---|---|---|
| path | string | Yes | Single file path or folder path to review | ai_dev_flow/PRD/PRD-001.md, docs/EARS/ |
| scope | string | No | Review scope | "full" (default), "quick", "deep" |
| focus | array | No | Specific checks to run | ["data", "references", "typos", "terms"] |
| report_format | string | No | Output format | "markdown" (default), "json", "summary" |
| auto_fix | boolean | No | Attempt automatic fixes | false (default) |
Sub-Agent Architecture
The skill coordinates 4 specialized sub-agents that run in parallel:
graph TD
A[doc-review Skill] --> B[Input: File or Folder]
B --> C[File Discovery]
C --> D[Parallel Sub-Agents]
D --> E[Data Consistency Agent]
D --> F[Reference Checker Agent]
D --> G[Typo Detection Agent]
D --> H[Terminology Agent]
E --> I[Merge Results]
F --> I
G --> I
H --> I
I --> J[Generate Report]
J --> K[Output: Quality Report]
Sub-Agent 1: Data Consistency Agent
Purpose: Detect inconsistent, wrong, or confusing information
Checks:
- Contradictory statements within same document
- Numerical inconsistencies (counts, dates, versions)
- Status field mismatches (metadata vs content)
- Duplicate content with variations
- Logical contradictions
- Outdated information markers
Detection Patterns:
data_consistency_checks:
count_mismatch:
pattern: "\\d+ (requirements|items|sections)"
validate: "count matches actual items"
error_code: "DATA-E001"
status_mismatch:
pattern: "Status:\\s*(Draft|Approved|Implemented)"
validate: "matches content maturity"
error_code: "DATA-E002"
date_inconsistency:
pattern: "\\d{4}-\\d{2}-\\d{2}"
validate: "Last Updated >= Created"
error_code: "DATA-E003"
version_format:
pattern: "Version:\\s*[\\d.]+"
validate: "semantic versioning compliance"
error_code: "DATA-E004"
duplicate_content:
pattern: "similar paragraphs >80%"
validate: "intentional or error"
error_code: "DATA-W001"
Sub-Agent 2: Reference Checker Agent
Purpose: Validate all links, references, and cross-document connections
Checks:
- Markdown link resolution (
[text](path#anchor)) - Internal anchor existence (
#section-id) - Cross-document reference validity
- Relative path correctness
- External URL accessibility (optional)
- Traceability tag format (
@brd:,@prd:, etc.)
Detection Patterns:
reference_checks:
broken_link:
pattern: "\\[.*?\\]\\(.*?\\)"
validate: "target file exists"
error_code: "REF-E001"
invalid_anchor:
pattern: "\\[.*?\\]\\(.*?#.*?\\)"
validate: "anchor exists in target"
error_code: "REF-E002"
orphan_anchor:
pattern: "^#{1,6}\\s+.*$"
validate: "has incoming references"
error_code: "REF-W001"
relative_path:
pattern: "\\.\\./|\\./"
validate: "path resolves correctly"
error_code: "REF-E003"
tag_format:
pattern: "@(brd|prd|ears|bdd|adr|sys|req|spec|impl|ctr|tasks|iplan):"
validate: "follows TYPE.NN.TT.SS format"
error_code: "REF-E004"
circular_reference:
pattern: "A→B→...→A"
validate: "no circular chains"
error_code: "REF-E005"
Sub-Agent 3: Typo Detection Agent
Purpose: Find spelling errors, grammatical issues, and formatting problems
Checks:
- Common misspellings
- Technical term spelling
- Capitalization inconsistencies
- Punctuation errors
- Whitespace issues
- Markdown syntax errors
Detection Patterns:
typo_checks:
common_misspellings:
dictionary: "en_US + technical_terms"
error_code: "TYPO-E001"
case_inconsistency:
pattern: "same term, different cases"
examples: ["GitHub/github", "API/api", "JavaScript/Javascript"]
error_code: "TYPO-W001"
double_words:
pattern: "\\b(\\w+)\\s+\\1\\b"
error_code: "TYPO-E002"
markdown_syntax:
patterns:
- "unclosed_code_block"
- "mismatched_brackets"
- "broken_table"
error_code: "TYPO-E003"
punctuation:
patterns:
- "double_period: \\.\\."
- "space_before_comma: \\s,"
- "missing_space_after_period: \\.[A-Z]"
error_code: "TYPO-W002"
whitespace:
patterns:
- "trailing_whitespace"
- "multiple_blank_lines"
- "tabs_vs_spaces"
error_code: "TYPO-W003"
Sub-Agent 4: Terminology Agent
Purpose: Identify unclear, undefined, or inconsistent terminology
Checks:
- Undefined acronyms
- Inconsistent term usage
- Ambiguous language
- Jargon without definition
- Conflicting definitions
- Domain-specific term validation
Detection Patterns:
terminology_checks:
undefined_acronym:
pattern: "\\b[A-Z]{2,}\\b"
validate: "defined on first use or in glossary"
error_code: "TERM-E001"
inconsistent_naming:
examples:
- "user/User/USER"
- "login/sign-in/authenticate"
- "config/configuration/settings"
error_code: "TERM-E002"
ambiguous_terms:
flagged_words:
- "it"
- "this"
- "that"
- "they"
context: "unclear antecedent"
error_code: "TERM-W001"
subjective_qualifiers:
flagged_words:
- "easy"
- "simple"
- "fast"
- "efficient"
- "powerful"
context: "lacks quantification"
error_code: "TERM-W002"
undefined_jargon:
pattern: "domain-specific terms without definition"
error_code: "TERM-W003"
conflicting_definitions:
pattern: "same term, different meanings"
error_code: "TERM-E003"
Workflow Execution
Step 1: File Discovery
# Expand path/pattern to file list
def discover_files(path_pattern):
if is_glob_pattern(path_pattern):
return glob.glob(path_pattern, recursive=True)
elif os.path.isfile(path_pattern):
return [path_pattern]
elif os.path.isdir(path_pattern):
return glob.glob(f"{path_pattern}/**/*.md", recursive=True)
else:
raise FileNotFoundError(f"Path not found: {path_pattern}")
Step 2: Launch Parallel Sub-Agents
# Launch 4 sub-agents in parallel using Task tool
async def run_review(files, scope, focus):
tasks = []
if "data" in focus or focus == "all":
tasks.append(Task(
subagent_type="general-purpose",
prompt=f"Review files for data consistency: {files}",
description="Data consistency check"
))
if "references" in focus or focus == "all":
tasks.append(Task(
subagent_type="general-purpose",
prompt=f"Validate all references and links: {files}",
description="Reference validation"
))
if "typos" in focus or focus == "all":
tasks.append(Task(
subagent_type="general-purpose",
prompt=f"Check for typos and formatting: {files}",
description="Typo detection"
))
if "terms" in focus or focus == "all":
tasks.append(Task(
subagent_type="general-purpose",
prompt=f"Validate terminology consistency: {files}",
description="Terminology review"
))
# Run all tasks in parallel
results = await asyncio.gather(*tasks)
return merge_results(results)
Step 3: Merge and Prioritize Results
def merge_results(agent_results):
merged = {
"errors": [], # Severity: ERROR (must fix)
"warnings": [], # Severity: WARNING (should fix)
"info": [], # Severity: INFO (consider)
"stats": {}
}
for result in agent_results:
merged["errors"].extend(result.get("errors", []))
merged["warnings"].extend(result.get("warnings", []))
merged["info"].extend(result.get("info", []))
# Deduplicate and sort by severity
merged["errors"] = deduplicate(merged["errors"])
merged["warnings"] = deduplicate(merged["warnings"])
return merged
Step 4: Generate Report
Output format based on report_format parameter.
Error Codes Reference
Data Consistency (DATA)
| Code | Severity | Description | Auto-Fix |
|---|---|---|---|
| DATA-E001 | ERROR | Count mismatch (stated vs actual) | Yes |
| DATA-E002 | ERROR | Status/content maturity mismatch | Manual |
| DATA-E003 | ERROR | Date inconsistency | Yes |
| DATA-E004 | ERROR | Invalid version format | Yes |
| DATA-W001 | WARNING | Potential duplicate content | Manual |
| DATA-W002 | WARNING | Outdated information marker | Manual |
References (REF)
| Code | Severity | Description | Auto-Fix |
|---|---|---|---|
| REF-E001 | ERROR | Broken link (file not found) | Manual |
| REF-E002 | ERROR | Invalid anchor | Manual |
| REF-E003 | ERROR | Relative path error | Yes |
| REF-E004 | ERROR | Invalid traceability tag format | Yes |
| REF-E005 | ERROR | Circular reference detected | Manual |
| REF-W001 | WARNING | Orphan anchor (no incoming refs) | Manual |
Typos (TYPO)
| Code | Severity | Description | Auto-Fix |
|---|---|---|---|
| TYPO-E001 | ERROR | Misspelled word | Yes |
| TYPO-E002 | ERROR | Double word | Yes |
| TYPO-E003 | ERROR | Markdown syntax error | Manual |
| TYPO-W001 | WARNING | Case inconsistency | Manual |
| TYPO-W002 | WARNING | Punctuation issue | Yes |
| TYPO-W003 | WARNING | Whitespace issue | Yes |
Terminology (TERM)
| Code | Severity | Description | Auto-Fix |
|---|---|---|---|
| TERM-E001 | ERROR | Undefined acronym | Manual |
| TERM-E002 | ERROR | Inconsistent term usage | Manual |
| TERM-E003 | ERROR | Conflicting definitions | Manual |
| TERM-W001 | WARNING | Ambiguous pronoun | Manual |
| TERM-W002 | WARNING | Subjective qualifier | Manual |
| TERM-W003 | WARNING | Undefined jargon | Manual |
Usage Examples
Example 1: Review Single File
/doc-review ai_dev_flow/EARS/EARS_CREATION_RULES.md
Output:
=== Documentation Review Report ===
File: ai_dev_flow/EARS/EARS_CREATION_RULES.md
Mode: Single File
Scope: full
Data Consistency: 2 issues
[DATA-E001] Line 547: States "total_requirements: 135" but only 130 found
[DATA-W001] Line 89-95: Similar content to lines 105-111
References: 1 issue
[REF-E002] Line 137: Anchor #cross-reference-link-format-mandatory not found
Typos: 0 issues
Terminology: 1 issue
[TERM-W002] Line 26: "Complete reference" - subjective qualifier
Summary: 4 issues (2 errors, 2 warnings)
Example 2: Review All Files in Folder
/doc-review docs/EARS/
Output:
=== Documentation Review Report ===
Folder: docs/EARS/
Mode: Folder (all files together)
Files analyzed: 12
Scope: full
Cross-File Analysis:
[TERM-E002] Inconsistent term: "requirement" vs "EARS requirement" across 4 files
[REF-E001] Broken cross-reference: EARS-001.md → EARS-005.md#section-missing
Per-File Issues:
EARS-001.md: 2 errors, 1 warning
EARS-002.md: 0 errors, 3 warnings
...
Summary: 8 errors, 15 warnings across 12 files
Example 3: Focus on Specific Checks
/doc-review ai_dev_flow/PRD/ --focus references,typos
Example 4: Quick Pre-Commit Check
/doc-review docs/ --scope quick --report_format summary
Output:
Quick Review: docs/
Files scanned: 87
Errors: 3
Warnings: 12
Status: NEEDS ATTENTION (fix errors before commit)
Integration Points
With Other Skills
| Skill | Integration |
|---|---|
| trace-check | Shares reference validation logic |
| doc-validator | Complementary (cross-doc vs single-file) |
| quality-advisor | Real-time vs batch validation |
| code-review | Source code vs documentation focus |
With CI/CD
# .github/workflows/docs-review.yml
name: Documentation Review
on: [pull_request]
jobs:
doc-review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Run doc review
run: |
claude-code /doc-review docs/ --scope quick --report_format json > review.json
- name: Check for errors
run: |
if jq '.errors | length > 0' review.json; then
echo "Documentation errors found"
exit 1
fi
Quality Gates
Definition of Done
- All ERROR-level issues resolved
- WARNING-level issues reviewed and addressed or justified
- No broken links
- All acronyms defined
- Terminology consistent across documents
- No typos in headers or critical content
Severity Thresholds
| Scope | Errors Allowed | Warnings Allowed |
|---|---|---|
| quick | 0 | 10 |
| full | 0 | 5 |
| deep | 0 | 0 |
Sub-Agent Prompts
Data Consistency Agent Prompt
You are a data consistency reviewer. Analyze the following file(s) for:
1. **Count Mismatches**: Find stated counts that don't match actual items
- "N requirements" should match actual requirement count
- "N sections" should match actual section count
2. **Status Inconsistencies**: Check metadata vs content alignment
- Status: Approved but content has TBD markers
- Version mismatches between header and changelog
3. **Date Inconsistencies**: Validate date logic
- Last Updated should be >= Created date
- Referenced dates should be valid
4. **Duplicate Content**: Flag similar paragraphs that may be errors
Output format: JSON with error_code, line_number, description, severity
Reference Checker Agent Prompt
You are a reference validation expert. Analyze the following file(s) for:
1. **Broken Links**: Verify all markdown links resolve
- [text](path) - file exists
- [text](path#anchor) - anchor exists
2. **Invalid Cross-References**: Check traceability tags
- @brd: BRD.NN.TT.SS format
- @prd: PRD.NN.TT.SS format
- Document referenced must exist
3. **Relative Path Errors**: Validate ../ paths resolve correctly
4. **Orphan Anchors**: Find headers with no incoming links (optional)
Output format: JSON with error_code, line_number, target, description, severity
Typo Detection Agent Prompt
You are a proofreading expert. Analyze the following file(s) for:
1. **Spelling Errors**: Common misspellings and technical terms
- Use standard English dictionary + technical glossary
- Flag words not in either
2. **Markdown Syntax**: Validate proper formatting
- Unclosed code blocks
- Mismatched brackets/parentheses
- Broken table syntax
3. **Punctuation Issues**: Common punctuation errors
- Double periods, missing spaces after periods
- Comma usage
4. **Whitespace Problems**: Formatting consistency
- Trailing whitespace
- Multiple blank lines
- Inconsistent indentation
Output format: JSON with error_code, line_number, word/pattern, suggestion, severity
Terminology Agent Prompt
You are a terminology consistency expert. Analyze the following file(s) for:
1. **Undefined Acronyms**: Find uppercase abbreviations without definitions
- Check if defined on first use
- Check if in glossary section
2. **Inconsistent Naming**: Same concept, different names
- user/User/USER
- login/sign-in/authenticate
- Build term consistency map
3. **Ambiguous Language**: Unclear references
- Pronouns with unclear antecedents (it, this, that)
- Vague quantifiers (some, many, few)
4. **Subjective Qualifiers**: Unmeasurable claims
- "easy to use", "fast", "efficient"
- "simple configuration"
Output format: JSON with error_code, line_number, term, issue, suggestion, severity
Configuration
Custom Dictionary
Add project-specific terms to skip false positives:
# .doc-review.yaml
custom_dictionary:
- "EARS"
- "BDD"
- "ADR"
- "Gherkin"
- "SDD"
- "traceability"
ignored_patterns:
- "node_modules/"
- "*.min.js"
- "vendor/"
severity_overrides:
TERM-W002: "INFO" # Downgrade subjective qualifiers to INFO
Performance
Benchmarks
| Files | Scope | Time | Memory |
|---|---|---|---|
| 10 | quick | <5s | 50MB |
| 50 | full | <30s | 200MB |
| 100 | deep | <60s | 400MB |
Optimization
- Parallel sub-agents reduce wall-clock time by ~60%
- Caching of dictionary lookups
- Incremental mode for changed files only
Limitations
- Cannot understand semantic meaning deeply (may miss logical contradictions)
- May produce false positives for domain-specific terminology
- External URL validation requires network access
- Auto-fix limited to simple patterns (typos, formatting)
- Complex reference chains require manual review
Version Information
Version: 1.0.0 Created: 2026-01-01 Status: Active Author: AI Dev Flow Framework
Change Log:
- 1.1.0 (2026-01-01): Renamed to doc-review, clarified analysis modes
- Single file mode: deep analysis of one file
- Folder mode: analyze all files together with cross-file checks
- Added cross-file consistency checks in folder mode
- 1.0.0 (2026-01-01): Initial release as file-review with 4 sub-agents
- Data consistency checking
- Reference validation
- Typo detection
- Terminology review
- Parallel execution support
- Multiple output formats