/gtrk-splitter
视觉拆分派单器——把一条已剪好的口播工程(gtrk + transcript)拆成 beat 级「视觉拆分稿」,为每个连续文稿段指定唯一主层(A_ROLL 真人出镜 / MG 动态图 / AI_DRAMA 再现 / FILM_BROLL 影视素材)+ 辅助层,产机器可消费的派单清单(MG 槽位 / B-roll 检索队列 / AI 动画队列),要成片时再交棒后续铺轨。当用户想「文稿视觉化拆分 / 视觉拆分稿 / beat 时间线 / 派分镜 / A-roll B-roll 分配 / 哪些段做动态图·哪些做 AI 情景动画·哪些用影视素材 /
Claude Code
$ npx -y skills add Gitruck/cli --skill gtrk-splitter --agent claude-code
Codex
$ npx skills add Gitruck/cli --skill gtrk-splitter -a codex -y
Cursor
$ npx skills add Gitruck/cli --skill gtrk-splitter -a cursor -y
Gemini CLI
$ npx skills add Gitruck/cli --skill gtrk-splitter -a gemini-cli -y
GitHub Copilot
$ npx skills add Gitruck/cli --skill gtrk-splitter -a github-copilot -y
OpenCode
$ npx skills add Gitruck/cli --skill gtrk-splitter -a opencode -y
Windsurf
$ npx skills add Gitruck/cli --skill gtrk-splitter -a windsurf -y
SKILL.md
gtrk-splitter.SKILL.mdname: gtrk-splitter
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` 命令,绝不手写时码、绝不抄原文定位。
视觉拆分派单器(gtrk-splitter)
把一条**已经剪好的口播工程**(`gtrk` 工程文件 + `transcript.json` 句级词表),拆成一份可直接派工的 **beat 级视觉拆分稿**,再交给 `gtrk split` 校验落地,产出机器可消费的派单清单。**CLI 是手(投影/校验/落地/写时码),你是脑(切 beat、选 lane、写 handoff)。**
> **本 skill 已含你需要的全部信息**(流程、字段契约、枚举、拆分方法论、铁律)。字段细节与升级规则读 `references/field-schema.md`;模仿文档形态读 `references/example-visual-split.json`(《过拟合》20-beat 金样,机器 JSON)与 `references/example-visual-split.md`(同一金样的人读版式参照)。
三条铁律(先记死,再动手)
1. **只引用视图里存在的 utterance id**:beat 的文稿范围 = `span:{from:"u0007", to:"u0011"}`(utterance id 区间)。id 必须来自 `gtrk split --project` 导出的投影视图,**不许臆造**(`u9999` 一定被硬拒)。 2. **绝不抄原句文字作定位**:原文片段会诱发幻觉、也会和实拍漂移。一律用 utterance id 区间。 3. **绝不自造/推算任何时码**:拆分稿里**不写任何秒级时码字段**。轨道时码由 `gtrk split` 落地时现场投影写入 `struct_meta.split` / `dispatch.json`。你只管语义(lane / 叙事功能 / handoff),时间线交给 CLI。
★ MG 槽位的视觉职能 `visual_job`(必填)
每个 MG 槽位(含 overlay aux)都要回答一个问题:**这段为什么要动画。** 四档:
| 取值 | 判据 | 还要填什么 | |---|---|---| | `statement` | 就一句话 / 一个词 / 一个标题 | — | | `relation` | 出现**对比 / 并置 / 因果 / 包含 / 递进 / 聚合 / 循环** | `visual_brief` 必填 | | `data` | 具体的量、步骤或拓扑 | — | | `decor` | 不承载信息(转场 / 角标) | — |
⚠️ **判据是「这段的意思里有没有第二个东西与它并置」,不是「用不用文字」。**
一块「温柔—坚定 / 和善—有立场」的并置面板**是纯文字画的**,但它表达的是对照关系 ⇒ `relation`,**不是** `statement`。第一档刻意叫 `statement` 而不叫 `text`—— 叫 `text` 会让「它是文字做的」直接滑成「它是 text 档」,把结构化排版拍平成一张字卡。
`visual_brief`(`relation` 档必填)
一句话说清**这个关系靠什么视觉手段成立**。
⚠️ **它 MUST NOT 被要求是非文字的**:「两列并置、中间破折号连起来、右列更重」 与「三个齿轮咬合」是**同一类合格答案**。要求「必须非文字」会把用排版画关系这条路堵死, 而那恰恰是要保住的东西。brief 回答的是「这个关系怎么看得出来」,不是「用不用字」。
想不出具体视觉的,**诚实地退回 `statement`**——那本身就是正确结果。
全片一个 `relation` / `data` 都没有时
顶层要具名 `mg_visual_job_note`,一句话说明为什么这条片子通篇只有单一陈述。 纯字卡包装的口播片是**合法**形态,本条只要求它是个有意识的选择。
⚠️ 这里**没有比例阈值**,也 MUST NOT 有:「不超过 N%」给不出依据、会误伤合法极端形态、 还能被「宣告一个例外槽位」绕过。「一个都不需要」是可以要求交代的**判断**。
⚠️ 派单这一步 MUST NOT 引用具体模板
派单产物里出现 `tfx-*` 形状的模板 id ⇒ **判红**。
理由是**锚定**:判「这段要什么」的那一步若看得见模板库,会**从「库里有什么」倒推 「这段需要什么」**。正确的形态不是早点判,是**判的时候那个选项根本不存在**。
写「大字标题从左侧滑入」这类描述是合格的;写 `tfx-title-typeline` 不是。
⚠️ **如实说射程**:本条能做到的只有**工具面不提供 + 产物留痕判红**两件。 它**拦不住**「同一会话里更早读过 MG 图纸、脑子里已经装着那批模板」——那种锚定不留痕,也判不出来。 别把它当成杜绝;它降低的是「顺手去库里找」的概率,不是消灭锚定。
前置:确认工程 + CLI
- 需要一个 **oralcut 产物目录**(跑过 `gtrk oralcut` 得到的目录),里面有 `gtrk/project.gtrk` 与 `transcript/transcript.json`。没有 transcript(旧任务)→ 让用户用新版本重跑 `gtrk oralcut`(恒出 transcript)。
- `gtrk` 命令找不到 → 让用户装 `npm i -g @gitruck/cli@latest`。
- 用户可以先在客户端手调切点再保存——**每次拆分都基于「发起那一刻」的时间线投影**,所见即所得。
- **下游后果**:落地写进 `dispatch.json` 的 `track_st/track_ed` 因此是**那一刻的快照**。不用担心它变旧——下游消费方(`gtrk mg` / `gtrk matrix`)每次消费都**自己现场重投影**(`transcript × 当刻 .gtrk`,与本命令同一段代码),**用户之后再微调口播轨无需回来重跑 split**。只有**拆分稿本身**要改(beat 划分 / lane / handoff 变了)才重跑。
完整流程(取视图 → 拆分 → 落地 → 修正循环 ≤3 轮)
> **产物落点纪律(MUST · 全文见随包 `AGENT.md` 同名一节)**: > 交付物 MUST NOT 先写 agent 自有目录再拷进工程;中转本身即违规,体积不是豁免理由。 > 一切产物(拆分稿 / 派单 / 成片 / 预览 / 素材 / 工程文件)只落**工程目录**或**用户显式指定的输出路径**; > **MUST NOT** 把成片、预览或任何大媒体文件复制到 agent 自有工作目录(如用户文档目录下 agent 产品自建的目录、agent 家目录缓存、会话工作区)——需要引用媒体时**用原路径引用**,不做副本; > 临时文件(抽帧图等)一律放系统 temp 且**用完即删**。交付物直接写入工程目录或用户显式指定的路径;引用媒体用原路径。
1. 取投影视图(你的唯一创作输入)
gtrk split --project "<oralcut产物目录>" --json
- 产 `<目录>/split/view.json` 并在 stdout 回一行结果 JSON。**读 `view.json` 文件**(大稿更稳),不要只解析终端。
- 视图结构:`{transcript_hash, projected_at, utterances:[{id, text, track_st, track_ed, dropped, kept_words, total_words}]}`。
- `id` = 你要引用的 utterance id(如 `u0007`)。
- `text` = 该句文字(**只用来读懂内容、判断在哪切 beat**,绝不复制进拆分稿)。
- `dropped:true` = 这句在当前时间线上已被剪掉——**别把它划进任何 beat 的 span**(划了落地会跳过/收缩)。
- `track_st/track_ed` = 轨道时码(**只读,帮你感知节奏/时长**,不要抄进拆分稿)。
- **透传 `transcript_hash`**:拆分稿的 `transcript_hash` 必须原样等于视图里的 `transcript_hash`(hash 链,错版硬拒)。
2. 通读全片,按视觉职责切 beat
按下面「拆分方法论」把连续的 utterance 分成若干 beat。一个 beat 覆盖**连续的 id 区间**(可跨多句),但**不能跨前后两处拼接**。beat 之间允许留空隙(未覆盖段默认 A_ROLL 底轨直出),**不许重叠**。
**抽帧确认底轨画面(凡毛片可能已含视觉包装时必做,勿只凭文稿派单)**:view.json 只给你文字,看不见画面——但毛片未必是素的。**二次过 / 补 ov 场景**(毛片本身是已烧入 MG、AI 情景动画或其他包装的成片再加工)尤其危险:只凭时码派 overlay 会撞上已有包装叠罗汉。姿势:对候选挂点(尤其打算派 `overlay` 的句区间)用本地 ffmpeg 按 `track_st` 抽 1 帧看一眼(`ffmpeg -ss <秒> -i <毛片> -frames:v 1 "<系统temp>/<句id>.jpg"`,成本≈0;抽帧图是临时文件——落系统 temp、用完即删,**别落 cwd / agent 自有目录**),确认该处画面性质——**裸口播 → 正常派;已有包装 → 避开该区间或另选挂点;拿不准 → 列给用户裁决**。首次过全素毛片可免;一旦毛片来历含「粗剪成片 / 待 ov 补充 / 二次过」字样,此步为硬门。抽帧顺带看清真人主体位置与画面明暗,写进 beat 的语义上下文,供下游产颗粒时构图避让。
> 📌 **这一步与 SOP ④ 的全局抽帧检查不是同一件事,两者都要**:这里抽的是**毛片原始画面**(派单前,判该处是裸口播还是已有包装);④ 抽的是**B-roll 三源全铺齐后的最终底轨**(产 MG 前,供排版避让)。前者防「派单派到包装上」,后者防「MG 对着不完整底轨做避让」。
3. 写拆分稿 JSON
按 `references/field-schema.md` 的契约写。骨架:
{
"contract_version": "v1",
"transcript_hash": "<原样透传视图里的 transcript_hash>",
"beats": [
{
"id": "B01",
"span": { "from": "u0001", "to": "u0003" },
"base_track": "真人出镜",
"lane": "A_ROLL",
"narrative": "mirror-hook",
"container_stage": "none",
"rhythm": "平稳 -> 停顿",
"visual_task": "主持人直视镜头带观众做实验",
"irreplaceability": "必须真人出镜",
"aux_layers": [
{ "type": "quote-card", "mount": { "from": "u0001", "to": "u0002" }, "role": "金句提炼", "necessity": "强建议" }
]
}
],
"queues": { "a_roll": [], "mg": [], "ai_drama": [], "film_broll": [] }
}关键:
- `lane` 四选一 `A_ROLL | MG | AI_DRAMA | FILM_BROLL`;`base_track` 三选一 `真人出镜 | 口播继续 | 旁白主导`。
- `irreplaceability` 四选一 `必须真人出镜 | 优先 MG | 可被 B-roll 替代 | 可降级处理`。
- **handoff 按 lane 分型**(校验器会硬查):
- `MG` → `handoff:{visual_job, visual_brief?, slug_hint?, theme?, bg?, duration_hint}`,**`visual_job` 与 `duration_hint`(秒)必填**(`visual_job` 见上节;`relation` 档另需 `visual_brief`);可选 `category`(overlay 透明叠加/fullscreen 不透明满屏,裁决⑩,供色带分层,详见 field-schema)。
- `FILM_BROLL` → `handoff:{queries:[...非空], shots?, per_shot_sec?, exclude?, anchors?}`,**`queries
Read more
name: gtrk-splitter 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` 命令,绝不手写时码、绝不抄原文定位。
视觉拆分派单器(gtrk-splitter)
把一条**已经剪好的口播工程**(`gtrk` 工程文件 + `transcript.json` 句级词表),拆成一份可直接派工的 **beat 级视觉拆分稿**,再交给 `gtrk split` 校验落地,产出机器可消费的派单清单。**CLI 是手(投影/校验/落地/写时码),你是脑(切 beat、选 lane、写 handoff)。**
> **本 skill 已含你需要的全部信息**(流程、字段契约、枚举、拆分方法论、铁律)。字段细节与升级规则读 `references/field-schema.md`;模仿文档形态读 `references/example-visual-split.json`(《过拟合》20-beat 金样,机器 JSON)与 `references/example-visual-split.md`(同一金样的人读版式参照)。
三条铁律(先记死,再动手)
1. **只引用视图里存在的 utterance id**:beat 的文稿范围 = `span:{from:"u0007", to:"u0011"}`(utterance id 区间)。id 必须来自 `gtrk split --project` 导出的投影视图,**不许臆造**(`u9999` 一定被硬拒)。 2. **绝不抄原句文字作定位**:原文片段会诱发幻觉、也会和实拍漂移。一律用 utterance id 区间。 3. **绝不自造/推算任何时码**:拆分稿里**不写任何秒级时码字段**。轨道时码由 `gtrk split` 落地时现场投影写入 `struct_meta.split` / `dispatch.json`。你只管语义(lane / 叙事功能 / handoff),时间线交给 CLI。
★ MG 槽位的视觉职能 `visual_job`(必填)
每个 MG 槽位(含 overlay aux)都要回答一个问题:**这段为什么要动画。** 四档:
| 取值 | 判据 | 还要填什么 | |---|---|---| | `statement` | 就一句话 / 一个词 / 一个标题 | — | | `relation` | 出现**对比 / 并置 / 因果 / 包含 / 递进 / 聚合 / 循环** | `visual_brief` 必填 | | `data` | 具体的量、步骤或拓扑 | — | | `decor` | 不承载信息(转场 / 角标) | — |
⚠️ **判据是「这段的意思里有没有第二个东西与它并置」,不是「用不用文字」。**
一块「温柔—坚定 / 和善—有立场」的并置面板**是纯文字画的**,但它表达的是对照关系 ⇒ `relation`,**不是** `statement`。第一档刻意叫 `statement` 而不叫 `text`—— 叫 `text` 会让「它是文字做的」直接滑成「它是 text 档」,把结构化排版拍平成一张字卡。
`visual_brief`(`relation` 档必填)
一句话说清**这个关系靠什么视觉手段成立**。
⚠️ **它 MUST NOT 被要求是非文字的**:「两列并置、中间破折号连起来、右列更重」 与「三个齿轮咬合」是**同一类合格答案**。要求「必须非文字」会把用排版画关系这条路堵死, 而那恰恰是要保住的东西。brief 回答的是「这个关系怎么看得出来」,不是「用不用字」。
想不出具体视觉的,**诚实地退回 `statement`**——那本身就是正确结果。
全片一个 `relation` / `data` 都没有时
顶层要具名 `mg_visual_job_note`,一句话说明为什么这条片子通篇只有单一陈述。 纯字卡包装的口播片是**合法**形态,本条只要求它是个有意识的选择。
⚠️ 这里**没有比例阈值**,也 MUST NOT 有:「不超过 N%」给不出依据、会误伤合法极端形态、 还能被「宣告一个例外槽位」绕过。「一个都不需要」是可以要求交代的**判断**。
⚠️ 派单这一步 MUST NOT 引用具体模板
派单产物里出现 `tfx-*` 形状的模板 id ⇒ **判红**。
理由是**锚定**:判「这段要什么」的那一步若看得见模板库,会**从「库里有什么」倒推 「这段需要什么」**。正确的形态不是早点判,是**判的时候那个选项根本不存在**。
写「大字标题从左侧滑入」这类描述是合格的;写 `tfx-title-typeline` 不是。
⚠️ **如实说射程**:本条能做到的只有**工具面不提供 + 产物留痕判红**两件。 它**拦不住**「同一会话里更早读过 MG 图纸、脑子里已经装着那批模板」——那种锚定不留痕,也判不出来。 别把它当成杜绝;它降低的是「顺手去库里找」的概率,不是消灭锚定。
前置:确认工程 + CLI
- 需要一个 **oralcut 产物目录**(跑过 `gtrk oralcut` 得到的目录),里面有 `gtrk/project.gtrk` 与 `transcript/transcript.json`。没有 transcript(旧任务)→ 让用户用新版本重跑 `gtrk oralcut`(恒出 transcript)。
- `gtrk` 命令找不到 → 让用户装 `npm i -g @gitruck/cli@latest`。
- 用户可以先在客户端手调切点再保存——**每次拆分都基于「发起那一刻」的时间线投影**,所见即所得。
- **下游后果**:落地写进 `dispatch.json` 的 `track_st/track_ed` 因此是**那一刻的快照**。不用担心它变旧——下游消费方(`gtrk mg` / `gtrk matrix`)每次消费都**自己现场重投影**(`transcript × 当刻 .gtrk`,与本命令同一段代码),**用户之后再微调口播轨无需回来重跑 split**。只有**拆分稿本身**要改(beat 划分 / lane / handoff 变了)才重跑。
完整流程(取视图 → 拆分 → 落地 → 修正循环 ≤3 轮)
> **产物落点纪律(MUST · 全文见随包 `AGENT.md` 同名一节)**: > 交付物 MUST NOT 先写 agent 自有目录再拷进工程;中转本身即违规,体积不是豁免理由。 > 一切产物(拆分稿 / 派单 / 成片 / 预览 / 素材 / 工程文件)只落**工程目录**或**用户显式指定的输出路径**; > **MUST NOT** 把成片、预览或任何大媒体文件复制到 agent 自有工作目录(如用户文档目录下 agent 产品自建的目录、agent 家目录缓存、会话工作区)——需要引用媒体时**用原路径引用**,不做副本; > 临时文件(抽帧图等)一律放系统 temp 且**用完即删**。交付物直接写入工程目录或用户显式指定的路径;引用媒体用原路径。
1. 取投影视图(你的唯一创作输入)
gtrk split --project "<oralcut产物目录>" --json
- 产 `<目录>/split/view.json` 并在 stdout 回一行结果 JSON。**读 `view.json` 文件**(大稿更稳),不要只解析终端。
- 视图结构:`{transcript_hash, projected_at, utterances:[{id, text, track_st, track_ed, dropped, kept_words, total_words}]}`。
- `id` = 你要引用的 utterance id(如 `u0007`)。
- `text` = 该句文字(**只用来读懂内容、判断在哪切 beat**,绝不复制进拆分稿)。
- `dropped:true` = 这句在当前时间线上已被剪掉——**别把它划进任何 beat 的 span**(划了落地会跳过/收缩)。
- `track_st/track_ed` = 轨道时码(**只读,帮你感知节奏/时长**,不要抄进拆分稿)。
- **透传 `transcript_hash`**:拆分稿的 `transcript_hash` 必须原样等于视图里的 `transcript_hash`(hash 链,错版硬拒)。
2. 通读全片,按视觉职责切 beat
按下面「拆分方法论」把连续的 utterance 分成若干 beat。一个 beat 覆盖**连续的 id 区间**(可跨多句),但**不能跨前后两处拼接**。beat 之间允许留空隙(未覆盖段默认 A_ROLL 底轨直出),**不许重叠**。
**抽帧确认底轨画面(凡毛片可能已含视觉包装时必做,勿只凭文稿派单)**:view.json 只给你文字,看不见画面——但毛片未必是素的。**二次过 / 补 ov 场景**(毛片本身是已烧入 MG、AI 情景动画或其他包装的成片再加工)尤其危险:只凭时码派 overlay 会撞上已有包装叠罗汉。姿势:对候选挂点(尤其打算派 `overlay` 的句区间)用本地 ffmpeg 按 `track_st` 抽 1 帧看一眼(`ffmpeg -ss <秒> -i <毛片> -frames:v 1 "<系统temp>/<句id>.jpg"`,成本≈0;抽帧图是临时文件——落系统 temp、用完即删,**别落 cwd / agent 自有目录**),确认该处画面性质——**裸口播 → 正常派;已有包装 → 避开该区间或另选挂点;拿不准 → 列给用户裁决**。首次过全素毛片可免;一旦毛片来历含「粗剪成片 / 待 ov 补充 / 二次过」字样,此步为硬门。抽帧顺带看清真人主体位置与画面明暗,写进 beat 的语义上下文,供下游产颗粒时构图避让。
> 📌 **这一步与 SOP ④ 的全局抽帧检查不是同一件事,两者都要**:这里抽的是**毛片原始画面**(派单前,判该处是裸口播还是已有包装);④ 抽的是**B-roll 三源全铺齐后的最终底轨**(产 MG 前,供排版避让)。前者防「派单派到包装上」,后者防「MG 对着不完整底轨做避让」。
3. 写拆分稿 JSON
按 `references/field-schema.md` 的契约写。骨架:
{
"contract_version": "v1",
"transcript_hash": "<原样透传视图里的 transcript_hash>",
"beats": [
{
"id": "B01",
"span": { "from": "u0001", "to": "u0003" },
"base_track": "真人出镜",
"lane": "A_ROLL",
"narrative": "mirror-hook",
"container_stage": "none",
"rhythm": "平稳 -> 停顿",
"visual_task": "主持人直视镜头带观众做实验",
"irreplaceability": "必须真人出镜",
"aux_layers": [
{ "type": "quote-card", "mount": { "from": "u0001", "to": "u0002" }, "role": "金句提炼", "necessity": "强建议" }
]
}
],
"queues": { "a_roll": [], "mg": [], "ai_drama": [], "film_broll": [] }
}关键:
- `lane` 四选一 `A_ROLL | MG | AI_DRAMA | FILM_BROLL`;`base_track` 三选一 `真人出镜 | 口播继续 | 旁白主导`。
- `irreplaceability` 四选一 `必须真人出镜 | 优先 MG | 可被 B-roll 替代 | 可降级处理`。
- **handoff 按 lane 分型**(校验器会硬查):
- `MG` → `handoff:{visual_job, visual_brief?, slug_hint?, theme?, bg?, duration_hint}`,**`visual_job` 与 `duration_hint`(秒)必填**(`visual_job` 见上节;`relation` 档另需 `visual_brief`);可选 `category`(overlay 透明叠加/fullscreen 不透明满屏,裁决⑩,供色带分层,详见 field-schema)。
- `FILM_BROLL` → `handoff:{queries:[...非空], shots?, per_shot_sec?, exclude?, anchors?}`,**`queries
Other skills on gtrk.
More skills from other plugins.
captions-overlay
Overlay doctrine for captions in HyperFrames videos — the caption MODEL (drop / rail / embed) and the rule that captions are an…
acestep
AI music generation with ACE-Step 1.5 — background music, vocal tracks, covers, stem extraction for video production. Use when…
seedance-antislop
This skill should be used when a Seedance 2.0 prompt contains generic AI filler, hollow superlatives, vague cinematic language,…
Questions about gtrk-splitter.
- Which coding agents can use gtrk-splitter?
- gtrk-splitter installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

