worldbuilding

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Worldbuilding

世界观构建

Overview

概述

Create and manage world elements for a story project. Locations, systems (magic, politics, technology, etc.), factions, and artifacts are stored as markdown files in the
worldbuilding/
directory with YAML frontmatter, and glossary terms for the world's invented words in
glossary/terms/
. All elements cross-reference characters and other story elements.
为故事项目创建和管理世界元素。地点、系统(魔法、政治、科技等)、派系和造物等元素以带有 YAML frontmatter 的 Markdown 文件存储在
worldbuilding/
目录中,世界自造词对应的术语表条目则存储在
glossary/terms/
中。所有元素均可与角色及其他故事元素交叉引用。

Prerequisites

前置条件

A story project must already exist (created via the story-init skill). Verify by checking for
story.md
in the project root.
故事项目必须已经存在(通过 story-init skill 创建)。检查项目根目录中是否存在
story.md
以进行确认。

Creating a Location

创建地点

  1. Read
    story.md
    for genre, era, and tone context
  2. Read
    worldbuilding/_index.md
    for existing locations and systems
  3. Ask for the location's name and type (city, fortress, wilderness, etc.)
  4. Build the location through conversation, covering:
    • Physical description and atmosphere
    • History relevant to the story
    • Culture and customs of inhabitants
    • Notable features characters will interact with
    • Current state at story's timeline
    • Routes to other locations: travel time in hours and mode (see
      references/maps-and-routes.md
      )
    • Pronunciation, if the name is invented or easily misread (
      pronunciation: "KEL-ah-mar"
      )
  5. Before settling an invented name, run
    story names '{Candidate}'
    to catch clashes and look-alikes (see
    references/naming-languages.md
    )
  6. Create it with
    story add location '{Location Name}' --type '{type}'
    when the CLI is available (add
    --region
    ,
    --population
    ,
    --controlled-by
    , and
    --character
    as known); it writes
    worldbuilding/locations/{name-kebab}.md
    and updates
    worldbuilding/_index.md
    . Then fill the body from
    references/location-template.md
  7. Without the CLI, write the file from
    references/location-template.md
    to
    worldbuilding/locations/{name-kebab}.md
  8. Without the CLI, update the
    worldbuilding/_index.md
    locations table
  9. If notable characters are listed, verify those character files exist and add this location's kebab-case identifier to each character file's
    locations
    frontmatter list
  10. When CLI access is available, run
    story reindex .
    ,
    story wordcount . --write
    , and
    story check .
  1. 阅读
    story.md
    ,了解体裁、时代和基调背景
  2. 阅读
    worldbuilding/_index.md
    ,了解现有地点和系统
  3. 询问地点的名称和类型(城市、堡垒、荒野等)
  4. 通过对话构建地点,涵盖:
    • 外貌描述和氛围
    • 与故事相关的历史
    • 当地居民的文化和习俗
    • 角色会 interact 的显著特征
    • 故事时间线当前阶段的状态
    • 通往其他地点的路线:以小时和交通方式计算的旅行时间(见
      references/maps-and-routes.md
      )
    • 如果名称是自造的或容易被误读,则提供发音(
      pronunciation: "KEL-ah-mar"
      )
  5. 确定自造名称之前,运行
    story names '{Candidate}'
    ,检查是否存在名称冲突或相似名称(见
    references/naming-languages.md
    )
  6. CLI 可用时,使用
    story add location '{Location Name}' --type '{type}'
    创建地点(已知时添加
    --region
    、
    --population
    、
    --controlled-by
    和
    --character
    );该命令会写入
    worldbuilding/locations/{name-kebab}.md
    并更新
    worldbuilding/_index.md
    。然后根据
    references/location-template.md
    填写正文
  7. 没有 CLI 时,根据
    references/location-template.md
    将文件写入
    worldbuilding/locations/{name-kebab}.md
  8. 没有 CLI 时,更新
    worldbuilding/_index.md
    中的地点表
  9. 如果列出了重要角色,验证对应角色文件存在,并将该地点的 kebab-case 标识符添加到每个角色文件的
    locations
    frontmatter 列表中
  10. 可以访问 CLI 时,运行
    story reindex .
    、
    story wordcount . --write
    和
    story check .

Maps, Routes, and Travel

地图、路线与旅行

Record travel between locations as
routes
on the location file, not in prose notes, so the CLI can check it:
yaml
routes:
  - to: harbor-district
    hours: 1.5
    mode: on foot
  - to: saltmarsh-fort
    hours: 9
    mode: coach
  • to
    is a location id;
    story links .
    checks it exists.
  • A route is two-way unless the other location declares its own route back (for example, uphill slower than down).
  • story continuity .
    errors when a character appears in two dated scenes at locations joined by a route and the story time between them is shorter than the route's
    hours
    .
  • story diagram locations
    prints the route network as a Mermaid map-graph with edges labelled in hours; add
    --out dist/locations.mmd
    to save it. Use it to spot unreachable places and implausible shortcuts.
Use the travel speeds table in
references/economy-logistics.md
to set plausible hours, and
references/maps-and-routes.md
for the full workflow.
将地点之间的旅行记录为地点文件上的
routes
,而不是散文形式的笔记,以便 CLI 进行检查:
yaml
routes:
  - to: harbor-district
    hours: 1.5
    mode: on foot
  - to: saltmarsh-fort
    hours: 9
    mode: coach
  • to
    是地点 id;
    story links .
    会检查它是否存在
  • 路线默认是双向的,除非另一个地点声明了自己的返程路线(例如,上坡可能比下坡更慢)
  • 如果角色出现在两个有日期标记的场景中,场景地点之间存在路线,且故事时间跨度短于路线的
    hours
    ,
    story continuity .
    将报错
  • story diagram locations
    会将路线网络输出为带小时数边标签的 Mermaid map-graph;添加
    --out dist/locations.mmd
    可将其保存。使用该图来发现无法到达的地点和不合理的捷径
使用
references/economy-logistics.md
中的旅行速度表来设置合理的小时数,完整工作流见
references/maps-and-routes.md
。

Creating a System

创建系统

  1. Read
    story.md
    for genre and themes context
  2. Read
    worldbuilding/_index.md
    for existing systems
  3. Identify the system type and consult
    references/world-element-types.md
    for the relevant prompts. For calendars, naming languages, economies, and magic costs, also use
    references/calendars.md
    ,
    references/naming-languages.md
    , and
    references/economy-logistics.md
  4. Build the system through conversation, addressing the key questions for that type
  5. Write the file using
    references/system-template.md
  6. Save to
    worldbuilding/systems/{name-kebab}.md
  7. Update
    worldbuilding/_index.md
    systems table
  8. Cross-reference with characters who interact with the system (e.g., magic-users for a magic system)
  9. When CLI access is available, run
    story reindex .
    ,
    story wordcount . --write
    , and
    story check .
  1. 阅读
    story.md
    ,了解体裁和主题背景
  2. 阅读
    worldbuilding/_index.md
    ,了解现有系统
  3. 确定系统类型,并查阅
    references/world-element-types.md
    中相应的提示。对于日历、命名语言、经济和魔法成本,还需使用
    references/calendars.md
    、
    references/naming-languages.md
    和
    references/economy-logistics.md
  4. 通过对话构建系统,解答该类型的关键问题
  5. 使用
    references/system-template.md
    编写文件
  6. 保存到
    worldbuilding/systems/{name-kebab}.md
  7. 更新
    worldbuilding/_index.md
    中的系统表
  8. 与使用该系统的角色进行交叉引用(例如,魔法系统对应魔法使用者)
  9. 可以访问 CLI 时,运行
    story reindex .
    、
    story wordcount . --write
    和
    story check .

Creating A Faction

创建派系

Use
story add faction '{Faction Name}' --type '{family|guild|government|military|religion|company|community|criminal|other}'
when the CLI is available. Otherwise create
worldbuilding/factions/{name-kebab}.md
with frontmatter fields
name
,
type
,
status
,
members
,
locations
, and
tags
.
Cover:
  • Purpose and ideology
  • Power base, resources, and territory
  • Important members
  • Conflicts and pressure points
Then:
  1. Save to
    worldbuilding/factions/{name-kebab}.md
  2. Update the Factions table in
    worldbuilding/_index.md
  3. If members are listed, verify those character files exist
  4. When CLI access is available, run
    story reindex .
    ,
    story wordcount . --write
    , and
    story check .
CLI 可用时,使用
story add faction '{Faction Name}' --type '{family|guild|government|military|religion|company|community|criminal|other}'
。否则,创建
worldbuilding/factions/{name-kebab}.md
,其 frontmatter 字段为
name
、
type
、
status
、
members
、
locations
和
tags
。
涵盖:
  • 目标和理念
  • 权力基础、资源和领地
  • 重要成员
  • 冲突和压力点
然后:
  1. 保存到
    worldbuilding/factions/{name-kebab}.md
  2. 更新
    worldbuilding/_index.md
    中的 Factions 表
  3. 如果列出了成员,验证对应角色文件存在
  4. 可以访问 CLI 时,运行
    story reindex .
    、
    story wordcount . --write
    和
    story check .

Creating An Artifact

创建造物

Use
story add artifact '{Artifact Name}' --type '{object|weapon|document|technology|relic|symbol|resource|other}'
when the CLI is available. Otherwise create
worldbuilding/artifacts/{name-kebab}.md
with frontmatter fields
name
,
type
,
status
,
owner
,
location
, and
tags
.
Cover:
  • Description and recognition details
  • Function, constraints, and costs
  • History and prior owners
  • Current owner/location state
Then:
  1. Save to
    worldbuilding/artifacts/{name-kebab}.md
  2. Update the Artifacts table in
    worldbuilding/_index.md
  3. If an owner or location is listed, verify those files exist and cross-reference back
  4. When CLI access is available, run
    story reindex .
    ,
    story wordcount . --write
    , and
    story check .
CLI 可用时,使用
story add artifact '{Artifact Name}' --type '{object|weapon|document|technology|relic|symbol|resource|other}'
。否则,创建
worldbuilding/artifacts/{name-kebab}.md
,其 frontmatter 字段为
name
、
type
、
status
、
owner
、
location
和
tags
。
涵盖:
  • 描述和辨识细节
  • 功能、限制和代价
  • 历史和历任所有者
  • 当前所有者及所在位置的状态
然后:
  1. 保存到
    worldbuilding/artifacts/{name-kebab}.md
  2. 更新
    worldbuilding/_index.md
    中的 Artifacts 表
  3. 如果列出了所有者或地点,验证对应文件存在并建立反向引用
  4. 可以访问 CLI 时,运行
    story reindex .
    、
    story wordcount . --write
    和
    story check .

Adding A Glossary Term

添加术语表条目

Record an invented word, title, rank, or concept that the prose must spell and use the same way every time as a glossary term in
glossary/terms/
.
  1. Read
    glossary/_index.md
    for the existing terms, then run
    story names '{Term}'
    to catch a clash with another name or term
  2. Use
    story add term '{Term}' --category '{person|place|faction|artifact|concept|term|other}'
    when the CLI is available, with
    --alias '{Variant}'
    once for each accepted variant; it writes
    glossary/terms/{term-kebab}.md
    and updates
    glossary/_index.md
    . Otherwise create the file with frontmatter fields
    term
    ,
    category
    , and
    aliases
    , and add a row to the Registry table in
    glossary/_index.md
  3. Fill
    ## Definition
    (what it means in the story) and
    ## Usage Notes
    (spelling, capitalisation, who uses it, and what it never means). Add a
    pronunciation
    when the term is invented or easily misread
  4. When the term's capitalisation or hyphenation is a house-style decision, record it in
    style-sheet.md
    too (see the
    voice-style
    skill)
  5. When CLI access is available, run
    story reindex .
    ,
    story wordcount . --write
    , and
    story check .
A glossary for translators belongs to the
adaptation
skill, which adds a
## Translations
section to these term files.
将正文中必须始终采用相同拼写和用法的自造词、头衔、等级或概念记录为
glossary/terms/
中的术语表条目。
  1. 阅读
    glossary/_index.md
    了解现有术语,然后运行
    story names '{Term}'
    ,检查是否与其他名称或术语冲突
  2. CLI 可用时,使用
    story add term '{Term}' --category '{person|place|faction|artifact|concept|term|other}'
    ,每个认可的变体使用一次
    --alias '{Variant}'
    ;该命令会写入
    glossary/terms/{term-kebab}.md
    并更新
    glossary/_index.md
    。否则,创建包含 frontmatter 字段
    term
    、
    category
    和
    aliases
    的文件,并在
    glossary/_index.md
    的 Registry 表中添加一行
  3. 填写
    ## Definition
    (该术语在故事中的含义)和
    ## Usage Notes
    (拼写、大小写、使用者,以及该术语绝不表示的含义)。如果术语是自造的或容易被误读,还应添加
    pronunciation
  4. 当术语的大小写或连字符用法属于文体规范决策时,也应将其记录在
    style-sheet.md
    中(见 voice-style skill)
  5. 可以访问 CLI 时,运行
    story reindex .
    、
    story wordcount . --write
    和
    story check .
面向译者的术语表属于 adaptation skill,该 skill 会为这些术语文件添加
## Translations
部分。

Updating World Elements

更新世界元素

  1. Read the existing file
  2. Make the requested changes. If a location or faction changes partway through the story (a city falls, a guild disbands), add a progression instead of editing the opening value (see Changes Over the Story)
  3. If cross-references changed, update the linked files
  4. Update
    worldbuilding/_index.md
    if name, type, or status changed
  5. When CLI access is available, run
    story reindex .
    ,
    story wordcount . --write
    , and
    story check .
  1. 读取现有文件
  2. 进行所请求的更改。如果地点或派系在故事中途发生变化(城市陷落、工会解散),应添加 progression,而不是直接修改故事开篇时的值(见“故事发展过程中的变化”)
  3. 如果交叉引用发生变化,更新关联文件
  4. 如果名称、类型或状态发生变化,更新
    worldbuilding/_index.md
  5. 可以访问 CLI 时,运行
    story reindex .
    、
    story wordcount . --write
    和
    story check .

Changes Over the Story

故事发展过程中的变化

Location and faction files describe the world as the story opens. Record a later change as a progression, so drafting an early chapter does not see what happens in a late one:
yaml
progressions:
  - from: chapter-10
    field: status
    value: occupied
  - from: chapter-10
    field: controlled-by
    value: lord-maren
  • from
    is the first chapter where the new value holds. It may be a planned
    chapter-NN
    with no file yet
  • field
    is a kebab-case single-value field, existing (
    status
    ,
    controlled-by
    ,
    region
    ) or new (
    ruler
    ,
    population-note
    ). List fields (
    notable-characters
    ,
    routes
    ,
    members
    ,
    locations
    ,
    tags
    ) cannot change this way
  • value
    is one value. A faction's
    type
    and
    status
    must stay within their allowed values
  • Keep entries in story order, and read the progressions up to the chapter being drafted before describing the place or faction in it
  • Artifacts and systems do not take progressions; track an artifact's changes with
    object-state
    and scene
    state-changes
    (see the revision-continuity skill)
After adding or editing progressions, run
story reindex .
,
story wordcount . --write
, and
story check .
.
地点和派系文件描述的是故事开篇时的世界状态。将后续变化记录为 progression,避免在起草早期章节时看到后期才会发生的情节:
yaml
progressions:
  - from: chapter-10
    field: status
    value: occupied
  - from: chapter-10
    field: controlled-by
    value: lord-maren
  • from
    是新值开始生效的第一个章节。它可以是尚未创建文件的计划章节
    chapter-NN
  • field
    是采用 kebab-case 的单值字段,可以是现有字段(
    status
    、
    controlled-by
    、
    region
    ),也可以是新字段(
    ruler
    、
    population-note
    )。列表字段(
    notable-characters
    、
    routes
    、
    members
    、
    locations
    、
    tags
    )不能以此方式更改
  • value
    是一个值。派系的
    type
    和
    status
    必须保持在其允许值范围内
  • 按故事顺序保留条目,并在描述某章节中的地点或派系之前,读取截至该章节的所有 progressions
  • 造物和系统不支持 progressions;使用 object-state 和场景 state-changes 跟踪造物的变化(见 revision-continuity skill)
添加或编辑 progressions 后,运行
story reindex .
、
story wordcount . --write
和
story check .
。

Cross-Referencing

交叉引用

  • Locations reference characters via
    notable-characters
    in frontmatter
  • Characters reference locations via
    locations
    in frontmatter
  • Factions reference character members and locations
  • Artifacts reference an owner character or faction and a current location
  • Systems reference practitioners via character tags
  • Location
    routes
    reference other locations by id
  • Invented names across characters, locations, systems, factions, artifacts, and glossary terms may carry a
    pronunciation
    ;
    story build --format narration
    gathers them into a pronunciation guide for audiobook narrators
  • When a location is used in a chapter, the chapter's frontmatter
    locations
    field links back
  • Keep the
    worldbuilding/_index.md
    world overview section current as elements are added
  • 地点通过 frontmatter 中的
    notable-characters
    引用角色
  • 角色通过 frontmatter 中的
    locations
    引用地点
  • 派系引用角色成员和地点
  • 造物引用所有者角色或派系,以及当前所在地点
  • 系统通过角色标签引用使用者
  • 地点的
    routes
    通过 id 引用其他地点
  • 角色、地点、系统、派系、造物和术语表条目中的自造名称均可携带
    pronunciation
    ;
    story build --format narration
    会将这些发音汇总成供有声书朗读者使用的发音指南
  • 当某个地点在章节中使用时,该章节 frontmatter 的
    locations
    字段会反向链接到该地点
  • 随着元素不断添加,持续更新
    worldbuilding/_index.md
    中的世界概览部分

CLI Maintenance

CLI 维护

Use the Story CLI when it is available. If
story
is not installed, use the bundled fallback
node ../story-maintenance/scripts/story.js
with the same arguments. Use
node <checkout>/bin/story.js
instead only when the user names a Story Skills repository checkout or you are working in one. Write the script as an absolute path (resolve the fallback relative to this skill folder) and run it from the folder you would run
story
from, so
.
and other relative paths keep their meaning. Use Node, not Bun or a package script: Bun would load that folder's
bunfig.toml
(which can run code) and
.env
, and a package script runs from the checkout's root. If no CLI is available, perform the registry, backlink, and word-count checks manually.
Story CLI 可用时,应优先使用。如果未安装
story
,则使用捆绑的备用脚本
node ../story-maintenance/scripts/story.js
,并传入相同参数。只有当用户指定了 Story Skills 仓库检出目录,或你正在该目录中工作时,才改用
node <checkout>/bin/story.js
。将脚本路径写为绝对路径(相对于此 skill 目录解析备用脚本),并从原本运行
story
的目录执行,这样
.
和其他相对路径仍能保持原有含义。使用 Node,不要使用 Bun 或 package script:Bun 会加载该目录的
bunfig.toml
(其中可以运行代码)和
.env
,而 package script 会从检出目录的根目录运行。如果没有可用的 CLI,则手动执行注册表、反向链接和字数统计检查。

Reference Files

参考文件

  • references/location-template.md
    - Template for location files
  • references/system-template.md
    - Template for system files
  • references/faction-template.md
    - Template for faction files
  • references/artifact-template.md
    - Template for artifact/object files
  • references/world-element-types.md
    - Detailed prompts for each system type (magic, political, technology, religion, economic, military, social)
  • references/maps-and-routes.md
    - Recording
    routes
    , the
    story diagram locations
    map-graph, and the continuity travel check
  • references/calendars.md
    - Adding a custom
    calendar
    to
    story.md
    , dating scenes in it, and recording seasons and moons as a system file
  • references/naming-languages.md
    - Phonology sketches, naming rules per culture, pronunciation, and the
    story names
    collision check
  • references/economy-logistics.md
    - Prices and wages, supply lines, magic and technology costs, and a travel speeds table by mode
  • references/location-template.md
    - 地点文件模板
  • references/system-template.md
    - 系统文件模板
  • references/faction-template.md
    - 派系文件模板
  • references/artifact-template.md
    - 造物或物品文件模板
  • references/world-element-types.md
    - 每种系统类型的详细提示(魔法、政治、科技、宗教、经济、军事、社会)
  • references/maps-and-routes.md
    - 记录
    routes
    、使用
    story diagram locations
    生成 map-graph,以及执行连续性旅行检查
  • references/calendars.md
    - 向
    story.md
    添加自定义
    calendar
    、使用自定义日历为场景标注日期,以及将季节和月亮记录为系统文件
  • references/naming-languages.md
    - 音系草图、各文化的命名规则、发音,以及
    story names
    冲突检查
  • references/economy-logistics.md
    - 价格和工资、补给线、魔法与科技成本,以及按交通方式划分的旅行速度表

Shared Conventions

共享约定

Every story skill follows the shared conventions in
../story-maintenance/references/conventions.md
, resolved relative to this skill folder. Read it before creating, renaming, or linking story files. If that file is missing because this skill was installed without
story-maintenance
, the essentials are: kebab-case ids and filenames, YAML frontmatter on every story-project file,
_index.md
files as the authoritative registries, bidirectional links between entities,
characters
for who is on the page and
mentions
for who is only referred to,
status: deceased
plus
died-in: chapter-{NN}
for deaths, and no project-local generator or build scripts (run only the installed or bundled Story CLI).
每个 story skill 都遵循
../story-maintenance/references/conventions.md
中的共享约定,该路径相对于此 skill 目录解析。在创建、重命名或关联故事文件之前,应先阅读该文件。如果安装此 skill 时未附带 story-maintenance,导致该文件缺失,则需遵循以下基本要求:id 和文件名采用 kebab-case;每个故事项目文件都包含 YAML frontmatter;
_index.md
文件作为权威注册表;实体之间使用双向链接;
characters
表示实际登场的角色,
mentions
表示仅被提及的角色;死亡信息使用
status: deceased
加
died-in: chapter-{NN}
;不得使用项目本地的生成器或构建脚本(仅运行已安装或捆绑的 Story CLI)。