---
name: comfyui_load_skill
kind: function
lang: py
domain: ml
version: "1.0.0"
purity: impure
signature: "def comfyui_load_skill(slug: str, *, version=None, library_dir: str = None) -> dict"
description: "Lee una receta de skill ComfyUI de la libreria de disco: recipe.json (version actual) o un snapshot versions/vN.json. Hermana inversa de comfyui_save_skill; el round-trip save(recipe)->load(slug) devuelve un dict identico. library_dir default ~/ComfyUI/skills_library. Slug, version o archivo inexistente -> {ok:False} sin lanzar."
error_type: error_go_core
tags: [comfyui, comfyui-skill, ml, skill, library]
uses_functions: []
uses_types: []
params:
  - name: slug
    desc: "Slug de la skill (nombre de su carpeta en la libreria)."
  - name: version
    desc: "Si None, lee recipe.json (version actual). Si se pasa (int 1, '1' o 'v1'), lee el snapshot versions/vN.json. keyword-only."
  - name: library_dir
    desc: "Raiz de la libreria en disco. Default ~/ComfyUI/skills_library. keyword-only."
output: "dict {ok, recipe, slug, path, version, error}. En exito ok=True y recipe es el dict guardado; si slug/version/archivo no existen ok=False y recipe=None."
file_path: python/functions/ml/comfyui_load_skill.py
---

# comfyui_load_skill

Carga una receta de skill guardada por [`comfyui_save_skill`](comfyui_save_skill.md). Paso de
entrada del flujo del grupo `comfyui-skill`: `load_skill` →
[`comfyui_build_skill_workflow`](comfyui_build_skill_workflow.md) → submit → wait.

## Ejemplo

```python
import sys, os
sys.path.insert(0, os.path.join(os.environ["HOME"], "fn_registry", "python", "functions"))
from ml.comfyui_load_skill import comfyui_load_skill

# Version actual
res = comfyui_load_skill("portrait_cinematic_sdxl", library_dir="/tmp/skills_demo")
if res["ok"]:
    recipe = res["recipe"]

# Un snapshot concreto (v1, v2, ...)
old = comfyui_load_skill("portrait_cinematic_sdxl", version=1, library_dir="/tmp/skills_demo")
```

O directo: `./fn run comfyui_load_skill demo_skill --library-dir /tmp/skills_demo`.

## Cuando usarla

- Para recuperar una receta antes de compilarla con `comfyui_build_skill_workflow`.
- Para inspeccionar un snapshot histórico concreto (`version=N`) y comparar cómo evolucionó una
  skill.

## Gotchas

- **No lanza excepción**: slug inexistente, versión inválida o archivo ausente devuelven
  `{ok: False, recipe: None, error: ...}`. Comprueba `res["ok"]` antes de usar `res["recipe"]`.
- **`version` acepta varios formatos**: int `1`, str `"1"` o `"v1"` apuntan a `versions/v1.json`.
  Cualquier otra cosa da error de versión inválida.
- **Round-trip exacto con save**: lee el JSON tal cual se guardó; no normaliza ni rellena campos.
- **library_dir por defecto `~/ComfyUI/skills_library`**: pásalo explícito para librerías de
  test o aisladas.
