mcpField
G
genre-conventions

genre-conventions

github.com/jwynia创意与媒体179477 次安装35 周前更新
代码仓库

关于 genre-conventions

面向写作者的故事开发技能,可诊断类型问题并协助生成类型元素。它聚焦故事向读者承诺的情感体验,区分类型与背景设定,并检查故事元素是否支持这一承诺。

主要功能

  1. 01诊断类型承诺不匹配
  2. 02区分类型与背景设定
  3. 03检查类型必备元素
  4. 04审视主类型与次类型
  5. 05生成类型元素并分析文本

适用场景

  1. 01明确故事提供的情感体验
  2. 02检查开篇是否传达类型
  3. 03找出缺失或位置不当的类型元素
  4. 04评估次类型是否削弱主线

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jwynia/agent-skills --skill genre-conventions

安装后在 Claude Code 中输入/genre-conventions确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

data/
genre-elements.json
scripts/
genre-blend.ts
genre-check.ts
genre-elements.ts

详细介绍

类型惯例:诊断与生成技能

你负责诊断故事在类型层面的问题,并生成特定类型的元素。你的职责是确保故事兑现对读者的情感承诺。

核心原则

类型是一种承诺。故事必须兑现这份承诺,否则读者会觉得遭到了背叛。

元素类型关乎情感体验,而不是书架分类。故事可以设定在太空船上,但属于任何类型。设定不是类型。情感体验才是类型。


十一种元素类型

类型核心承诺读者想要感受到什么
奇观敬畏与着迷“我从没想到这竟然可能”
理念智识刺激“我从没换这个角度想过”
冒险在挑战中感受兴奋“接下来会发生什么?”(外部)
恐怖恐惧与直面威胁“我害怕去看,却又停不下来”
悬疑对未知事实的好奇“我想弄清楚真相”
惊悚在危险中感受紧张“他们能及时赶上吗?”
幽默愉悦与娱乐“真出乎意料,太有意思了”
关系对人际联结的投入“我希望他们能解决问题”
剧情内心冲突与转变“接下来会发生什么?”(内部)
议题探索复杂问题“我现在对此有了不同的看法”
群像群体互动与协力“他们会如何团结起来?”

注意: 科幻、奇幻、历史、当代是设定,而非类型。奇幻故事可以是悬疑、爱情或惊悚。设定是类型展开的场所。


类型状态

状态 G1:缺少类型承诺

症状: 故事没有与读者建立明确的情感契约。不清楚它要提供什么体验。开篇没有表明这是哪种故事。读者不知道该期待什么。

关键问题:

  • 读者应该获得怎样的情感体验?
  • 第一章是否清楚地传达了类型?
  • 开篇承诺的情感回报是否与故事实际提供的一致?
  • 如果有人问“这是哪种故事?”,你能用一个词回答吗?

干预措施:

  • 确定你想营造的主要情感体验
  • 在开场场景中建立类型标志
  • 检查你的吸引点是否承诺了故事实际提供的内容

状态 G2:故事类型不合适

症状: 故事元素与试图营造的情感体验不匹配。惊悚节奏搭配关系内容。悬疑结构却以冒险式回报收尾。素材与选定的类型相冲突。

关键问题:

  • 你实际营造的是怎样的情感体验?
  • 哪种类型最能服务这些素材?
  • 你的创作意图与实际写出来的内容是否不一致?
  • 哪种类型能让这些素材发挥出最佳效果?

干预措施:

  • 让类型与素材相契合,而不是强行把素材塞进某种类型
  • 考虑你的构想是否需要采用不同的情感表达方式
  • 用适合的类型重新构思故事

状态 G3:类型元素位置不当

症状: 元素选对了,但时机不对。悬疑线索一次性全抛出。利害关系尚未确立,惊悚张力就已出现。恐怖感尚未通过脆弱处境的铺垫建立。爱情故事中的障碍出现得太晚。

关键问题:

  • 悬疑线索是否经过安排,逐步揭示?
  • 惊悚张力是在不断升级,还是停滞不变?
  • 恐怖感是否通过对脆弱处境的铺垫充分建立?
  • 关系中的障碍是否先阻碍彼此靠近,再逐渐消解?
  • 奇观是否通过探索逐步展开,而非一次性揭晓?

干预措施:

  • 使用特定类型的节奏模板
  • 对照读者期待曲线,规划各元素的出现位置
  • 检查铺垫是否先于回报

状态 G4:次要类型削弱主要类型

症状: 支线类型压过主线故事。爱情元素盖过惊悚元素。幽默打破恐怖氛围。思想内容拖慢冒险节奏。读者无所适从。

关键问题:

  • 主要的情感体验是什么?
  • 次要类型是在服务还是在争夺主导权?
  • 次要类型何时占据篇幅?
  • 次要类型是在增强还是打断主要体验?

干预措施:

  • 明确类型的主次层级
  • 将次要类型限制在特定场景或支线中
  • 用次要类型深化主要类型,而非分散注意力
  • 如果次要类型持续削弱主要类型,考虑将其删去

状态 G5:类型缺少必备元素

症状: 悬疑故事没有公平线索。惊悚故事没有倒计时。恐怖故事没有脆弱感。关系故事没有障碍。冒险故事没有逐步升级的挑战。

关键问题:

  • 这个类型有哪些不可或缺的元素?
  • 当前稿件缺少哪些元素?
  • 能否在不重构的情况下补上这些元素?
  • 你是否依赖设定来承担类型本应发挥的作用?

干预措施:

  • 使用类型要求检查清单
  • 使用 genre-elements 工具生成缺失元素
  • 确保每个必备元素都在最终幕之前出现

状态 G6:未加审视的类型陈词滥调

症状: 类型元素令人厌倦。读者能猜到一切。呈现方式毫无新意。读者觉得“我以前读过这个”。

关键问题:

  • 你默认采用了哪些类型惯例?
  • 哪些惯例可以颠覆或超越?
  • 你可以在哪里以意想不到的方式兑现类型承诺?
  • 正交的方法会是什么样?

干预措施:

  • 移交给 cliche-transcendence 技能进行正交性分析
  • 审视每个类型元素的新鲜感
  • 通过意想不到的方式,带来读者期待的情感体验

状态 G7:将设定误认为类型

症状: 被问到类型时,回答“这是科幻”。世界观构建缺少情感核心。设定元素没有服务类型需求。如果移除设定,故事就不再具有任何类型特征。

关键问题:

  • 如果移除设定,这个情感故事属于什么类型?
  • 设定如何增强类型体验?
  • 如果故事发生在当代背景下,会是什么样?
  • 是否所有内容都由设定支撑?

干预措施:

  • 找出设定之下的类型
  • 调整设定元素,使其服务类型需求
  • 确保故事拥有不依赖设定的情感脉络

状态 G8:群像故事缺少类型分配

症状: 多个 POV 角色却没有连贯的类型体验。不同 POV 之间的语调急剧变化。读者不知道该有什么感受。每条线单独成立,却无法融合。

关键问题:

  • 整个故事的总领类型是什么?
  • 每条 POV 线是否有自己的子类型?
  • 各种类型体验如何结合?
  • 是否有一个主导 POV 来确立类型预期?

干预措施:

  • 确立所有故事线共同服务的主要类型
  • 为每个 POV 分配兼容的子类型
  • 梳理 POV 转场,确保语调连贯
  • 利用群像元素来统一故事,而非将其割裂

类型要求速查

类型场景需求角色需求情节需求
奇观宏大的尺度、前所未有的现象具备敬畏之心,能够认识到其意义发现、揭示、视角转变
理念围绕理念构建的社会求知欲强、视角多元探索理念、检验假设
冒险多样的环境、身体上的障碍具备相关技能,经历超出过往经验的考验逐步升级的挑战、地理位置的变换
恐怖孤立、行动受限、常态崩塌有与威胁相匹配的弱点,也有失去的东西威胁不断升级、安全感逐渐消退
悬疑可控的环境、层层递进的信息具备技能的调查者、证人、嫌疑人收集信息、逐步揭示真相
惊悚时限紧迫、风险极高的环境肩负关键责任、拥有实力相当的对手截止期限带来的压力、不断升级的威胁
幽默不寻常的规则、容易产生误解的情境认知盲区、相互冲突的常规沟通误会、颠覆预期
关系被迫相处、共同面对挑战互补的特质、有意义的障碍关系发展、关系考验
剧情挑战价值观的环境经受考验的坚定价值观艰难抉择、内心冲突
议题将议题具象呈现的社会对核心议题持有多元观点直接体验议题的不同面向
群像需要多种技能才能应对的挑战互补的能力、迥异的观点组建团队、合作挑战

诊断流程

当作者提出与类型相关的问题时:

1. 确认预期类型

询问:“你希望读者获得怎样的情感体验?”不要问“这属于什么类别?”,而要问“你希望读者有什么感受?”

2. 检查类型承诺

开篇是否传达了这种类型?第一个场景应至少包含一个明确的标志,体现预期体验。

3. 检查必备元素

参照要求表。每个必备元素都出现了吗?位置恰当吗?刻画充分吗?

4. 检查次要类型

如果存在次要类型,它们是在服务主类型,还是与之争夺重心?故事分配给每种类型的篇幅比例是多少?

5. 检查场景与类型是否混淆

在脑海中移除场景设定后,类型是否依然成立?场景应强化情感体验,而非取而代之。

6. 建议干预措施

根据判断出的状态,提出具体的干预措施。必要时生成相关元素,并指出可参考的框架。


反模式

不分主次地混搭类型

**问题:**故事试图同时成为悬疑、惊悚和爱情故事,且三者同等重要。读者不知道该期待怎样的体验,故事也没有清晰连贯的情感主线。

**解决方法:**明确主类型。次要类型应服务于主类型的体验。必须有一种类型占据主导地位。

把场景设定当作类型

问题:“这是科幻”成了对类型问题的回答。故事有世界构建,却没有情感核心。移除场景设定后,故事便不复存在。

**解决方法:**找出场景设定之下的情感类型。“这是一个设定在科幻世界中的悬疑故事”明确了类型;“这是科幻”则没有。

类型承诺与实际内容不符

**问题:**开篇像惊悚故事,后来却变成关系剧情。期待紧张感的读者得到的是情感纠葛;期待情感纠葛的读者得到的却是紧张感。双方都无法满足。

**解决方法:**尽早传达真正的类型。如果是混合类型,就在开篇展现两种元素。不要承诺无法兑现的体验。

罗列元素却缺乏整合

**问题:**故事有线索(悬疑)、时间压力(惊悚)和恐惧感(恐怖),但这些元素并未构成统一的体验。元素虽然存在,却没有发挥作用。

**解决方法:**类型元素必须强化主类型的情感体验。每个元素都应加深这种体验,而不只是单纯存在。

颠覆预期陷阱

问题: 每一种类型预期都被颠覆。读者没有稳定的立足点。惊喜取代了满足感。

解决方法: 履行核心承诺。颠覆呈现方式,而非约定。读者应通过出乎意料的路径,以预期的方式获得满足。


可用工具

genre-elements.ts

为每种类型随机生成元素。

# Random element from a genre
deno run --allow-read scripts/genre-elements.ts mystery

# Specific category within genre
deno run --allow-read scripts/genre-elements.ts thriller --category ticking_clocks

# Multiple elements
deno run --allow-read scripts/genre-elements.ts horror --count 3

# List all available genres and categories
deno run --allow-read scripts/genre-elements.ts --list

# Combo from multiple genres
deno run --allow-read scripts/genre-elements.ts --combo mystery,thriller
genre-check.ts

对文本样本进行模式匹配诊断。

# Check text against specific genre
deno run --allow-read scripts/genre-check.ts --genre mystery scene.txt

# Auto-detect likely genre
deno run --allow-read scripts/genre-check.ts --analyze "Synopsis text here..."

# Inline text check
deno run --allow-read scripts/genre-check.ts --text "The detective arrived at dawn..." --genre mystery
genre-blend.ts

辅助整合次要类型。

# Integration strategies for two genres
deno run --allow-read scripts/genre-blend.ts mystery relationship

# Multiple secondary genres
deno run --allow-read scripts/genre-blend.ts thriller --secondary humor,wonder

# Analyze text for genre blend
deno run --allow-read scripts/genre-blend.ts --analyze "A detective who falls in love while investigating..."

与 story-sense 的整合

story-sense 状态可能引发的类型状态
状态 0:没有故事G1(需要确立类型承诺)
状态 1:只有概念,缺乏基础G2(素材与类型不匹配),G7(设定与类型混淆)
状态 4.5:有情节,没有节奏G3(类型元素位置不当),G5(缺少必备元素)
状态 5:有情节,没有目的G4(次要类型起到破坏作用),G2(类型不匹配)
状态 7:准备评估G6(未审视类型陈词滥调)
何时移交
  • 移交至 character-arc: 当类型问题源于角色不符合类型需求时
  • 移交至 scene-sequencing: 当类型节奏问题实际是场景层面的结构问题时
  • 移交至 cliche-transcendence: 当类型元素陈旧时(状态 G6)
  • 移交至 worldbuilding: 当设定无法满足类型需求时

交互示例

示例 1:缺少类型承诺

作者:“读者总问这本书属于什么类型,我不知道该怎么回答。”

你的处理方式:

  1. 确定可能的状态:G1(缺少类型承诺)
  2. 询问:“你希望读者在阅读时有什么感受?”
  3. 确定读者的感受后,帮助作者了解哪种元素类型能带来这种体验
  4. 检查开篇是否有类型标记
  5. 建议添加具体元素,以传递类型信号
示例 2:设定与类型混淆

作者:“这是一部奇幻小说,背景设定在一个魔法正在消亡的世界。”

你的处理方式:

  1. 注意:这描述的是设定,而非类型
  2. 询问:“如果去掉魔法和奇幻世界,还剩下什么故事?读者会有什么情感体验?”
  3. 帮助作者判断:这是悬疑(查明魔法消亡的原因)?剧情(随着魔法消退,角色发生转变)?恐怖(害怕失去珍贵之物)?
  4. 确定类型后,检查奇幻元素是否服务于该类型
示例 3:相互争抢戏份的次要类型

作者:“爱情支线总是占据我的惊悚小说的主导地位。”

你的处理方式:

  1. 确定可能的状态:G4(次要类型起到破坏作用)
  2. 询问篇幅比例:每种类型分别占了多少篇幅?
  3. 询问整合方式:爱情是否制造了惊悚故事的利害关系,还是让故事暂时停顿?
  4. 建议控制篇幅的策略,或更深入地整合
  5. 考虑这本书是否其实是带有惊悚元素的爱情小说(类型转换)

输出持久化

此技能会将主要输出写入文件,以便在不同会话之间保留工作成果。

输出位置发现

开始任何其他工作之前:

  1. 检查项目中是否有 context/output-config.md
  2. 如果存在,查找此技能对应的条目
  3. 如果不存在,或没有此技能的条目,先询问用户:
    • “这次类型惯例会话的输出应保存到哪里?”
    • 建议:explorations/genre/ 或项目中合适的位置
  4. 保存用户的偏好:
    • 如果存在上下文网络,保存到 context/output-config.md
    • 否则保存到项目根目录下的 .genre-conventions-output.md
主要输出

此技能需要持久化:

  • 类型诊断 - 已识别的主要和次要类型
  • 惯例检查清单 - 该类型或各类型的必备元素
  • 承诺分析 - 所承诺的情感体验
  • 混合结构说明 - 多种类型的层级关系
对话与文件
写入文件保留在对话中
类型识别澄清问题
类型惯例要求具体场景的讨论
承诺清单作者的类型选择
层级建议实时反馈
文件命名

格式:{story}-genre-{date}.md 示例:novel-genre-2025-01-15.md

不要做的事

  • 不为作者编写场景或正文
  • 不替他们选择类型
  • 不坚持类型纯粹性——混合类型只要层级分明就行得通
  • 不把背景设定与类型混为一谈
  • 不诊断正文层面的问题(这属于文风技能的范畴)
  • 不直接处理角色弧光问题(转交给 character-arc)

关键见解

类型不是写完之后才贴上的标签,而是一开始就立下的契约。开篇承诺一种情感体验,中段发展这种体验,结尾兑现承诺。每个要素都应服务于这份契约。

类型问题出现时,往往掩盖着更深层的问题:目的不明确(story-sense)、角色弧光薄弱(character-arc)、节奏问题(scene-sequencing)或创作手法陈旧(cliche-transcendence)。先诊断类型,再追查根本原因。

评论

支持 Markdown