aria_skills/rpg_campaign/SKILL.md
Campaign state management — sessions, world state, encounters, NPCs, quests, party, and calendar for Aria's Pathfinder 2e RPG system.
npx skillsauth add najia-afk/aria_moltbot aria-rpg-campaignInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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/.
| Dependency | Layer | Purpose |
|------------|-------|---------|
| api_client | 1 | HTTP/DB gateway (required by standard) |
| Focus | Role |
|-------|------|
| rpg_master | Primary — runs full RPG sessions and campaigns |
| orchestrator | Coordination — delegates campaign tasks |
| Path | Contents |
|------|----------|
| aria_memories/rpg/campaigns/ | Campaign state files (YAML) |
| aria_memories/rpg/sessions/ | Session transcripts (Markdown) |
| aria_memories/rpg/world/ | World state and calendar |
| aria_memories/rpg/encounters/ | Encounter definitions |
| aria_memories/rpg/characters/ | Character sheets (shared with rpg_pathfinder) |
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.
exec python3 /app/skills/run_skill.py rpg_campaign <tool> '<json_args>'
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 an existing campaign as the active campaign.
exec python3 /app/skills/run_skill.py rpg_campaign load_campaign '{"campaign_id": "crimson_throne"}'
List all available RPG campaigns.
exec python3 /app/skills/run_skill.py rpg_campaign list_campaigns '{}'
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 full HP, AC, conditions, and level for all party members.
exec python3 /app/skills/run_skill.py rpg_campaign get_party_status '{}'
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 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 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 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"}'
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 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 the full world state: location, calendar, factions, events.
exec python3 /app/skills/run_skill.py rpg_campaign get_world_state '{}'
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 in the active campaign, optionally filtered by role.
exec python3 /app/skills/run_skill.py rpg_campaign list_npcs '{"role_filter": "hostile"}'
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 for the active campaign.
exec python3 /app/skills/run_skill.py rpg_campaign list_encounters '{"status_filter": "prepared"}'
Status filters: prepared, active, completed
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 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 all quest templates for the active campaign.
exec python3 /app/skills/run_skill.py rpg_campaign list_quests '{}'
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"}'
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
Class: RPGCampaignSkill
Module: aria_skills.rpg_campaign
tools
# aria-working-memory Persistent short-term memory operations for Aria runtime context. ## Purpose - Store, retrieve, rank, checkpoint, and prune working memory. - Provide high-relevance context for decision and response flows. ## Main Tools - `remember` - `recall` - `get_context` - `checkpoint` - `restore_checkpoint` - `forget` - `update` - `reflect` - `sync_to_files`
development
```skill --- name: aria-unified-search description: "🔎 RRF-merged search across semantic + graph + memory backends" metadata: {"aria": {"emoji": "🔎"}} --- # aria-unified-search Unified search engine that queries semantic memories (pgvector cosine), knowledge graph (ILIKE), and traditional memories (text match), then merges results via Reciprocal Rank Fusion (RRF) with content-hash deduplication. ## Architecture ``` Query ↓ (parallel to 3 backends) ├── SemanticBackend (pgvector cosi
tools
# aria-telegram Telegram Bot API integration skill. ## Purpose - Send and reply to messages through bot credentials. - Fetch updates and basic bot metadata. ## Main Tools - `send_message` - `reply_to_message` - `get_updates` - `get_me`
tools
# aria-sprint-manager Sprint planning and board flow management skill. ## Purpose - Operate goal board as Product Owner. - Move, prioritize, and report sprint progress. ## Main Tools - `sprint_status` - `sprint_plan` - `sprint_move_goal` - `sprint_report` - `sprint_prioritize`