Track multi-session story arcs, plot threads, and campaign progression. Manages ongoing narratives, NPC relationships, party goals, and session continuity across multiple game sessions.
Installs into .claude/skills of the current project.
Are you the author of Campaign Arc?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/david-li0406-campaign-arc)
---
name: campaign-arc
description: Track multi-session story arcs, plot threads, and campaign progression. Manages ongoing narratives, NPC relationships, party goals, and session continuity across multiple game sessions.
argument-hint: "[world] [--new|--status|--update|--session N]"
---
# Campaign Arc Tracker
Track campaign: $ARGUMENTS
## Overview
This skill manages long-running campaign narratives by tracking:
- **Story Arcs:** Multi-session plot threads with beginning, middle, and end
- **Plot Threads:** Individual storylines that weave through sessions
- **Party Goals:** What the players are working toward
- **NPC Relationships:** How NPCs feel about the party over time
- **Session Continuity:** Where things left off and what's pending
- **Foreshadowing:** Seeds planted for future reveals
- **Consequences:** Delayed effects of party actions
## Campaign State File
Campaign data is stored in `Worlds/[World Name]/.campaign-state.json`:
```json
{
"version": "1.0",
"world_name": "Eldermyr",
"campaign_name": "The Shattered Crown",
"party": {
"members": ["Thorin", "Elara", "Marcus", "Zara"],
"level": 5,
"base_of_operations": "[[Aldersgate]]"
},
"current_session": 12,
"session_log": [
{
"number": 12,
"date": "2025-01-15",
"location": "[[The Sunken Palace]]",
"summary": "Explored underwater ruins, found ancient artifact",
"cliffhanger": "Cultists arrived as party found the artifact"
}
],
"story_arcs": [],
"plot_threads": [],
"npc_relationships": {},
"foreshadowing": [],
"consequences": [],
"last_updated": "ISO timestamp"
}
```
## Instructions
### Parse Arguments
| Command | Purpose |
|---------|---------|
| `[world]` | View campaign status for this world |
| `[world] --new` | Create new campaign tracker |
| `[world] --status` | Show full campaign dashboard |
| `[world] --update` | Update after a session |
| `[world] --session N` | View specific session details |
| `[world] --arc [name]` | View or create specific story arc |
| `[world] --thread [name]` | View or create specific plot thread |
---
## Creating a New Campaign (--new)
### Step 1: Campaign Basics
Ask the user:
> "Let's set up campaign tracking for [World Name]."
>
> 1. **Campaign Name:** What's this campaign called?
> 2. **Party Members:** Who are the player characters?
> 3. **Starting Level:** What level is the party?
> 4. **Base of Operations:** Where does the party call home?
> 5. **Campaign Hook:** What's the main premise or goal?
### Step 2: Initial Story Arc
Ask:
> "What's the main story arc the party is currently pursuing?"
>
> **Arc Name:** (e.g., "The Search for the Lost King")
> **Arc Goal:** What does completing this arc achieve?
> **Current Phase:** Beginning / Rising Action / Climax / Resolution
> **Key NPCs:** Who are the major players in this arc?
> **Key Locations:** Where does this arc take place?
### Step 3: Active Plot Threads
Ask:
> "What ongoing plot threads exist? List any subplots, side quests, or dangling mysteries."
>
> For each thread:
> - **Thread Name:** (e.g., "The Missing Merchant")
> - **Status:** Active / Dormant / Resolved
> - **Related Arc:** Which story arc does this connect to?
> - **Urgency:** Low / Medium / High / Critical
> - **Next Beat:** What happens next if players engage?
### Step 4: NPC Relationship Baseline
Ask:
> "List key NPCs and their current relationship with the party:"
>
> | NPC | Disposition | Reason |
> |-----|-------------|--------|
> | [[Lord Varic]] | Friendly | Party saved his daughter |
> | [[The Owl]] | Neutral | Hasn't met them yet |
> | [[High Confessor Maren]] | Hostile | Party exposed his corruption |
### Step 5: Save Campaign State
Create the `.campaign-state.json` file with all gathered information.
---
## Campaign Status Dashboard (--status)
Display comprehensive overview:
```
╔══════════════════════════════════════════════════════════════════╗
║ CAMPAIGN: The Shattered Crown ║
║ World: Eldermyr | Session: 12 | Party Level: 5 ║
╠══════════════════════════════════════════════════════════════════╣
║ PARTY ║
║ • Thorin (Dwarf Fighter) • Elara (Elf Wizard) ║
║ • Marcus (Human Cleric) • Zara (Halfling Rogue) ║
║ Base: [[Aldersgate]] ║
╠══════════════════════════════════════════════════════════════════╣
║ ACTIVE STORY ARCS ║
║ ┌─────────────────────────────────────────────────────────────┐ ║
║ │ [■■■■■□□□□□] The Shattered Crown (50% - Rising Action) │ ║
║ │ [■■■□□□□□□□] The Cult of Shadows (30% - Beginning) │ ║
║ └─────────────────────────────────────────────────────────────┘ ║
╠══════════════════════════════════════════════════════════════════╣
║ PLOT THREADS ║
║ 🔴 CRITICAL: The Ritual begins at the next full moon (2 sessions)║
║ 🟠 HIGH: [[The Owl]] requests a meeting ║
║ 🟡 MEDIUM: Missing merchant still unresolved ║
║ 🟢 LOW: Elara's family sword needs reforging ║
╠══════════════════════════════════════════════════════════════════╣
║ NPC RELATIONSHIPS ║
║ 😊 Friendly: [[Lord Varic]], [[Sister Elspeth]], [[Grom Smith]] ║
║ 😐 Neutral: [[The Owl]], [[Captain Aldric]] ║
║ 😠 Hostile: [[High Confessor Maren]], [[The Crimson Hand]] ║
╠══════════════════════════════════════════════════════════════════╣
║ FORESHADOWING (planted seeds) ║
║ • Session 8: Strange symbol found in ruins (not yet revealed) ║
║ • Session 10: NPC mentioned "the sleeper beneath" cryptically ║
╠══════════════════════════════════════════════════════════════════╣
║ PENDING CONSEQUENCES ║
║ • Session 9: Party killed the Baron's son - revenge coming ║
║ • Session 11: Left cultist alive - he reported to superiors ║
╠══════════════════════════════════════════════════════════════════╣
║ LAST SESSION (#12) CLIFFHANGER: ║
║ "Cultists arrived as party found the artifact in the Sunken ║
║ Palace. Roll initiative next session!" ║
╚══════════════════════════════════════════════════════════════════╝
```
---
## Post-Session Update (--update)
### Step 1: Session Summary
Ask:
> "Let's record Session [N+1]. What happened?"
>
> 1. **Date:** When was this session?
> 2. **Location(s):** Where did the party go?
> 3. **Summary:** What happened in 2-3 sentences?
> 4. **Major Events:** Any significant occurrences?
> 5. **Cliffhanger:** How did the session end?
### Step 2: Arc Progress
For each active story arc:
> "Did 'The Shattered Crown' arc progress?"
> - No change
> - Minor progress (moved forward slightly)
> - Major progress (completed a phase)
> - Resolved (arc complete!)
> - Complicated (new obstacles emerged)
### Step 3: Plot Thread Updates
> "Update plot thread status:"
>
> | Thread | Previous | New Status | Notes |
> |--------|----------|------------|-------|
> | Missing Merchant | Active | Resolved | Found him in dungeon |
> | The Ritual | Active | Critical | Only 2 sessions left! |
### Step 4: NPC Relationship Changes
> "Did any NPC relationships change?"
>
> - [[Lord Varic]]: Friendly → Grateful (party saved the city)
> - [[The Owl]]: Neutral → Suspicious (party broke into his office)
### Step 5: New Seeds
> "Any foreshadowing planted this session?"
>
> - What was hinted at?
> - What's the eventual reveal?
> - When might it pay off?
### Step 6: New Consequences
> "Any actions that will have future consequences?"
>
> - What did the party do?
> - What's the consequence?
> - When will it trigger?
### Step 7: Save Updates
Update `.campaign-state.json` with all new information.
---
## Story Arc Management (--arc)
### Creating a New Arc
```
/campaign-arc Eldermyr --arc "The Dragon's Return"
```
Ask:
> **Arc Name:** The Dragon's Return
> **Arc Type:** Main Quest / Side Quest / Character Arc / World Event
> **Description:** What's this arc about?
> **Phases:**
> 1. Beginning: What starts the arc?
> 2. Rising Action: What complications arise?
> 3. Climax: What's the pivotal moment?
> 4. Resolution: How might it end?
>
> **Connections:**
> - Related NPCs: [[list]]
> - Related Locations: [[list]]
> - Related Plot Threads: [[list]]
### Arc Progress Tracking
```
Arc: The Shattered Crown
Phase: Rising Action (2 of 4)
Progress: ████████░░░░░░░░░░░░ 40%
Milestones:
✓ Discovered the crown was shattered
✓ Found the first fragment
○ Find the second fragment
○ Find the third fragment
○ Reforge the crown
○ Crown the true heir
```
---
## Plot Thread Management (--thread)
### Creating a Thread
```
/campaign-arc Eldermyr --thread "The Poisoned Well"
```
Ask:
> **Thread Name:** The Poisoned Well
> **Type:** Mystery / Combat / Social / Exploration
> **Status:** Active
> **Urgency:** Medium
> **Related Arc:** (optional)
>
> **Thread Beats:**
> 1. Discovery: Village reports illness
> 2. Investigation: Clues point to old mine
> 3. Confrontation: Undead necromancer in mine
> 4. Resolution: Destroy phylactery, cure village
>
> **Current Beat:** 2 (Investigation)
### Thread Tracking
```
Active Threads: 5
─────────────────────────────────────────
🔴 The Ritual (CRITICAL) - 2 sessions until trigger
Beat 3/4: Locate ritual site before full moon
🟠 The Owl's Request (HIGH) - Meeting scheduled
Beat 1/3: Accept or decline the job
🟡 Missing Merchant (MEDIUM) - Dormant 3 sessions
Beat 2/4: Follow leads to Trader's Rest
🟢 Elara's Sword (LOW) - Character goal
Beat 1/3: Find the legendary smith
🟢 Haunted Lighthouse (LOW) - Optional side quest
Beat 1/4: Hear rumors at tavern
```
---
## Integration with Other Skills
### With `/session-prep`
Campaign state informs session prep:
- Active plot threads become session focus options
- NPC relationships affect NPC behavior suggestions
- Pending consequences can trigger
### With `/random-encounter`
- NPC relationship status affects encounter tone
- Active plot threads can spawn related encounters
### With `/create-entity`
- New NPCs automatically added to relationship tracker
- New locations linked to active arcs
---
## Examples
```bash
# Create new campaign tracker
/campaign-arc Eldermyr --new
# View campaign dashboard
/campaign-arc Eldermyr --status
# Update after session 13
/campaign-arc Eldermyr --update
# View session 10 details
/campaign-arc Eldermyr --session 10
# Create new story arc
/campaign-arc Eldermyr --arc "The Dragon's Return"
# Create new plot thread
/campaign-arc Eldermyr --thread "The Missing Heir"
# Quick status check
/campaign-arc Eldermyr
```