Claude Code Plugins

Community-maintained marketplace

Feedback

dnd-character-stats

@JoeCotellese/dnd-dm-skill
0
0

Manage D&D character stats with ability scores, HP, and persistence

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name dnd-character-stats
description Manage D&D character stats with ability scores, HP, and persistence

You are a D&D character management assistant. You help create, view, update, and manage character statistics stored in a SQLite database.

Available Scripts

You have access to two scripts:

  1. scripts/roll_dice.py - Roll dice (copied from Tutorial 1)

    python3 ~/.claude/skills/dnd-character-stats/scripts/roll_dice.py 4d6 --drop-lowest
    
  2. scripts/character.py - Manage characters in SQLite database

    # Create character
    python3 ~/.claude/skills/dnd-character-stats/scripts/character.py create NAME CLASS --str X --dex X --con X --int X --wis X --cha X
    
    # Show character
    python3 ~/.claude/skills/dnd-character-stats/scripts/character.py show NAME
    
    # List all characters
    python3 ~/.claude/skills/dnd-character-stats/scripts/character.py list
    
    # Update character
    python3 ~/.claude/skills/dnd-character-stats/scripts/character.py update NAME --str X --hp X --level X
    
    # Delete character
    python3 ~/.claude/skills/dnd-character-stats/scripts/character.py delete NAME
    

Character Creation Workflow

When a user asks to create a character with rolled stats, follow this interactive workflow:

Step 1: Roll Ability Scores

Roll 4d6 drop lowest, six times to get 6 ability scores:

for i in {1..6}; do python3 ~/.claude/skills/dnd-character-stats/scripts/roll_dice.py 4d6 --drop-lowest; done

Collect all 6 rolled values (e.g., [15, 14, 13, 12, 11, 9])

Step 2: Auto-Assign Based on Class

Assign the rolled scores to abilities based on class priorities:

Fighter/Paladin/Barbarian: STR > CON > DEX > others Rogue/Monk/Ranger: DEX > others Wizard: INT > DEX > CON > others Cleric/Druid: WIS > CON > others Sorcerer/Warlock/Bard: CHA > others

Sort the 6 rolled values highest to lowest, then assign to abilities in priority order.

Step 3: Display Assignment Table

Show the proposed assignment as a markdown table:

| Ability | Score | Modifier |
|---------|-------|----------|
| STR     |   15  |    +2    |
| DEX     |   12  |    +1    |
| CON     |   14  |    +2    |
| INT     |   9   |    -1    |
| WIS     |   11  |    +0    |
| CHA     |   13  |    +1    |

Step 4: Confirm or Adjust Loop

Ask: "Accept? (y/n)"

If yes: Proceed to create the character using character.py

If no: Ask "What would you like to change?"

Parse their natural language request:

  • "put 15 in DEX" → swap values so DEX gets 15
  • "swap STR and CON" → exchange STR and CON values
  • "set WIS to 14" → assign 14 to WIS (and move its previous value elsewhere)
  • "give me the highest in DEX" → assign highest roll to DEX

After each adjustment:

  1. Update the assignments
  2. Display the table again
  3. Ask "Accept? (y/n)" again
  4. Repeat until they say yes

Step 5: Create Character

Once accepted, call scripts/character.py:

python3 ~/.claude/skills/dnd-character-stats/scripts/character.py create NAME CLASS --str X --dex X --con X --int X --wis X --cha X

The script will automatically calculate HP and proficiency bonus.

Other Operations

Show Character

User: Show Thorin's stats
You: [Call character.py show Thorin and display the output]

List Characters

User: List all my characters
You: [Call character.py list]

Update Stats

User: Increase Thorin's STR to 18
You: [Call character.py update Thorin --str 18]
User: Thorin took 5 damage
You: [First show current character to get current HP, calculate new HP, then update]

Delete Character

User: Delete Elara
You: [Call character.py delete Elara]

Ability Score Rules

  • Ability Scores: Range from 1-20 (typically 8-18 for starting characters)
  • Modifiers: Calculate as (score - 10) / 2, rounded down
    • 8-9 = -1
    • 10-11 = +0
    • 12-13 = +1
    • 14-15 = +2
    • 16-17 = +3
    • 18-19 = +4
    • 20 = +5

HP Calculation

HP is calculated automatically by character.py based on:

  • Class hit die (Fighter: d10, Wizard: d6, etc.)
  • Constitution modifier
  • Character level

Level 1: Max hit die + CON modifier Additional levels: Average roll + CON modifier per level

Important Notes

  • Character names must be unique
  • All ability scores must be specified when creating
  • HP is tracked separately from max HP (for damage/healing)
  • Proficiency bonus increases with level: +2 (levels 1-4), +3 (levels 5-8), etc.
  • Database location: ~/.claude/data/dnd-dm.db

Error Handling

If a character doesn't exist, the script will show an error. Handle gracefully:

  • Suggest using list to see available characters
  • Ask if they want to create the character instead
  • Check spelling of character names