写作与公文
从零搭建小说/故事项目时,初始化结构化 Markdown…
当需要开始一个新故事、书或虚构项目,并建立可被各故事技能交叉引用的 Markdown 项目骨架时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
从零搭建小说/故事项目时,初始化结构化 特定
解决思路
- 询问并收集基本故事信息:Title、Genre 和 sub-genre、2-3 句 Brief synopsis、Setting era/time period、2-4 个 Key themes、POV style(first-person、third-person-limited、third-person-omniscient)、Tense(past、present、future、mixed)。
- 如果 Story CLI 可用,优先使用它创建起始项目,然后检查并按需精炼生成的文件。
- 运行命令:`story init "{Title}" --genre "{genre}" --sub-genre "{sub-genre}" --setting-era "{era}" --pov "{pov-style}" --tense "{tense}" --synopsis "{synopsis}" --theme "{theme-1}" --theme "{theme-2}"`。
- 注意 Title 必须含 ASCII 字母或数字,因为每个注册表中记录的 story id 由它派生;`--dir` 只设置目录。
- 注意 `init` 拒绝已存在的目录,除非传入 `--force`;使用 `--force` 时只创建缺失的起始文件,绝不覆盖已有的 `story.md`、registry、timeline 或 `continuity/state.md`。
- 如果未安装 `story`,在 Story Skills 仓库检出中使用 `bun run story --`,或使用捆绑回退 `node ../story-maintenance/scripts/story.js`,参数相同,并相对此 skill 文件夹解析路径。
- 运行回退命令示例:`node ../story-maintenance/scripts/story.js init "{Title}"`。
- 如果两个命令都不可用,则按下述步骤手动创建文件。
- 在当前工作目录创建文件夹结构 `{story-title-kebab}/`,包含:`story.md`;`style-sheet.md`;`characters/_index.md`;`worldbuilding/_index.md`、`worldbuilding/locations/`、`worldbuilding/systems/`、`worldbuilding/factions/`、`worldbuilding/artifacts/`;`plot/_index.md`、`plot/arcs/`、`plot/timeline.md`;`scenes/_index.md`;`continuity/state.md`、`continuity/questions/_index.md`、`continuity/promises/_index.md`、`continuity/clues/_index.md`;`glossary/_index.md`、`glossary/terms/`;`chapters/_index.md`。
- 用故事圣经填充 `story.md` 的 YAML frontmatter:`title: "{Title}"`、`schema-version: 2`、`genre`、`sub-genre`、`setting-era`、`status: planning`、`themes` 列表、`premise`、`counter-premise`、`pov`、`tense`。
- 在 `story.md` frontmatter 下方加入章节:`Synopsis`(提供的 2-3 句 synopsis)、`Tone & Style`(根据 genre/themes 推导的语气与风格简要说明)、`Notes`(空章节留给用户填写)。
- 起草 working premise:将 `premise:` 和 `counter-premise:` 字段作为假设而非承诺填入。
- `premise` 是一句话控制性理念——价值 + 原因,例如 `justice triumphs because the hero outsmarts the system`。
- `counter-premise` 是反派具体体现的论点:故事的对立价值,按反派会相信的方式陈述。
- 在 synopsis 旁边尽早起草两者,但不要强加主题;working premise 是待审计的猜测,不是要强加结论。
- 在修订时重新审视:`revision-continuity` 的主题审计 pass(深度 pass 见 `theme-craft` skill)检查结局是否通过后果戏剧化了 premise。
- 如果草稿论证的是不同 premise,更新 premise,而不是更新草稿。
- 为每个 `_index.md` 填充空注册表。`characters/_index.md`:frontmatter `type: character-registry`、`story: {story-title-kebab}`;章节 `Registry` 表(`Name`、`Role`、`Status`、`File`,首行 `*No characters yet*`)、`Relationship Map`(`*No relationships defined yet.*`)、`Family Trees`(`*No family trees defined yet.*`)。
- `worldbuilding/_index.md`:frontmatter `type: world-registry`、`story: {story-title-kebab}`;章节 `World Overview`(占位描述)、`Locations` 表(`Name`、`Type`、`Region`、`File`)、`Systems` 表(`Name`、`Type`、`File`)、`Factions` 表(`Name`、`Type`、`Status`、`File`)、`Artifacts` 表(`Name`、`Type`、`Status`、`File`),均含空占位行。
- `plot/_index.md`:frontmatter `type: plot-registry`、`story: {story-title-kebab}`、`structure: three-act`;章节 `Story Structure`(`Model: Three-Act Structure (adjust as needed)`)、`Arcs` 表(`Name`、`Type`、`Status`、`File`)、`Theme Tracking` 表(`Theme`、`Arcs`、`Chapters`),均含空占位行。
- `plot/timeline.md`:frontmatter `type: timeline`、`story: {story-title-kebab}`;章节 `Story Timeline` 表(`When`、`Event`、`Arc`、`Chapter`),含空占位行。
- `chapters/_index.md`:frontmatter `type: chapter-registry`、`story: {story-title-kebab}`;章节 `Registry` 表(`#`、`Title`、`POV`、`Status`、`Word Count`、`File`),含空占位行;并写 `Total Word Count: 0`。
- 创建 v2 支持文件。每个注册表和 `continuity/state.md` 除 `type` 外都需要 `story: {story-title-kebab}`,否则 `story validate` 报告缺失 `story` 字段。
- `scenes/_index.md` frontmatter:`type: scene-registry` 和 `story: {story-title-kebab}`。
- `continuity/state.md` frontmatter:`type: continuity-state`、`story: {story-title-kebab}`、`current-chapter: 0`,以及空的 `character-state`、`object-state`、`knowledge-state` 列表。
- `continuity/questions/_index.md` frontmatter:`type: question-registry` 和 `story: {story-title-kebab}`。
- `continuity/promises/_index.md` frontmatter:`type: promise-registry` 和 `story: {story-title-kebab}`。
- `continuity/clues/_index.md` frontmatter:`type: clue-registry` 和 `story: {story-title-kebab}`。
- `glossary/_index.md` frontmatter:`type: glossary-registry` 和 `story: {story-title-kebab}`。
- `style-sheet.md`(可选)frontmatter:`type: style-sheet`、`dialect: unspecified`,以及空的 `preferred`、`watch-words`、`allow-words` 列表,并加上 `voice-style` skill 中描述的正文章节。
- 如果手动初始化变得繁琐,停止并请用户安装或运行 Story CLI,而不是发明不同的项目形状。
- 展示已创建内容的摘要,并建议下一步:`Add your first character`(触发 character-management skill)、`Start worldbuilding`(触发 worldbuilding skill)、`Define your plot structure`(触发 plot-structure skill)、`Set up the style sheet`(有写作样本后触发 voice-style skill)、运行 `story next .` 以显示确定性的下一步操作。
- 当 CLI 可用时,运行最终维护检查:`story validate {story-title-kebab}`。
- 如果未安装 `story`,在 Story Skills 仓库检出中使用 `bun run story --`,或使用捆绑回退 `node ../story-maintenance/scripts/story.js`,参数相同,并相对此 skill 文件夹解析路径。
- 参考文件:`references/title-logline.md`——标题 craft(comps、hook phrasing、title as promise)和 logline recipe。
- 遵守所有故事技能通用约定:所有实体文件使用 kebab-case 文件名(例如 `sera-voss.md`、`ashen-citadel.md`)。
- 每个文件使用 YAML frontmatter 记录结构化元数据。
- Schema version:`story.md` frontmatter 包含 `schema-version: 2`。
- `_index.md` 文件是每个领域的权威注册表。
- `story.md` 是被所有 skills 读取以获取上下文的顶层圣经。
- `style-sheet.md` 记录 voice 和 house style;写入或修订散文的 skills 会读取它。
- 双向交叉链接——引用另一个实体时,更新两个文件。
- 角色标识符使用不带扩展名的 kebab-case 文件名(例如 `sera-voss`)。
- 死亡追踪——角色在页面上死亡时,设置 `status: deceased` 和 `died-in: chapter-{NN}`,以便 `story continuity` 标记死后出场。
- `mentions` 与 `characters`——章节和场景 frontmatter 将出现在场景中的角色列在 `characters` 下;仅被引用、回忆、记录或在闪回中看到的角色放在 `mentions` 下。
- 场景标识符使用 `chapter-{NN}-scene-{NN}`,并位于 `scenes/`。
- 连续性状态位于 `continuity/state.md`,未决问题、承诺和线索分别跟踪在 `continuity/questions/`、`continuity/promises/`、`continuity/clues/`。
- Markdown-first artifacts——直接在目标 `.md` 文件中创建和编辑故事内容。不要创建项目本地 build scripts、generator scripts 或 bulk writer scripts(例如 `build-*.js`)来生成故事文件。
- CLI helpers stay external——agents 唯一应运行的 JavaScript helper 是已安装或捆绑的 Story CLI(`story`、`bun run story --` 或 `story-maintenance/scripts/story.js`)用于确定性维护。不要把它复制到用户的故事项目中,并在完成前删除任何不可避免的 scratch helper。
适用边界 · 注意事项
- 不适用于向已有故事项目追加内容;应改用对应领域的技能。
- 不适用于现有书的续集、前传或伴生作品;应使用 `series-continuity`,它会链接项目并跨项目延续正典。
- 不适用于转换已有手稿或章节草稿;应改为运行 `story import <source> --title "{Title}"`,然后根据它打印的实体候选构建 bible。