> For the complete documentation index, see [llms.txt](https://stellarskills.gitbook.io/stellarskills-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://stellarskills.gitbook.io/stellarskills-docs/configuration/classes.md).

# classes

`classes.yml` defines classes and their selection policy. Class IDs need not match tree IDs, but each class must list the trees it grants.

## Global policy

| Setting                                  | Behavior                                                                                                      |
| ---------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| `enabled`                                | Turn class system on/off                                                                                      |
| `required-for-progression`               | Require the minimum valid selected classes before ordinary progression, allocation and calculated skill buffs |
| `restrict-tree-access`                   | Limit trees to the union granted by selected classes, plus qualifying convergence rules                       |
| `main-menu-theme`                        | One of the six supported class compositions                                                                   |
| `selection.minimum`, `selection.maximum` | Required/allowed selections, up to 64; keep minimum achievable                                                |
| `selection.mode`                         | `permanent`, `admin_reset`, or `player_respec`                                                                |
| `respec.currency`, `respec.cost`         | Cost of player removal/respec when allowed                                                                    |
| `respec.cooldown-seconds`                | Delay between qualifying class changes                                                                        |

{% hint style="warning" %}
Class requirements can create impossible first selections if every class requires another unselected class. Ensure at least one available starting path and enough eligible choices to satisfy `minimum`.
{% endhint %}

`permanent` and `admin_reset` prevent ordinary player removal; admin commands remain recovery tools. In `player_respec`, removal is checked against cost and cooldown. Purchased ranks are not automatically destroyed by changing classes: inaccessible trees stop contributing until accessible again.

## Per-class fields

| Field                              | Purpose                                                                            |
| ---------------------------------- | ---------------------------------------------------------------------------------- |
| Map key                            | Stable class ID                                                                    |
| `title`, `description`             | Player-facing class identity                                                       |
| `icon`                             | Valid item/procedural/potion alias supported by the relevant UI                    |
| `accent-color`, `background-color` | `auto` or quoted `#RRGGBB`                                                         |
| `order`                            | Menu ordering                                                                      |
| `enabled`                          | Include in class catalogue                                                         |
| `hidden`                           | Hidden/admin-assigned presentation policy                                          |
| `permission`                       | Optional required permission; empty means none                                     |
| `requires`                         | Other selected class IDs required                                                  |
| `conflicts`                        | Incompatible class IDs; server checks both directions                              |
| `trees`                            | Tree IDs granted to this class                                                     |
| `starting-rewards`                 | Map of currency IDs to positive amounts; claimed once per player/class             |
| `highlights`                       | Short readable class benefit bullet points                                         |
| `metadata`                         | Custom data/reference fields; arbitrary metadata does not create new code behavior |
| `hero`                             | Optional Hero rarity, reveal, capacity and inactivity rules                        |

Starting rewards remain claimed across removal/reset/reselection. A repeated class reset is not a way to farm its starter points.

## Opening menus

`/skills` first checks progression readiness. If the player has enough valid selected classes, it chooses an accessible tree rather than blindly opening Ace Trainer. `/skills classes` opens class management; `/skills tree <id>` explicitly requests a tree and still obeys access checks.

Class themes are `guild_hall`, `celestial_orrery`, `living_tarot`, `soul_forge`, `chronicle_theatre`, and `covenant_atrium`. Set the ID on the server and reload. A player cannot select a different authoritative class-menu theme in local settings.

The packaged class catalogue and grants are listed in [class defaults](file:///4985688/reference/classes.md). Do not assume an older server automatically receives new classes simply because the jar ships them.

## Administrative recovery

```
/skills admin class status PlayerName
/skills admin class add PlayerName capture_specialist
/skills admin class remove PlayerName capture_specialist
/skills admin class reset PlayerName
```

These target an online player resolved by the command system. Reset removes class selections, not all skill progress, one-time starter claims, or all Hero fates. Use the specific reset for the state you actually intend to change.
