ComfyUI Inventory Skill
Discovers what's installed in the user's ComfyUI instance and caches results for workflow validation.
Purpose
Every workflow generation MUST be preceded by an inventory check. This prevents:
- Referencing models that aren't downloaded
- Using nodes that aren't installed
- Exceeding VRAM limits
Two Discovery Modes
Online Mode (ComfyUI API Running)
Query the live server for authoritative information.
1. System info:
curl http://127.0.0.1:8188/system_stats
Extracts: GPU name, total VRAM, free VRAM, ComfyUI version.
2. Installed nodes:
curl http://127.0.0.1:8188/object_info
Returns all registered node classes with their input/output specifications.
3. Installed models (per type):
curl http://127.0.0.1:8188/models/checkpoints
curl http://127.0.0.1:8188/models/loras
curl http://127.0.0.1:8188/models/vae
curl http://127.0.0.1:8188/models/controlnet
curl http://127.0.0.1:8188/models/clip
curl http://127.0.0.1:8188/models/clip_vision
curl http://127.0.0.1:8188/models/upscale_models
curl http://127.0.0.1:8188/models/diffusion_models
Offline Mode (Directory Scan)
When ComfyUI isn't running, scan the filesystem directly.
Requires: ComfyUI installation path (e.g., C:\ComfyUI)
Scan directories:
{ComfyUI}/models/checkpoints/ → .safetensors, .ckpt
{ComfyUI}/models/loras/ → .safetensors
{ComfyUI}/models/vae/ → .safetensors, .pt
{ComfyUI}/models/controlnet/ → .safetensors, .pth
{ComfyUI}/models/clip/ → .safetensors
{ComfyUI}/models/clip_vision/ → .safetensors
{ComfyUI}/models/upscale_models/ → .pth, .safetensors
{ComfyUI}/models/diffusion_models/ → .safetensors
{ComfyUI}/models/ipadapter/ → .safetensors, .bin
{ComfyUI}/models/instantid/ → .bin
{ComfyUI}/models/insightface/ → .onnx + folders
{ComfyUI}/models/facerestore_models/ → .pth
{ComfyUI}/models/ultralytics/bbox/ → .pt
{ComfyUI}/custom_nodes/ → folder names = node packages
Custom node detection: List directories under custom_nodes/. Each directory name corresponds to a node package (e.g., ComfyUI_IPAdapter_plus, ComfyUI-Impact-Pack).
Cache Format
Save results to state/inventory.json:
{
"last_updated": "2026-02-06T12:00:00Z",
"mode": "online",
"comfyui_version": "0.3.10",
"system": {
"gpu": "NVIDIA RTX 5090",
"vram_total_gb": 32,
"vram_free_gb": 28
},
"models": {
"checkpoints": ["flux1-dev.safetensors", "RealVisXL_V5.0.safetensors"],
"loras": ["sage_character.safetensors"],
"vae": ["ae.safetensors", "wan_2.1_vae.safetensors"],
"controlnet": ["instantid_controlnet.safetensors"],
"clip": ["t5xxl_fp16.safetensors", "clip_l.safetensors"],
"clip_vision": ["CLIP-ViT-H-14-laion2B-s32B-b79K.safetensors"],
"upscale_models": ["4x-UltraSharp.pth"],
"diffusion_models": ["wan2.1_i2v_720p_14b_bf16.safetensors"],
"ipadapter": ["ip-adapter-faceid-plusv2_sd15.bin"],
"instantid": ["ip-adapter.bin"],
"insightface": ["inswapper_128.onnx"],
"facerestore": ["codeformer.pth"],
"detection": ["face_yolov8m.pt"]
},
"custom_nodes": [
"ComfyUI-Manager",
"ComfyUI_IPAdapter_plus",
"ComfyUI_InstantID",
"ComfyUI-Impact-Pack",
"ComfyUI-AnimateDiff-Evolved",
"ComfyUI-VideoHelperSuite"
]
}
Workflow Validation
Given a workflow JSON, validate against inventory:
For each node:
1. Check class_type against known node classes
2. If missing: identify which custom_node package provides it
3. Suggest install: "Install via ComfyUI-Manager: {package_name}"
For each model reference:
1. Check filename against inventory models of that type
2. If missing: look up in references/models.md for download link
3. Report: "Missing: {filename} - Download from {url} -> {path}"
Common Node-to-Package Mapping
| Node Class | Package |
|---|---|
| ApplyInstantID | ComfyUI_InstantID |
| IPAdapterUnifiedLoader | ComfyUI_IPAdapter_plus |
| FaceDetailer | ComfyUI-Impact-Pack |
| ReactorFaceSwap | ComfyUI-ReActor |
| AnimateDiffLoaderWithContext | ComfyUI-AnimateDiff-Evolved |
| VideoHelper* | ComfyUI-VideoHelperSuite |
| ControlNetApply* | comfyui_controlnet_aux |
| UltimateSDUpscale | ComfyUI_UltimateSDUpscale |
| VHS_* | ComfyUI-VideoHelperSuite |
| RIFE* | ComfyUI-Frame-Interpolation |
Cache Freshness
- Cache is valid for 1 hour during active sessions
- Invalidate cache when user installs new models/nodes
- Force refresh:
scan-inventory.ps1or API re-query
Integration
- Called by
comfyui-workflow-builderbefore generating workflows - Called by
comfyui-character-gen(via agent wrapper) for model selection - Called by
comfyui-troubleshooterwhen diagnosing missing model errors - Results stored in
state/inventory.jsonfor all skills to reference