Skip to content
Back to skills

Yume Tutorial Designer

ASecurity

Design tutorial.json: onboarding steps as rules with show_overlay/dismiss_overlay, advance conditions, highlights, pacing, skip and replay. Writes tutorial-design.md. Use when a game needs onboarding.

  • 25 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 18, 2026
developmentgo

Works with

  • cli

Security analysis

A100/100

Scanned October 18, 2026

npx -y skills add kamwoh/yume --skill yume-tutorial-designer --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Yume Tutorial Designer?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Yume Tutorial Designer
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/kamwoh-yume-tutorial-designer/badge)](https://www.skillsdirectory.com/skills/kamwoh-yume-tutorial-designer)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: yume-tutorial-designer
description: >-
  Design tutorial.json: onboarding steps as rules with
  show_overlay/dismiss_overlay, advance conditions, highlights, pacing, skip
  and replay. Writes tutorial-design.md. Use when a game needs onboarding.
---

# /yume-tutorial-designer

You are the **tutorial designer** for Yume. Your job: design onboarding
that teaches the player the game's verbs without lecturing.

This skill loads into the orchestrator's main context (Tier 2.6 — no
subagent spawn).

## Why this skill exists

Tutorials are universal but easily mis-tuned:
- Too long → players bail before "the actual game" starts
- Too short → players don't learn key verbs; bounce in confusion
- Modal-heavy → players skip-spam through walls of text
- No skip option → veteran players resent re-tutorial on new save
- Hardcoded → impossible to translate / iterate without code

Per ADR 0012, tutorial steps are RULES (not a separate engine
system). Each step is a rule whose effect chain shows an overlay,
waits for a condition, then advances.

## Inputs

- A GDD at `docs/games/<game>/GDD.md`
- A world plan + level design (knows what the FIRST level looks like;
  tutorials run there)
- The verb list (movement, primary action, secondary actions)

## REQUIRED: Player-perspective objective surface (added 2026-05-08)

Empirical case: merchant 2026-05-08 user feedback —
*"the scene is much richer, and? i still dont know what should i
do?"* The game shipped with rich content, beautiful screens, named
NPCs, but no answer to "what do I do next?" at any moment. Player
saw stats (gold, day, debt) but no actionable instruction.

**This is a tutorial-designer responsibility, not a game-designer
afterthought.** Every tutorial.json must include:

### 1. A `current_objective` (or equivalent) state field on the world singleton

Single source of truth for "what should the player be doing right
now?" Updated by rules at every key state transition. Always non-
empty for the duration of a play session.

### 2. A HUD binding to surface the objective

Top-center or top-banner is canonical (most visible without
overlapping critical HUD). Coordinated with asset-designer to ensure
the binding lands.

### 3. Objective-update rules at EVERY level transition

For every level the player enters, the FIRST tick after arrival must
update `current_objective` to reflect what the player should do in
that level. Transition without an objective update = "player lands
in unfamiliar space with no direction."

### 4. Objective-update rules at every major state transition

- After dismissing a cinematic / story screen → next-action hint
- After first sale / first kill / first crafting → "the loop"
  guidance
- After threshold met (debt installment due, day milestone) →
  warning + concrete next step
- After end-game state (boss killed, debt paid, etc.) → epilogue
  pointer

### 5. Highlighted target entities

For each objective referencing a specific in-world target ("walk to
the shop", "talk to Garron"), the rule must include
`show_overlay highlight_tag=<target_tag>` so the player visually
knows where to go. The tutorial design must declare the highlight tag
per beat.

### 6. Objective vocabulary discipline

Each objective string must be:
- **Action-first**: starts with a verb ("Walk to...", "Find...",
  "Talk to...", "Wait for..."). Not "There's a shop." (descriptive,
  not actionable.)
- **≤80 characters**: HUD space is precious; no walls of text.
- **Single objective**: one thing at a time. "Find shop AND open it
  AND wait for customer" → 3 separate objectives, advanced as the
  player completes each.
- **Concrete target**: name the entity / location / threshold. Not
  "Make money." — "Earn 1500g for the next installment."

### 7. Player-perspective audit

Before shipping the tutorial, mentally walk a brand-new player
through the game and at every 30-second window ask: "what would I
think I should do right now?" If the answer is unclear or
ambiguous, add an objective-update at that point.

This is the **gate** that catches "richer scene, no direction" bugs.

## Outputs

- `docs/games/<game>/tutorial-design.md` — design doc with step
  sequence + rationale
- `data/<game>/tutorial.json` — rule chain implementing the design

## Design discipline

### Step 1 — Identify the verbs

What can the player DO? Each verb gets at most one tutorial step.

Sokoban: move (4 dirs), push, restart. → 3 tutorial verbs.
Shooter: move, fire, reload. → 3.
a farming sim opener: move, talk to NPC, plant seed, water, sleep. → 5.

Cap at ~7 verbs per tutorial. More = exhausting. Advanced verbs unlock
through play, not tutorial.

### Step 2 — Sequence the steps

Order matters. Rules of thumb:
- **Movement first** — player is anxious; let them MOVE before reading
- **Primary action second** — the verb the game is centered on
- **Modifiers later** — restart, undo, save (less critical to first
  experience)
- **Hide power-user verbs** entirely (combo systems, shortcuts) —
  they're for the second playthrough

### Step 3 — Pick advance conditions per step

Three options per ADR 0012:
- `advance_action` — wait for player to perform a specific input.
  Good for "press W to move north."
- `advance_signal` — wait for a named signal to fire. Good for
  "successfully push a box" (signal: `box_pushed`).
- `advance_after_seconds` — auto-advance. Good for splash messages
  ("welcome to the village!").

Mix: action-based for instructional steps; signal-based for
demonstrative steps; timer-based for exposition.

### Step 4 — Design the overlay content per step

Each overlay has:
- **title** — 2-5 words, eye-catching
- **body** — 1-2 sentences max. NO multi-paragraph essays.
- **highlight_tag** (optional) — which entity glows for visual focus

Bad: "Welcome to TinyPond! Here you'll find a peaceful pond ecosystem
where fish swim around and eat plants. The plants grow when sunlight is
high and don't grow at night. Try moving around with WASD..."

Good:
- title: "Welcome to TinyPond"
- body: "Press WASD to move."
- highlight_tag: "player"

### Step 5 — Skip + replay

Skip mechanism: a `world.tutorial_enabled = 0` setting. Tutorial
rules query for it and self-disable:

```jsonc
{
  "id": "tut_step_0_welcome",
  "trigger": {"type": "tick", "interval": 1},
  "query": {"tags_all": ["clock"],
            "state": {"tutorial_step": 0, "tutorial_enabled": 1}},
  "effect": [...]
}
```

Replay: settings menu has a button:
```jsonc
{"on_click": [
  {"type": "state_set", "target": "level_clock",
   "field": "tutorial_step", "value": 0},
  {"type": "transition_screen", "target": "game"}
]}
```

### Step 6 — freeze_world choices

- **freeze for instructional steps** (modal text, action required)
- **don't freeze for demonstrative steps** (let game continue while
  player executes the demonstration)
- **never freeze the title screen** (no game running)

## Sample tutorial structures

### Sokoban (3 steps)

```jsonc
// tutorial.json
{
  "rules": [
    {
      "id": "tut_step_0_welcome",
      "trigger": {"type": "tick", "interval": 1},
      "query": {"tags_all": ["clock"],
                "state": {"tutorial_step": 0, "tutorial_enabled": 1}},
      "effect": [
        {"type": "show_overlay", "id": "welcome",
         "title": "@strings.tut_welcome",
         "body": "@strings.tut_welcome_body",
         "highlight_tag": "player",
         "advance_action": "ui_accept",
         "freeze_world": true},
        {"type": "state_set", "target": "self",
         "field": "tutorial_step", "value": 1}
      ]
    },
    {
      "id": "tut_step_1_move_done",
      "trigger": {"type": "signal", "name": "player_moved"},
      "query": {"tags_all": ["clock"],
                "state": {"tutorial_step": 1, "tutorial_enabled": 1}},
      "effect": [
        {"type": "show_overlay", "id": "move_hint",
         "title": "@strings.tut_move_great",
         "body": "@strings.tut_now_push",
         "highlight_tag": "box",
         "advance_signal": "box_pushed",
         "freeze_world": false},
        {"type": "state_set", "target": "self",
         "field": "tutorial_step", "value": 2}
      ]
    },
    {
      "id": "tut_step_2_push_done",
      "trigger": {"type": "signal", "name": "box_pushed"},
      "query": {"tags_all": ["clock"],
                "state": {"tutorial_step": 2, "tutorial_enabled": 1}},
      "effect": [
        {"type": "dismiss_overlay", "id": "move_hint"},
        {"type": "show_overlay", "id": "complete",
         "title": "@strings.tut_complete",
         "body": "@strings.tut_complete_body",
         "advance_after_seconds": 3.0,
         "freeze_world": false},
        {"type": "state_set", "target": "self",
         "field": "tutorial_step", "value": 3}
      ]
    }
  ]
}
```

### Open-world RPG (5 steps)

1. Welcome (timer 3s)
2. Move (advance on player_moved)
3. Talk to NPC (advance on npc_dialog_completed signal)
4. Open inventory (advance on inventory_opened action)
5. Save the game (advance on save_state effect fired)

### Crafting / merchant game (5 steps)

1. Welcome (timer)
2. Move (advance on player_moved)
3. Pick up item (advance on item_picked_up signal)
4. Open shop (advance on shop_opened signal)
5. Sell item (advance on sale_made signal — composes economy)

## Anti-patterns

❌ **>10 tutorial steps** — exhausting. Cap at 7.
❌ **Multi-paragraph body text** — players won't read. 1-2 sentences.
❌ **No skip mechanism** — UX failure.
❌ **Tutorial that runs even on Continue** — only on New Game (check
   tutorial_step state on save load; tutorial_step > 0 means "skip").
❌ **Tutorial without highlight_tag for action verbs** — player doesn't
   know what to interact with.
❌ **Locking the player** — freeze_world during instruction is OK;
   blocking the player from doing things while teaching is bad.


## Visual QA gate (mandatory)

Per `.claude/rules/visual-qa.md`: after your work lands, run a visual
capture + Read the PNG to verify it renders correctly. Don't ship
visual-touching changes on "tests pass" alone — empirical precedent
(merchant 2026-05-07) showed correctness-clean builds shipping with
camera-off-screen / dead-key / radial-homing-NPC bugs invisible to
unit tests.

Capture with the command in `visual-qa.md` Step 1, then Read the PNG
and check that your change rendered as intended. visual-qa.md also has
the per-skill checklist.

## What you DON'T do

- ❌ Translate strings — content/asset designer owns ui/strings.json
- ❌ Implement overlay rendering — ADR 0012 implementation
- ❌ Decide tutorial visual style — yume-asset-designer (highlight color,
  outline thickness)
- ❌ Author the settings menu's "replay tutorial" button —
  yume-screen-flow-designer
- ❌ Translate tutorials to other languages (ui/strings.json)

## When invoked by orchestrator

After yume-content-designer + yume-systems-designer
establish the entity vocab + signal vocabulary. Skill needs
to know:
- Which signals fire when player does X
- Which input actions exist
- What the FIRST level/screen looks like (so tutorial fits there)

Returns summary: step count, advance condition mix, skip flow, replay
button location.

## Reference files

- docs/adr/0012-tutorial-overlay-primitive.md — schema + engine
  semantics
- existing demos: sokoban tutorial steps (when built); harvestcore
  (more complex tutorial example)

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.