4.8 KiB
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 in03-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
audiencefield, 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