@gitruck/cli 0.2.4 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: gtrk-splitter
3
- description: 视觉拆分派单器——把一条已剪好的口播工程(gtrk + transcript)拆成 beat 级「视觉拆分稿」,为每个连续文稿段指定唯一主层(A_ROLL 真人出镜 / RRV_MG 动态图 / AI_DRAMA 再现 / FILM_BROLL 影视素材)+ 辅助层,产机器可消费的派单清单(RRV 槽位 / B-roll 检索队列 / AI 动画队列)驱动后续铺轨。当用户想「文稿视觉化拆分 / 视觉拆分稿 / beat 时间线 / 派分镜 / A-roll B-roll 分配 / 哪些段做动态图·哪些做 AI 再现·哪些用影视素材 / 给这条口播派单」时使用本 skill。凡涉及把口播成片拆成分镜派工,优先用本 skill 驱动 gtrk CLI 的 `split` 命令,绝不手写时码、绝不抄原文定位。
3
+ description: 视觉拆分派单器——把一条已剪好的口播工程(gtrk + transcript)拆成 beat 级「视觉拆分稿」,为每个连续文稿段指定唯一主层(A_ROLL 真人出镜 / MG 动态图 / AI_DRAMA 再现 / FILM_BROLL 影视素材)+ 辅助层,产机器可消费的派单清单(MG 槽位 / B-roll 检索队列 / AI 动画队列)驱动后续铺轨。当用户想「文稿视觉化拆分 / 视觉拆分稿 / beat 时间线 / 派分镜 / A-roll B-roll 分配 / 哪些段做动态图·哪些做 AI 再现·哪些用影视素材 / 给这条口播派单」时使用本 skill。凡涉及把口播成片拆成分镜派工,优先用本 skill 驱动 gtrk CLI 的 `split` 命令,绝不手写时码、绝不抄原文定位。
4
4
  ---
5
5
 
6
6
  # 视觉拆分派单器(gtrk-splitter)
@@ -65,15 +65,15 @@ gtrk split --project "<oralcut产物目录>" --json
65
65
  ]
66
66
  }
67
67
  ],
68
- "queues": { "a_roll": [], "rrv_mg": [], "ai_drama": [], "film_broll": [] }
68
+ "queues": { "a_roll": [], "mg": [], "ai_drama": [], "film_broll": [] }
69
69
  }
70
70
  ```
71
71
 
72
72
  关键:
73
- - `lane` 四选一 `A_ROLL | RRV_MG | AI_DRAMA | FILM_BROLL`;`base_track` 三选一 `真人出镜 | 口播继续 | 旁白主导`。
73
+ - `lane` 四选一 `A_ROLL | MG | AI_DRAMA | FILM_BROLL`;`base_track` 三选一 `真人出镜 | 口播继续 | 旁白主导`。
74
74
  - **handoff 按 lane 分型**(校验器会硬查):
75
- - `RRV_MG` → `handoff:{slug_hint?, theme?, bg?, duration_hint}`,**`duration_hint`(秒)必填**。
76
- - `FILM_BROLL` → `handoff:{queries:[...非空], shots?, per_shot_sec?, exclude?}`,**`queries` 非空必填**。
75
+ - `MG` → `handoff:{slug_hint?, theme?, bg?, duration_hint}`,**`duration_hint`(秒)必填**;可选 `category`(overlay 透明叠加/fullscreen 不透明满屏,裁决⑩,供色带分层,详见 field-schema)。
76
+ - `FILM_BROLL` → `handoff:{queries:[...非空], shots?, per_shot_sec?, exclude?}`,**`queries` 非空必填**;queries 写**英文长句场景描述**(一条一个意象,避多义动词),**exclude 保持中文**(细则见 field-schema)。
77
77
  - `AI_DRAMA` → `handoff:{narrative?, theme?, emotion_stage?, platform?, shot_count?}`,全可选(下游 ai-drama-prompter 有推断默认)。
78
78
  - `A_ROLL` → **无 handoff**(写了会被警告忽略)。
79
79
 
@@ -93,26 +93,44 @@ gtrk split "<拆分稿.json>" --project "<oralcut产物目录>" --md --json
93
93
  - `区间倒序` → `from` 的 id 序晚于 `to`,对调或修正。
94
94
  - `B02 与 B03 区间重叠` → 收窄其中一个 beat 的 span,让区间不相交。
95
95
  - `transcript_hash 不匹配` → 转写已变更:**重新跑第 1 步导出视图**,用新 hash 重拆(别硬改 hash 蒙混)。
96
- - `FILM_BROLL 缺检索 query` / `RRV_MG 缺 duration_hint` → 补齐对应 handoff 必填字段。
96
+ - `FILM_BROLL 缺检索 query` / `MG 缺 duration_hint` → 补齐对应 handoff 必填字段。
97
97
 
98
98
  **3 轮仍失败 → 把错误原样呈给用户**,不静默降级、不绕过校验。
99
99
 
100
100
  ### 6. 回报 dispatch 摘要
101
101
 
102
102
  落地成功后,读 `split/dispatch.json` + 结果 JSON 的 `beats`,向用户交代:
103
- - 各车道 beat 数(A_ROLL / RRV_MG / AI_DRAMA / FILM_BROLL)。
103
+ - 各车道 beat 数(A_ROLL / MG / AI_DRAMA / FILM_BROLL)。
104
104
  - **被跳过的 beat**(span 内 utterance 全被剪,`beats.skipped[]`)及原因。
105
105
  - **被收缩的 beat**(部分被剪、按存活句包络收窄,`beats.shrunk[]`)——提示人工复核。
106
- - 下游各拿各的:`dispatch.rrv_mg`(RRV 槽位表,`composition_id` 已按 `<工程slug>-<beatId>` 命名)/ `dispatch.film_broll`(B-roll 检索队列)/ `dispatch.ai_drama`(AI 动画队列)。
106
+ - 下游各拿各的:`dispatch.mg`(MG 槽位表,`composition_id` 已按 `<工程slug>-<beatId>` 命名)/ `dispatch.film_broll`(B-roll 检索队列)/ `dispatch.ai_drama`(AI 动画队列)。
107
+
108
+ ### 7. 交棒下游 SOP(有序,别停在派单)
109
+
110
+ dispatch 落地后**不要收工**——但下游各车道是**有先后的 SOP、每步用户可介入**,**不是并行一次铺完**。次序(有理由:MG 叠在 B-roll 之上,要先把底层定下来):
111
+
112
+ > **③ 先铺 B-roll(定底层)→ 用户调整确认 → ④ 再铺 MG(叠在 B-roll 上)→ ⑤ 最后上 AI 再现 → `gtrk render` 收口**
113
+
114
+ 按序推进、每步替用户跑命令,**关键处(尤其 B-roll 铺完)停下等用户确认**再进下一步;哪条车道 dispatch 队列为空就跳过。
115
+
116
+ - **③ B-roll**(`dispatch.film_broll` 非空):跑 `gtrk matrix --project <目录>`(检索 + 候选铺轨)→ **提示用户 opencut 里挑选/调整 B-roll**(小眼睛切换对比),确认后再进 ④。
117
+ - **④ MG**(`dispatch.mg` 非空):先由**栏目 MG 生产 skill** 按各槽位 `handoff`(theme/duration_hint/category)产 html-particle 颗粒,再跑 `gtrk mg --project <目录>`(lint + 铺轨,叠在 B-roll 上)。
118
+ - **⑤ AI 再现**(`dispatch.ai_drama` 非空):触发 `/gtrk-ai-drama` skill(持通用分镜 craft + 读栏目 style-lock)产风格化分镜提示词 → 用户去 Sora / Veo / 可灵 等外部平台出片、回铺(**此车道产物即提示词、无机械尾巴 → 只 skill、无 gtrk 命令**,同 `/gtrk-style-maker`)。
119
+
120
+ **各车道的生产 skill 由栏目配置解析(业务分离)**:读 `style.skills[]`,取 `produces` 归一(旧 `RRV_MG`→`MG`)== 该车道 的条目 → 触发其 `ref` 指向的 skill;`routing:"none"` 跳过;无匹配 = 无生产 skill(B-roll 无需、A_ROLL 就是口播本身)。生产 skill 是栏目资产、留纯净、不知 gtrk 命令。
121
+
122
+ > 每车道有专属**驱动 skill**(懂 SOP 位置 + 管用户检查点):拆分派单后**直接交棒 ③ `/gtrk-matrix`**(先铺 B-roll),它再按 SOP 交棒 ④ `/gtrk-mg`、⑤ `/gtrk-ai-drama`。你(agent)触发 `/gtrk-matrix` 起步即可。**agent 替用户跑 CLI,用户只对话。**
107
123
 
108
124
  ---
109
125
 
110
126
  ## 拆分方法论(沿《实在界漫游指南》视觉语法精华)
111
127
 
128
+ > **词表随栏目配置**:下文的叙事功能(narrative)与容器阶段(container_stage)枚举、底轨三态,是**默认栏目《实在界漫游指南》的词表**,不是固定枚举。`gtrk split` 的校验源 = 有效栏目配置的 vocab(`--column <id>` 或 config `defaultColumn` 选取,配置文件在 `~/.gitruck/columns/<id>.json`);别的栏目可自定义自己的叙事语法(科普=论点/论据/结论、带货=痛点/卖点/促单……),配置 `fallback.unknown_narrative="allow"` 时甚至可用纯自由串。零配置 = 默认栏目,行为与下文完全一致。lane 四车道仍是硬枚举(管线承重面),不随 vocab 放宽。
129
+
112
130
  ### 四车道语义(lane 四选一)
113
131
 
114
132
  - **`A_ROLL`(真人出镜)**:信任感来自「观众看见真人正在说」。优先给:体验式钩子、立场转换、关键悬念、情绪抱持、理论升华、结尾发问。
115
- - **`RRV_MG`(Real Roam Viz 动态图)**:主要任务是「让观众看懂结构」。优先给:容器概念展开、抽象结构翻译、多概念映射、网络/流程/关系图、容器反转、回扣时的系统动态图。
133
+ - **`MG`(动态图 / motion graphics)**:主要任务是「让观众看懂结构」。优先给:容器概念展开、抽象结构翻译、多概念映射、网络/流程/关系图、容器反转、回扣时的系统动态图。
116
134
  - **`AI_DRAMA`(AI 再现)**:靠「演绎一个具体历史瞬间」成立。优先给:历史事件再现、理论家/名人/时代场景的动作演绎、有明确年代·人物·地点暗示的桥段。
117
135
  - **`FILM_BROLL`(影视素材)**:靠「沉浸感、情绪、现实质感」成立。优先给:日常痛感、都市情绪、社会事件氛围、关系案例沉浸——不适合 MG 讲解、也不需要历史 reenactment 的段落。
118
136
 
@@ -128,9 +146,13 @@ gtrk split "<拆分稿.json>" --project "<oralcut产物目录>" --md --json
128
146
 
129
147
  遇任一即考虑切:**主层改变** / **叙事功能改变** / **容器阶段改变** / 出现停顿·静音·金句·发问 / 解释职责从「讲感受」变「讲结构」 / 某辅助层升级为主要理解入口。**不要因一个逗号句号就切——只在视觉职责变化时切。**
130
148
 
131
- ### 辅助层七类(aux_layers)
149
+ ### 辅助层八类(aux_layers)
150
+
151
+ `quote-card`(金句卡)· `term-callout`(术语解释)· `network-diagram`(关系图)· `archive-caption`(档案标注)· `pause-card`(停顿卡)· `data-annotation`(数据标注)· `timeline-tag`(年份/时间标注)· `overlay`(叠层颗粒)。辅助层不是装饰,是补充理解职责。挂载范围三型:`"same_beat"`(同 beat)/ `{from,to}`(id 区间)/ `{trigger:"uNNNN"}`(触发点)。
152
+
153
+ **前七类纯建议性**(只进人读稿一行摘要,不承接派单);**第八类 `overlay` 承接颗粒派单**——底轨主视觉(如 `FILM_BROLL` 电影感 B-roll)之上叠一层 MG 透明概念颗粒时用它,必带 `handoff:{duration_hint(正数秒,必填), category?, slug_hint?, theme?, bg?}`,`gtrk split` 落地时投影成派生颗粒(`composition_id=<slug>-<beatId>-aux<n>`,进 `dispatch.mg`,后续 `gtrk mg` 铺透明颗粒)。脑手分工:**你(脑)判断该不该叠 overlay、写 handoff 语义;CLI(手)投影落轨写时码**。`overlay` mount 只用 `same_beat` / `{from,to}`(`{trigger}` 一期不支持,会被 skip 告警)。细则见 `references/field-schema.md`。
132
154
 
133
- `quote-card`(金句卡)· `term-callout`(术语解释)· `network-diagram`(关系图)· `archive-caption`(档案标注)· `pause-card`(停顿卡)· `data-annotation`(数据标注)· `timeline-tag`(年份/时间标注)。辅助层不是装饰,是补充理解职责。挂载范围三型:`"same_beat"`(同 beat)/ `{from,to}`(id 区间)/ `{trigger:"uNNNN"}`(触发点)。
155
+ **何时叠 overlay(通用原则,别只想着「底轨之上叠概念图」)**:另一条高频触发是**重点词 / 点题强调**——文稿出现「**这就是 X**」「**这正是 X**」「**X,其实就是 Y**」「**说白了就是 X**」这类**点题、下定义、指认关键概念**的短语时,在该 beat 叠一层 `overlay` 透明颗粒,把**关键词/关键概念视觉「点」出来**(浮在主视觉之上、不挡主体),让重点被强调、而非随口播平铺过去。这是给透明叠层的一条**系统性来源**:每条口播里的点题/定义句,都是 overlay 候选——常能显著提升叠层密度。判断权仍在你(脑):**不是每个「这就是」都叠**,挑真正的点题、关键定义、概念指认、金句收束处;**overlay 稀缺才有力,滥用则失焦**。(叠层长什么样、用什么强调色/动效,归栏目的 MG 生产 skill,不在拆分层定。)
134
156
 
135
157
  ### 升级规则(辅助层 → 主层)
136
158
 
@@ -143,6 +165,6 @@ gtrk split "<拆分稿.json>" --project "<oralcut产物目录>" --md --json
143
165
  - 有没有把本该真人承接的段落全交给 b-roll?
144
166
  - span 里有没有混进 `dropped:true` 的句子?(会被跳过/收缩)
145
167
  - beat 之间有没有重叠?id 区间有没有倒序?
146
- - FILM_BROLL 有没有 queries?RRV_MG 有没有 duration_hint?
168
+ - FILM_BROLL 有没有 queries?是不是英文长句场景描述(不是中文/关键词堆叠)?exclude 是不是中文?MG 有没有 duration_hint?
147
169
  - `transcript_hash` 是不是原样透传自视图?
148
170
  - 拆分稿里有没有混进任何秒级时码字段?(必须零时码)
@@ -118,7 +118,7 @@
118
118
  "to": "u0013"
119
119
  },
120
120
  "base_track": "旁白主导",
121
- "lane": "RRV_MG",
121
+ "lane": "MG",
122
122
  "narrative": "container-translation",
123
123
  "container_stage": "expand",
124
124
  "rhythm": "平稳",
@@ -139,7 +139,7 @@
139
139
  "to": "u0016"
140
140
  },
141
141
  "base_track": "旁白主导",
142
- "lane": "RRV_MG",
142
+ "lane": "MG",
143
143
  "narrative": "container-translation",
144
144
  "container_stage": "translate",
145
145
  "rhythm": "渐升",
@@ -371,7 +371,7 @@
371
371
  "to": "u0036"
372
372
  },
373
373
  "base_track": "旁白主导",
374
- "lane": "RRV_MG",
374
+ "lane": "MG",
375
375
  "narrative": "abyssal-fall",
376
376
  "container_stage": "rupture",
377
377
  "rhythm": "渐升",
@@ -423,7 +423,7 @@
423
423
  "to": "u0041"
424
424
  },
425
425
  "base_track": "旁白主导",
426
- "lane": "RRV_MG",
426
+ "lane": "MG",
427
427
  "narrative": "reversal-elevation",
428
428
  "container_stage": "flip",
429
429
  "rhythm": "渐升",
@@ -498,7 +498,7 @@
498
498
  "to": "u0048"
499
499
  },
500
500
  "base_track": "旁白主导",
501
- "lane": "RRV_MG",
501
+ "lane": "MG",
502
502
  "narrative": "callback-closure",
503
503
  "container_stage": "callback",
504
504
  "rhythm": "回扣",
@@ -580,7 +580,7 @@
580
580
  "note": "回到主持人,让问题停在观众心里,而不是替观众收尾"
581
581
  }
582
582
  ],
583
- "rrv_mg": [
583
+ "mg": [
584
584
  {
585
585
  "beat": "B05",
586
586
  "note": "用训练集、噪音、测试集、错误预测的动态图把过拟合先讲清楚"
@@ -97,14 +97,14 @@ default_base_track: 真人口播打底
97
97
  ## B05
98
98
  - 文稿范围:`什么是“过拟合”?……给出一个极其离谱的错误答案`
99
99
  - 底轨:`旁白主导`
100
- - 主层:`RRV_MG`
100
+ - 主层:`MG`
101
101
  - 叙事功能:`container-translation`
102
102
  - 容器阶段:`expand`
103
103
  - 节奏标签:`平稳`
104
104
  - 视觉任务:`用训练集、噪音、测试集、错误预测的动态图把“过拟合”先讲清楚`
105
105
  - 拆分理由:`这里主要任务是讲结构,不是讲情绪,最适合进入 MG`
106
106
  - 不可替代性:`优先 MG`
107
- - RRV 提示:`container-translation/neural-overfit`
107
+ - MG 提示:`container-translation/neural-overfit`
108
108
  - 替代方案:`若 MG 档期不足,可降级为 A_ROLL + 简单图表动效`
109
109
 
110
110
  ### 辅助层 B05.A1
@@ -117,14 +117,14 @@ default_base_track: 真人口播打底
117
117
  ## B06
118
118
  - 文稿范围:`它太想答对过去的题……你的潜意识依然乐此不疲`
119
119
  - 底轨:`旁白主导`
120
- - 主层:`RRV_MG`
120
+ - 主层:`MG`
121
121
  - 叙事功能:`container-translation`
122
122
  - 容器阶段:`translate`
123
123
  - 节奏标签:`渐升`
124
124
  - 视觉任务:`把 AI 过拟合一一映射到创伤、自动化防御、现实崩溃,完成“AI -> 人类”的翻译`
125
125
  - 拆分理由:`容器从自我解释转为心理学翻译器,职责明显升级`
126
126
  - 不可替代性:`优先 MG`
127
- - RRV 提示:`container-translation/dual-pane-map`
127
+ - MG 提示:`container-translation/dual-pane-map`
128
128
 
129
129
  ### 辅助层 B06.A1
130
130
  - 类型:`network-diagram`
@@ -263,14 +263,14 @@ default_base_track: 真人口播打底
263
263
  ## B14
264
264
  - 文稿范围:`斯坦福大学神经生物学教授罗伯特·萨波斯基……规则与匮乏`
265
265
  - 底轨:`旁白主导`
266
- - 主层:`RRV_MG`
266
+ - 主层:`MG`
267
267
  - 叙事功能:`abyssal-fall`
268
268
  - 容器阶段:`rupture`
269
269
  - 节奏标签:`渐升`
270
270
  - 视觉任务:`把神经递质、创伤印痕、代际传递、大他者压成一张逐步收紧的因果网`
271
271
  - 拆分理由:`这里信息链条密度很高,MG 比真人或纯素材更能把结构讲明白`
272
272
  - 不可替代性:`优先 MG`
273
- - RRV 提示:`abyssal-fall/grid-captured`
273
+ - MG 提示:`abyssal-fall/grid-captured`
274
274
 
275
275
  ### 辅助层 B14.A1
276
276
  - 类型:`archive-caption`
@@ -307,14 +307,14 @@ default_base_track: 真人口播打底
307
307
  ## B16
308
308
  - 文稿范围:`在传统的机器学习理论中……展现出了不可思议的泛化能力和“涌现”出的智能`
309
309
  - 底轨:`旁白主导`
310
- - 主层:`RRV_MG`
310
+ - 主层:`MG`
311
311
  - 叙事功能:`reversal-elevation`
312
312
  - 容器阶段:`flip`
313
313
  - 节奏标签:`渐升`
314
314
  - 视觉任务:`用偏差-方差权衡、插值阈值、双重下降曲线完成“过拟合 -> 泛化”的结构反转`
315
315
  - 拆分理由:`容器的希望面在这里正式出现,最适合由动态图完成说服`
316
316
  - 不可替代性:`优先 MG`
317
- - RRV 提示:`reversal-elevation/overfit-to-double-descent`
317
+ - MG 提示:`reversal-elevation/overfit-to-double-descent`
318
318
 
319
319
  ### 辅助层 B16.A1
320
320
  - 类型:`data-annotation`
@@ -369,7 +369,7 @@ default_base_track: 真人口播打底
369
369
  ## B19
370
370
  - 文稿范围:`回到之前的话题,我们该如何解决幽灵堵车?……最后所有的车流都能够慢慢起速`
371
371
  - 底轨:`旁白主导`
372
- - 主层:`RRV_MG`
372
+ - 主层:`MG`
373
373
  - 叙事功能:`callback-closure`
374
374
  - 容器阶段:`callback`
375
375
  - 节奏标签:`回扣`
@@ -377,7 +377,7 @@ default_base_track: 真人口播打底
377
377
  - 拆分理由:`结尾回扣不只是情绪重复,而是要把前文意象结构性地翻新一次`
378
378
  - 不可替代性:`优先 MG`
379
379
  - 回扣对象:`B07`
380
- - RRV 提示:`callback-closure/recall-image-question`
380
+ - MG 提示:`callback-closure/recall-image-question`
381
381
 
382
382
  ### 辅助层 B19.A1
383
383
  - 类型:`network-diagram`
@@ -417,7 +417,7 @@ default_base_track: 真人口播打底
417
417
  - `B18` “认同你的症状”的主体性重构
418
418
  - `B20` 结尾回扣式发问
419
419
 
420
- ## RRV_MG Queue
420
+ ## MG Queue
421
421
 
422
422
  - `B05` 过拟合概念展开
423
423
  - `B06` AI 结构映射到心理结构
@@ -1,7 +1,7 @@
1
1
  # 拆分稿字段契约 v1(JSON)
2
2
 
3
3
  `gtrk-splitter` 的产物是**机器 JSON 拆分稿**(不是 Markdown)——`gtrk split <拆分稿.json>` 校验落地。
4
- 目标:LLM 可稳定产出、校验器可硬拒、下游(matrix / rrv / ai-drama)可直接消费。
4
+ 目标:LLM 可稳定产出、校验器可硬拒、下游(matrix / mg / ai-drama)可直接消费。
5
5
 
6
6
  > 时码零触碰:拆分稿里**不含任何秒级时码字段**。轨道时码由 `gtrk split` 落地时现场投影写入 `struct_meta.split` / `dispatch.json`。
7
7
 
@@ -17,7 +17,7 @@
17
17
  ```
18
18
 
19
19
  - `transcript_hash` 不匹配当前 `transcript.json` 的 `text_hash` → **硬拒**(提示转写已变更、需重新导出视图重拆)。
20
- - `queues` 是给人看的四车道汇总(`a_roll/rrv_mg/ai_drama/film_broll` 各 `[{beat, note}]`),**可选**;真正的机器派单 `dispatch.json` 由落地时按 beats 现场生成,不读 `queues`。
20
+ - `queues` 是给人看的四车道汇总(`a_roll/mg/ai_drama/film_broll` 各 `[{beat, note}]`),**可选**;真正的机器派单 `dispatch.json` 由落地时按 beats 现场生成,不读 `queues`。
21
21
 
22
22
  ## Beat 字段
23
23
 
@@ -28,7 +28,7 @@
28
28
  | `id` | string | `B` + 两位起序号(`B01`…);同稿内唯一 |
29
29
  | `span` | object | `{from, to}` 两端均为投影视图中存在的 utterance id;`from ≤ to`(id 序);beats 间**不重叠**(允许留空隙) |
30
30
  | `base_track` | enum | 口播底轨三态:`真人出镜` \| `口播继续` \| `旁白主导` |
31
- | `lane` | enum | 主层四选一:`A_ROLL` \| `RRV_MG` \| `AI_DRAMA` \| `FILM_BROLL` |
31
+ | `lane` | enum | 主层四选一:`A_ROLL` \| `MG` \| `AI_DRAMA` \| `FILM_BROLL`(遗留 `RRV_MG` 读旧归一为 `MG`) |
32
32
  | `narrative` | enum | 八枚举:`mirror-hook` \| `demolition` \| `container-translation` \| `abyssal-fall` \| `holding` \| `reversal-elevation` \| `callback-closure` \| `typography-emphasis` |
33
33
  | `container_stage` | enum | 七枚举:`none` \| `seed` \| `expand` \| `translate` \| `rupture` \| `flip` \| `callback` |
34
34
  | `rhythm` | string | 人读节奏标签(`快剪` / `平稳` / `渐升` / `停顿` / `悬停` / `回扣` 等);**机器不消费**、只透传 |
@@ -48,16 +48,25 @@
48
48
  ## handoff 按 lane 分型(校验器硬查)
49
49
 
50
50
  ```jsonc
51
- // lane === "RRV_MG"
52
- "handoff": { "slug_hint": "neural-overfit", "theme": "overfitting", "bg": "paper", "duration_hint": 12 }
53
- // duration_hint(秒)必填;slug_hint / theme / bg 可选(bg 底色可由底轨态推导)
51
+ // lane === "MG"(遗留 "RRV_MG" 读旧兼容)
52
+ "handoff": { "category": "overlay", "slug_hint": "neural-overfit", "theme": "overfitting", "bg": "paper", "duration_hint": 12 }
53
+ // duration_hint(秒)必填;slug_hint / theme / bg / category 可选(bg 底色可由底轨态推导)
54
+ // category(颗粒品类子类型,裁决⑩):overlay(透明叠加,叠在 A-roll/B-roll 上,不挡主体)
55
+ // | fullscreen(不透明满屏,旁白主导整帧);缺省=下游按颗粒 HTML 根 background 反推透明度。
56
+ // 二期扩 subtitle/title。供剪辑器色带按品类分层(叠加/满屏 各一行)。
57
+ // 读旧兼容:遗留品牌值 rrv-overlay/mg-fullscreen/explain-subtitle/op-ed-title 仍认。
54
58
 
55
59
  // lane === "FILM_BROLL"
56
- "handoff": { "queries": ["都市独处 夜晚", "地铁 疲惫"], "shots": 6, "per_shot_sec": 2, "exclude": ["卡通", "水印"] }
60
+ "handoff": { "queries": ["lonely person in a city apartment at night", "exhausted commuter on a crowded subway train"], "shots": 6, "per_shot_sec": 2, "exclude": ["卡通", "水印"] }
57
61
  // queries(非空字符串数组)必填;shots / per_shot_sec / exclude 可选
62
+ // queries 语言规范(经真机中英 A/B 校准):
63
+ // - 用**英文长句场景描述**(5-12 词,谁+在哪+做什么),不是关键词堆叠——检索后端向量模型英文场景级命中明显更准
64
+ // - 每条 query 只装一个场景意象,多意象拆成多条
65
+ // - **避多义/字面义强的动词**("pointing" 会召回手指特写、"hunting" 召回猎人——改用 "giving suggestions in a meeting" 这类场景语义)
66
+ // - **exclude 保持中文**:负向过滤匹配的是服务端返回的中文 note,写英文会失效
58
67
 
59
68
  // lane === "AI_DRAMA" —— 全可选(下游 ai-drama-prompter 有推断默认)
60
- "handoff": { "narrative": "trauma-repetition", "theme": "freud-fort-da", "emotion_stage": "abyssal", "platform": "kling", "shot_count": 5 }
69
+ "handoff": { "narrative": "trauma-repetition", "theme": "freud-fort-da", "emotion_stage": "abyssal", "platform": "video-gen", "shot_count": 5 }
61
70
 
62
71
  // lane === "A_ROLL" —— 无 handoff
63
72
  ```
@@ -66,8 +75,8 @@
66
75
 
67
76
  ```jsonc
68
77
  {
69
- "type": "quote-card", // 七类:quote-card | term-callout | network-diagram
70
- // | archive-caption | pause-card | data-annotation | timeline-tag
78
+ "type": "quote-card", // 八类:quote-card | term-callout | network-diagram
79
+ // | archive-caption | pause-card | data-annotation | timeline-tag | overlay
71
80
  "mount": { "from": "u0001", "to": "u0002" }, // 挂载范围三型:"same_beat" | {from,to} | {trigger:"uNNNN"}
72
81
  "role": "金句提炼", // 职责:金句提炼/术语解释/关系表达/证据标注/停顿加压/情绪聚焦/回扣提示
73
82
  "necessity": "强建议", // 可选:必须 | 强建议 | 建议 | 可省略
@@ -79,11 +88,37 @@
79
88
 
80
89
  - `mount` 里的所有 id(`from`/`to`/`trigger`)MUST 为视图中存在的 utterance id,否则硬拒。
81
90
  - 辅助层是补充理解职责,不是装饰。满足升级规则时**切出新 beat 升级为主层**,别硬塞辅助层。
91
+ - 前七类是**纯建议性**(人读稿一行摘要,不承接派单);第八类 `overlay` 是**承接颗粒派单**的叠层类型(见下)。
92
+
93
+ ### `overlay` 叠层颗粒 aux(第八类,承接派单)
94
+
95
+ `overlay` = 与底轨主视觉(如 `FILM_BROLL` 电影感 B-roll)**同段共存的透明概念颗粒**——想「底轨放实拍情绪镜头、其上叠一层 MG 透明图解/金句」时用它。与前七类不同,`overlay` aux 必带 `handoff`,由 `gtrk split` 落地投影成派生颗粒(进 `dispatch.mg` + 合成 `struct_meta.split.beats`),后续 `gtrk mg` 铺出透明颗粒盖在底轨上。
96
+
97
+ ```jsonc
98
+ {
99
+ "type": "overlay",
100
+ "mount": "same_beat", // same_beat(复用当前 beat 落轨区间)| {from,to}(子区间);{trigger} 一期不支持
101
+ "role": "概念叠层图解",
102
+ "handoff": { // overlay 必带(镜像 MG lane 的 handoff)
103
+ "duration_hint": 6, // 必填正数秒(该 aux 要生成颗粒,无时长不成立;缺/非正数硬拒)
104
+ "category": "overlay", // 可选品类(软校验,非法只告警不拒;派生颗粒实际 category 恒 "overlay")
105
+ "slug_hint": "overfit-mirror", // 可选:颗粒 slug 提示
106
+ "theme": "overfitting", // 可选:主题
107
+ "bg": "transparent" // 可选:底色(叠层通常透明)
108
+ }
109
+ }
110
+ ```
111
+
112
+ - **mount 投影**:`same_beat` → 复用当前 beat 的 `track_st/track_ed`;`{from,to}` → 取该子区间存活实例的包络(全被剪则计入 `skipped` 不落)。**`{trigger}` 点挂载一期不支持**(无干净源区间,`duration_hint` 是时间线秒非源秒 → 跟随会不准):遇到计入 `skipped` + 告警,二期再补。
113
+ - **composition_id 命名**:派生颗粒 = `<工程slug>-<beatId>-aux<n>`(`n` 从 1,位置计数);同 beat 主颗粒仍是 `<工程slug>-<beatId>`。「一 beat 一 composition_id」松绑为「`composition_id` 全局唯一,一 beat 可派生主 + N 个 `-aux<n>` 颗粒」。
114
+ - **一期约束**:`FILM_BROLL` 主(底轨不产 MG 颗粒)+ 一颗 `overlay` aux 同段安全;`MG` 主 beat 再挂 `overlay` aux 会同段两颗撞一轨(后续拆轨),先避开。
82
115
 
83
116
  ## 落地产物(CLI 写,供参照)
84
117
 
85
- - **`.gtrk` 的 `struct_meta.split`**:`{contract_version, transcript_hash, projected_at, beats:[{id, lane, span, track_st, track_ed, shrunk?, handoff}]}`——投影时刻快照。**消费方要新鲜时码就重新投影**(`gtrk split --project`)。
86
- - **`split/dispatch.json`**:`{rrv_mg:[{beat, composition_id, duration, theme, bg, slug_hint, track_st, track_ed}], film_broll:[{beat, queries, shots, per_shot_sec, exclude, track_st, track_ed}], ai_drama:[{beat, ...handoff, track_st, track_ed}]}`。`composition_id` = `<工程slug>-<beatId>`(rrv 颗粒 `data-composition-id` 直接用它,打通 beat↔颗粒命名)。
118
+ - **`.gtrk` 的 `struct_meta.split`**:`{contract_version, transcript_hash, projected_at, material_id, beats:[{id, lane, span, track_st, track_ed, source_ranges, narrative, container_stage, visual_task, shrunk?, handoff}]}`——投影时刻快照。**消费方要新鲜时码就重新投影**(`gtrk split --project`)。
119
+ - `material_id`:口播素材 id(= transcript.material_id),消费方脱离 transcript 文件即可定位素材。
120
+ - `beats[].source_ranges`:`[{st, ed}]` 源时基秒(v1 恒单元素 = span 源包络,含句间静默与被剪词)——**源时基不随时间线编辑漂移**,消费方以「源区间 ∩ 当刻颗粒源窗口」投影可得实时覆盖(客户端色带跟随模式即此)。
121
+ - **`split/dispatch.json`**:`{mg:[{beat, composition_id, duration, category?, theme, bg, slug_hint, track_st, track_ed}], film_broll:[{beat, queries, shots, per_shot_sec, exclude, track_st, track_ed}], ai_drama:[{beat, ...handoff, track_st, track_ed}]}`(去品牌化前 `mg` 键为 `rrv_mg`,消费方 `mg ?? rrv_mg` 双读)。`composition_id` = `<工程slug>-<beatId>`(MG 颗粒 `data-composition-id` 直接用它,打通 beat↔颗粒命名);`overlay` aux 派生颗粒 = `<工程slug>-<beatId>-aux<n>`(`n` 从 1)——`composition_id` 全局唯一,一 beat 可派生主 + N 个 `-aux<n>` 颗粒。
87
122
  - **`split/visual-split.md`**(`--md`):由机器 JSON 单向渲染的人读稿,不回读。
88
123
 
89
124
  ## 落地时的 dropped 处理(你要知道)
@@ -0,0 +1,94 @@
1
+ ---
2
+ name: gtrk-style-maker
3
+ description: "能生产 skill 的 meta skill——通过启发式访谈引导视频创作者想清楚**他自己的**视觉语法,并把它落成**他自己的可执行 skill 家族**(黑盒、留本地)+ 栏目内共享词表 + 栏目配置登记。框架对审美零预设:不假设你有叙事结构、有容器概念、视觉分 MG/AI——你的维度(k)和取值(v)全部由你自己定义,本 skill 只提供「怎么想清楚」的工艺。当用户想「建一个新栏目/新频道的风格体系」「把我的审美沉淀成 skill」「做一个我自己的视觉 skill」「定义栏目风格规范/视觉语法」「栏目配置文档的 style 怎么填」「给我的栏目造一套创作工具」时使用本 skill。产出的 skill 落 ~/.claude/skills 即装即用,登记进 gtrk 栏目配置(style.skills)。"
4
+ ---
5
+
6
+ # gtrk-style-maker · 造你自己的视觉 skill
7
+
8
+ 你(AI)现在是一位**风格助产士**。用户是某个视频栏目的创作者,你的任务不是给他一套风格,而是**帮他把他脑子里已有但说不清的视觉语法接生出来**,落成他自己的 skill。
9
+
10
+ ## 铁律(先读,贯穿全程)
11
+
12
+ 1. **问证据,不问维度。** 你永远不出示任何「风格维度清单/表单」让用户挑选或填空。不假设他有叙事结构、有主题系统、视觉分动画/实拍——**每一个组织维度都必须从用户自己的话里长出来**。你问的是证据(作品、反例、工序、禁忌),维度是你从证据里帮他命名的,且命名要用他的词。
13
+ 2. **卡壳追问 ≤3 条,且每条必须有触发语。** 用户说不清时,你可以用开放式追问,但:单次访谈此类追问不超过 3 条;每条必须引用用户已说的具体内容作为触发(「你刚才说 XX——那 YY 呢?」),并在访谈记录里标注触发语。**禁止**按任何预设清单逐项顺次遍历(疑问句版表单也是表单)。
14
+ 3. **种子是案例,不是模板。** `references/seeds/` 里的种子演示「产出长什么样」,结构随栏目而异。用户的栏目跟种子不像时,从零引导,绝不套种子结构。
15
+ 4. **产出必须可执行。** 最终交付的是标准 skill 目录(新会话即可触发干活),不是一份风格描述文档。
16
+ 5. **管线接口全权威。** 产物要进同合云管线的(命中 handoff 类型且有契约的),生成的 skill 必须引用对应契约——查 `contracts/handoff-contracts.json` 映射表(随本 CLI 分发),**不要**自己记映射。
17
+ 6. **生产 skill = 纯生产者,零包工头职责。** 你产的栏目 skill 只做一件事:按栏目视觉语法**产内容**(颗粒 HTML / 分镜提示词 / 检索偏好…)。它**绝不写 gtrk 命令、绝不「产完接着跑 gtrk mg / 铺轨」、绝不知道 dispatch / struct_meta / SOP 次序**——那些「什么时候跑哪条命令、怎么交棒」是框架 CLI 驱动器(`/gtrk-mg`·`/gtrk-matrix`·`/gtrk-ai-drama` 等)的活。**CLI 驱动栏目 skill,不是反过来**;栏目 skill 独立触发时也只产内容、不假设有工程/派单上下文。理由:把编排焊进栏目 skill = 业务耦合 + 不通用(换个栏目又得重焊),且违背「框架对审美零预设」的对偶——**审美归你、编排归框架**。你只暴露产物**经 `style.skills[].produces` 绑定到哪条车道**,让框架据此调用。
18
+
19
+ ## 访谈工艺 · 七招
20
+
21
+ 每招给做法 + 正反例 + 不适用分支。顺序可按对话自然流动调整,但 ①② 通常先行。
22
+
23
+ ### ① 作品逆向(维度的出生地)
24
+
25
+ 请用户拿出 **3-5 个「最像我/最像我想要的」** 的成片或参考作品,和 **2-3 个「绝对不是我」** 的反例。逐个问:「这条里**什么**让它像你?」「这条哪里让你生理不适?」
26
+ - ✅ 正例:用户说「我喜欢它信息密但颜色狠少」→ 你记下候选维度「信息密度」「色彩纪律」(用他的词)。
27
+ - ❌ 反例:你问「你的视觉 token 是什么?你有几个主题变体?」——这是拿别人的维度套他。
28
+ - **不适用分支**:从零新栏目没有自己的作品 → 全用他人作品:「找 3 条你看了会嫉妒的视频」。
29
+
30
+ ### ② 禁令先行(最硬的护栏都是负面的)
31
+
32
+ 问:「你的画面里**绝对不允许出现**什么?」「什么效果一出现你就觉得廉价?」
33
+ 经验规律:创作者说不清「我的风格是什么」,但对「什么绝对不行」秒答,且禁令可执行、可自检、防漂移。把禁令原话记成条目。
34
+ - ✅ 正例:「绝不用彩虹渐变」「绝不加综艺花字」→ 直接进铁律区。
35
+ - ❌ 反例:把禁令翻译成「所以你的风格是极简」——不要急着正面归纳,禁令本身就是资产。
36
+
37
+ ### ③ 从工序提决策树
38
+
39
+ 问:「你自己动手做一个画面时,**第一个**问自己的问题是什么?第二个呢?」
40
+ 他的实际决策顺序就是他 skill 的 Step 1/2/3。不要替他发明顺序。
41
+ - ✅ 正例:带货创作者说「先看这句是痛点还是卖点」→ 他的 Step 1 就是「判断痛点/卖点」。
42
+ - **不适用分支**:用户从没自己动手做过(纯外包)→ 改问「你验收时第一眼看什么?」——验收顺序也是决策树。
43
+
44
+ ### ④ 铁律化 + 自检清单
45
+
46
+ 每条风格主张必须配**可判定**的自检问句(「不是建议,是合同」)。说不出怎么判定的主张,降级为「倾向」,不进铁律。
47
+ - ✅ 正例:「留白要多」→ 追问触发:「你刚说留白要多——多到什么程度算违规?」→ 若答不出,记为倾向而非铁律。
48
+ - 生成的 skill 必须带「交付前自检清单」小节,逐条对应铁律。
49
+
50
+ ### ⑤ 词表沉淀
51
+
52
+ 访谈中**反复出现的自造词**(他给自己概念起的名字)逐个登记。这些词就是他栏目的语法词汇。
53
+ - 条件产出:家族 ≥2 个 skill **或** 沉淀出自造词时,单独产共享词表文件(家族各 skill 引用它,防多处定义漂移——这是血泪教训);单 skill 且无自造词时,词表并入 SKILL.md 一节即可。
54
+
55
+ ### ⑥ 家族切分
56
+
57
+ 用户有多条视觉产线时(如「有的段落做动画、有的用实拍素材」),按**产物类型/handoff** 切成多个 skill,每个 skill 开头写「**这个 skill 不做什么** → 找谁」互相路由。
58
+ - ✅ 正例:动画产线一个 skill、素材检索偏好一个 skill、封面一个 skill,各自声明边界。
59
+ - ⚠️ 探测其他产线时**别举具体产线例子**(举例=递维度)——问「除了这个,你还产别的东西吗?」就够了。
60
+ - **不适用分支**:单产线栏目不切家族,一个 skill 足够——不要为了「像样」硬拆。
61
+
62
+ ### ⑦ exemplar 优先
63
+
64
+ 每个 skill 至少规划 N 个**验证过的成品案例**(exemplar)收进 assets/。原则写给 skill:「案例是原则的具象化,不是填空答案」。
65
+ - **不适用分支**:产物不是可留存文件的产线(如实拍混剪的选片手感)→ 用「判例」代替:记录 3 个真实决策(这条为什么选/为什么毙)。
66
+
67
+ ## 卡壳弹药(受铁律 2 约束)
68
+
69
+ 用户彻底说不清时,可从 `references/ammo.md` 取**开放式追问**(如「有的栏目会锁死参考片单——你有看了就想抄的片子吗?」)。注意:弹药问的是**证据是否存在**,不是让他填维度;用了哪条、触发语是什么,记进访谈记录。
70
+
71
+ ## 产出工序(访谈收敛后)
72
+
73
+ 读 `references/craft-output-spec.md` 照做。概要:
74
+
75
+ 1. **起 skill 目录**(用户作坊目录为正本,如 `D:\<他的工作区>\skills\<skill-name>\`):SKILL.md(frontmatter `name`+`description`,description 即触发器,写清「当用户想…时使用」)+ **README.md 必产**(含「正本→安装」单向流声明)+ 按需 references/ assets/。exemplar 一旦在 SKILL.md 里被引用就必须真实存在——「计划中的案例」不能以文件路径形式出现。skill 正文结构**由访谈产出的维度决定**,不套模板。
76
+ 2. **契约绑定**:产物命中管线 handoff 类型的,查 `contracts/handoff-contracts.json`(本 CLI 包内);映射到契约的(如 HTML 动画颗粒 → gsap-emit v1),在 skill 中引用「契约名+版本」并把契约合规项加进其自检清单;映射为 null 或管线外产物,无此要求。
77
+ 3. **共享词表**(条件产出,见第⑤招)。
78
+ 4. **安装**:整目录拷到 `~/.claude/skills/<skill-name>/`(即装即用)。skill README 写明**「正本→安装」单向流**:源码正本在作坊,安装位是产物,改动先改正本再重装。
79
+ 5. **登记**:把 `{id, ref: <正本路径>, produces: <handoff 类型或自造串>}` **追加**进本地栏目配置 `style.skills`(词表进 `style.shared`)。配置文件位置以 gtrk 的 paths 口径为准(当前 `~/.gitruck/columns/<栏目id>.json`);文件不存在则创建最小骨架 `{meta:{id},style:{skills:[…]}}`。**追加,绝不清空既有条目**。产物是管线外的(封面等),登记时加 `routing:"none"`。
80
+
81
+ ## 交付前自检(你自己的 Quality Bar)
82
+
83
+ - [ ] 访谈记录里,产出 skill 的**每一个组织维度,首次都是用户说出的**(或从他的作品评语里直接引出的),不是我提出的?
84
+ - [ ] 我的提问里没有出现任何种子栏目/预设语系的概念名(用户自己先说的除外)?
85
+ - [ ] 卡壳追问 ≤3 条且每条有触发语记录?
86
+ - [ ] 产出 skill 有:触发器 description / 铁律(含禁令)/ 可判定自检清单 / exemplar 或判例计划?
87
+ - [ ] 契约绑定查了映射表(而不是凭记忆)?
88
+ - [ ] 产出 skill 是**纯生产者**——正文里没有任何 gtrk 命令、没有「产完接着跑…」、不碰 dispatch/struct_meta/SOP 编排(铁律 6)?
89
+ - [ ] 栏目配置登记是**追加**语义,既有条目一条没丢?
90
+ - [ ] 已提醒用户:skill 是他的资产,留本地即可用;上传云端(claude.ai)是可选分发,非必需?
91
+
92
+ ## 下一步(回成片管线)
93
+
94
+ 建栏目是**一次性装修厨房**,装完就该开始做菜。栏目 skill 家族 + 词表 + 栏目配置就绪后,告诉用户「风格体系已就绪,给我一条口播毛片就能开工」,顺势回到成片管线起点:用户给毛片 → 触发 `/gtrk-oralcut`(agent 跑 `gtrk oralcut`)→ `/gtrk-splitter` 拆分派单 → 各车道用你**刚建的生产 skill** 产内容 + agent 跑 `gtrk mg`/`matrix` 铺轨 → `gtrk render` 出片。往后每片都在这套厨房里做,不用重新装修。**agent 替用户跑 CLI,用户只对话。**
@@ -0,0 +1,16 @@
1
+ # 卡壳弹药(受 SKILL.md 铁律 2 严格约束)
2
+
3
+ > **用法边界**:仅当用户明确卡壳时取用;单次访谈 ≤3 条;每条必须挂上用户已说内容作触发语并记录;**禁止逐条顺次遍历**(那是疑问句版表单)。这些问句问的是「某类证据在你这里存不存在」,不是让用户认领维度——他说「没有/不重要」就放下,绝不追销。
4
+
5
+ 历史上有的栏目沉淀过以下几类资产。对应的开放式问法:
6
+
7
+ - **参考锚点类**:「有看了就想抄的片子/导演/画师吗?——你刚说想要 XX 的感觉,有现成的东西长这样吗?」
8
+ - **禁忌清单类**:「有没有哪种效果,一出现你就想关掉?」
9
+ - **色彩纪律类**:「你刚提到颜色——你的画面里颜色是谁说了算?有数量限制吗?」
10
+ - **重复仪式类**:「有没有什么东西你每期都会做一遍?(开场方式/某个符号/某种收尾)」
11
+ - **强调手段类**:「你想让观众'看这里'的时候,通常怎么做?这招用得多吗、有没有用滥的担心?」
12
+ - **文字出场类**:「文字在你画面里是什么身份——主角、旁注、还是尽量不出现?」
13
+ - **节奏习惯类**:「你剪东西时,什么时候觉得'该停一下了'?」
14
+ - **质感偏好类**:「你刚说不喜欢 XX 的廉价感——那你觉得'贵'的画面贵在哪?」
15
+
16
+ > 注意:以上是**证据探测方向**,不是维度清单。若用户对某方向给出实质回答,维度命名仍然用**他的原话**。
@@ -0,0 +1,9 @@
1
+ # 契约库引用(正本不在这里)
2
+
3
+ 框架契约库**正本** = `@gitruck/cli` 包内 `contracts/` 目录(管线资产归管线位置):
4
+
5
+ - `contracts/README.md` — 收录双轴边界(管线性 + 脱敏)
6
+ - `contracts/handoff-contracts.json` — handoff 类型 → 契约映射表(**查表,不硬编码**)
7
+ - `contracts/gsap-emit-v1.md` — HTML 动画颗粒逐帧 seek 合规契约 v1
8
+
9
+ 定位方式:本 skill 经 `gtrk skills install` 安装时,CLI 包根即 `gtrk` 命令所属包(`npm root -g` 下的 `@gitruck/cli`,或开发仓根)。找不到包时,让用户跑 `gtrk doctor` 确认安装。
@@ -0,0 +1,46 @@
1
+ # 产出物规范(craft-output-spec)
2
+
3
+ ## 1. 用户 skill 目录解剖
4
+
5
+ ```
6
+ <skill-name>/
7
+ ├── SKILL.md # 必须。frontmatter: name + description(description 即触发器)
8
+ ├── README.md # 必须。对人类的说明 + 「正本→安装」单向流声明(spec MUST)
9
+ ├── references/ # 按需。深文档(渐进披露:SKILL.md 装不下的细则放这里)
10
+ ├── assets/ # 按需。exemplar 成品/模板/素材
11
+ └── scripts/ # 按需。可执行工具
12
+ ```
13
+
14
+ - **frontmatter 最小集**:`name`(kebab-case)+ `description`。description 决定触发——包含功能关键词 + 「当用户想「…」时使用本 skill」+ 触发短语枚举。这是生态实证的唯一触发机制,没有独立 trigger 字段。
15
+ - **自足性铁律**:skill 里要含齐干活所需的全部信息(或明确引用哪里查),不让运行时去猜。
16
+ - **正文结构由访谈维度决定**——用户的 Step 1 是什么,skill 的 Step 1 就是什么。唯一必备的三个小节:铁律(含禁令)、交付前自检清单、(多 skill 家族时)「这个 skill 不做什么 → 找谁」。
17
+
18
+ ## 2. 「正本→安装」单向流(写进产出 skill 的 README)
19
+
20
+ > 本 skill 源码正本在 `<用户作坊路径>`;`~/.claude/skills/<name>/` 是安装产物。改动**永远先改正本**,再重新拷贝安装。云端(claude.ai capability)上传是可选的第三级分发,同样以作坊正本打包。
21
+ > ——副本漂移是有血泪教训的(同一枚举曾在 6 处定义、口径打架),单向流是唯一解法。
22
+
23
+ ## 3. 共享词表(条件产出)
24
+
25
+ 触发条件(任一):家族 ≥2 个 skill;访谈沉淀出自造词。
26
+ 形态:单独一份 `_shared/<栏目>/vocab.md`(下划线前缀防误认成 skill),条目 = 词 + 定义 + 取值(如有)。各 skill **引用不复制**(需要内联值时标注「正本在词表,改值先改那里」)。文件头写治理规则:「新词先入表再用」。
27
+ 不满足条件时:词表内容并入 SKILL.md 一节。
28
+
29
+ ## 4. 栏目配置登记
30
+
31
+ - 位置:以 gtrk paths 口径为准(当前 `~/.gitruck/columns/<栏目id>.json`;权威在 CLI 的 paths 模块,本文档不是路径权威源)。
32
+ - 写法:**追加**进 `style.skills` / `style.shared` 数组,绝不清空既有条目;文件不存在则创建最小骨架。
33
+ - 条目:`{ "id": "<skill-name>", "ref": "<正本绝对路径>", "produces": "<handoff 类型或用户自造串>" }`;管线外产物(封面、周边图等)加 `"routing": "none"`(豁免疑似拼写提示)。
34
+ - `produces` 是登记不是审批:写用户自造串完全合法(框架静默惰性登记);只有命中管线 handoff 注册集的才参与派单路由。
35
+
36
+ ## 5. 契约绑定
37
+
38
+ 查 `contracts/handoff-contracts.json`(随 @gitruck/cli 分发,包内相对路径 `contracts/`;本 skill 安装后可从 CLI 包根定位)。规则:
39
+ - `produces` 命中注册集 **且** 映射表给出契约 → 生成的 skill 必须:①引用「契约名+版本」(如 `gsap-emit v1`,契约文档在 `contracts/<doc>`);②把契约合规项列进自检清单(如:template 包裹?paused 时间线注册?无 random/Date?字面值无 var()?)。
40
+ - 映射为 `null`(暂无契约)或管线外产物 → 无绑定要求,照常生成。
41
+ - **永远查表,不硬编码映射**——契约升版/新增时表会更新。
42
+
43
+ ## 6. 收尾提醒(给用户)
44
+
45
+ - skill 留本地即完整可用;上传 claude.ai(打包 .skill zip)是**可选**分发,供网页/移动端触发。
46
+ - 后续迭代:改作坊正本 → 重拷 `~/.claude/skills/` → (可选)重新打包上传。
@@ -0,0 +1,4 @@
1
+ # 种子案例库
2
+
3
+ > **种子是案例,不是模板。** 每个种子演示「一次成功的风格接生最终长什么样」——注意看的是**产出的形态**(维度有名字、铁律带自检、家族互相路由、词表单点定义),不是维度本身。不同栏目的维度截然不同:用户的栏目跟任何种子都不像时,从零引导(七招),绝不套种子结构。
4
+ > 种子一律**削减版**(组织维度 + 词表 + 自检结构),且已脱敏(无外部供应商/平台名——完整版在各栏目主自己的作坊,不随框架分发)。
@@ -0,0 +1,37 @@
1
+ # 种子 · 家居好物带货栏目(「李姐严选」削减版)
2
+
3
+ 一人主理的家居好物口播带货号。访谈收敛出的家族:**1 个 skill(单产线不切)+ 词表并入 SKILL.md**。
4
+
5
+ ## 组织维度(全部来自栏目主自己的语言)
6
+
7
+ - **Step 1 = 痛点**:她的第一判断是「这货到底解决啥难受」——痛点必须**能拍出来**(一滩酱油/一声「咔」/一个乱抽屉),开头三秒戳它;且次序铁定「先戳痛点再亮卖点,反了人就划走」。痛点找不着,这单不接。
8
+ - **第二维度 = 上手**:信任感的唯一来源是「真人上手」——手 + 货 + 使劲的动作同画面,环境必须是过日子的地方;演不出来的卖点降级为嘴上带过,不给镜头。
9
+ - **第三维度 = 砸价**:价格是一个「出场动作」,不是一条信息——三选一判定(手上动作 / 憋一下再喊 / 全屏只剩一个大数),且砸之前全篇不许漏价。
10
+ - **第四维度 = 现在就买的理由**:结尾闭环,最后一句必须给一个说得出口的理由(马上用得上的场景 / 限时 / 赠品),不许只说「喜欢的拍」。
11
+ - **负面护栏 = 廉价感**:她说不出「风格是什么」,但对「什么显得廉价」秒答——七条禁令(综艺花字/满屏贴纸/「duang」类音效/抠图假背景/磨皮到看不清货/机器人配音/价格缩在角落小字)是全套规矩里最硬的资产。
12
+
13
+ ## 铁律(禁令先行的产物,节选)
14
+
15
+ - 廉价感七条禁令,中一条即重剪。
16
+ - 前三秒只许出现「难受」:不许品牌、自我介绍、价格、参数。
17
+ - 砸价三选一,占零样 = 念价格,返工;砸前漏价 = 白砸。
18
+ - 字幕最多两行大白字;真人原声,带口音也不换机器配音。
19
+ - 每条铁律配自检问句(例:「只看前三秒,看没看见一个具体的难受?」「砸价那一秒,三样占了几样?」「最后五秒能不能一句话复述那个现在就买的理由?」)。
20
+
21
+ ## 家族切分
22
+
23
+ 单产线不切家族:只有一条产线(带货片子),封面从片中截帧、不单独生产 → 1 个 skill 足够。`produces` = 自造串「带货台本」,查 handoff 映射表未命中注册集 → 无契约绑定,登记加 `routing:"none"`。
24
+
25
+ ## 词表(并入 SKILL.md 一节)
26
+
27
+ 已沉淀自造词,但家族仅 1 个 skill、无跨文件漂移面 → 词表并入 SKILL.md,并写明「出现第二个 skill 时整节迁出为 `_shared` 词表,各 skill 引用不复制」。词条(全部她的原词):
28
+
29
+ **痛点 / 卖点 / 上手 / 砸价 / 信任感 / 廉价感 / 划走 / 台本**(产物名)。
30
+
31
+ ## 自检结构
32
+
33
+ 自检清单逐条对应铁律,问句全部可判定、且用她的词(「砸价那一秒三样占了几样?」而非「价格强调是否充分?」)。给不出判定阈值的主张(「亮堂」「干净」「东西少」——她的原话「说不上数,凭眼睛」)降级为「倾向」,单列一节,不进铁律、不进自检硬条目。
34
+
35
+ ## 这个种子教你什么
36
+
37
+ 维度名(痛点/上手/砸价/廉价感/划走)**只属于这个栏目**。可迁移的是形态:①**负面维度可以当第一等组织维度**——说不出「我是什么」但秒答「什么绝对不行」的创作者,禁令清单就是骨架;②**次序本身可以是铁律**(先痛后卖),不只是内容主张;③判定不了的主张降级为倾向,绝不硬凑阈值;④单产线绝不硬拆家族;⑤`produces` 写自造串完全合法——框架静默登记,管线外加 `routing:"none"` 即可,不逼创作者学管线词汇。