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

149 lines
4.8 KiB
Markdown

# /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
```bash
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
```bash
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
```bash
# 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
```markdown
# 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