Files
fn_registry/bash/functions/pipelines/generate_capability_doc.md
T
egutierrez 7913116a8e 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>
2026-06-01 22:23:12 +02:00

4.0 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path
generate_capability_doc pipeline bash pipelines 1.0.0 impure generate_capability_doc(group: string, --registry: string?, --out: string?) -> void Regenera la tabla de funciones de una pagina capability en docs/capabilities/<group>.md consultando registry.db. Preserva bloques curated (Ejemplo canonico, Fronteras, Prerequisitos, Notas). Si el archivo no existe lo crea con plantilla minima.
capability-groups
docs
doctor
generator
pipeline
audit_capability_groups_go_infra
false error_go_core
name desc
group slug del capability group (ej. notebook, metabase). Coincide con el tag canonico en frontmatter de funciones.
name desc
--registry path opcional a registry.db o a su directorio padre (default: walk-up desde cwd hasta encontrar registry.db).
name desc
--out path opcional del archivo de salida (default: <root>/docs/capabilities/<group>.md).
path del archivo actualizado o creado + count de funciones a stdout. Exit 0 ok, exit 1 si error. false
bash/functions/pipelines/generate_capability_doc.sh

Ejemplo

# Regenerar tabla de notebook (ya existe, preserva Ejemplo canonico / Fronteras)
./bash/functions/pipelines/generate_capability_doc.sh notebook
# → $HOME/fn_registry/docs/capabilities/notebook.md updated (5 functions)

# Crear pagina nueva para un grupo sin pagina todavia
./bash/functions/pipelines/generate_capability_doc.sh metabase
# → $HOME/fn_registry/docs/capabilities/metabase.md created (12 functions)

# Especificar registry y destino custom
./bash/functions/pipelines/generate_capability_doc.sh android \
    --registry /ruta/alternativa/registry.db \
    --out /tmp/android_cap.md
# → /tmp/android_cap.md created (8 functions)

# Grupo sin funciones todavia (avisa pero no falla)
./bash/functions/pipelines/generate_capability_doc.sh nuevo_grupo
# WARN: El grupo 'nuevo_grupo' no tiene funciones con ese tag en registry.db.
# → $HOME/fn_registry/docs/capabilities/nuevo_grupo.md created (0 functions)

Comportamiento detallado

Resolucion de root

Walk-up desde cwd buscando registry.db. Si se pasa --registry:

  • Si es un archivo: toma el directorio padre.
  • Si es un directorio: lo usa directamente.

Tabla generada (SQL)

SELECT f.id, f.signature, f.description
FROM functions f, json_each(f.tags) j
WHERE j.value = '<group>'
ORDER BY f.id;

JOIN custom via json_each — usa sqlite3 directo (excepcion autorizada para JOINs no expuestos por MCP).

Formato de tabla

| ID | Firma | Que hace |
|---|---|---|
| `<id>` | `<signature>` | <description> |

Los | dentro de signatures y descriptions se escapan como \|.

Preservacion de bloques curated

Cuando el archivo ya existe:

  • El bloque entre ## Funciones y la siguiente ## se reemplaza.
  • Todo lo anterior y posterior (Ejemplo canonico, Fronteras, Prerequisitos, Notas, etc.) se mantiene intacto.
  • Implementado con awk: copia hasta ## Funciones, imprime nueva tabla, salta contenido viejo hasta encontrar ^## , reanuda copia.

Archivo nuevo

Si docs/capabilities/<group>.md no existe, se crea con plantilla minima:

  • Titulo # Capability: <group>.
  • Placeholder de descripcion (editable a mano).
  • Tabla generada.
  • Secciones vacias: ## Ejemplo canonico, ## Fronteras.

Codigos de salida

Codigo Significado
0 Exito
1 Error: grupo no especificado, registry.db no encontrado, fallo SQL, awk vacio

Notas

  • uses_functions: [] — depende de sqlite3 y awk del sistema, no de funciones del registry.
  • El tag del grupo debe ser plano (ej. notebook, metabase), no tag:notebook.
  • Enganchado en docs/capabilities/INDEX.md como el mecanismo de auto-generacion referenciado bajo fn doctor capabilities --update.
  • Seguro para re-ejecucion: idempotente si el registry no cambia.