[PR #44] docs(skills): fix consistent-characters run_template overrides, scope Step 5 chaining, batch Step 7 seeds #43

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

📋 Pull Request Information

Original PR: https://github.com/Comfy-Org/comfy-skills/pull/44
Author: @mattmillerai
Created: 10/23/2026
Status: 🔄 Open

Base: main ← Head: matt/be-22709-consistent-characters-overrides


📝 Commits (2)

  • 7de6b6d docs(skills): fix consistent-characters run_template overrides, Step 5 chaining scope, Step 7 batch fan-out
  • 258541c docs(skills): split Step 7 fan-out over the 50-item submit_batch cap

📊 Changes

1 file changed (+3 additions, -3 deletions)

View changed files

📝 skills/technique-consistent-characters.md (+3 -3)

📄 Description

ELI5

The character-consistency recipe told agents to plug reference photos into a template in a way the server doesn't accept, so those runs either failed or quietly dropped the reference. Now it tells them to put each photo into the template's image loader. It also limits reusing the previous shot to the scene/lighting slot, and has agents state the total number of variations up front and send them in one batch (or a few, when there are more than a batch can hold), so the user approves the whole set up front.

What

skills/technique-consistent-characters.md, three sentence-level edits:

  1. Step 2: run_template overrides now target the template's own LoadImage nodes ({ "<loaderNodeId>": { "image": "<uploaded filename>" } }), found via io.inputs (search_templates detail: "full" or get_template_schema). It also says what to do when the cast needs more references than the template has loaders: get_template, add one LoadImage per extra reference wired to the next free model.images.image_N, then submit_workflow.
  2. Step 5: chaining with use_previous_output now applies only to the scene/lighting slot. The character slots keep the Step 1 reference files.
  3. Step 7: tell the user shots x seeds first (default 2 seeds per shot, at most 3), then submit them as one submit_batch. A batch holds at most 50 items, so a larger set is split across several submit_batch calls with each batch's total stated. A dependent run (the Step 4 split pass) is not batched.

Nothing else changed: not the "Follow these steps exactly" framing, the headings, or the Key learnings block. The line **One reference per auto-grow slot** - slot names come from get_node, never an array is byte-identical, which matters because a downstream consumer keys on that exact sentence. The wording matches the "filename goes in the LoadImage slot" convention in the open multi-scene-comic recipe (#39).

Why the old Step 2 sentence was wrong (checked against the MCP server's source on its default branch)

  • run_template input_overrides is { nodeId: { inputName: value } }, applied after conversion with Object.assign. With failOnUnresolvedOverrides: true, a key that doesn't resolve to an executed node is rejected before submit. So a top-level model.images.image_1 key is rejected. Under a real node id, it overwrites the IMAGE link tuple with a string.
  • GeminiNanoBanana2V2 → model options → images is COMFY_AUTOGROW_V3, and each template slot is ["IMAGE", {}] (image_1…image_14). These are link slots, not filename widgets.
  • Bundled templates feed them from LoadImage nodes listed in io.inputs: api_google_nano_banana2_image_edit uses node 16, and template_product_placement uses nodes 1, 2, 3 and 5. Both were confirmed in the server's bundled template data.
  • submit_batch, get_template, get_template_schema, submit_workflow, use_previous_output, and search_templates detail: "full" all exist as named tools/options on that branch.

Testing

  • claude plugin validate ./claude-code: ✔ Validation passed. This is the repo's only check; it has no test suite or lint config.
  • Diff is 3 lines changed (3+/3−), all inside Steps 2, 5 and 7. Checked with grep that the Key learnings sentence is still present verbatim.
  • No other file in this repo references this recipe or the replaced sentences.
  • Doc-drift sweep: 9 references checked, 0 updated. The hits were generic search_templates / image / full mentions in README.md and AGENTS.md, and none describes the old behaviour.

Provenance

  • Authored by: agent-work loop
  • Verified:
    • Plugin validator: passed
    • Step 7's 50-item batch cap: confirmed against the server's MAX_BATCH_ITEMS on its default branch
    • Override semantics, slot types, template loader node ids and tool names: confirmed by reading the MCP server's source and bundled data on its default branch
    • Live run_template / submit_batch run: not done. These calls spend credits; see Residual.
  • Deviations: The ticket's replacement text came through with collapsed spacing around inline code (e.g. LoadImage`nodes) and an escaped medias\[\]. I restored normal spacing and kept the file's existing medias[]. Wording is otherwise verbatim.

Residual

  • No live run of the corrected overrides. The "dotted key is rejected / leaves an invalid IMAGE input" claim and the LoadImage-widget redirect are backed by reading the source, not by a submitted job. run_template on api_google_nano_banana2_image_edit or template_product_placement and a submit_batch fan-out both spend credits, so neither was exercised. A follow-up can confirm it with one cheap run_template that sets input_overrides: { "16": { "image": "<uploaded file>" } } on api_google_nano_banana2_image_edit.
  • Downstream mirror not refreshed here. The MCP server's skills snapshot, which feeds its read-only creative-technique tool, picks this file up through a separate refresh workflow. That refresh is a separate, currently blocked follow-up and is not part of this PR.

🔄 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/44 **Author:** [@mattmillerai](https://github.com/mattmillerai) **Created:** 10/23/2026 **Status:** 🔄 Open **Base:** `main` ← **Head:** `matt/be-22709-consistent-characters-overrides` --- ### 📝 Commits (2) - [`7de6b6d`](https://github.com/Comfy-Org/comfy-skills/commit/7de6b6d03ebf765a23bc466c03e94017dbce3e4a) docs(skills): fix consistent-characters run_template overrides, Step 5 chaining scope, Step 7 batch fan-out - [`258541c`](https://github.com/Comfy-Org/comfy-skills/commit/258541c39389e38c327d52d45b332ffe4c70444c) docs(skills): split Step 7 fan-out over the 50-item submit_batch cap ### 📊 Changes **1 file changed** (+3 additions, -3 deletions) <details> <summary>View changed files</summary> 📝 `skills/technique-consistent-characters.md` (+3 -3) </details> ### 📄 Description ## ELI5 The character-consistency recipe told agents to plug reference photos into a template in a way the server doesn't accept, so those runs either failed or quietly dropped the reference. Now it tells them to put each photo into the template's image loader. It also limits reusing the previous shot to the scene/lighting slot, and has agents state the total number of variations up front and send them in one batch (or a few, when there are more than a batch can hold), so the user approves the whole set up front. ## What `skills/technique-consistent-characters.md`, three sentence-level edits: 1. **Step 2:** `run_template` overrides now target the template's own `LoadImage` nodes (`{ "<loaderNodeId>": { "image": "<uploaded filename>" } }`), found via `io.inputs` (`search_templates` `detail: "full"` or `get_template_schema`). It also says what to do when the cast needs more references than the template has loaders: `get_template`, add one `LoadImage` per extra reference wired to the next free `model.images.image_N`, then `submit_workflow`. 2. **Step 5:** chaining with `use_previous_output` now applies only to the scene/lighting slot. The character slots keep the Step 1 reference files. 3. **Step 7:** tell the user shots x seeds first (default 2 seeds per shot, at most 3), then submit them as one `submit_batch`. A batch holds at most 50 items, so a larger set is split across several `submit_batch` calls with each batch's total stated. A dependent run (the Step 4 split pass) is not batched. Nothing else changed: not the "Follow these steps exactly" framing, the headings, or the Key learnings block. The line `**One reference per auto-grow slot** - slot names come from `get_node`, never an array` is byte-identical, which matters because a downstream consumer keys on that exact sentence. The wording matches the "filename goes in the LoadImage slot" convention in the open multi-scene-comic recipe (#39). ## Why the old Step 2 sentence was wrong (checked against the MCP server's source on its default branch) - `run_template` `input_overrides` is `{ nodeId: { inputName: value } }`, applied after conversion with `Object.assign`. With `failOnUnresolvedOverrides: true`, a key that doesn't resolve to an executed node is rejected before submit. So a top-level `model.images.image_1` key is rejected. Under a real node id, it overwrites the IMAGE link tuple with a string. - `GeminiNanoBanana2V2` → `model` options → `images` is `COMFY_AUTOGROW_V3`, and each template slot is `["IMAGE", {}]` (`image_1`…`image_14`). These are link slots, not filename widgets. - Bundled templates feed them from `LoadImage` nodes listed in `io.inputs`: `api_google_nano_banana2_image_edit` uses node 16, and `template_product_placement` uses nodes 1, 2, 3 and 5. Both were confirmed in the server's bundled template data. - `submit_batch`, `get_template`, `get_template_schema`, `submit_workflow`, `use_previous_output`, and `search_templates` `detail: "full"` all exist as named tools/options on that branch. ## Testing - `claude plugin validate ./claude-code`: ✔ Validation passed. This is the repo's only check; it has no test suite or lint config. - Diff is 3 lines changed (3+/3−), all inside Steps 2, 5 and 7. Checked with grep that the Key learnings sentence is still present verbatim. - No other file in this repo references this recipe or the replaced sentences. - Doc-drift sweep: 9 references checked, 0 updated. The hits were generic `search_templates` / `image` / `full` mentions in README.md and AGENTS.md, and none describes the old behaviour. ## Provenance - **Authored by:** agent-work loop - **Verified:** - Plugin validator: passed - Step 7's 50-item batch cap: confirmed against the server's `MAX_BATCH_ITEMS` on its default branch - Override semantics, slot types, template loader node ids and tool names: confirmed by reading the MCP server's source and bundled data on its default branch - Live `run_template` / `submit_batch` run: not done. These calls spend credits; see Residual. - **Deviations:** The ticket's replacement text came through with collapsed spacing around inline code (e.g. ``LoadImage`nodes``) and an escaped `medias\[\]`. I restored normal spacing and kept the file's existing `medias[]`. Wording is otherwise verbatim. ## Residual - **No live run of the corrected overrides.** The "dotted key is rejected / leaves an invalid IMAGE input" claim and the `LoadImage`-widget redirect are backed by reading the source, not by a submitted job. `run_template` on `api_google_nano_banana2_image_edit` or `template_product_placement` and a `submit_batch` fan-out both spend credits, so neither was exercised. A follow-up can confirm it with one cheap `run_template` that sets `input_overrides: { "16": { "image": "<uploaded file>" } }` on `api_google_nano_banana2_image_edit`. - **Downstream mirror not refreshed here.** The MCP server's skills snapshot, which feeds its read-only creative-technique tool, picks this file up through a separate refresh workflow. That refresh is a separate, currently blocked follow-up and is not part of this PR. --- <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#43
No description provided.