# FeatDef

> Kinbarrow modding reference — content tree `45d0fe274f851548`, version `0.2.0+main.c05ef2b`.

`feats/<id>.srd.ron` — one feat per file; stem == id. A feat is the OTHER branch of the ability-score-improvement choice: at an ASI level a soul may take a feat INSTEAD of the deterministic +2 (`crate::feats`). The SRD 5.1 prints exactly ONE feat — Grappler — so the shipped catalog is one file and the rest is a MOD surface (see ATTRIBUTION.md). A feat carries its SUBSTRATE, never a faked mechanic (the ledger-don't-fake rule): its live content is the ability PREREQUISITE (gated at the taking-up) and the optional ASI COMPONENT (a half-feat's +1, applied when the chosen slot lands). A feat whose whole mechanic is ledgered (Grappler's grapple riders wait on the grapple slice) ships prereq-only; a feat that gates nothing AND grants nothing has no substrate and is refused by the validator. Passive feat mechanics (the modifier hooks) are the named next rung — ledgered until a feat needs them.

**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 |
| --- | --- | --- | --- |
| `ability_prereq` | `any[][]` | optional | The SRD ability-score prerequisite — EVERY entry required (Grappler's Strength 13). Checked at the taking-up (`feats::take_feat`) against the soul's current scores. Absent = no prerequisite. |
| `asi` | `any[][]` | optional | The feat's ASI component (a half-feat's "+1 to one score") — applied, capped at 20, when the chosen ASI slot lands. Absent = no score bump (Grappler grants none). |
| `id` | `string` | required |  |
| `name` | `string` | required |  |
| `source` | `Source` | required |  |

## Nested shapes

### Ability

The six ability scores (SRD 5.1). The engine's own `stats::Ability` is the runtime type; this is the data-layer mirror, bridged by [`Ability::engine`].

`Str`, `Dex`, `Con`, `Int`, `Wis`, `Cha`

### Source

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

#### Source::Srd51

SRD 5.1 — the System Reference Document, the shipped baseline.

#### Source::Original

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

#### Source::Personal

A player's own transcription or third-party content in a mod tree — provenance stays honest without borrowing the base tree's markers. Never used by shipped files.

