# Premade

> Kinbarrow modding reference — content tree `4a103dcdb658a75a`, version `0.2.0+main.e011511f4`.

A complete authored character build composed through the ordinary creator.

**Note on syntax:** these files are RON, not JSON. The shapes below are exact,
but punctuation follows RON — read a real `data/*.ron` file alongside.

## Fields

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `asi_choice` | `Ability[]` | default `[]` | The race's own "+N to M others" choice answered, if it has one; empty for a race with no such choice. |
| `background` | `string` | optional | A `backgrounds/*` id, or none. |
| `class` | `string` | required | A `classes/*` id — every premade takes one, same as a player chair. |
| `description` | `string` | required | A short blurb shown on the creator's picker card. |
| `equipment` | `string[]` | default `[]` | The arms this build starts with, named outright: ids from the arms tables (`tables/weapons.srd.ron` / `tables/armor.srd.ron`), one entry per piece — `["chain_mail", "shield", "longsword"]`. Each is minted as its own item and donned by the best-kit policy when the build is composed. Gear is never DERIVED from the class: a build carries exactly what it lists here, so an empty list is a build that walks in bare-handed, on purpose. |
| `growth` | `PremadeGrowthAnswer[]` | optional | Typed answers to reached level-up improvement groups. These are spent through the ordinary growth catalogue and commit path at composition. |
| `id` | `string` | required | Authored id. |
| `level` | `uint32` | required | The target character level this build mints at. |
| `name` | `string` | required | Authored name. |
| `profession` | `string` | optional | A `professions/*` id, or none. |
| `race` | `string` | required | A `races/*` id. |
| `scores` | `int64[]` | required | The base ability block, in order [Str, Dex, Con, Int, Wis, Cha] — BEFORE racial ASI, exactly like a player's own point-buy spread. |
| `skills` | `Skill[]` | default `[]` | The class's skill picks — a subset of the class's own choice list, at most its count. Empty = the class's own quick-build auto-pick. |
| `source` | `Source` | required | Authored source. |
| `spells` | `string[]` | default `[]` | The caster's chosen loadout (spell ids on the class's own list); empty for a non-caster or for the derived auto-equip. |
| `subrace` | `string` | optional | The chosen subrace id within `race`, or none. |

## Nested shapes

<a id="ability"></a>

### Ability

An open, validated Ability id interned from authored data.

<a id="premade-growth-answer"></a>

### PremadeGrowthAnswer

`premades/<id>.srd.ron` — one premade per file; stem == id. A premade is a full, named answer to every choice the character creator asks: race, subrace, the race's own ASI choice, base ability scores, background, profession, class, skill picks, spell loadout, and a target level. It is never a second stat path — minting one runs the exact same `soul::compose_with_scores` → `classes::assign_class_with_skills` pipeline the hand-built creator does, just with every choice already answered. The shipped catalog is small and the rest is a mod surface.

<a id="premade-growth-answer--ability-scores"></a>

#### PremadeGrowthAnswer::AbilityScores

Spend one reached improvement slot on the listed ability increases.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `abilities` | `Ability[]` | required | Ability picks, including a repeated ability for a +2 increase. |
| `level` | `uint32` | required | Class level whose improvement group this answers. |

<a id="premade-growth-answer--feat"></a>

#### PremadeGrowthAnswer::Feat

Spend one reached improvement slot on a declared feat.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | `string` | required | Open feat id from the loaded catalogue. |
| `level` | `uint32` | required | Class level whose feat group this answers. |

<a id="skill"></a>

### Skill

An open, validated Skill id interned from authored data.

<a id="source"></a>

### Source

Every file's top-level value carries `source`.

<a id="source--srd51"></a>

#### Source::Srd51

SRD 5.1 — retained nonconflicting catalogue material.

<a id="source--srd52"></a>

#### Source::Srd52

SRD 5.2.1 — the 2024-revision System Reference Document, the same CC-BY-4.0 grant as 5.1 and the current rules chassis. Its files carry the `.srd52.ron` suffix so provenance reads off the path; see `data/README.md` for which document rules a given value.

<a id="source--original"></a>

#### Source::Original

Original content authored for this game (not from the SRD).

<a id="source--phb2024"></a>

#### Source::Phb2024

Material transcribed from the 2024 Player's Handbook. This source is not redistributable by this project and belongs in a `phb2024` mod.

<a id="source--dmg2024"></a>

#### Source::Dmg2024

Material transcribed from the 2024 Dungeon Master's Guide. This source is not redistributable by this project and belongs in a `dmg2024` mod.

<a id="source--mm2024"></a>

#### Source::Mm2024

Material transcribed from the 2024 Monster Manual. This source is not redistributable by this project and belongs in an `mm2024` mod.

<a id="source--tce"></a>

#### Source::Tce

Material transcribed from Tasha's Cauldron of Everything. This source is not redistributable by this project and belongs in a `tce` mod.

<a id="source--xge"></a>

#### Source::Xge

Material transcribed from Xanathar's Guide to Everything. This source is not redistributable by this project and belongs in an `xge` mod.


