[PR #32] fix(generate-video): retire the Sora routing example, add a retired-family redirect #31

Open
opened 2026-10-26 22:34:12 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/Comfy-Org/comfy-skills/pull/32
Author: @mattmillerai
Created: 9/5/2026
Status: 🔄 Open

Base: main ← Head: matt/be-11950-retired-video-families


📝 Commits (6)

  • 26a2a82 fix(generate-video): retire the Sora routing example, add a retired-family redirect
  • 629aa55 fix(generate-video): count api_* templates as paid hits in the Step 0 routing bullets
  • d78ff40 Merge origin/main into matt/be-11950-retired-video-families
  • cfb4e3e fix(generate-video): send retired families straight to the redirect from Step 0
  • 965540d fix(generate-video): discover retired-family replacements at run time
  • b532c9a fix(generate-video): drop the "video" tag filter from the retired-family template search

📊 Changes

2 files changed (+11 additions, -6 deletions)

View changed files

📝 claude-code/commands/generate-video.md (+6 -3)
📝 skills/comfy-generate-video.md (+5 -3)

📄 Description

ELI5

The video skill told the agent "if someone names a model family — Kling, Veo, Sora, Runway, MiniMax — go look it up." Sora is on its way out: OpenAI removes the Videos API on 2026-09-24 and ComfyUI already ships its node as deprecated, so that example was teaching the agent to start with a lookup that is about to return nothing. The example is now Flux 3 Video, which is live everywhere the step looks. Both video files also get one line naming the three retired families an agent still gets asked for by name, each pointing at a live replacement instead of at a dead end.

What changed

  • skills/comfy-generate-video.md and claude-code/commands/generate-video.md: the Step 0 example list swaps "Sora" for "Flux 3 Video".
  • Both files gain a Retired — redirect, don't route line after Step 0, covering OpenAI Sora (sora-2/sora-2-pro), Runway gen3a_turbo and gemini-omni-flash-preview, each with its date and a pointer to discover its live alternative.
  • In both files, the Step 0 route bullets now name the template marker explicitly: an api_* template counts as a paid hit (partner-only bullet), and the OSS-only bullet requires a video_* template or a non-partner/ node with no api_* template and no partner/ node hit.
  • In both files, Step 0 now skips its route lookups for the three retired families and sends them straight to the Retired redirect, so a lookup can no longer surface a deprecated node before the redirect is read.
  • The Retired line no longer fixes its replacements. It tells the agent to discover them at run time: a slug from partner_generate's listed set or search_models, and an api_* template from search_templates for the successor family. Today's slugs and template names stay only as dated examples (as of 2026-09), per the README rule that a command must not freeze catalog facts.
  • The Retired line's template search no longer filters on tag: "video". The replacement api_* templates are tagged by task ("Image to Video", "Video Edit", …) plus "API", so that filter excluded every one of them; the line now narrows, if needed, by the matching task tag instead.
  • claude-code/commands/generate-video.md's Step 0 is re-synced with its skills twin, which is now byte-identical. The command file's last touch predates two later corrections to the skills file, so it still carried the claim that "a partner/API node uses api_*" — that is false (partner node classes are CamelCase, e.g. Flux3TextToVideoNode, RunwayImageToVideoNodeGen4; api_* is a template-name convention), and it was missing the OSS-only bullet. Adopting the twin's wording is the sync the change asks for, and it is wording that already shipped in this repo rather than anything invented here.

Why "Flux 3 Video" and not another family

The replacement had to be a family with a registered partner_generate entry, so the example still demonstrates the partner route the bullet under it describes. Flux 3 Video is reachable on all three surfaces, each checked live:

surface evidence
partner node Flux3TextToVideoNode / Flux3ImageToVideoNode, category="partner/video/BFL", not deprecated (ComfyUI comfy_api_nodes/nodes_bfl.py)
templates api_bfl_flux3_t2v "FLUX 3 Video: Text to Video", api_bfl_flux3_i2v "FLUX 3 Video: Image to Video" (live Comfy-Org/workflow_templates index)
partner_generate slug bfl/flux-3-video in the registered video model set

The template titles begin with the literal string "FLUX 3 Video", so the example term is also what a search_templates lookup on it matches.

Negative-claim falsification

The new line's user-facing outcome steers an agent AWAY from three model names, so it is a capability-denying diff and every denial was attempted through each path the product offers before being written down. search_nodes / search_templates / partner_generate were not callable from this environment, so each route was falsified against the artifact that route resolves against:

  • OpenAI Sora. Templates: the live template index (620 entries) contains zero matches for sora — there is no api_openai_sora_video. Partner slugs: the registered video model set contains no OpenAI entry (bfl/flux-3-video, byteplus/…, kling/…, ltx/…, minimax/…, veo/… only), and the server answers every Sora alias with an explicit retirement redirect. Node: OpenAIVideoSora2 does still exist on ComfyUI master — which is why the line says "already deprecated" rather than "gone". Its own description reads "OpenAI will stop serving the Sora v2 API in September 2026. This node will be removed from ComfyUI at that time." So the line is dated, not absolute: the node route works until the provider pulls it, and the text points at a live alternative rather than dead-ending the request.
  • Runway gen3a_turbo. No gen3a template in the live index; RunwayImageToVideoNodeGen3a and RunwayFirstLastFrameNode are both is_deprecated=True on master, and the model left the Runway API on 2026-07-30. The redirect target api_runway_gen4_turbo_image_to_video is in the live index (title "Runway: Gen4 Turbo Image to Video"); an earlier revision of this line copied it as turo, which the live index no longer carries, and that example is now corrected.
  • gemini-omni-flash-preview. Still selectable through GeminiVideoOmniV2, so the line dates the deprecation (2026-09-30) instead of claiming it is unreachable. The redirect targets api_google_gemini_omni_flash_1_1_t2v and api_google_gemini_omni_flash_1_1_i2v both resolve in the live index.

Every alternative the new line hands out was checked to resolve today: 3 partner slugs against the registered video model set, 4 template names against the live template index. Nothing in the line asserts that a capability is absent — each clause names a working path.

Verification

This repo has no test or lint script (its skills-validation workflow was removed when comfy-build moved to comfy-cli), so verification was aimed at the two automated gates that consume this text downstream, replicated locally against the diff:

  • Deprecated-class gate. A skill line naming a class the catalog marks deprecated fails unless the same line says "deprecated". The new line names OpenAIVideoSora2 and says "deprecated" on that line. Passes.
  • Negative-capability-claim lint. A rendered sentence that names a capability surface and carries a negation/restriction marker fails until it is recorded. Replicating the marker sets against every added sentence: the new retired line is clean on all four of its sentences. The other flagged sentences in the diff are the Step-0 block copied verbatim from the skills file, which already renders in that corpus.
  • Both Step 0 blocks confirmed byte-identical (diff of the two ranges).

Sweep — the portion not fixed

The same sweep that sized this fix was pointed at the rest of the corpus: 26 skill/command/README files, checked for both failure shapes.

  • Retired family names (sora, gen3a, omni-flash-preview): after this change they appear only in the two new retired lines. No other file steers at one.
  • Node classes the catalog marks deprecated: 5 mentions across 3 files. Two are the new lines here (both say "deprecated", both pass). 3 are not fixed by this PR — see Residual.

Residual

  • claude-code/commands/combine-people.md names a deprecated node class on two lines that do not say so (lines 15 and 32: GeminiNanoBanana2, superseded upstream by GeminiNanoBanana2V2). Its skills twin skills/technique-combine-people.md was already fixed and carries the word "deprecated" on that line. This is the same drift shape this PR fixes for the video pair, on a different file pair, and it is invisible to the downstream gate because only skills/*.md is mirrored — the command variants are not. Not fixed here: out of the scope this change was asked for, and it needs a look at whether the recipe's parameters still apply to the V2 class rather than a name swap.
  • A third routing surface, openclaw/comfy/SKILL.md, does not carry the retired-family guidance. It lists named families for routing (Ideogram, Flux, Gemini, Kling, Veo, Seedance) and never named Sora, so it has no dead example to fix — but it also gives an agent no signal about the three retired names. Left alone deliberately: it is a separately-bundled, deliberately thinner surface, and widening this change into it was not asked for.
  • Overlapping open PR. #19 edits the first Step-0 bullet in both of these files. It does not make this change, but it touches adjacent lines, so whichever lands second will need a small manual conflict resolution. Nothing here reverts its intent.
  • Two dates in the new line could not be falsified from a primary provider source — Sora's 2026-09-24 and Runway's 2026-07-30. Both are taken verbatim from the retirement table that already shipped server-side, and Sora's is consistent with the "September 2026" in the ComfyUI node's own deprecation notice; neither was confirmed against OpenAI's or Runway's own changelog, which was not reachable from here.
  • The MCP discovery tools were never called. search_nodes, search_templates, search_models and partner_generate were not available in this environment, so every claim above rests on the artifacts those tools resolve against (the live workflow_templates index, ComfyUI master's comfy_api_nodes/, the registered partner video model set) rather than on a live tool response. A one-line search_templates("Flux 3 Video") from a connected client would close that gap.

Provenance

  • Authored by: agent-work loop
  • Verified:
    • The Step 0 block, the route bullets and the Retired line are byte-identical between the two files at the current head (diff of the ranges).
    • claude plugin validate ./claude-code passes at the current head.
    • The deprecated-class gate, replicated on the diff, finds 2 mentions of a deprecated class, both on lines that say "deprecated", so 0 offenders.
    • The doc-drift sweep against origin/main found 17 reference lines. All were judged: they are generic uses of "model" and "video" or the authoring rule itself, so 0 were updated.
    • The dated example template names and their tags were re-checked against the live workflow_templates index at the current head: each replacement carries a task tag plus "API", none carries "video". The Retired line has the agent re-discover them at run time.
    • This repo ships no test or lint script. The GitHub checks on the head are CodeRabbit and Socket Security only.
  • Deviations: the Retired line keeps today's replacement slugs and template names, but only as dated examples behind a run-time discovery step. It names neither a frozen list nor a bare glob, because the README rule bars frozen catalog facts and a glob is not a name run_template can resolve. It is worded as a dated redirect rather than a flat "do not route", because OpenAIVideoSora2 and gemini-omni-flash-preview are both still reachable today.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/Comfy-Org/comfy-skills/pull/32 **Author:** [@mattmillerai](https://github.com/mattmillerai) **Created:** 9/5/2026 **Status:** 🔄 Open **Base:** `main` ← **Head:** `matt/be-11950-retired-video-families` --- ### 📝 Commits (6) - [`26a2a82`](https://github.com/Comfy-Org/comfy-skills/commit/26a2a82823bde629215a7e852517b30b82d5f818) fix(generate-video): retire the Sora routing example, add a retired-family redirect - [`629aa55`](https://github.com/Comfy-Org/comfy-skills/commit/629aa55188b083f85596b2dba31dad7f2a09e631) fix(generate-video): count api_* templates as paid hits in the Step 0 routing bullets - [`d78ff40`](https://github.com/Comfy-Org/comfy-skills/commit/d78ff40f5f2dd29f663f392521ca7bc137dcece0) Merge origin/main into matt/be-11950-retired-video-families - [`cfb4e3e`](https://github.com/Comfy-Org/comfy-skills/commit/cfb4e3e85a392c2e12714507080030f4948b2624) fix(generate-video): send retired families straight to the redirect from Step 0 - [`965540d`](https://github.com/Comfy-Org/comfy-skills/commit/965540d0e718ce5edf524dbfb403a12094292c52) fix(generate-video): discover retired-family replacements at run time - [`b532c9a`](https://github.com/Comfy-Org/comfy-skills/commit/b532c9a2e7e1dcf2e5af3494a9c5224d79e6271d) fix(generate-video): drop the "video" tag filter from the retired-family template search ### 📊 Changes **2 files changed** (+11 additions, -6 deletions) <details> <summary>View changed files</summary> 📝 `claude-code/commands/generate-video.md` (+6 -3) 📝 `skills/comfy-generate-video.md` (+5 -3) </details> ### 📄 Description ## ELI5 The video skill told the agent "if someone names a model family — Kling, Veo, **Sora**, Runway, MiniMax — go look it up." Sora is on its way out: OpenAI removes the Videos API on 2026-09-24 and ComfyUI already ships its node as deprecated, so that example was teaching the agent to start with a lookup that is about to return nothing. The example is now **Flux 3 Video**, which is live everywhere the step looks. Both video files also get one line naming the three retired families an agent still gets asked for by name, each pointing at a live replacement instead of at a dead end. ## What changed - `skills/comfy-generate-video.md` and `claude-code/commands/generate-video.md`: the Step 0 example list swaps `"Sora"` for `"Flux 3 Video"`. - Both files gain a **Retired — redirect, don't route** line after Step 0, covering OpenAI Sora (`sora-2`/`sora-2-pro`), Runway `gen3a_turbo` and `gemini-omni-flash-preview`, each with its date and a pointer to discover its live alternative. - In both files, the Step 0 route bullets now name the template marker explicitly: an `api_*` template counts as a paid hit (partner-only bullet), and the OSS-only bullet requires a `video_*` template or a non-`partner/` node with no `api_*` template and no `partner/` node hit. - In both files, Step 0 now skips its route lookups for the three retired families and sends them straight to the **Retired** redirect, so a lookup can no longer surface a deprecated node before the redirect is read. - The **Retired** line no longer fixes its replacements. It tells the agent to discover them at run time: a slug from `partner_generate`'s listed set or `search_models`, and an `api_*` template from `search_templates` for the successor family. Today's slugs and template names stay only as dated examples (as of 2026-09), per the README rule that a command must not freeze catalog facts. - The Retired line's template search no longer filters on `tag: "video"`. The replacement `api_*` templates are tagged by task (`"Image to Video"`, `"Video Edit"`, …) plus `"API"`, so that filter excluded every one of them; the line now narrows, if needed, by the matching task tag instead. - `claude-code/commands/generate-video.md`'s Step 0 is re-synced with its skills twin, which is now byte-identical. The command file's last touch predates two later corrections to the skills file, so it still carried the claim that "a partner/API node uses `api_*`" — that is false (partner node classes are CamelCase, e.g. `Flux3TextToVideoNode`, `RunwayImageToVideoNodeGen4`; `api_*` is a template-name convention), and it was missing the OSS-only bullet. Adopting the twin's wording is the sync the change asks for, and it is wording that already shipped in this repo rather than anything invented here. ## Why "Flux 3 Video" and not another family The replacement had to be a family with a registered `partner_generate` entry, so the example still demonstrates the partner route the bullet under it describes. Flux 3 Video is reachable on all three surfaces, each checked live: | surface | evidence | | --- | --- | | partner node | `Flux3TextToVideoNode` / `Flux3ImageToVideoNode`, `category="partner/video/BFL"`, not deprecated (ComfyUI `comfy_api_nodes/nodes_bfl.py`) | | templates | `api_bfl_flux3_t2v` "FLUX 3 Video: Text to Video", `api_bfl_flux3_i2v` "FLUX 3 Video: Image to Video" (live `Comfy-Org/workflow_templates` index) | | `partner_generate` slug | `bfl/flux-3-video` in the registered video model set | The template titles begin with the literal string "FLUX 3 Video", so the example term is also what a `search_templates` lookup on it matches. ## Negative-claim falsification The new line's user-facing outcome steers an agent AWAY from three model names, so it is a capability-denying diff and every denial was attempted through each path the product offers before being written down. `search_nodes` / `search_templates` / `partner_generate` were not callable from this environment, so each route was falsified against the artifact that route resolves against: - **OpenAI Sora.** Templates: the live template index (620 entries) contains **zero** matches for `sora` — there is no `api_openai_sora_video`. Partner slugs: the registered video model set contains no OpenAI entry (`bfl/flux-3-video`, `byteplus/…`, `kling/…`, `ltx/…`, `minimax/…`, `veo/…` only), and the server answers every Sora alias with an explicit retirement redirect. Node: `OpenAIVideoSora2` **does still exist** on ComfyUI master — which is why the line says "already deprecated" rather than "gone". Its own description reads "OpenAI will stop serving the Sora v2 API in September 2026. This node will be removed from ComfyUI at that time." So the line is dated, not absolute: the node route works until the provider pulls it, and the text points at a live alternative rather than dead-ending the request. - **Runway `gen3a_turbo`.** No `gen3a` template in the live index; `RunwayImageToVideoNodeGen3a` and `RunwayFirstLastFrameNode` are both `is_deprecated=True` on master, and the model left the Runway API on 2026-07-30. The redirect target `api_runway_gen4_turbo_image_to_video` **is** in the live index (title "Runway: Gen4 Turbo Image to Video"); an earlier revision of this line copied it as `turo`, which the live index no longer carries, and that example is now corrected. - **`gemini-omni-flash-preview`.** Still selectable through `GeminiVideoOmniV2`, so the line dates the deprecation (2026-09-30) instead of claiming it is unreachable. The redirect targets `api_google_gemini_omni_flash_1_1_t2v` and `api_google_gemini_omni_flash_1_1_i2v` both resolve in the live index. Every alternative the new line hands out was checked to resolve today: 3 partner slugs against the registered video model set, 4 template names against the live template index. Nothing in the line asserts that a capability is absent — each clause names a working path. ## Verification This repo has no test or lint script (its skills-validation workflow was removed when `comfy-build` moved to `comfy-cli`), so verification was aimed at the two automated gates that consume this text downstream, replicated locally against the diff: - **Deprecated-class gate.** A skill line naming a class the catalog marks deprecated fails unless the same line says "deprecated". The new line names `OpenAIVideoSora2` and says "deprecated" on that line. Passes. - **Negative-capability-claim lint.** A rendered sentence that names a capability surface and carries a negation/restriction marker fails until it is recorded. Replicating the marker sets against every added sentence: the new retired line is clean on all four of its sentences. The other flagged sentences in the diff are the Step-0 block copied verbatim from the skills file, which already renders in that corpus. - Both Step 0 blocks confirmed byte-identical (`diff` of the two ranges). ## Sweep — the portion not fixed The same sweep that sized this fix was pointed at the rest of the corpus: **26 skill/command/README files**, checked for both failure shapes. - Retired family names (`sora`, `gen3a`, `omni-flash-preview`): after this change they appear **only** in the two new retired lines. No other file steers at one. - Node classes the catalog marks deprecated: **5 mentions across 3 files**. Two are the new lines here (both say "deprecated", both pass). **3 are not fixed by this PR** — see Residual. ## Residual - **`claude-code/commands/combine-people.md` names a deprecated node class on two lines that do not say so (lines 15 and 32: `GeminiNanoBanana2`, superseded upstream by `GeminiNanoBanana2V2`).** Its skills twin `skills/technique-combine-people.md` was already fixed and carries the word "deprecated" on that line. This is the same drift shape this PR fixes for the video pair, on a different file pair, and it is invisible to the downstream gate because only `skills/*.md` is mirrored — the command variants are not. Not fixed here: out of the scope this change was asked for, and it needs a look at whether the recipe's parameters still apply to the V2 class rather than a name swap. - **A third routing surface, `openclaw/comfy/SKILL.md`, does not carry the retired-family guidance.** It lists named families for routing (Ideogram, Flux, Gemini, Kling, Veo, Seedance) and never named Sora, so it has no dead example to fix — but it also gives an agent no signal about the three retired names. Left alone deliberately: it is a separately-bundled, deliberately thinner surface, and widening this change into it was not asked for. - **Overlapping open PR.** #19 edits the first Step-0 bullet in both of these files. It does not make this change, but it touches adjacent lines, so whichever lands second will need a small manual conflict resolution. Nothing here reverts its intent. - **Two dates in the new line could not be falsified from a primary provider source** — Sora's 2026-09-24 and Runway's 2026-07-30. Both are taken verbatim from the retirement table that already shipped server-side, and Sora's is consistent with the "September 2026" in the ComfyUI node's own deprecation notice; neither was confirmed against OpenAI's or Runway's own changelog, which was not reachable from here. - **The MCP discovery tools were never called.** `search_nodes`, `search_templates`, `search_models` and `partner_generate` were not available in this environment, so every claim above rests on the artifacts those tools resolve against (the live `workflow_templates` index, ComfyUI master's `comfy_api_nodes/`, the registered partner video model set) rather than on a live tool response. A one-line `search_templates("Flux 3 Video")` from a connected client would close that gap. ## Provenance - **Authored by:** agent-work loop - **Verified:** - The Step 0 block, the route bullets and the Retired line are byte-identical between the two files at the current head (`diff` of the ranges). - `claude plugin validate ./claude-code` passes at the current head. - The deprecated-class gate, replicated on the diff, finds 2 mentions of a deprecated class, both on lines that say "deprecated", so 0 offenders. - The doc-drift sweep against `origin/main` found 17 reference lines. All were judged: they are generic uses of "model" and "video" or the authoring rule itself, so 0 were updated. - The dated example template names and their tags were re-checked against the live `workflow_templates` index at the current head: each replacement carries a task tag plus `"API"`, none carries `"video"`. The Retired line has the agent re-discover them at run time. - This repo ships no test or lint script. The GitHub checks on the head are CodeRabbit and Socket Security only. - **Deviations:** the Retired line keeps today's replacement slugs and template names, but only as dated examples behind a run-time discovery step. It names neither a frozen list nor a bare glob, because the README rule bars frozen catalog facts and a glob is not a name `run_template` can resolve. It is worded as a dated redirect rather than a flat "do not route", because `OpenAIVideoSora2` and `gemini-omni-flash-preview` are both still reachable today. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Comfy-Org/comfy-skills#31
No description provided.