--- 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.