> 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/getting-started/first-server.md).

# first server

Use a staging server or a backup before authoring content. This walkthrough keeps the default currency, creates a separate tree, and connects a new class to it.

{% stepper %}
{% step %}

## Set the economy

In `leveling.yml`, keep `enabled: true`, choose `maximum-level`, and set `skill-point-rewards`. For a quest-only design, disable the unwanted entries under `sources`. Keep `legacy-direct-point-sources: false`.

Also review class `starting-rewards`, Journey currency rewards, and currency-paying skill effects. They are independent ways to grant points; the legacy switch does not disable all of them.
{% endstep %}

{% step %}

## Create a tree

With the engine installed, open `/skills admin editor capture_specialist`. Use the new-tree control (`+ TREE` or `+ CHAPTER` in the special themes). Choose a stable ID such as `ember_career`, a title, `skill_points`, and a supported theme. Start with a small template rather than thousands of nodes.

Right-click empty space and choose node or text creation. Create a root, then a child with a requirement and a real connection. Edit its effects and preview its explanation. Validate and publish the draft. Creating a tree alone does not grant players class access to it.

For file authoring, a complete small tree/graph example is in [trees and nodes](file:///4985688/configuration/trees-and-nodes.md).
{% endstep %}

{% step %}

## Add a class

Add this entry **inside the existing `classes:` map** in `classes.yml`; do not replace the entire file with the fragment:

```yaml
ember_ranger:
  title: Ember Ranger
  description: Study Fire Pokemon and master careful field captures.
  icon: minecraft:blaze_powder
  accent-color: '#FF934B'
  background-color: '#26130C'
  enabled: true
  hidden: false
  order: 100
  trees: [ember_career]
  requires: []
  conflicts: []
  starting-rewards: {skill_points: 0}
  highlights:
    - Complete field quests to gain trainer levels
    - Choose elemental skill benefits
```

{% endstep %}

{% step %}

## Add a quest

Add this **inside `objectives:`** in `objectives.yml`:

```yaml
ember_first_catches:
  title: First Ember Expedition
  description: Capture four Fire-type Pokemon after choosing Ember Ranger.
  enabled: true
  campaign: Ember Fieldwork
  event: capture
  target: 4
  repeat: once
  required-classes: [ember_ranger]
  minimum-level: 1
  acceptance-required: true
  filters: {types-any: [fire]}
  reward: {xp: 200}
```

{% endstep %}

{% step %}

## Validate and activate

Run `/skills admin validate`. Fix missing tree IDs, unconnected nodes, unknown icons, unsupported effect operations, and invalid references. Run `/skills admin reload` only after validation succeeds. Reopen your editor after a file reload so its revision is current.

Use a non-operator test account to select Ember Ranger, start the quest using `/skills quests`, capture qualifying Pokemon, and spend earned points. Operators do **not** get free purchases unless both bypass permission and server policy are deliberately enabled.
{% endstep %}

{% step %}

## Test the important boundaries

* A different class must not access `ember_career` unless explicitly allowed.
* A capture outside the Fire filter must not progress the quest.
* The same completed one-time quest must not reward XP again.
* A purchase with insufficient points must fail, including double-clicks.
* A selectable-effect node must grant only the chosen options.
* An ordinary player must not publish editor changes.
* Check both a special theme and a conventional theme at a smaller window size.
  {% endstep %}
  {% endstepper %}
