Find your landing page message
Connect a product’s value to a specific audience and write a clear first-screen message.
Audit a world for consistency, D&D 5e 2024 rule compliance, broken links, orphaned entities, and connection gaps. Provides detailed reports and can auto-fix issues.
---
name: audit-world
description: Audit a world for consistency, D&D 5e 2024 rule compliance, broken links, orphaned entities, and connection gaps. Provides detailed reports and can auto-fix issues.
argument-hint: "[world name] [--fix]"
---
# Audit World
Audit world: $ARGUMENTS
## Overview
This skill performs comprehensive audits on worldbuilding projects to ensure:
- **Entity Linking:** All `[[wikilinks]]` point to real entities
- **Bidirectional Connections:** If A links to B, B should link back to A
- **D&D 5e 2024 Compliance:** Stat blocks are mechanically correct
- **Template Compliance:** Entities use correct templates for their type
- **Orphan Detection:** No entities exist without incoming links
- **Consistency:** Cross-entity references make logical sense
## Instructions
### Step 1: Parse Arguments
Extract from arguments:
1. **World name** - Required. Check `Worlds/` for existing worlds.
2. **--fix flag** - Optional. If present, automatically fix issues where possible.
3. **--category [type]** - Optional. Only audit specific category (Characters, Settlements, etc.)
4. **--check [type]** - Optional. Run specific check only (links, stats, orphans, connections, templates)
If world name not provided, list available worlds and ask which to audit.
### Step 2: Scan World Structure
1. **Verify directory structure:**
```
Worlds/[World Name]/
├── World Overview.md
├── Characters/
├── Settlements/
├── Items/
├── Creatures/
├── Organizations/
├── Concepts/
├── History/
└── Geography/
```
2. **Build entity index:**
- Scan all `.md` files in the world
- Extract entity names from filenames
- Extract entity names from YAML `name:` field
- Build lookup table: `{entity_name: file_path}`
3. **Count entities by category:**
```
Category | Count
----------------|------
Characters | X
Settlements | X
Items | X
Creatures | X
Organizations | X
Concepts | X
History | X
Geography | X
----------------|------
TOTAL | X
```
---
## Audit Checks
### Check 1: Wikilink Validation
**Goal:** Verify all `[[Entity Name]]` links point to real entities.
**Process:**
1. For each entity file:
- Extract all `[[...]]` patterns using regex: `\[\[([^\]]+)\]\]`
- For each link, check if target exists in entity index
- Track: `{source_file, broken_link, line_number}`
2. **Ignore false positives:**
- Links to D&D rules: `[[D&D 5e...]]`, `[[Stat Block...]]`
- Links to images: `[[...png]]`, `[[...jpg]]`
- Obsidian system links
3. **Report:**
```
## Broken Links Report
Found X broken links across Y entities.
### [Entity Name]
- Line XX: [[Missing Entity 1]]
- Line XX: [[Missing Entity 2]]
### [Entity Name 2]
...
```
4. **Auto-fix options (if --fix):**
- Offer to create stub entities for missing links
- Offer to remove broken links
- Offer fuzzy match suggestions for typos
---
### Check 2: Bidirectional Connection Audit
**Goal:** Ensure connections are reciprocal.
**Process:**
1. For each entity, extract its `## Connections` section
2. Parse all outgoing links
3. For each outgoing link, check if target links back
4. Track one-way connections
**Reciprocal Relationship Matrix:**
See [[Connection Matrix]] for complete bidirectional linking rules.
| Source Links To | Target Should Have |
|-----------------|-------------------|
| Settlement (as location) | Characters > Residents/Notable NPCs |
| Organization (as member) | Characters > Members |
| Region (as parent) | Settlements/Geography > Contains |
| Deity (as patron) | Characters > Worshippers |
| Character (as ally) | Characters > Allies |
| Character (as enemy) | Characters > Rivals/Enemies |
| Government (as ruler) | Characters > Leadership |
| Settlement (as HQ) | Organizations > Based Here |
| Parent Geography | Child Geography > Part Of |
| Historical Event | Locations > Site Of |
| Military (as army) | Government > Armed Forces |
| Criminal Organization (as operating) | Government > Criminal Elements |
| Creature (as habitat) | Geography > Native Wildlife/Monsters |
**Report:**
```
## One-Way Connection Report
Found X connections missing reciprocal links.
### [Entity A] → [Entity B]
- A links to B in: Connections > Organizations > Member
- B should link back in: Characters > Members
- Status: MISSING
### [Entity C] → [Entity D]
...
```
**Auto-fix (if --fix):**
- Add reciprocal links to target entities
- Use appropriate section based on relationship type
---
### Check 3: D&D 5e 2024 Stat Block Validation
**Goal:** Verify all stat blocks are mechanically correct.
**Applies to:** Characters (Protagonist, Antagonist, Support Character), Creatures (Monster, Animal, Insect)
#### 3-Pre: Stat Block Mode Detection (Characters Only)
Before validating characters, detect which stat block mode they use:
| Condition | Mode | Validation |
|-----------|------|------------|
| `level:` filled, `challenge_rating:` empty | **PC-style** | Use level-based proficiency, class features |
| `challenge_rating:` filled, `level:` empty | **NPC-style** | Use CR-based proficiency, monster rules |
| Both filled | **WARNING** | Ambiguous mode - flag for manual review |
| Neither filled | **WARNING** | Missing stat block info - flag for manual review |
**PC-style validation applies:**
- Proficiency from level (Check 3B)
- HP from class hit dice + CON (Check 3F)
- Spell slots from class progression
- Features match class/subclass
**NPC-style validation applies:**
- Proficiency from CR (Check 3A)
- HP from size hit dice + CON (Check 3F)
- CR/XP correlation (Check 3A)
- Legendary features for high CR (Check 3G)
**Note:** Creatures (Monster, Animal, Insect) always use NPC-style validation with `challenge_rating:`.
---
#### 3A: Challenge Rating & XP
Verify CR matches XP using official table:
| CR | XP | Proficiency |
|----|-----|-------------|
| 0 | 0 or 10 | +2 |
| 1/8 | 25 | +2 |
| 1/4 | 50 | +2 |
| 1/2 | 100 | +2 |
| 1 | 200 | +2 |
| 2 | 450 | +2 |
| 3 | 700 | +2 |
| 4 | 1,100 | +2 |
| 5 | 1,800 | +3 |
| 6 | 2,300 | +3 |
| 7 | 2,900 | +3 |
| 8 | 3,900 | +3 |
| 9 | 5,000 | +4 |
| 10 | 5,900 | +4 |
| 11 | 7,200 | +4 |
| 12 | 8,400 | +4 |
| 13 | 10,000 | +5 |
| 14 | 11,500 | +5 |
| 15 | 13,000 | +5 |
| 16 | 15,000 | +5 |
| 17 | 18,000 | +6 |
| 18 | 20,000 | +6 |
| 19 | 22,000 | +6 |
| 20 | 25,000 | +6 |
| 21 | 33,000 | +7 |
| 22 | 41,000 | +7 |
| 23 | 50,000 | +7 |
| 24 | 62,000 | +7 |
| 25 | 75,000 | +8 |
| 26 | 90,000 | +8 |
| 27 | 105,000 | +8 |
| 28 | 120,000 | +8 |
| 29 | 135,000 | +9 |
| 30 | 155,000 | +9 |
**Check:** `experience_points` in YAML matches CR from table.
#### 3B: Proficiency Bonus
**By Level (Characters):**
| Level | Proficiency |
|-------|-------------|
| 1-4 | +2 |
| 5-8 | +3 |
| 9-12 | +4 |
| 13-16 | +5 |
| 17-20 | +6 |
**By CR (Monsters):** Use CR table above.
**Check:** `proficiency_bonus` matches level/CR.
#### 3C: Ability Modifiers
**Formula:** `modifier = floor((score - 10) / 2)`
| Score | Modifier |
|-------|----------|
| 1 | -5 |
| 2-3 | -4 |
| 4-5 | -3 |
| 6-7 | -2 |
| 8-9 | -1 |
| 10-11 | +0 |
| 12-13 | +1 |
| 14-15 | +2 |
| 16-17 | +3 |
| 18-19 | +4 |
| 20-21 | +5 |
| 22-23 | +6 |
| 24-25 | +7 |
| 26-27 | +8 |
| 28-29 | +9 |
| 30 | +10 |
**Check:** Modifiers in ability score tables are calculated correctly.
#### 3D: Attack Bonuses
**Formula:** `attack_bonus = proficiency_bonus + ability_modifier`
- Melee: Usually STR (or DEX for finesse)
- Ranged: Usually DEX (or STR for thrown)
**Check:** Attack bonus in action descriptions matches formula.
#### 3E: Spell Save DC
**Formula:** `spell_save_DC = 8 + proficiency_bonus + spellcasting_ability_modifier`
| Class | Spellcasting Ability |
|-------|---------------------|
| Bard | Charisma |
| Cleric | Wisdom |
| Druid | Wisdom |
| Paladin | Charisma |
| Ranger | Wisdom |
| Sorcerer | Charisma |
| Warlock | Charisma |
| Wizard | Intelligence |
**Check:** Spell save DC in spellcasting section matches formula.
#### 3F: Hit Points
**Formula for Characters:**
```
HP = (hit_die_max + CON_mod) + ((level - 1) × (hit_die_avg + CON_mod))
```
**Hit Die by Class:**
| Class | Hit Die | Average |
|-------|---------|---------|
| Barbarian | d12 | 7 |
| Fighter, Paladin, Ranger | d10 | 6 |
| Bard, Cleric, Druid, Monk, Rogue, Warlock | d8 | 5 |
| Sorcerer, Wizard | d6 | 4 |
**Formula for Monsters:**
```
HP = hit_dice_count × hit_die_average + (hit_dice_count × CON_mod)
```
**Hit Die by Size:**
| Size | Hit Die | Average |
|------|---------|---------|
| Tiny | d4 | 2.5 |
| Small | d6 | 3.5 |
| Medium | d8 | 4.5 |
| Large | d10 | 5.5 |
| Huge | d12 | 6.5 |
| Gargantuan | d20 | 10.5 |
**Check:** HP matches hit dice formula with CON modifier.
#### 3G: Legendary Features (CR 5+)
For creatures CR 5 and above, check for:
- Legendary Resistance (3/Day) for CR 10+
- Legendary Actions for bosses
- Lair Actions if lair is defined
**Report:**
```
## D&D 5e Stat Block Errors
Found X errors across Y entities.
### [Monster Name] (CR 5)
- ERROR: XP is 1500, should be 1800 for CR 5
- ERROR: Proficiency bonus is +2, should be +3 for CR 5
- WARNING: CR 5+ creature missing Legendary Actions (optional but recommended)
### [Character Name] (Level 8)
- ERROR: Proficiency bonus is +2, should be +3 for level 8
- ERROR: Spell Save DC is 14, should be 15 (8 + 3 + 4)
- ERROR: Attack bonus is +5, should be +7 (proficiency 3 + STR 4)
```
**Auto-fix (if --fix):**
- Recalculate and update XP, proficiency, modifiers
- Update attack bonuses and spell save DCs
- Flag HP for manual review (hit dice formula)
---
### Check 4: Orphan Entity Detection
**Goal:** Find entities with no incoming links.
**Process:**
1. Build incoming link count for each entity
2. Entities with 0 incoming links are orphans
3. Exception: World Overview.md (always root)
**Report:**
```
## Orphan Entities
Found X entities with no incoming links.
### Characters
- [[Forgotten NPC]] - 0 incoming links
### Geography
- [[Unnamed Valley]] - 0 incoming links
```
**Auto-fix (if --fix):**
- Suggest parent entities to link from
- Offer to add to World Overview Quick Reference
- Offer to delete if truly orphaned
---
### Check 5: Template Compliance
**Goal:** Verify entities match their templates.
**Process:**
1. Determine entity type from:
- File location (folder)
- YAML tags
- Content structure
2. Compare against expected template structure:
- Required YAML fields present
- Required sections present
- Section ordering correct
**Template Requirements by Category:**
**Characters (All):**
- YAML: `name`, `status`, `tags` containing character type
- Sections: Overview, Connections
**Characters (Protagonist/Antagonist/Support Character):**
- YAML: `species`, `class`, `armor_class`, `hit_points`
- YAML (Stat Block Mode): `level` OR `challenge_rating` (one required, not both)
- Sections: Stat Block, Ability Scores, Combat Statistics, Personality, Background
**Creatures (Monster):**
- YAML: `size`, `creature_type`, `challenge_rating`, `experience_points`
- Sections: Stat Block, Classification, Ability Scores, Traits, Actions
**Settlements:**
- YAML: `settlement_type`, `population`, `government_type`
- Sections: Overview, Districts/Areas, Notable Locations
**Organizations:**
- YAML: `organization_type` or appropriate tag
- Sections: Overview, Leadership, Goals, Resources
**Geography:**
- YAML: `terrain_type` or geographic tag
- Sections: Overview, Features, Inhabitants
**Report:**
```
## Template Compliance Issues
Found X compliance issues across Y entities.
### [Entity Name] (Characters/Protagonist.md)
- AMBIGUOUS YAML: Both `level` and `challenge_rating` are filled (use only one)
- MISSING SECTION: ## Ability Scores
- WRONG FOLDER: Located in Items/, should be Characters/
### [Entity Name] (Characters/Antagonist.md)
- MISSING YAML: Neither `level` nor `challenge_rating` (one required for stat block)
- WARNING: Cannot validate proficiency bonus without level/CR
### [Entity Name] (Settlements/City.md)
- MISSING YAML: `population`
- EMPTY SECTION: ## Districts
```
**Auto-fix (if --fix):**
- Add missing YAML fields with placeholder values
- Add missing section headers
- Suggest moving misplaced files
---
### Check 6: Cross-Entity Consistency
**Goal:** Verify logical consistency across entities.
**Checks:**
1. **Religious Consistency:**
- Temples reference deities that exist
- Religious orders serve established deities
- Characters with deity patrons link to real deities
2. **Political Consistency:**
- Settlements reference governments that exist
- Military organizations belong to real governments
- Rulers are linked to their domains
3. **Geographic Consistency:**
- Settlements are in regions that exist
- Rivers flow from mountains to bodies of water
- Roads connect real settlements
- Terrain types match climate of parent region
4. **Historical Consistency:**
- Events reference locations that exist
- Battles are part of wars that exist
- Dynasties connect to governments
- Characters in historical events existed at that time
5. **Economic Consistency:**
- Currency matches issuing government
- Trade agreements connect trading partners
- Shops sell goods appropriate to region
**Report:**
```
## Cross-Entity Consistency Issues
### Religious Inconsistencies
- Temple of [[Nonexistent God]] references deity not in pantheon
- Religious Order [[Knights of X]] serves [[Y]] but Y's domain doesn't match order purpose
### Political Inconsistencies
- [[City A]] claims to be capital of [[Kingdom B]] but B lists different capital
- [[Military X]] serves [[Government Y]] but Y doesn't list X in armed forces
### Geographic Inconsistencies
- [[River A]] claims to flow from [[Desert B]] (deserts don't have river sources)
- [[Settlement A]] is in [[Region B]] but B's climate is tundra, A's description is tropical
```
---
## Summary Report
After all checks, provide comprehensive summary:
```
# World Audit Report: [World Name]
## Overview
- **Total Entities:** X
- **Audit Date:** YYYY-MM-DD
- **Issues Found:** X (Y critical, Z warnings)
## Entity Count
| Category | Count | Issues |
|----------|-------|--------|
| Characters | X | Y |
| Settlements | X | Y |
| Items | X | Y |
| Creatures | X | Y |
| Organizations | X | Y |
| Concepts | X | Y |
| History | X | Y |
| Geography | X | Y |
| **TOTAL** | **X** | **Y** |
## Issue Summary
### Critical Issues (Must Fix)
| Issue Type | Count | Example |
|------------|-------|---------|
| Broken Links | X | [[Missing Entity]] in Entity.md |
| Stat Block Errors | X | Wrong XP for CR in Monster.md |
| Orphan Entities | X | Forgotten NPC.md |
### Warnings (Should Review)
| Issue Type | Count | Example |
|------------|-------|---------|
| One-Way Links | X | A→B without B→A |
| Missing Sections | X | No Connections in Entity.md |
| Consistency Issues | X | Temple references wrong deity |
## Connection Statistics
- **Total Wikilinks:** X
- **Average Links Per Entity:** X.X
- **Most Connected Entity:** [[Entity]] (X links)
- **Least Connected Entity:** [[Entity]] (X links)
## Recommendations
### High Priority
1. Fix X broken links in Y entities
2. Add reciprocal links for Z one-way connections
3. Correct stat block errors in W creatures
### Medium Priority
1. Review X orphan entities for relevance
2. Fill missing sections in Y entities
3. Resolve Z consistency issues
### Low Priority
1. Increase connections in sparse entities
2. Add missing optional YAML fields
3. Consider additional entities for coverage gaps
## Next Steps
- Run `/audit-world [world] --fix` to auto-repair issues
- Use `/create-entity` to fill coverage gaps
- Review orphan entities for deletion or integration
```
---
## Auto-Fix Mode (--fix)
When `--fix` is specified:
1. **Ask before each fix category:**
- "Found X broken links. Fix by creating stubs? (y/n)"
- "Found X one-way connections. Add reciprocal links? (y/n)"
- "Found X stat errors. Auto-correct calculations? (y/n)"
2. **Create backup before modifying:**
- Copy modified files to `.audit-backup/` folder
- Log all changes made
3. **Report changes:**
```
## Auto-Fix Results
### Files Modified: X
- Entity1.md: Added 3 reciprocal links
- Entity2.md: Corrected XP (1500 → 1800)
- Entity3.md: Added missing YAML fields
### Files Created: X
- Missing Entity (stub).md: Created from broken link
### Backup Location: .audit-backup/[timestamp]/
```
---
## Integration with Other Skills
### After `/generate-world`
Run `/audit-world [world]` to:
- Verify all generated entities are linked
- Check stat blocks on generated monsters
- Ensure no orphans from generation
### After `/create-entity`
Reciprocal link logic in create-entity should prevent most issues, but audit can catch edge cases.
### Before `/generate-image`
Audit can verify image prompt sections are filled before batch image generation.
---
## Usage Examples
```
# Full audit
/audit-world Eldoria
# Audit with auto-fix
/audit-world Eldoria --fix
# Only check links
/audit-world Eldoria --check links
# Only check D&D stats
/audit-world Eldoria --check stats
# Only audit Characters
/audit-world Eldoria --category Characters
# Combination
/audit-world Eldoria --category Creatures --check stats --fix
```
---
name: audit-world
description: Audit a world for consistency, D&D 5e 2024 rule compliance, broken links, orphaned entities, and connection gaps. Provides detailed reports and can auto-fix issues.
argument-hint: "[world name] [--fix]"
---
# Audit World
Audit world: $ARGUMENTS
## Overview
This skill performs comprehensive audits on worldbuilding projects to ensure:
- **Entity Linking:** All `[[wikilinks]]` point to real entities
- **Bidirectional Connections:** If A links to B, B should link back to A
- **D&D 5e 2024 Compliance:** Stat blocks are mechanically correct
- **Template Compliance:** Entities use correct templates for their type
- **Orphan Detection:** No entities exist without incoming links
- **Consistency:** Cross-entity references make logical sense
## Instructions
### Step 1: Parse Arguments
Extract from arguments:
1. **World name** - Required. Check `Worlds/` for existing worlds.
2. **--fix flag** - Optional. If present, automatically fix issues where possible.
3. **--category [type]** - Optional. Only audit specific category (Characters, Settlements, etc.)
4. **--check [type]** - Optional. Run specific check only (links, stats, orphans, connections, templates)
If world name not provided, list available worlds and ask which to audit.
### Step 2: Scan World Structure
1. **Verify directory structure:**
```
Worlds/[World Name]/
├── World Overview.md
├── Characters/
├── Settlements/
├── Items/
├── Creatures/
├── Organizations/
├── Concepts/
├── History/
└── Geography/
```
2. **Build entity index:**
- Scan all `.md` files in the world
- Extract entity names from filenames
- Extract entity names from YAML `name:` field
- Build lookup table: `{entity_name: file_path}`
3. **Count entities by category:**
```
Category | Count
----------------|------
Characters | X
Settlements | X
Items | X
Creatures | X
Organizations | X
Concepts | X
History | X
Geography | X
----------------|------
TOTAL | X
```
---
## Audit Checks
### Check 1: Wikilink Validation
**Goal:** Verify all `[[Entity Name]]` links point to real entities.
**Process:**
1. For each entity file:
- Extract all `[[...]]` patterns using regex: `\[\[([^\]]+)\]\]`
- For each link, check if target exists in entity index
- Track: `{source_file, broken_link, line_number}`
2. **Ignore false positives:**
- Links to D&D rules: `[[D&D 5e...]]`, `[[Stat Block...]]`
- Links to images: `[[...png]]`, `[[...jpg]]`
- Obsidian system links
3. **Report:**
```
## Broken Links Report
Found X broken links across Y entities.
### [Entity Name]
- Line XX: [[Missing Entity 1]]
- Line XX: [[Missing Entity 2]]
### [Entity Name 2]
...
```
4. **Auto-fix options (if --fix):**
- Offer to create stub entities for missing links
- Offer to remove broken links
- Offer fuzzy match suggestions for typos
---
### Check 2: Bidirectional Connection Audit
**Goal:** Ensure connections are reciprocal.
**Process:**
1. For each entity, extract its `## Connections` section
2. Parse all outgoing links
3. For each outgoing link, check if target links back
4. Track one-way connections
**Reciprocal Relationship Matrix:**
See [[Connection Matrix]] for complete bidirectional linking rules.
| Source Links To | Target Should Have |
|-----------------|-------------------|
| Settlement (as location) | Characters > Residents/Notable NPCs |
| Organization (as member) | Characters > Members |
| Region (as parent) | Settlements/Geography > Contains |
| Deity (as patron) | Characters > Worshippers |
| Character (as ally) | Characters > Allies |
| Character (as enemy) | Characters > Rivals/Enemies |
| Government (as ruler) | Characters > Leadership |
| Settlement (as HQ) | Organizations > Based Here |
| Parent Geography | Child Geography > Part Of |
| Historical Event | Locations > Site Of |
| Military (as army) | Government > Armed Forces |
| Criminal Organization (as operating) | Government > Criminal Elements |
| Creature (as habitat) | Geography > Native Wildlife/Monsters |
**Report:**
```
## One-Way Connection Report
Found X connections missing reciprocal links.
### [Entity A] → [Entity B]
- A links to B in: Connections > Organizations > Member
- B should link back in: Characters > Members
- Status: MISSING
### [Entity C] → [Entity D]
...
```
**Auto-fix (if --fix):**
- Add reciprocal links to target entities
- Use appropriate section based on relationship type
---
### Check 3: D&D 5e 2024 Stat Block Validation
**Goal:** Verify all stat blocks are mechanically correct.
**Applies to:** Characters (Protagonist, Antagonist, Support Character), Creatures (Monster, Animal, Insect)
#### 3-Pre: Stat Block Mode Detection (Characters Only)
Before validating characters, detect which stat block mode they use:
| Condition | Mode | Validation |
|-----------|------|------------|
| `level:` filled, `challenge_rating:` empty | **PC-style** | Use level-based proficiency, class features |
| `challenge_rating:` filled, `level:` empty | **NPC-style** | Use CR-based proficiency, monster rules |
| Both filled | **WARNING** | Ambiguous mode - flag for manual review |
| Neither filled | **WARNING** | Missing stat block info - flag for manual review |
**PC-style validation applies:**
- Proficiency from level (Check 3B)
- HP from class hit dice + CON (Check 3F)
- Spell slots from class progression
- Features match class/subclass
**NPC-style validation applies:**
- Proficiency from CR (Check 3A)
- HP from size hit dice + CON (Check 3F)
- CR/XP correlation (Check 3A)
- Legendary features for high CR (Check 3G)
**Note:** Creatures (Monster, Animal, Insect) always use NPC-style validation with `challenge_rating:`.
---
#### 3A: Challenge Rating & XP
Verify CR matches XP using official table:
| CR | XP | Proficiency |
|----|-----|-------------|
| 0 | 0 or 10 | +2 |
| 1/8 | 25 | +2 |
| 1/4 | 50 | +2 |
| 1/2 | 100 | +2 |
| 1 | 200 | +2 |
| 2 | 450 | +2 |
| 3 | 700 | +2 |
| 4 | 1,100 | +2 |
| 5 | 1,800 | +3 |
| 6 | 2,300 | +3 |
| 7 | 2,900 | +3 |
| 8 | 3,900 | +3 |
| 9 | 5,000 | +4 |
| 10 | 5,900 | +4 |
| 11 | 7,200 | +4 |
| 12 | 8,400 | +4 |
| 13 | 10,000 | +5 |
| 14 | 11,500 | +5 |
| 15 | 13,000 | +5 |
| 16 | 15,000 | +5 |
| 17 | 18,000 | +6 |
| 18 | 20,000 | +6 |
| 19 | 22,000 | +6 |
| 20 | 25,000 | +6 |
| 21 | 33,000 | +7 |
| 22 | 41,000 | +7 |
| 23 | 50,000 | +7 |
| 24 | 62,000 | +7 |
| 25 | 75,000 | +8 |
| 26 | 90,000 | +8 |
| 27 | 105,000 | +8 |
| 28 | 120,000 | +8 |
| 29 | 135,000 | +9 |
| 30 | 155,000 | +9 |
**Check:** `experience_points` in YAML matches CR from table.
#### 3B: Proficiency Bonus
**By Level (Characters):**
| Level | Proficiency |
|-------|-------------|
| 1-4 | +2 |
| 5-8 | +3 |
| 9-12 | +4 |
| 13-16 | +5 |
| 17-20 | +6 |
**By CR (Monsters):** Use CR table above.
**Check:** `proficiency_bonus` matches level/CR.
#### 3C: Ability Modifiers
**Formula:** `modifier = floor((score - 10) / 2)`
| Score | Modifier |
|-------|----------|
| 1 | -5 |
| 2-3 | -4 |
| 4-5 | -3 |
| 6-7 | -2 |
| 8-9 | -1 |
| 10-11 | +0 |
| 12-13 | +1 |
| 14-15 | +2 |
| 16-17 | +3 |
| 18-19 | +4 |
| 20-21 | +5 |
| 22-23 | +6 |
| 24-25 | +7 |
| 26-27 | +8 |
| 28-29 | +9 |
| 30 | +10 |
**Check:** Modifiers in ability score tables are calculated correctly.
#### 3D: Attack Bonuses
**Formula:** `attack_bonus = proficiency_bonus + ability_modifier`
- Melee: Usually STR (or DEX for finesse)
- Ranged: Usually DEX (or STR for thrown)
**Check:** Attack bonus in action descriptions matches formula.
#### 3E: Spell Save DC
**Formula:** `spell_save_DC = 8 + proficiency_bonus + spellcasting_ability_modifier`
| Class | Spellcasting Ability |
|-------|---------------------|
| Bard | Charisma |
| Cleric | Wisdom |
| Druid | Wisdom |
| Paladin | Charisma |
| Ranger | Wisdom |
| Sorcerer | Charisma |
| Warlock | Charisma |
| Wizard | Intelligence |
**Check:** Spell save DC in spellcasting section matches formula.
#### 3F: Hit Points
**Formula for Characters:**
```
HP = (hit_die_max + CON_mod) + ((level - 1) × (hit_die_avg + CON_mod))
```
**Hit Die by Class:**
| Class | Hit Die | Average |
|-------|---------|---------|
| Barbarian | d12 | 7 |
| Fighter, Paladin, Ranger | d10 | 6 |
| Bard, Cleric, Druid, Monk, Rogue, Warlock | d8 | 5 |
| Sorcerer, Wizard | d6 | 4 |
**Formula for Monsters:**
```
HP = hit_dice_count × hit_die_average + (hit_dice_count × CON_mod)
```
**Hit Die by Size:**
| Size | Hit Die | Average |
|------|---------|---------|
| Tiny | d4 | 2.5 |
| Small | d6 | 3.5 |
| Medium | d8 | 4.5 |
| Large | d10 | 5.5 |
| Huge | d12 | 6.5 |
| Gargantuan | d20 | 10.5 |
**Check:** HP matches hit dice formula with CON modifier.
#### 3G: Legendary Features (CR 5+)
For creatures CR 5 and above, check for:
- Legendary Resistance (3/Day) for CR 10+
- Legendary Actions for bosses
- Lair Actions if lair is defined
**Report:**
```
## D&D 5e Stat Block Errors
Found X errors across Y entities.
### [Monster Name] (CR 5)
- ERROR: XP is 1500, should be 1800 for CR 5
- ERROR: Proficiency bonus is +2, should be +3 for CR 5
- WARNING: CR 5+ creature missing Legendary Actions (optional but recommended)
### [Character Name] (Level 8)
- ERROR: Proficiency bonus is +2, should be +3 for level 8
- ERROR: Spell Save DC is 14, should be 15 (8 + 3 + 4)
- ERROR: Attack bonus is +5, should be +7 (proficiency 3 + STR 4)
```
**Auto-fix (if --fix):**
- Recalculate and update XP, proficiency, modifiers
- Update attack bonuses and spell save DCs
- Flag HP for manual review (hit dice formula)
---
### Check 4: Orphan Entity Detection
**Goal:** Find entities with no incoming links.
**Process:**
1. Build incoming link count for each entity
2. Entities with 0 incoming links are orphans
3. Exception: World Overview.md (always root)
**Report:**
```
## Orphan Entities
Found X entities with no incoming links.
### Characters
- [[Forgotten NPC]] - 0 incoming links
### Geography
- [[Unnamed Valley]] - 0 incoming links
```
**Auto-fix (if --fix):**
- Suggest parent entities to link from
- Offer to add to World Overview Quick Reference
- Offer to delete if truly orphaned
---
### Check 5: Template Compliance
**Goal:** Verify entities match their templates.
**Process:**
1. Determine entity type from:
- File location (folder)
- YAML tags
- Content structure
2. Compare against expected template structure:
- Required YAML fields present
- Required sections present
- Section ordering correct
**Template Requirements by Category:**
**Characters (All):**
- YAML: `name`, `status`, `tags` containing character type
- Sections: Overview, Connections
**Characters (Protagonist/Antagonist/Support Character):**
- YAML: `species`, `class`, `armor_class`, `hit_points`
- YAML (Stat Block Mode): `level` OR `challenge_rating` (one required, not both)
- Sections: Stat Block, Ability Scores, Combat Statistics, Personality, Background
**Creatures (Monster):**
- YAML: `size`, `creature_type`, `challenge_rating`, `experience_points`
- Sections: Stat Block, Classification, Ability Scores, Traits, Actions
**Settlements:**
- YAML: `settlement_type`, `population`, `government_type`
- Sections: Overview, Districts/Areas, Notable Locations
**Organizations:**
- YAML: `organization_type` or appropriate tag
- Sections: Overview, Leadership, Goals, Resources
**Geography:**
- YAML: `terrain_type` or geographic tag
- Sections: Overview, Features, Inhabitants
**Report:**
```
## Template Compliance Issues
Found X compliance issues across Y entities.
### [Entity Name] (Characters/Protagonist.md)
- AMBIGUOUS YAML: Both `level` and `challenge_rating` are filled (use only one)
- MISSING SECTION: ## Ability Scores
- WRONG FOLDER: Located in Items/, should be Characters/
### [Entity Name] (Characters/Antagonist.md)
- MISSING YAML: Neither `level` nor `challenge_rating` (one required for stat block)
- WARNING: Cannot validate proficiency bonus without level/CR
### [Entity Name] (Settlements/City.md)
- MISSING YAML: `population`
- EMPTY SECTION: ## Districts
```
**Auto-fix (if --fix):**
- Add missing YAML fields with placeholder values
- Add missing section headers
- Suggest moving misplaced files
---
### Check 6: Cross-Entity Consistency
**Goal:** Verify logical consistency across entities.
**Checks:**
1. **Religious Consistency:**
- Temples reference deities that exist
- Religious orders serve established deities
- Characters with deity patrons link to real deities
2. **Political Consistency:**
- Settlements reference governments that exist
- Military organizations belong to real governments
- Rulers are linked to their domains
3. **Geographic Consistency:**
- Settlements are in regions that exist
- Rivers flow from mountains to bodies of water
- Roads connect real settlements
- Terrain types match climate of parent region
4. **Historical Consistency:**
- Events reference locations that exist
- Battles are part of wars that exist
- Dynasties connect to governments
- Characters in historical events existed at that time
5. **Economic Consistency:**
- Currency matches issuing government
- Trade agreements connect trading partners
- Shops sell goods appropriate to region
**Report:**
```
## Cross-Entity Consistency Issues
### Religious Inconsistencies
- Temple of [[Nonexistent God]] references deity not in pantheon
- Religious Order [[Knights of X]] serves [[Y]] but Y's domain doesn't match order purpose
### Political Inconsistencies
- [[City A]] claims to be capital of [[Kingdom B]] but B lists different capital
- [[Military X]] serves [[Government Y]] but Y doesn't list X in armed forces
### Geographic Inconsistencies
- [[River A]] claims to flow from [[Desert B]] (deserts don't have river sources)
- [[Settlement A]] is in [[Region B]] but B's climate is tundra, A's description is tropical
```
---
## Summary Report
After all checks, provide comprehensive summary:
```
# World Audit Report: [World Name]
## Overview
- **Total Entities:** X
- **Audit Date:** YYYY-MM-DD
- **Issues Found:** X (Y critical, Z warnings)
## Entity Count
| Category | Count | Issues |
|----------|-------|--------|
| Characters | X | Y |
| Settlements | X | Y |
| Items | X | Y |
| Creatures | X | Y |
| Organizations | X | Y |
| Concepts | X | Y |
| History | X | Y |
| Geography | X | Y |
| **TOTAL** | **X** | **Y** |
## Issue Summary
### Critical Issues (Must Fix)
| Issue Type | Count | Example |
|------------|-------|---------|
| Broken Links | X | [[Missing Entity]] in Entity.md |
| Stat Block Errors | X | Wrong XP for CR in Monster.md |
| Orphan Entities | X | Forgotten NPC.md |
### Warnings (Should Review)
| Issue Type | Count | Example |
|------------|-------|---------|
| One-Way Links | X | A→B without B→A |
| Missing Sections | X | No Connections in Entity.md |
| Consistency Issues | X | Temple references wrong deity |
## Connection Statistics
- **Total Wikilinks:** X
- **Average Links Per Entity:** X.X
- **Most Connected Entity:** [[Entity]] (X links)
- **Least Connected Entity:** [[Entity]] (X links)
## Recommendations
### High Priority
1. Fix X broken links in Y entities
2. Add reciprocal links for Z one-way connections
3. Correct stat block errors in W creatures
### Medium Priority
1. Review X orphan entities for relevance
2. Fill missing sections in Y entities
3. Resolve Z consistency issues
### Low Priority
1. Increase connections in sparse entities
2. Add missing optional YAML fields
3. Consider additional entities for coverage gaps
## Next Steps
- Run `/audit-world [world] --fix` to auto-repair issues
- Use `/create-entity` to fill coverage gaps
- Review orphan entities for deletion or integration
```
---
## Auto-Fix Mode (--fix)
When `--fix` is specified:
1. **Ask before each fix category:**
- "Found X broken links. Fix by creating stubs? (y/n)"
- "Found X one-way connections. Add reciprocal links? (y/n)"
- "Found X stat errors. Auto-correct calculations? (y/n)"
2. **Create backup before modifying:**
- Copy modified files to `.audit-backup/` folder
- Log all changes made
3. **Report changes:**
```
## Auto-Fix Results
### Files Modified: X
- Entity1.md: Added 3 reciprocal links
- Entity2.md: Corrected XP (1500 → 1800)
- Entity3.md: Added missing YAML fields
### Files Created: X
- Missing Entity (stub).md: Created from broken link
### Backup Location: .audit-backup/[timestamp]/
```
---
## Integration with Other Skills
### After `/generate-world`
Run `/audit-world [world]` to:
- Verify all generated entities are linked
- Check stat blocks on generated monsters
- Ensure no orphans from generation
### After `/create-entity`
Reciprocal link logic in create-entity should prevent most issues, but audit can catch edge cases.
### Before `/generate-image`
Audit can verify image prompt sections are filled before batch image generation.
---
## Usage Examples
```
# Full audit
/audit-world Eldoria
# Audit with auto-fix
/audit-world Eldoria --fix
# Only check links
/audit-world Eldoria --check links
# Only check D&D stats
/audit-world Eldoria --check stats
# Only audit Characters
/audit-world Eldoria --category Characters
# Combination
/audit-world Eldoria --category Creatures --check stats --fix
```
Imported from the listed AgentSkill.sh category. Complete supplied package files and notices are retained. Required external tools and credentials are not installed. No bundled code was executed during import. Individual agent task behavior has not been tested.