Back to skills
SKILL.md
Audit World
ASecurityAudit 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.
- 2 stars
- 0 votes
- 0 copies
- 0 views
- Added September 27, 2026
Works with
Security analysis
100/100npx -y skills add David-Li0406/meta-skill-evloving --skill audit-world --agent claude-codeAre you the author of Audit World?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/david-li0406-audit-world)---
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
```
Attribution
Comments
Loading comments…