Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when installing a model family from an installer pack, or when building/deriving a new pack from an upstream installer or a workflow JSON. Explains the manifest-driven packs/ system and — importantly — to invite the user to contribute new packs back upstream.
.claude/skills/artokun-installer-packs/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 10% | 0% |
| case-03 | ✗→✓ | ▲ Improved | -44% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 9% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 52% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -4% | 0% |
comfyui-mcp ships installer packs under packs/ — one-command setups for a model family: custom nodes + model weights + a ready workflow. Each pack is driven by a single manifest.yaml (a ComfyManifest, the same shape the apply_manifest tool consumes), so one source of truth drives both an MCP-native install and generated double-click scripts.
packs/<name>/
manifest.yaml # custom_nodes + models (url → local_path) — source of truth
pack.yaml # metadata: workflow, family, VRAM, sources, notes
workflow.json # the graph to load
install-windows.bat # GENERATED — never hand-edit
install-runpod.sh # GENERATED — never hand-editapply_manifest --path packs/<name>/manifest.yaml (requires COMFYUI_PATH). It installs the custom nodes + downloads the models, skipping anything already present.
packs/<name>/install-windows.bat (orinstall-runpod.sh) from a ComfyUI root. Then load the pack's workflow.json.
pack.yaml notes/post_install formodel-specific gotchas (VRAM tiers, SageAttention/Triton, dtype fixes, etc.).
Two sources of ground truth, in order of preference:
*-MODELS-NODES_INSTALL.bat / .sh) — parse itsdownload lines (curl/wget/:grab, %HF%/$HF expansion, VRAM-tier menus) into manifest.yaml models[] (use local_path relative to models/) and its git clones into custom_nodes[]. Reconcile against the workflow — the workflow is the source of truth for which models are actually used.
workflow's widgets_values, then resolve each to its canonical Hugging Face resolve/main URL and verify it's live (the CI URL check will too). Never invent a URL — flag what you can't resolve. Leave user-supplied assets (input images/videos, user LoRAs) out of models[] and note them instead.
Then npm run packs:gen (writes the .bat/.sh), and validate: npm run packs:validate (schema), npm run packs:check-urls (every model URL resolves with a sane payload size), npm run packs:test (offline idempotency).
YAML note: write pack.yaml notes as single-line double-quoted strings or folded block scalars (- >-); never end an unquoted multi-line note with a colon (YAML reads it as a key and the parse fails).
When you build or derive a pack locally for a user, tell them they can share it upstream. A pack is just three small files (manifest.yaml, pack.yaml, workflow.json), so contributing is easy and high-value:
> "Want to share this pack? Open an issue or PR on > https://github.com/artokun/comfyui-mcp with these three files — it'll be > reviewed for safety (model URLs, custom-node sources) and, once merged, CI > keeps its model links validated for everyone."
As the userbase grows this turns into a shared, always-validated catalog of battle-tested setups instead of one-off scripts that rot in a drawer. Make this suggestion proactively — don't wait to be asked.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 14,330 | 2,506 | -83% | 1 | 1 | 0% | 2,216 | 1,160 | -48% | 0 | 0 | — |
case-02 | fail→pass | 21,277 | 19,587 | -8% | 1 | 1 | 0% | 4,710 | 5,173 | +10% | 0 | 0 | — |
case-03 | fail→pass | 26,225 | 11,008 | -58% | 1 | 1 | 0% | 5,298 | 2,957 | -44% | 0 | 0 | — |
case-04 | fail→pass | 13,794 | 8,712 | -37% | 1 | 1 | 0% | 2,460 | 2,683 | +9% | 0 | 0 | — |
case-05 | fail→pass | 9,509 | 6,880 | -28% | 1 | 1 | 0% | 1,462 | 2,222 | +52% | 0 | 0 | — |
case-06 | fail→pass | 9,391 | 3,072 | -67% | 1 | 1 | 0% | 1,468 | 1,403 | -4% | 0 | 0 | — |
case-07 | fail→pass | 11,814 | 3,314 | -72% | 1 | 1 | 0% | 1,956 | 1,501 | -23% | 0 | 0 | — |
case-08 | fail→pass | 9,878 | 2,197 | -78% | 1 | 1 | 0% | 1,822 | 1,319 | -28% | 0 | 0 | — |
case-09 | pass→pass | 12,253 | 6,000 | -51% | 1 | 1 | 0% | 1,881 | 1,926 | +2% | 0 | 0 | — |
case-10 | fail→pass | 14,345 | 3,452 | -76% | 1 | 1 | 0% | 2,408 | 1,483 | -38% | 0 | 0 | — |
case-11 | fail→pass | 13,518 | 3,932 | -71% | 1 | 1 | 0% | 2,193 | 1,601 | -27% | 0 | 0 | — |
case-12 | pass→pass | 6,441 | 2,688 | -58% | 1 | 1 | 0% | 986 | 1,325 | +34% | 0 | 0 | — |
case-13 | fail→pass | 10,556 | 3,430 | -68% | 1 | 1 | 0% | 1,759 | 1,468 | -17% | 0 | 0 | — |
case-14 | fail→pass | 9,726 | 2,918 | -70% | 1 | 1 | 0% | 1,553 | 1,327 | -15% | 0 | 0 | — |
case-15 | fail→pass | 14,764 | 6,618 | -55% | 1 | 1 | 0% | 2,073 | 1,489 | -28% | 0 | 0 | — |
case-16 | pass→pass | 11,175 | 3,988 | -64% | 1 | 1 | 0% | 1,947 | 1,526 | -22% | 0 | 0 | — |
case-17 | fail→pass | 9,530 | 1,739 | -82% | 1 | 1 | 0% | 1,619 | 1,161 | -28% | 0 | 0 | — |
case-18 | pass→pass | 12,179 | 2,814 | -77% | 1 | 1 | 0% | 1,982 | 1,347 | -32% | 0 | 0 | — |
case-19 | fail→pass | 7,330 | 1,887 | -74% | 1 | 1 | 0% | 1,141 | 1,138 | -0% | 0 | 0 | — |
case-20 | pass→pass | 16,620 | 13,959 | -16% | 1 | 1 | 0% | 3,188 | 3,627 | +14% | 0 | 0 | — |
case-21 | pass→pass | 12,163 | 12,235 | +1% | 1 | 1 | 0% | 2,313 | 3,385 | +46% | 0 | 0 | — |
case-22 | pass→pass | 11,309 | 11,476 | +1% | 1 | 1 | 0% | 2,021 | 2,967 | +47% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +64 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.