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.
1---2name: quest-design3description: Extract quest entities from narrative text. Use when analyzing quest chains, objectives, moral choices, prerequisites, rewards, quest givers, and branching quest structures.4---5# quest-design
6
7Domain skill for quest structure extraction.
8
9## Entity Types
10
11| Type | Description |
12|------|-------------|
13| `quest` | Main quest container |
14| `quest_chain` | Sequence of linked quests |
15| `quest_node` | Individual step within a quest chain |
16| `quest_giver` | NPC who assigns the quest |
17| `quest_objective` | Specific goal within a quest |
18| `quest_prerequisite` | Requirement to start a quest |
19| `quest_reward_tier` | Reward tier or level for completion |
20| `quest_tracker` | Progress tracking state |
21| `moral_choice` | Player moral decision point |
22
23## Domain Constraints
24
25- `quest.status`: active, completed, failed, cancelled
26- `objective.type`: kill, collect, interact, deliver, escort, defend, explore, talk, craft, use
27- `objective.status`: not_started, in_progress, completed, failed
28- `prerequisite.type`: level, quest, item, skill, location, reputation, custom
29
30## Output Format
31
32Write to `entities/narrative.json` (narrative-team file):
33
34```json
35{
36 "quests": [
37 {
38 "id": 1,
39 "world_id": 1,
40 "name": "Find Lost Brother",
41 "description": "Kira must find her missing brother near the Ancient Ruins",
42 "objectives": ["Speak to village elder"],
43 "status": "active",
44 "participant_ids": [3],
45 "reward_ids": [],
46 "created_at": "2026-02-14T10:00:00+00:00",
47 "updated_at": "2026-02-14T10:00:00+00:00",
48 "version": 1
49 }
50 ],
51 "quest_objectives": [
52 {
53 "id": 2,
54 "world_id": 1,
55 "quest_node_id": 1,
56 "objective_type": "talk",
57 "description": "Ask Elder Theron about the brother's last known location",
58 "target_type": null,
59 "target_id": null,
60 "target_quantity": 1,
61 "current_progress": 0,
62 "status": "not_started",
63 "is_optional": false,
64 "is_hidden": false,
65 "order_index": 0,
66 "created_at": "2026-02-14T10:00:00+00:00",
67 "updated_at": "2026-02-14T10:00:00+00:00",
68 "version": 1
69 }
70 ],
71 "next_id": 3
72}
73```
74
75## Key Considerations
76
77- **Implicit quests**: Some objectives are implied, not explicitly stated
78- **Moral ambiguity**: Not all choices are clearly good/bad
79- **Cross-references**: If needed, track relationships separately in drafts, but final JSON must match `LoreData.from_dict`.