chore: auto-commit (129 archivos)

- .claude/agents/fn-analizador/SKILL.md
- .claude/agents/fn-constructor/SKILL.md
- .claude/agents/fn-executor/SKILL.md
- .claude/agents/fn-mejorador/SKILL.md
- .claude/agents/fn-orquestador/SKILL.md
- .claude/agents/fn-recopilador/SKILL.md
- .claude/commands/app.md
- .claude/commands/compile.md
- .claude/commands/cpp-app.md
- .claude/commands/create_functions.md
- ...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-01 22:23:12 +02:00
parent dbf5b45acd
commit 7913116a8e
129 changed files with 427 additions and 422 deletions
+2 -2
View File
@@ -14,7 +14,7 @@ params:
- name: size
desc: "Lado del cuadrado del PNG en pixels. Default 64. El hub launcher usa 64 para las tarjetas."
- name: registry_root
desc: "Ruta a la raiz del fn_registry. Si es None usa FN_REGISTRY_ROOT env o /home/lucas/fn_registry."
desc: "Ruta a la raiz del fn_registry. Si es None usa FN_REGISTRY_ROOT env o $HOME/fn_registry."
- name: style
desc: "Estilo del icono igual que generate_app_icon: 'fill_white' (default), 'adaptive_duotone' o 'white_duotone'. CLI: `--style <valor>`."
output: "dict con ok=True, count=N (PNGs escritos), out_dir (ruta absoluta), skipped (lista de {name, reason} para apps omitidas)."
@@ -54,7 +54,7 @@ print(json.dumps(export_hub_icons('/tmp/hub_icons_test'), indent=2))
"
# Via CLI directo con tamaño personalizado
cd /home/lucas/fn_registry
cd $HOME/fn_registry
python/.venv/bin/python3 python/functions/infra/export_hub_icons.py /tmp/hub_icons --size 128
```
+2 -2
View File
@@ -72,7 +72,7 @@ def export_hub_icons(
se sobreescriben.
size: Lado del cuadrado del PNG en pixels. Default 64.
registry_root: Ruta a la raiz del fn_registry. Si es None, usa la variable
de entorno FN_REGISTRY_ROOT o /home/lucas/fn_registry como fallback.
de entorno FN_REGISTRY_ROOT o la raiz del repo derivada de la ubicacion del archivo.
Returns:
{
@@ -198,7 +198,7 @@ if __name__ == "__main__":
parser.add_argument(
"--registry-root",
default=None,
help="Path to fn_registry root (default: FN_REGISTRY_ROOT env or /home/lucas/fn_registry)",
help="Path to fn_registry root (default: FN_REGISTRY_ROOT env or repo root derived from file location)",
)
parser.add_argument(
"--style",
@@ -18,7 +18,7 @@ params:
- name: out_path
desc: "Ruta de destino del archivo TSV. Puede ser absoluta o relativa al cwd. El directorio padre se crea si no existe."
- name: registry_root
desc: "Raiz del fn_registry. Si None, usa la variable de entorno FN_REGISTRY_ROOT o /home/lucas/fn_registry como fallback."
desc: "Raiz del fn_registry. Si None, usa la variable de entorno FN_REGISTRY_ROOT o $HOME/fn_registry como fallback."
output: "Dict {ok: True, count: N, out_path: str} con la ruta absoluta del TSV escrito y el numero de apps incluidas."
tested: false
tests: []
@@ -50,14 +50,15 @@ def export_hub_manifest(out_path: str, *, registry_root: str | None = None) -> d
Args:
out_path: Destination path for the TSV manifest file.
registry_root: Path to the fn_registry root directory.
Defaults to FN_REGISTRY_ROOT env var or /home/lucas/fn_registry.
Defaults to FN_REGISTRY_ROOT env var or repo root derived from file location.
Returns:
{"ok": True, "count": N, "out_path": "<abs_path>"}
"""
root = Path(
registry_root
or os.environ.get("FN_REGISTRY_ROOT", "/home/lucas/fn_registry")
or os.environ.get("FN_REGISTRY_ROOT")
or Path(__file__).resolve().parents[3]
).resolve()
db_path = root / "registry.db"
@@ -134,7 +135,7 @@ if __name__ == "__main__":
parser.add_argument(
"--registry-root",
default=None,
help="Path to fn_registry root (default: FN_REGISTRY_ROOT env or /home/lucas/fn_registry)",
help="Path to fn_registry root (default: FN_REGISTRY_ROOT env or repo root derived from file location)",
)
args = parser.parse_args()
+1 -1
View File
@@ -47,7 +47,7 @@ ico_path = generate_app_icon(
accent_hex="#0ea5e9",
out_ico_path="apps/chart_demo/appicon.ico",
)
print(ico_path) # /home/lucas/fn_registry/apps/chart_demo/appicon.ico
print(ico_path) # $HOME/fn_registry/apps/chart_demo/appicon.ico
```
```python
@@ -6,7 +6,7 @@ import os
import unittest
from unittest.mock import MagicMock, patch
sys.path.insert(0, "/home/lucas/fn_registry/python/functions")
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from infra.http_download_file import http_download_file
+2 -1
View File
@@ -2,13 +2,14 @@
import json
import sys
import os
import unittest
import urllib.error
import urllib.request
from io import BytesIO
from unittest.mock import MagicMock, patch
sys.path.insert(0, "/home/lucas/fn_registry/python/functions")
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from infra.http_get_json import http_get_json
@@ -2,12 +2,13 @@
import json
import sys
import os
import unittest
import urllib.error
from io import BytesIO
from unittest.mock import MagicMock, patch
sys.path.insert(0, "/home/lucas/fn_registry/python/functions")
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from infra.http_post_json import http_post_json