Install to Claude Code
npx -y skills add https://github.com/mckruz/comfyui-expert --skill comfyui-inventoryDescription
comfyui inventory
SKILL.md
---
name: comfyui-inventory
description: Discover and cache all installed ComfyUI models, custom nodes, and system capabilities. Works online (API queries) and offline (directory scanning). Use before generating workflows to verify available resources.
user-invocable: true
metadata: {"openclaw":{"emoji":"📦","os":["darwin","linux","win32"],"requires":{"bins":["pwsh"]},"primaryEnv":"COMFYUI_PATH"}}
---
# 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:**
```bash
curl http://127.0.0.1:8188/system_stats
```
Extracts: GPU name, total VRAM, free VRAM, ComfyUI version.
**2. Installed nodes:**
```bash
curl http://127.0.0.1:8188/object_info
```
Returns all registered node classes with their input/output specifications.
**3. Installed models (per type):**
```bash
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`:
```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.ps1` or API re-query
## Integration
- Called by `comfyui-workflow-builder` before generating workflows
- Called by `comfyui-character-gen` (via agent wrapper) for model selection
- Called by `comfyui-troubleshooter` when diagnosing missing model errors
- Results stored in `state/inventory.json` for all skills to reference
