with one click
Schema and rules for creating NPCs
npx skills add https://github.com/nikolaj-lat/World-Puppeteer --skill npcsCopy and paste this command into Claude Code to install the skill
Schema and rules for creating NPCs
npx skills add https://github.com/nikolaj-lat/World-Puppeteer --skill npcsCopy and paste this command into Claude Code to install the skill
| name | npcs |
| description | Schema and rules for creating NPCs |
| context | fork |
| agent | npcs |
Edit tabs/npcs.json.
| Field | Requirement |
|---|---|
name | Must match object key exactly |
type | Use existing npcType when it fits, otherwise "" for unique NPCs |
currentLocation | Use a fitting existing location, or invent one |
currentArea | Use "" if not relevant, or a valid area from the location |
gender | Always set - aim for distribution: 40% male, 40% female, 20% non-binary |
basicInfo | Three-sentence structure (see format below) |
personality | Four traits using personality psychology (see format below) |
hiddenInfo | Full paragraph - mix of narrative secrets and gameplay-useful information |
abilities | At least five abilities + fighting style summary (see format below) |
tier | Always set to mythic for combat NPCs (determines intent complexity) |
level | Always set - each level adds +2 to an NPC's base damage (see guidelines below) |
hpMax | Always set - see HP guidelines below |
known | Always set to true |
voiceTag | Voice tag for speech synthesis (see voice-previews) |
| Field | When to Include |
|---|---|
faction | Only for major plot-relevant faction membership |
aliases | Include when NPC is commonly referred to by title, epithet, or nickname in the story (e.g. "the captain", "Reed"). Only list exact strings the narrator or other NPCs would literally speak — these are matched verbatim during dialogue speaker attribution |
properName | Set when an NPC starts under a placeholder name (e.g. "Hooded Stranger") but has a true identity revealed later. name is the current display name; properName is the true name. The identity counts as revealed once the two match — a reveal flips name to properName. Omit when the NPC is known from the start |
Omit these fields (auto-set or unused):
vulnerabilities, resistances, immunitiesvisualDescription, visualTagsdetailType, hpCurrent, activeBuffscurrentCoordinates, embeddingId, embedding, portraitUrlstatus, relationship, lastSeenTicklastSeenLocation, lastSeenArea, playerNotesneedsDetailGeneration, deathXPAwardedhealthMultiplierThree sentences covering role, appearance, and dress:
Format: "A [gender] [species] [role]. [Build] with [hair], [eyes], [species features in detail]. Wears [X]."
Four traits in this order, drawing from personality psychology trait vocabulary:
Format: "Label: Explanation in under 10 words"
At least five appropriate abilities plus a fighting style summary.
Format: "Ability Name: 3 sentence description of what it is and how it can be used."
Describe what the ability is, then list possibilities for how it can be used. Stay vague enough for creative interpretation but elaborate enough to inspire varied usage. Show flexibility - most abilities can be used offensively, defensively, or for utility depending on the situation.
The final entry summarizes their overall combat approach - longer and more detailed than individual abilities. Important: Include a literal \n before "fighting style" so it appears on its own line when displayed.
Format: "\nfighting style: [5 sentences covering how they fight]"
Include:
Players start with 100 HP and deal ~16 damage on success.
100 ÷ (baseHit + 2 × level)hpMax ÷ 16Write a full paragraph with maximum variety. No formula - be creative.
Mix different types of secrets:
Both narrative depth AND gameplay-useful information should be included.
interface NPC {
name: string
properName?: string
type: string
currentLocation: string
currentArea: string
tier?: 'trivial' | 'weak' | 'average' | 'strong' | 'elite' | 'boss' | 'mythic'
gender?: string
faction?: string
basicInfo?: string
hiddenInfo?: string
personality?: string[]
abilities?: string[]
aliases?: string[]
level?: number
hpMax?: number
healthMultiplier?: number
known?: boolean
voiceTag?: string
vulnerabilities?: string[]
resistances?: string[]
immunities?: string[]
}
When creating an NPC with a species type, the NPC should inherit the 3 species skills from the corresponding trait as abilities:
tabs/traits.jsonabilities array\nfighting style: summarySee Species Consistency Rules for the full requirements.
For detailed documentation, see npcs-reference.md.
Schema and rules for creating abilities
Schema and rules for editing AI instructions
Check character counts and limits for Voyage World config files. Use when checking how much space is used, before adding large content, or when approaching size limits.
Schema and rules for creating locations
Schema and rules for creating regions
Schema and rules for editing settings