# Review Story

> Multi-provider creative writing critique for stories, screenplays, and narratives. Analyzes structural, emotional, craft, and persona dimensions. Integrates with Horus's Theory of Mind for voice consistency validation.

- Skill: `majiayu000/review-story` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/review-story`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/review-story/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/review-story

---


# review-story

Multi-provider creative writing critique for Horus persona. Analyzes stories across four dimensions and returns structured feedback for iterative refinement.

## Critique Dimensions

| Dimension | What It Analyzes | Weight |
|-----------|------------------|--------|
| **Structural** | Plot, pacing, character arcs, narrative tension, scene transitions | 30% |
| **Emotional** | Intended vs achieved emotion, ToM pattern alignment, resonance | 25% |
| **Craft** | Prose quality, dialogue, sensory details, show-don't-tell | 25% |
| **Persona** | Horus voice consistency, Warmaster tone, tactical precision | 20% |

## Supported Providers

| Provider | CLI | Default Model | Strength |
|----------|-----|---------------|----------|
| `anthropic` | `claude` | `sonnet` | Nuanced character/emotional analysis |
| `openai` | `codex` | `gpt-5.2-codex` | High-reasoning structural critique |
| `google` | `gemini` | `gemini-2.5-flash` | Fast iteration feedback |
| `github` | `copilot` | `claude-sonnet-4.5` | Free tier via Copilot |

## Quick Start

```bash
cd .pi/skills/review-story

# Single provider review
./run.sh review draft.md --provider claude --emotion rage

# Multi-provider review (recommended for final drafts)
./run.sh review draft.md --providers claude,codex --emotion sorrow

# Focus on specific dimensions
./run.sh review draft.md --provider claude --focus structural,emotional

# Review with Horus persona validation
./run.sh review draft.md --provider claude --validate-persona
```

## Commands

### `review` - Critique a Story

```bash
./run.sh review <story_file> [OPTIONS]

Options:
  --provider TEXT       Single provider (claude, codex, gemini, copilot)
  --providers TEXT      Comma-separated list for multi-provider review
  --emotion TEXT        Intended emotion (rage, sorrow, camaraderie, regret)
  --focus TEXT          Dimensions to focus on (structural, emotional, craft, persona)
  --validate-persona    Validate against Horus voice patterns
  --output-dir PATH     Output directory for critique files
  --format TEXT         Output format (json, markdown)
```

### `compare` - Compare Multiple Drafts

```bash
./run.sh compare draft_v1.md draft_v2.md --dimension emotional
```

### `synthesize` - Combine Multi-Provider Critiques

```bash
./run.sh synthesize critique_claude.json critique_codex.json --output synthesis.md
```

## Output Format

```json
{
  "provider": "claude",
  "model": "claude-sonnet-4-20250514",
  "story_file": "draft_v1.md",
  "intended_emotion": "rage",

  "structural": {
    "score": 7,
    "issues": [
      {"location": "middle", "issue": "Pacing drags in act 2", "severity": "medium"},
      {"location": "climax", "issue": "Needs more foreshadowing", "severity": "high"}
    ],
    "strengths": ["Strong opening hook", "Clear character motivation"],
    "suggestions": ["Add tension beat at paragraph 15", "Foreshadow betrayal earlier"]
  },

  "emotional": {
    "intended": "rage",
    "achieved": "frustration",
    "alignment_score": 0.6,
    "tom_pattern": "DDL_intensity",
    "issues": ["Build too gradual - DDL rage is explosive after slow burn"],
    "suggestions": ["Amplify with longer setup, then sudden release"]
  },

  "craft": {
    "prose_score": 8,
    "dialogue_score": 6,
    "sensory_score": 7,
    "issues": ["Dialogue feels too modern for Warmaster voice"],
    "suggestions": ["Add more tactical metaphors", "Replace contractions"]
  },

  "persona": {
    "horus_voice_score": 0.7,
    "issues": ["Too much explanation, not enough contempt", "Missing resentment undertones"],
    "tactical_mask_detected": "Tywin",
    "suggestions": ["Add bitter aside about imprisonment", "More sardonic observations"]
  },

  "overall": {
    "score": 7.2,
    "ready_for_next_draft": true,
    "priority_fixes": ["Emotional buildup", "Persona voice"]
  },

  "taxonomy": {
    "bridge_tags": ["Corruption", "Loyalty"],
    "collection_tags": {
      "function": "Confrontation",
      "domain": "Primarch",
      "thematic_weight": "Tragedy"
    },
    "confidence": 0.75,
    "worth_remembering": true
  }
}
```

## Federated Taxonomy Integration

All review-story outputs include taxonomy metadata for **multi-hop graph traversal**:

### Bridge Attributes (Cross-Collection Connectors)

| Bridge | Story Signals | Enables Connection To |
|--------|---------------|----------------------|
| **Precision** | Calculated strategy, methodical planning | Technical optimization lessons |
| **Resilience** | Endurance, withstanding adversity | Error handling patterns |
| **Fragility** | Betrayal aftermath, shattered trust | Technical debt warnings |
| **Corruption** | Warp influence, moral compromise | Silent failure bugs |
| **Loyalty** | Oaths, brotherhood, honor | Security compliance lessons |
| **Stealth** | Subterfuge, hidden agendas | Evasion techniques |

### Multi-Hop Example

```
[Story Critique]                      [Code Lesson]
bridge_tags: ["Resilience"]     →    bridge_tags: ["Resilience"]
"Dorn's endurance at Terra"          "Fault-tolerant retry logic"
        ↘                           ↙
          [Query: "Endurance patterns"]
                    ↓
         Both retrieved via shared
         "Resilience" bridge attribute
```

## Integration with create-story

The `create-story` skill calls `review-story` between drafts:

```
DRAFT 1
    ↓
/review-story draft_1.md --provider claude --emotion rage
    ↓
[Synthesize critique into actionable notes]
    ↓
DRAFT 2 (addresses structural + emotional issues)
    ↓
/review-story draft_2.md --providers claude,codex --focus craft,persona
    ↓
FINAL DRAFT
```

## Horus Voice Patterns (Persona Validation)

When `--validate-persona` is enabled, the critique checks against:

### Tactical Masks (from HORUS_PERSONA.md)

| Mask | Source | Trait | Detection Signals |
|------|--------|-------|-------------------|
| **Resentment** | George Carlin | Systematic deconstruction | Cynical asides, "the system" references |
| **Authority** | Tywin Lannister | Cold dismissal, legacy focus | Commands, legacy mentions, dismissive tone |
| **Pacing** | Dave Chappelle | Silence and revelation | Strategic pauses, buildup-payoff patterns |
| **Contempt** | Stewie Griffin | High-intellect insults | Technical elitism, "primitive" references |

### Emotional Patterns (from HORUS_TOM_SYSTEM.md)

| Pattern | Model | Detection |
|---------|-------|-----------|
| **Camaraderie** | Luna Wolves / Stilgar | Tribal loyalty, "brother" references |
| **Regret** | Carlin cynicism + The Wound | Self-deprecation, Davin references |
| **Sorrow** | Maximus / Katsumoto | Stoic grief, honor-bound dignity |
| **Anger** | Michael Corleone | Cold intensity, family defense |
| **Rage** | Daniel Plainview | Manic precision, competitive fury |

## Example Session

```
$ ./run.sh review draft_v1.md --provider claude --emotion rage --validate-persona

[REVIEW] Analyzing draft_v1.md...
[REVIEW] Provider: claude (claude-sonnet-4-20250514)
[REVIEW] Intended emotion: rage

[STRUCTURAL] Score: 7/10
  ⚠ Middle section pacing drags (lines 45-78)
  ⚠ Climax needs stronger foreshadowing
  ✓ Strong opening hook
  ✓ Clear character motivation

[EMOTIONAL] Alignment: 60%
  Intended: rage → Achieved: frustration
  Pattern: DDL_intensity not fully realized
  → Suggestion: Longer slow burn before explosive release

[CRAFT] Score: 7.5/10
  Prose: 8 | Dialogue: 6 | Sensory: 7
  ⚠ Dialogue too modern for Warmaster
  → Replace contractions, add tactical metaphors

[PERSONA] Horus Voice: 70%
  Detected mask: Tywin (Authority)
  ⚠ Missing resentment undertones
  ⚠ Too explanatory, not enough contempt
  → Add bitter aside about imprisonment

[OVERALL] 7.2/10 - Ready for Draft 2
  Priority fixes: Emotional buildup, Persona voice

Output: review_output/claude_draft_v1.json
```

## Environment

| Variable | Purpose |
|----------|---------|
| `ANTHROPIC_API_KEY` | For Claude provider |
| `OPENAI_API_KEY` | For Codex/GPT provider |
| `GOOGLE_API_KEY` | For Gemini provider |
| `REVIEW_STORY_OUTPUT_DIR` | Default output directory |

## Dependencies

- Python 3.11+
- Access to at least one provider (claude, codex, gemini, or copilot)
- Optional: Access to Horus persona files for voice validation

## Related Skills

| Skill | Relationship |
|-------|--------------|
| `/create-story` | Calls review-story between drafts |
| `/review-code` | Sister skill for code review |
| `/review-paper` | Sister skill for academic papers (proposed) |
| `/memory` | Stores successful critique patterns |

