quest-design

Extract quest entities from narrative text. Use when analyzing quest chains, objectives, moral choices, prerequisites, rewards, quest givers, and branching quest structures.

SKILL.md

GitHub

quest-design

Domain skill for quest structure extraction.

Entity Types

Type Description
quest Main quest container
quest_chain Sequence of linked quests
quest_node Individual step within a quest chain
quest_giver NPC who assigns the quest
quest_objective Specific goal within a quest
quest_prerequisite Requirement to start a quest
quest_reward_tier Reward tier or level for completion
quest_tracker Progress tracking state
moral_choice Player moral decision point

Domain Constraints

  • quest.status: active, completed, failed, cancelled
  • objective.type: kill, collect, interact, deliver, escort, defend, explore, talk, craft, use
  • objective.status: not_started, in_progress, completed, failed
  • prerequisite.type: level, quest, item, skill, location, reputation, custom

Output Format

Write to entities/narrative.json (narrative-team file):

{
  "quests": [
    {
      "id": 1,
      "world_id": 1,
      "name": "Find Lost Brother",
      "description": "Kira must find her missing brother near the Ancient Ruins",
      "objectives": ["Speak to village elder"],
      "status": "active",
      "participant_ids": [3],
      "reward_ids": [],
      "created_at": "2026-02-14T10:00:00+00:00",
      "updated_at": "2026-02-14T10:00:00+00:00",
      "version": 1
    }
  ],
  "quest_objectives": [
    {
      "id": 2,
      "world_id": 1,
      "quest_node_id": 1,
      "objective_type": "talk",
      "description": "Ask Elder Theron about the brother's last known location",
      "target_type": null,
      "target_id": null,
      "target_quantity": 1,
      "current_progress": 0,
      "status": "not_started",
      "is_optional": false,
      "is_hidden": false,
      "order_index": 0,
      "created_at": "2026-02-14T10:00:00+00:00",
      "updated_at": "2026-02-14T10:00:00+00:00",
      "version": 1
    }
  ],
  "next_id": 3
}

Key Considerations

  • Implicit quests: Some objectives are implied, not explicitly stated
  • Moral ambiguity: Not all choices are clearly good/bad
  • Cross-references: If needed, track relationships separately in drafts, but final JSON must match LoreData.from_dict.