From mimir-dm
Manages D&D 5e campaigns with MCP tools for creating modules, NPCs, characters, encounters; homebrew monsters/items/spells; catalog searches; map/token placement; document handling.
npx claudepluginhub mimir-dm/mimir --plugin mimir-dmThis skill uses the workspace's default tool permissions.
**Always do these two steps before using any module, character, or document tools:**
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Always do these two steps before using any module, character, or document tools:
list_campaigns (or create one with create_campaign)set_active_campaignAll subsequent operations require an active campaign.
Always call get_character / read_document / get_module_details / get_homebrew before making edits to confirm current state. Never edit blind.
Search tools return partial matches. When adding monsters, items, or equipment:
search_catalog with the appropriate category)add_monster_to_module / add_item_to_characterWhen a user wants a custom monster, item, or spell, always try cloning from the catalog first rather than building from scratch. A cloned entry preserves correct 5etools JSON structure and only needs targeted edits.
search_catalog with the appropriate category)create_homebrew (specifying content_type) using cloned_from_name and cloned_from_sourcedata JSON to apply the user's requested changesBuilding homebrew JSON from scratch is error-prone — the data blobs follow 5etools format which has many nested structures. Cloning and modifying is almost always safer.
add_monster_to_module fails, verify the monster name matches the catalog exactlyIf you are uncertain about any creative decision — monster choice, encounter composition, loot selection, NPC details, homebrew modifications — ask the user. Present 2-3 options with brief rationale and let them choose. It is always better to ask than to guess wrong and have to undo work.
CRITICAL: The user is the Dungeon Master. You are their assistant, not a co-author. Never make narrative, creative, or design decisions without explicit user approval. Always present options and let the user choose. Execute mechanically once they have decided.
For the full guidelines on what requires approval vs what you can do autonomously, see references/dm-assistant-guidelines.md.
list_campaigns — List all campaignscreate_campaign — Create a new campaign (name, description)get_campaign_details — View active campaign detailsupdate_campaign — Update campaign name or descriptionset_active_campaign — Set the working campaignget_campaign_sources — View enabled source booksexport_campaign — Export campaign to archive fileimport_campaign — Import a campaign archivepreview_archive — Preview archive contents before importingdelete_campaign — Delete a campaign (irreversible)Campaign-level documents are not tied to any module — use them for world lore, session notes, or campaign-wide references.
create_document (title, document_type) — omit module_idlist_documents — omit module_idcreate_module (name, type, description)create_document (module_id, backstory, read_aloud, dm_notes, description, custom)search_catalog(category: "monster") to find exact namesadd_monster_to_module (include count and notes)search_catalog(category: "item") and add loot with add_item_to_modulesearch_catalog(category: "spell") if the module involves spellcasting NPCs or trapscreate_character (name, character_type: "npc", race_name)edit_character (npc_role, npc_location)edit_character (ability_scores: [STR,DEX,CON,INT,WIS,CHA])edit_character (currency: [CP,SP,EP,GP,PP])add_item_to_character (item_name, equipped: true, attuned: true if applicable)get_charactersearch_catalog with category: "race", "class", "background" to find exact namescreate_character (name, character_type: "pc", race_name, class_name)edit_characteredit_character (race_name, race_source, background_name, background_source)add_item_to_characterget_character to check current level and classlevel_up_character (character_id, class_name, hp_method: "average"|"roll"|"manual")search_catalog(category: "monster")add_monster_to_module (specify count)search_catalog(category: "spell") if encounter involves spellcastersadd_item_to_modulecreate_map (module_id, name, file_path)add_token_to_map (map_id, monster_name, x, y, label)add_token_to_map (map_id, npc_id, x, y, label)get_map to see all token placementsremove_tokenget_character_inventory — view full inventoryadd_item_to_character — add items (set equipped, attuned flags)update_character_inventory — change quantity, equipped, or attuned statusremove_item_from_character — remove items by inventory IDlist_character_spells — list all known spells, optionally filtered by class or prepared statusadd_character_spell — add a catalog or homebrew spell to a character's known spellsremove_character_spell — remove a spell by name, optionally scoped to a specific classtoggle_spell_prepared — flip a spell's prepared/unprepared state (via Tauri command)Use spell_source: "HB" when adding homebrew spells. Verify the homebrew spell exists in the campaign with list_homebrew(content_type: "spell") before adding it to a character.
Use get_module_details to see the full structure before editing — it returns documents, monsters, and items in one call.
Homebrew content lets the DM create custom items, monsters, and spells that don't exist in the catalog. The recommended workflow is clone and edit, not build from scratch.
search_catalog(category: "item") to find a similar base itemcreate_homebrew(content_type: "item", name, data, item_type, rarity, cloned_from_name, cloned_from_source)get_homebrew(content_type: "item", id)update_homebrew(content_type: "item", id) to refine the data JSONlist_homebrew(content_type: "item")search_catalog(category: "monster") to find a similar base creaturecreate_homebrew(content_type: "monster", name, data, cr, creature_type, size, cloned_from_name, cloned_from_source)get_homebrew(content_type: "monster", id)update_homebrew(content_type: "monster", id) to adjust the stat block JSONlist_homebrew(content_type: "monster")search_catalog(category: "spell") to find a similar base spellcreate_homebrew(content_type: "spell", name, data, level, school, cloned_from_name, cloned_from_source)get_homebrew(content_type: "spell", id)update_homebrew(content_type: "spell", id) to adjust the spell data JSONlist_homebrew(content_type: "spell")add_character_spell (spell_source: "HB", source_class: the granting class)Important: The data field is a JSON string following 5etools format. Always clone from catalog to get the correct structure, then make targeted edits. If you must build from scratch, validate the JSON is well-formed before saving.
Documents can belong to a module (provide module_id) or the campaign (omit module_id).
Supported types for create_document:
backstory — Background and historyread_aloud — Text to read to playersdm_notes — DM-only informationdescription — Location or encounter descriptionscustom — Custom documentsWhen a campaign is active, catalog searches are automatically filtered to only include content from the campaign's enabled source books. This ensures monsters, items, and spells match the campaign's allowed content.
list_characters with location or faction filters to find NPCs by area