Aria_moltbot aria-rpg-campaign
Campaign state management — sessions, world state, encounters, NPCs, quests, party, and calendar for Aria's Pathfinder 2e RPG system.
git clone https://github.com/Najia-afk/Aria_moltbot
T=$(mktemp -d) && git clone --depth=1 https://github.com/Najia-afk/Aria_moltbot "$T" && mkdir -p ~/.claude/skills && cp -r "$T/aria_skills/rpg_campaign" ~/.claude/skills/najia-afk-aria-moltbot-aria-rpg-campaign && rm -rf "$T"
aria_skills/rpg_campaign/SKILL.mdaria-rpg-campaign
Layer 3 — Domain | Status: active | v1.0.0
Campaign lifecycle management for Pathfinder 2e. Create campaigns, manage sessions, track world state, register NPCs, build encounters, generate and run quests, manage the party roster, advance the Golarion calendar, and save session transcripts.
All campaign data is persisted to
aria_memories/rpg/.
Dependencies
| Dependency | Layer | Purpose |
|---|---|---|
| 1 | HTTP/DB gateway (required by standard) |
Focus Affinity
| Focus | Role |
|---|---|
| Primary — runs full RPG sessions and campaigns |
| Coordination — delegates campaign tasks |
Storage
| Path | Contents |
|---|---|
| Campaign state files (YAML) |
| Session transcripts (Markdown) |
| World state and calendar |
| Encounter definitions |
| Character sheets (shared with rpg_pathfinder) |
Companion Skill
Works closely with
rpg_pathfinder — this skill manages campaign state while rpg_pathfinder handles mechanical resolution (dice, combat, conditions). Together they form the complete RPG system.
Usage
exec python3 /app/skills/run_skill.py rpg_campaign <tool> '<json_args>'
Tools — Campaign Lifecycle
create_campaign
Create a new Pathfinder 2e campaign with world state, NPC roster, and session tracking.
exec python3 /app/skills/run_skill.py rpg_campaign create_campaign '{"campaign_id": "crimson_throne", "title": "Curse of the Crimson Throne", "setting": "Golarion", "starting_level": 1}'
load_campaign
Load an existing campaign as the active campaign.
exec python3 /app/skills/run_skill.py rpg_campaign load_campaign '{"campaign_id": "crimson_throne"}'
list_campaigns
List all available RPG campaigns.
exec python3 /app/skills/run_skill.py rpg_campaign list_campaigns '{}'
Tools — Party Management
add_to_party
Add a character sheet to the active campaign's party.
exec python3 /app/skills/run_skill.py rpg_campaign add_to_party '{"character_file": "shiva_kael_stormwind"}'
get_party_status
Get full HP, AC, conditions, and level for all party members.
exec python3 /app/skills/run_skill.py rpg_campaign get_party_status '{}'
Tools — Session Management
start_session
Start a new numbered game session.
exec python3 /app/skills/run_skill.py rpg_campaign start_session '{"recap": "Last time, the party cleared the goblin caves..."}'
log_event
Log a narrative, combat, social, exploration, loot, or milestone event to the session.
exec python3 /app/skills/run_skill.py rpg_campaign log_event '{"event": "Party negotiated safe passage with the troll chief", "event_type": "social"}'
Event types:
narrative, combat, social, exploration, loot, milestone
end_session
End the current game session and save notes.
exec python3 /app/skills/run_skill.py rpg_campaign end_session '{"notes": "Party reached level 2, cliffhanger at the dungeon entrance"}'
save_session_transcript
Save a formatted session transcript to
aria_memories/rpg/sessions/.
exec python3 /app/skills/run_skill.py rpg_campaign save_session_transcript '{"title": "crimson_throne_s01", "content": "# Session 1\n...", "player_name": "Kael Stormwind", "companion_name": "Seraphina Dawnblade", "dm_name": "Aria"}'
Tools — World State
update_location
Move the party to a new location, adding it to known locations if new.
exec python3 /app/skills/run_skill.py rpg_campaign update_location '{"location": "Sandpoint", "description": "A quiet coastal town on the Lost Coast"}'
advance_time
Advance the in-game Golarion calendar by N days.
exec python3 /app/skills/run_skill.py rpg_campaign advance_time '{"days": 3, "event": "Party rested and resupplied in town"}'
get_world_state
Get the full world state: location, calendar, factions, events.
exec python3 /app/skills/run_skill.py rpg_campaign get_world_state '{}'
Tools — NPCs
add_npc
Add a named NPC to the campaign roster with role and optional stats.
exec python3 /app/skills/run_skill.py rpg_campaign add_npc '{"npc_name": "Ameiko Kaijitsu", "role": "friendly", "description": "Owner of the Rusty Dragon Inn", "location": "Sandpoint"}'
Roles:
friendly, neutral, hostile, boss
list_npcs
List NPCs in the active campaign, optionally filtered by role.
exec python3 /app/skills/run_skill.py rpg_campaign list_npcs '{"role_filter": "hostile"}'
Tools — Encounters
create_encounter
Create a pre-built encounter with enemies, environment, loot, and XP.
exec python3 /app/skills/run_skill.py rpg_campaign create_encounter '{"encounter_id": "goblin_ambush", "title": "Goblin Ambush", "threat_level": "moderate", "enemies": [{"name": "Goblin Warrior", "level": 1, "hp": 15, "ac": 16}], "xp_reward": 80}'
Threat levels:
trivial, low, moderate, severe, extreme
list_encounters
List encounters for the active campaign.
exec python3 /app/skills/run_skill.py rpg_campaign list_encounters '{"status_filter": "prepared"}'
Status filters:
prepared, active, completed
Tools — Quest System
generate_quest
Generate a reusable quest template YAML with encounters, NPCs, boss, loot, and DM instructions.
exec python3 /app/skills/run_skill.py rpg_campaign generate_quest '{"quest_id": "goblin_warrens", "title": "The Goblin Warrens", "hook": "Goblins raided the village granary", "setting_location": "Sandpoint", "target_level_start": 1, "target_level_end": 2, "tone": "heroic", "party_characters": ["shiva_kael_stormwind"], "encounter_sequence": [{"id": "ambush_01", "title": "Goblin Patrol", "type": "combat", "threat_level": "low"}], "boss": {"id": "boss_warchief", "title": "Warchief Grukk", "type": "boss", "threat_level": "severe"}}'
load_quest
Load a quest template and get a full DM briefing.
exec python3 /app/skills/run_skill.py rpg_campaign load_quest '{"quest_id": "goblin_warrens"}'
list_quests
List all quest templates for the active campaign.
exec python3 /app/skills/run_skill.py rpg_campaign list_quests '{}'
complete_encounter_in_quest
Mark an encounter as completed in a quest and track progress.
exec python3 /app/skills/run_skill.py rpg_campaign complete_encounter_in_quest '{"quest_id": "goblin_warrens", "encounter_id": "ambush_01", "xp_awarded": 60, "loot_found": ["short sword", "10 gp"], "notes": "Party used stealth to ambush the goblins"}'
Campaign Data Format
Campaigns are stored as YAML in
aria_memories/rpg/campaigns/<campaign_id>.yaml:
campaign_id: crimson_throne title: "Curse of the Crimson Throne" setting: Golarion party: [shiva_kael_stormwind, aria_seraphina_dawnblade] session_count: 3 current_location: Sandpoint calendar: year: 4724 month: 1 day: 15 npcs: - name: Ameiko Kaijitsu role: friendly encounters: - encounter_id: goblin_ambush status: completed quests: - quest_id: goblin_warrens status: active
Python Module
Class:
RPGCampaignSkill
Module: aria_skills.rpg_campaign