Files
hermes-agent/optional-skills/creative/comfyui/workflows/README.md
Teknium c49fa88b80 refactor(skills): shipped-set slim — 15 to optional, github 6-way merge, pdf absorbs OCR, channel-gated teams pipeline (index −26%) (#98539)
* refactor(skills): shipped-set slim — 15 skills to optional, github six-way merge, pdf absorbs OCR+nano-pdf, channel-gated teams pipeline

Maintainer-directed shipped-skills curation (skills index 1,900 -> ~1,400
tok/call on desktop; every session pays the index, so this is a per-call
diet on all installs):

- optional-skills moves (installable via skills hub, history preserved):
  creative comfyui/ascii-art/excalidraw/pretext/sketch/touchdesigner-mcp;
  ALL of mlops (huggingface-hub, llama-cpp, serving-llms-vllm,
  weights-and-biases, evaluating-llms-harness — subcategory structure
  kept); research-paper-writing (55 supporting files, 17.3K-tok load);
  openhue; blogwatcher (first taught the cronjob monitor-field watch
  pattern + web_extract instead of pre-cron manual workflows)
- DELETED session-librarian (Aug-12 'inspired by Perplexity Computer'
  port, never maintainer-intended; session_search covers discovery)
- github: six skills (auth, issues, pr-workflow, issue-to-pr,
  code-review, repo-management) merged into ONE software-development/
  github skill — routing body + complete per-workflow references;
  benbarclay authorship credited; codebase-inspection rides along;
  discipline pins from test_github_issue_to_pr_skill.py preserved
  against the reference body in the new test_github_skill.py
- pdf absorbs ocr-and-documents + nano-pdf as references/ + scripts
  (extract_pymupdf, extract_marker converted to the argparse house
  standard its contract test enforces)
- NEW session_platforms frontmatter gate (metadata.hermes): hides a
  skill from the index on gateway channels it is not for; fail-open on
  unknown platform; teams-meeting-pipeline gated to [teams, cron]
- blocked-page-recovery: research -> new web category; trigger-first
  description ('Use when a fetch fails: 403/429, paywall, WAF, bot
  wall.') so the model actually reaches for it on blocked fetches
- docs regenerated via generate-skill-docs.py (195 pages); related_skills
  swept repo-wide; tests: 1672 passed (2 openclaw failures pre-existing
  on clean main, Windows-local)

* chore: ignore .skills_prompt_snapshot.json (local index cache, accidentally committed)
2026-08-30 04:53:39 -07:00

3.8 KiB
Raw Blame History

Example Workflows

These are starter API-format workflows for the most common tasks. They're ready to run with scripts/run_workflow.py once you've installed (or have cloud access to) the listed models.

File Purpose Required models Min VRAM
sd15_txt2img.json SD 1.5 text-to-image (512×512) SD1.5 checkpoint, e.g. v1-5-pruned-emaonly.safetensors 4 GB
sdxl_txt2img.json SDXL text-to-image (1024×1024) sd_xl_base_1.0.safetensors 8 GB
flux_dev_txt2img.json Flux Dev text-to-image (1024×1024) flux1-dev.safetensors, t5xxl_fp16.safetensors, clip_l.safetensors, ae.safetensors 24 GB (or use flux1-dev-fp8)
sdxl_img2img.json SDXL image-to-image SDXL checkpoint 8 GB
sdxl_inpaint.json SDXL inpainting (image + mask) SDXL checkpoint 8 GB
upscale_4x.json Standalone 4× ESRGAN upscale 4x-UltraSharp.pth (or any upscaler) 4 GB
animatediff_video.json AnimateDiff text-to-video (16 frames) SD1.5 checkpoint, mm_sd_v15_v2.ckpt motion module 8 GB
wan_video_t2v.json Wan 2.x text-to-video (~33 frames) wan2.2_t2v_1.3B_fp16.safetensors, umt5_xxl_fp16.safetensors, wan_2.1_vae.safetensors 24 GB

Quick start

# Run a workflow with prompt injection
python3 ../scripts/run_workflow.py \
  --workflow sdxl_txt2img.json \
  --args '{"prompt": "majestic eagle in flight", "seed": 12345, "steps": 35}' \
  --output-dir ./out

# Img2img: upload an input image first via the script's helper
python3 ../scripts/run_workflow.py \
  --workflow sdxl_img2img.json \
  --input-image image=./photo.png \
  --args '{"prompt": "make it watercolor", "denoise": 0.6}' \
  --output-dir ./out

# Cloud (set API key once)
export COMFY_CLOUD_API_KEY="comfyui-..."
python3 ../scripts/run_workflow.py \
  --workflow flux_dev_txt2img.json \
  --args '{"prompt": "a fox in a misty forest"}' \
  --host https://cloud.comfy.org \
  --output-dir ./out

# What can I tweak in this workflow?
python3 ../scripts/extract_schema.py sdxl_txt2img.json --summary-only

# Are all required models / nodes installed?
python3 ../scripts/check_deps.py wan_video_t2v.json

Notes

  • Inpaint masks: white pixels = "regenerate this region", black = preserve. ComfyUI's LoadImageMask reads the red channel by default; export your mask as a single-channel image or as a normal RGB where red==intensity.

  • Denoise strength in img2img: 0.0 = output identical to input, 1.0 = ignore input entirely. Sweet spot is usually 0.4–0.7.

  • Flux Dev needs ~24 GB VRAM in its base form. The flux1-dev-fp8.safetensors variant (already on Comfy Cloud) cuts that roughly in half.

  • Video workflows can take many minutes. The skill auto-detects video output nodes and bumps the default timeout to 900s. Override with --timeout 1800.

  • These JSON files are deliberately API format (top-level keys are node IDs with class_type), not editor format. To open them in ComfyUI's web UI for visual editing, use Workflow → Load (API Format) or Workflow → Open and follow the prompt.

Cloud vs local model names

Comfy Cloud's preinstalled checkpoints sometimes have a -fp16 suffix (v1-5-pruned-emaonly-fp16.safetensors) while the canonical local download keeps the original name (v1-5-pruned-emaonly.safetensors). The example workflows use the local-canonical names. When running on cloud, override with:

python3 ../scripts/run_workflow.py \
  --workflow sd15_txt2img.json \
  --args '{"ckpt_name": "v1-5-pruned-emaonly-fp16.safetensors", "prompt": "..."}' \
  --host https://cloud.comfy.org

The ckpt_name, vae_name, lora_name, unet_name, etc. are all exposed as controllable parameters by extract_schema.py — discover what's installed with comfy model list (local) or curl /api/experiment/models/checkpoints (cloud).