# Npc Types

> Schema and rules for creating NPC types

- Skill: `nikolaj-lat/npc-types` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add nikolaj-lat/npc-types`
- Raw SKILL.md: https://api.skillmd.com/api/skills/nikolaj-lat/npc-types/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: nikolaj-lat (https://skillmd.com/u/nikolaj-lat)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/nikolaj-lat/npc-types

---


# NPC Types

Edit `tabs/npc-types.json`.

## Required Fields

| Field | Requirement |
|-------|-------------|
| `name` | Must match object key exactly |
| `description` | A paragraph describing this type and their typical physical features and personality|
| `vulnerabilities` | Array of damage types (use `[]` if none) |
| `resistances` | Array of damage types (use `[]` if none) |
| `immunities` | Array of damage types (use `[]` if none) |

## When to Create Types

**Create an NPC type when:**
- Multiple NPCs share the same damage profile (vulnerabilities/resistances/immunities)
- The type represents a species, creature category, or profession

## Damage Type Inheritance

When an NPC has `type: "goblin"`, it looks up `npcTypes.goblin` for damage interactions:

- NPC's vulnerabilities = union of type's vulnerabilities + NPC's vulnerabilities
- NPC's resistances = union of type's resistances + NPC's resistances
- NPC's immunities = union of type's immunities + NPC's immunities

This means types provide baseline damage profiles that individual NPCs can extend.

## description Format

A paragraph describing this type and their typical physical features and personality. Keep descriptions focused on what the type IS, not specific individuals.

## Damage Type Reference

Use damage types from `combatSettings.damageTypes` in settings.

## Schema

```typescript
interface NPCType {
  name: string              // Must match object key
  description: string       // What this type is
  vulnerabilities: string[] // 1.5x damage from these types
  resistances: string[]     // 0.5x damage from these types
  immunities: string[]      // 0x damage from these types
}
```

## Species NPC Types

When creating an NPC type that represents a **species** (playable race or sentient creature type), you must also create corresponding Trait and World Lore entries. The `description` contains lore paragraphs + skill blocks separated by `\n`. The lore paragraphs are shared identically with the Trait `description` and Trait `traitNarrativeEffects`; the skill block format differs per field.

See [Species Consistency Rules](../species-rules.md) for the full requirements.

## Reference

For detailed documentation, see [npc-types-reference.md](references/npc-types-reference.md).

