Writers room
Skill bybren-llc/story-systems-template/.claude/skills/writers-room
This skill convenes a 6-seat collaborative pre-production session — Story Architect, Story Analyst, Dialogue Writer, Scene Writer, Standards Reviewer, and Research Specialist pitch their creative visions before writing begins. Optionally convenes the seats across MULTIPLE models/providers (Claude + self-hosted vLLM + cloud) for genuine diversity. Use when: starting a new screenplay, planning major rewrites, reimagining existing material, or seeking diverse expert perspectives.From its SKILL.md
npx -y skills add bybren-llc/story-systems-template --skill writers-roomAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
8.2 KB, as published. Nobody here has run it
Writer's Room Skill
Purpose
A collaborative pre-production workflow where multiple specialized agents pitch their creative visions before any writing begins. This creates diverse perspectives, healthy creative tension, and a synthesized approach that draws from the best ideas.
When to Use
- Before starting a new screenplay or major rewrite
- When reimagining existing material
- When the creative direction is uncertain
- When you want multiple expert perspectives before committing
Participants
The Writer's Room convenes 6 specialized agents, each with a distinct role:
Story Architect
Focus: Structure and form
- Alternative three-act structures
- Non-linear possibilities
- Scene sequence options
- Climax variations
- Pacing strategies
Story Analyst
Focus: Character and meaning
- Character arc potential
- Thematic depth opportunities
- Aristotle's Six Components evaluation
- What the story is really about
- Theophrastus archetype analysis
Dialogue Writer
Focus: Voice and tone
- Character voice distinctions
- Comedic/dramatic rhythm
- Language approach (profanity, dialect, period)
- Signature lines and moments
- Subtext opportunities
Scene Writer
Focus: Visual storytelling
- Key visual setpieces
- Physical comedy/action beats
- Power dynamics per scene
- Compression opportunities
- "Show don't tell" moments
Standards Reviewer
Focus: Quality and originality
- What makes each proposed element A-grade?
- Weak points to avoid
- Cliche identification
- Fresh vs. derivative analysis
- Genre boundary awareness
Research Specialist
Focus: Authenticity and grounding
- Setting accuracy requirements
- Technical/professional accuracy
- Historical or cultural considerations
- Real-world logic checks
- Reference material needs
Process
Step 1: Brief the Room
Provide all participants with:
- The core premise/logline
- Any existing material (V1 script, source material, notes)
- Target tone and audience
- Constraints (runtime, budget considerations, rating)
- What's "sacred" vs. open for reimagining
Step 2: Individual Pitches
Each agent prepares their perspective:
- What excites them about the material
- Their proposed approach
- Specific recommendations
- Potential concerns or warnings
Step 3: Synthesis
Combine the best elements from all pitches into:
- A unified creative direction
- Key scenes that must exist
- Tone and voice guidelines
- What's explicitly off-limits
- The "North Star" for the project
Multi-Model Council (opt-in)
By default every seat is played by its routed Claude model (see .claude/model-routing.md) —
"diverse perspectives" from diverse prompts. The council upgrade lets the room convene diverse
minds: some seats on Claude, some on a self-hosted vLLM model, some on another cloud. This is
additive — the default behavior is unchanged.
Modes
solo(default): all six seats = their routed Claude models. No registry or endpoints needed. This is exactly the classic Writer's Room.diverse: seats spread across providers, plus optional guest seats on rostered non-Claude models (e.g. a local Qwen/Llama wildcard, a Gemini seat).custom: an explicit seat→model roster provided at invocation.
How the council runs
The Session Manager conducts:
- Read the roster.
node scripts/model-consult.js list(or thelist_modelsMCP tool if themodel-consultserver is enabled) returns the available models, redacted, with areadyflag per model. Assign each seat amodel_id— default is the seat's affinity → Claude model. - Gather pitches in parallel — one mind per seat:
- Claude seats: dispatch the seat's native subagent ("Acting as the Story Architect…") on its routed model, as today.
- Guest (non-Claude) seats: call
consult_model(model_id, seat, system, prompt)(MCP), ornode scripts/model-consult.js consult <model_id> --seat <seat> --prompt "…". Thesystemprompt is the seat's role framing; thepromptis the brief from Step 1.
- Synthesize with provenance. A single Claude Opus pass consolidates all pitches into one direction and credits which seat/model each surviving idea came from — so you can see whether the local model or the cloud guest actually moved the needle.
- Degrade gracefully — never fake. If a guest seat's provider is unreachable or not configured, the connector returns a structured error (not a completion). Skip that seat and record it under "Seats skipped" with the reason. The room continues with the seats it has; the roster header states who spoke and who was skipped (no silent drops).
Configuring guests
Guest endpoints and keys live in .env (see .env.example); the registry
(.wtfb/ai-harness/model-registry.json) references only the env-var names. To enable the MCP
path, install the SDK and register the server per scripts/model-consult-mcp.mjs. With nothing
configured, the room simply runs in solo mode.
Output Format
# Writer's Room Creative Direction
## Project: [Title]
## Date: [Session Date]
## Mode: [solo | diverse | custom]
### Council Roster
| Seat | Model | Provider | Spoke? |
|------|-------|----------|--------|
| Story Architect | claude-opus-4-8 | anthropic | ✅ |
| Story Analyst | claude-opus-4-8 | anthropic | ✅ |
| Dialogue Writer | claude-fable-5 | anthropic | ✅ |
| Scene Writer | claude-fable-5 | anthropic | ✅ |
| Standards Reviewer | claude-opus-4-8 | anthropic | ✅ |
| Research Specialist | claude-opus-4-8 | anthropic | ✅ |
| *(guest)* Wildcard | vllm-local | openai-compatible | ✅ / ⏭️ skipped |
*Seats skipped:* [none] — or "Wildcard (vllm-local): NETWORK_ERROR — endpoint unreachable".
---
## The Pitch (From Story Architect · claude-opus-4-8)
[Structure and form recommendations]
## The Heart (From Story Analyst · claude-opus-4-8)
[Character and thematic core]
## The Voice (From Dialogue Writer · claude-fable-5)
[Tone and language approach]
## The Spectacle (From Scene Writer · claude-fable-5)
[Visual setpieces and key moments]
## The Standard (From Standards Reviewer · claude-opus-4-8)
[Quality benchmarks and originality notes]
## The Foundation (From Research Specialist · claude-opus-4-8)
[Authenticity requirements]
---
## Synthesized Creative Direction
### Core Approach
[Unified vision statement]
### Must-Have Scenes
1. [Scene description]
2. [Scene description]
3. [Scene description]
### Tone Guidelines
- [Guideline]
- [Guideline]
### Off-Limits
- [What to avoid]
### North Star
[Single guiding principle for all creative decisions]
Benefits
- Diverse Perspectives: No single creative blind spot
- Quality Bar: Standards Reviewer prevents lazy choices
- Grounded Creativity: Research Specialist prevents plausibility errors
- Unified Vision: Synthesis creates alignment before writing begins
- Reusable Asset: Creative Direction document guides entire production
Integration
The Writer's Room output feeds directly into:
/theme-discovery- Validates thematic direction/character-interview- Guides character development priorities/story-check- Establishes success criteria/scene-writeragent - Provides visual direction/dialogue-writeragent - Sets voice parameters
Example Invocation
/writers-room
Project: Racoon Rescue V2
Premise: A drunk Navy petty officer uses an unconscious raccoon to bypass his breathalyzer interlock.
Existing: V1 screenplay (15 min short, dark comedy)
Target: Smart R (Fargo-level), complete reimagining
Sacred: Core premise only - everything else open
Constraints: Keep at ~15 min, sophisticated adult humor