content-forge/.claude/commands/review.md

4.8 KiB

/review — Structured Content Review

Run four-dimensional content review on drafts in 03-review/.

Usage

/review [slug]
  • slug (optional): Specific article to review. If omitted, reviews the most recent article in 03-review/.

Workflow

Step 1: Load Article

cd /home/kang/apps/content-forge/content-forge
obsidian read path="03-review/YYYY-MM-DD-<slug>.md"

Step 2: Four-Dimensional Review

Run structured review against each dimension:

2.1 Structure Review (结构审)

  • Logic Flow: Opening hook → Main argument → Conclusion
  • Paragraph Structure: Single idea per paragraph, clear topic sentences
  • Information Hierarchy: Headings reflect content, visual elements support structure

Issue Format: S{id} — e.g., S1, S2

2.2 Factual Review (事实审)

  • Data Accuracy: All statistics have sources, no fabricated data
  • Reference Quality: Source URLs accessible, quotes accurate
  • Technical Accuracy: Technical terms correct, code examples work

Issue Format: F{id} — e.g., F1, F2

2.3 Style Review (文风审)

  • Audience Match: Tone matches audience field, jargon explained
  • Voice Consistency: Active voice preferred, tense/POV consistent
  • Readability: Clear sentences, no wordiness, complex ideas explained

Issue Format: ST{id} — e.g., ST1, ST2

2.4 Format Review (格式审)

  • Markdown Compliance: Proper heading hierarchy, code blocks with language
  • Frontmatter Integrity: All required fields present, valid YAML
  • Asset References: Images have alt text, paths are vault-relative

Issue Format: FM{id} — e.g., FM1, FM2

Step 3: Issue Classification

Severity Definition Action
Critical Blocks publication Must fix immediately
High Strong impact on quality Should fix before polish
Medium Noticeable issue Should consider fixing
Low Minor polish Nice to have

Step 4: Pass/Fail Decision

Pass Criteria: Critical = 0 AND High ≤ 1

┌─────────────────────────────────────┐
│         Review Decision             │
├─────────────────────────────────────┤
│  Critical = 0, High ≤ 1            │
│         → PASSED → polish           │
├─────────────────────────────────────┤
│  Critical ≥ 1 OR High > 1          │
│         → FAILED → revision         │
└─────────────────────────────────────┘

Step 5: Update Frontmatter

If PASSED

obsidian property:set path="03-review/YYYY-MM-DD-<slug>.md" name="review_status" value="passed"
obsidian property:set path="03-review/YYYY-MM-DD-<slug>.md" name="review_passed_at" value="$(date -Iseconds)"
obsidian property:set path="03-review/YYYY-MM-DD-<slug>.md" name="status" value="polish"

If FAILED

# Check revision count
current_count=$(obsidian read path="03-review/YYYY-MM-DD-<slug>.md" | grep "revision_count:" | awk '{print $2}')
new_count=$((current_count + 1))

obsidian property:set path="03-review/YYYY-MM-DD-<slug>.md" name="review_status" value="failed"
obsidian property:set path="03-review/YYYY-MM-DD-<slug>.md" name="status" value="revision"
obsidian property:set path="03-review/YYYY-MM-DD-<slug>.md" name="revision_count" value="$new_count"

# If revision_count > 3, block
if [ $new_count -gt 3 ]; then
  obsidian property:set path="03-review/YYYY-MM-DD-<slug>.md" name="status" value="blocked"
  echo "WARNING: Revision limit exceeded. Article blocked for human decision."
fi

Step 6: Output Review Report

# Review Report: {title}

## Summary

| Dimension | Critical | High | Medium | Low |
|-----------|----------|------|--------|-----|
| Structure | {n} | {n} | {n} | {n} |
| Factual | {n} | {n} | {n} | {n} |
| Style | {n} | {n} | {n} | {n} |
| Format | {n} | {n} | {n} | {n} |
| **Total** | **{n}** | **{n}** | **{n}** | **{n}** |

## Decision: PASSED / FAILED

## Issues

{List all issues with id, severity, description}

## Next Steps

{If PASSED}: Proceed to polish phase
{If FAILED}: Fix issues and resubmit for review (revision {n}/3)

Integration

  • /multi-review: Run parallel review with multiple AI providers
  • /challenge: Pressure-test key claims against vault history
  • Review Checklist Template: content-forge/templates/review-checklist.md

Constraints

  • READ-ONLY: Does not modify article content, only frontmatter
  • Golden Rule: Agents Read, Humans Write — issues are reported, not auto-fixed
  • Revision Limit: Max 3 revision cycles per article