- .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>
18 KiB
/documentar — Distribuir la conversacion en la documentacion del registry
Documenta la conversacion actual repartiendo el contenido en TODOS los .md que correspondan: artefactos del registry (funciones, tipos, apps, projects, analysis, vaults) y documentacion global del repo (docs/*, docs/adr/, CHANGELOG.md, dev/issues/*, .claude/rules/*, .claude/CLAUDE.md, sub-CLAUDEs, READMEs/SPECs en apps). Cierra con una entrada en /entrada_diario. El objetivo es que otro LLM (o yo en otra sesion) pueda continuar sin haber visto la conversacion: contexto, decisiones, gotchas, paths, IDs, comandos exactos, "lo siguiente que pega".
Uso
/documentar # documenta todo lo relevante de la sesion
/documentar shaders_lab fase 6 # acota a artefactos/temas concretos (opcional)
$ARGUMENTS es opcional: si va vacio, documenta toda la sesion. Si lleva texto, usalo como hilo conductor para decidir que es relevante.
Reglas duras
- NUNCA escribir secretos en ningun
.mdni en el diario:- Passwords, tokens, API keys, GPG keys, ssh private keys, valores reales de variables de entorno sensibles (
REGISTRY_API_TOKEN,*_SECRET,*_PASSWORD,*_TOKEN, basicAuth en URLs). - Si el usuario lo pide explicitamente, OK. Por defecto, redactar como
<token>/<password>o referenciar el origen (pass entry registry_api,~/.fn_pc). - URLs publicas, hosts, puertos, paths, IDs, nombres de servicios, env var names (no values), licencias, hashes de commit cortos: SI se documentan.
- Passwords, tokens, API keys, GPG keys, ssh private keys, valores reales de variables de entorno sensibles (
- NUNCA sobreescribir secciones existentes ni reordenar contenido previo. Solo append o seccion nueva con timestamp/fase si encaja.
- SIEMPRE consultar
registry.dbcon FTS5 para encontrar el.mdcorrecto antes de editar (no asumir paths). - SIEMPRE cerrar invocando
/entrada_diariocon un resumen del bloque (a no ser que el usuario diga lo contrario). - Densidad util > prosa: comandos exactos, IDs del registry, paths relativos, error messages literales, flags de build, decisiones (con el "porque"), bugs encontrados (con el fix), proximos pasos. Sin fluff.
PASO 0 — Recopilar el material de la sesion
Antes de escribir nada, repasar la conversacion y juntar:
-
Artefactos tocados (creados, editados, ejecutados, mencionados):
- Funciones / tipos del registry → IDs
{name}_{lang}_{domain}. - Apps (
apps/*oprojects/*/apps/*). - Projects (
projects/*). - Analyses (
analysis/*oprojects/*/analysis/*). - Vaults (
projects/*/vaults/vault.yaml). - Reglas (
.claude/rules/*.md), ADRs (docs/adr/*.md), templates (docs/templates/*). - Issues (
dev/issues/*.md,dev/issues/completed/*.md). - Docs globales (
docs/*.md: architecture, integrity, execution_standard, fn_operations, sync_setup, init-pipelines, testing, functions, types, fn-registry-system-complete). - CLAUDE.md raiz (
.claude/CLAUDE.md) y sub-CLAUDEs (apps/*/.claude/CLAUDE.md,projects/*/apps/*/.claude/CLAUDE.md,analysis/*/.claude/CLAUDE.md,projects/*/analysis/*/.claude/CLAUDE.md). - Docs sueltas en apps (
apps/*/SPEC.md,apps/*/README.md,apps/*/docs/*.md,cpp/DESIGN_SYSTEM.md). CHANGELOG.mdraiz.
- Funciones / tipos del registry → IDs
-
Cambios concretos desde git:
cd $HOME/fn_registry git status --short git diff --stat git log --since="6 hours ago" --onelineCada path modificado mapea a un artefacto — convertir a su
.md. -
Material no codigo que vale la pena dejar registrado:
- Decisiones de diseño y por que (anti-bitrot: el porque suele perderse).
- Bugs encontrados + raiz + fix (no solo "fix").
- Atajos / convenciones nuevas.
- Pendientes y "lo siguiente que pega" para la proxima sesion.
- Aprendizajes operativos (build flags, cross-compile gotchas, env requerido).
-
Filtrar secretos segun la regla dura #1.
Si el material es solo conversacion exploratoria sin artefactos tocados, ir directo a PASO 4 (solo diary).
PASO 1 — Mapear cada bloque de informacion a su .md
Para cada artefacto identificado, localizar su .md consultando registry.db:
cd $HOME/fn_registry
# Funcion / tipo
sqlite3 registry.db "SELECT id, file_path FROM functions WHERE id IN (SELECT id FROM functions_fts WHERE functions_fts MATCH 'name:NAME* OR description:NAME*');"
sqlite3 registry.db "SELECT id, file_path FROM types WHERE id IN (SELECT id FROM types_fts WHERE types_fts MATCH 'name:NAME* OR description:NAME*');"
# App / project / analysis (los .md son nombres fijos)
sqlite3 registry.db "SELECT id, dir_path FROM apps WHERE name = 'NAME';" # → {dir_path}/app.md
sqlite3 registry.db "SELECT id, dir_path FROM projects WHERE name = 'NAME';" # → projects/NAME/project.md
sqlite3 registry.db "SELECT id, dir_path FROM analysis WHERE name = 'NAME';" # → {dir_path}/analysis.md
sqlite3 registry.db "SELECT id, name, path FROM vaults WHERE name = 'NAME';" # → vault.yaml entry
Si el .md aun no existe (artefacto recien creado en la sesion y todavia no indexado), el path se deduce de la convencion:
- Funcion:
functions/{domain}/{name}.md,python/functions/{domain}/{name}.md,bash/functions/{domain}/{name}.md,frontend/functions/{domain}/{name}.md,cpp/functions/{domain}/{name}.md. - Tipo:
types/{domain}/{name}.md(codigo enfunctions/{domain}/{name}.go). - App:
apps/{name}/app.mdoprojects/{proyecto}/apps/{name}/app.md. - Project:
projects/{name}/project.md. - Analysis:
analysis/{name}/analysis.mdoprojects/{proyecto}/analysis/{name}/analysis.md.
Donde escribir dentro de cada .md
Tipo de .md |
Seccion preferida para append |
|---|---|
| Funcion / tipo | ## Notas al final. Si no existe, crearla. NO tocar el frontmatter salvo que el usuario pida cambiar metadata. |
App (app.md) |
## Estado actual con sub-fases si el app ya las usa (ej. ### Fase 7 — ... [done]). Si no, ## Notas. Tambien ## Lo siguiente que pega para futuros pasos. |
Project (project.md) |
## Notas o seccion del area afectada (## Apps, ## Operacion, ## Troubleshooting). |
Analysis (analysis.md) |
## Notas o ## Hallazgos (crearla si no existe). |
Vault (vault.yaml) |
Comentario al final del entry o crear vaults/{name}/README.md con notas operativas (NO meter datos sensibles). |
Regla (.claude/rules/*) |
Solo si el usuario explicitamente formaliza una regla nueva — entonces archivo nuevo + entrada en INDEX.md. |
ADR (docs/adr/*) |
Solo si la decision es arquitectural y persistente — archivo nuevo numerado. |
Documentacion global / cross-cutting (NO saltarse)
Estos .md describen el sistema entero, no un artefacto concreto. Cuando un cambio impacta convenciones, comportamiento de agentes, decisiones, issues abiertos o features visibles al usuario, tambien se actualizan aqui:
| Archivo / carpeta | Cuando tocarlo | Como |
|---|---|---|
CHANGELOG.md (raiz) |
Cambio visible al usuario o agentes: nueva funcion/pipeline/app, breaking change, fix relevante, rename, deprecate. | Append bajo seccion del dia (## YYYY-MM-DD) con ### Added/Changed/Fixed/Removed/Deprecated. NUNCA reescribir entradas previas. Si es trabajo en curso, usar ## [Unreleased]. |
docs/adr/NNNN-slug.md |
Decision arquitectural persistente con alternativas descartadas (no es regla operativa, es historia del por que). | Archivo nuevo numerado siguiendo plantilla en docs/adr/README.md. Estado inicial: accepted o proposed. |
docs/architecture.md |
Cambia la arquitectura general (BDs, layers, flujo de datos, capas). | Append en seccion afectada o nueva subseccion. Mantener tablas y diagramas existentes. |
docs/integrity.md |
Nueva regla de integridad / referencia cruzada que el indexer valida. | Append a la lista de reglas. Reflejar tambien en codigo del indexer si toca. |
docs/execution_standard.md |
Cambia el estandar de ejecucion (fn run, despacho por lenguaje, env vars). |
Append seccion. Sincronizar con .claude/CLAUDE.md si menciona los mismos comandos. |
docs/sync_setup.md |
Cambia el flujo de fn sync, env vars (FN_REGISTRY_API, REGISTRY_API_TOKEN), ~/.fn_pc, troubleshooting. |
Append. Recordatorio: NO escribir el valor del token, solo el nombre. |
docs/init-pipelines.md |
Nuevo pipeline de scaffolding o cambio en uno existente. | Append seccion del pipeline. |
docs/testing.md |
Cambia convencion de tests, runners, layout de *_test.go/test_*.py. |
Append seccion afectada. |
docs/functions.md / docs/types.md |
Cambia el schema de la tabla functions o types (columnas, FTS5, enums, params_schema). |
Append. Sincronizar con .claude/CLAUDE.md schema rapido. |
docs/fn_operations.md |
Cambia el schema/comportamiento de operations.db o el bucle reactivo (entities, relations, executions, assertions). |
Append seccion afectada. |
docs/fn-registry-system-complete.md |
Snapshot completo del sistema — solo si la sesion implico un rediseño grande. Normalmente NO se toca por sesion. | Si toca, append seccion con timestamp. |
docs/templates/*.md |
Cambia el frontmatter obligatorio de un tipo de artefacto (function/pipeline/component/type/app/project/analysis). | Editar la plantilla correspondiente. Tambien actualizar ejemplos en .claude/CLAUDE.md. |
dev/issues/NNNN-*.md |
Sesion trabajo en un issue: progreso, blockers, decisiones del scope. | Append ## Notas / Progreso con timestamp. NO mover de dev/issues/ a dev/issues/completed/ salvo que el issue cierre. |
dev/issues/completed/NNNN-*.md |
Issue completado en esta sesion. | Mover el archivo a completed/ (git mv) y actualizar la fila en dev/issues/README.md (estado completado, link a completed/...). |
dev/issues/README.md |
Issue creado, cambia estado, prioridad, dependencias. | Editar la fila correspondiente o anadir nueva al final de la tabla. |
.claude/rules/*.md + INDEX.md |
El usuario formaliza una nueva regla operativa. | Archivo nuevo + fila en INDEX.md. Numerar en el indice manteniendo orden. |
.claude/CLAUDE.md (raiz) |
Cambio en convenciones globales del proyecto, comandos fn nuevos, env vars, estructura de carpetas, schema BDs. |
Append en seccion afectada. Sincronizar con docs/ si hay overlap. |
Sub-CLAUDE (apps/*/.claude/CLAUDE.md, analysis/*/.claude/CLAUDE.md, projects/*/apps/*/.claude/CLAUDE.md) |
Cambio especifico en como un agente debe trabajar dentro de esa app/analysis (no global). | Append. NO duplicar reglas que ya estan en CLAUDE.md raiz. |
cpp/DESIGN_SYSTEM.md |
Cambia tokens, layout, primitivas visuales del stack C++. | Append seccion afectada. |
apps/*/SPEC.md, apps/*/README.md, apps/*/docs/*.md, apps/*/NEXT_STEPS_*.md |
App tiene docs propias mas alla de app.md. |
Append. Si el contenido encaja mejor en app.md, preferir app.md y mencionar el SPEC desde ahi. |
Reglas de decision rapidas
- ¿Cambio visible / breaking / nueva feature? →
CHANGELOG.mdSI. - ¿Decision con alternativas descartadas? → ADR SI. Una regla operativa "haz X" sin alternativas →
.claude/rules/. - ¿Cambia como un agente debe comportarse? →
.claude/rules/o.claude/CLAUDE.md(global) o sub-CLAUDE (local). - ¿Cambia el schema de BDs o columnas? →
docs/functions.md/docs/types.md/docs/fn_operations.md+.claude/CLAUDE.mdschema rapido. - ¿Trabajo en un issue? →
dev/issues/NNNN-*.md+ tabla endev/issues/README.md. - ¿Cross-cutting sin artefacto y sin encajar arriba? → solo diario (PASO 4).
PASO 2 — Escribir las actualizaciones
Para cada .md identificado:
Readel archivo para ver estructura actual y secciones.- Decidir si append a seccion existente o crear seccion nueva.
- Usar
Editpara append (preferible) oWritesolo si es archivo nuevo. - Mantener el estilo del archivo (markdown, viñetas cortas, bloques de codigo con lenguaje).
- No tocar el frontmatter salvo que el usuario haya cambiado metadata explicita (
description,tags,uses_functions,version). Si se toca, re-indexar al final.
Plantilla de bloque para append en .md de artefacto
### {Fase / Tema corto} `[done|wip|notes]`
{1-3 lineas de contexto: que se hizo y por que.}
- Hecho: {cambio concreto, con path y/o ID si aplica}.
- Hecho: {cambio concreto}.
- Bug + fix: {sintoma → raiz → fix} (si procede).
- Decision: {opcion elegida vs alternativa} — porque {razon} (si procede).
- Pendiente: {algo que queda} (si procede).
{Comando(s) exacto(s) si la operacion vale la pena reproducir.}
Plantilla para ## Lo siguiente que pega (apps maduras)
- {Tarea proxima}: {contexto minimo, que tocar, criterio de hecho}.
PASO 3 — Reindexar si tocaste frontmatter o creaste artefacto
Si los cambios de la sesion incluyen creacion de funciones/tipos/apps/projects/analysis/vaults o modificacion de frontmatter:
cd $HOME/fn_registry && ./fn index
Y verificar:
./fn show {id_creado_o_modificado}
Si solo se editaron secciones de prosa (Notas, Estado actual, etc.) sin tocar frontmatter, el indexado igual recoge documentation/notes actualizados — re-indexar es barato y deja la BD coherente.
PASO 4 — Cerrar con entrada al diario
Invocar /entrada_diario con un resumen conciso de la sesion (3-6 viñetas, verbos en pasado para lo hecho, infinitivo para pendientes). Referenciar:
- IDs de artefactos tocados.
- Paths relativos clave.
- Hashes de commit cortos si la sesion termino con commits.
- ADRs / issues / proposals abiertos.
Ejemplo de invocacion:
/entrada_diario shaders_lab fase 6 — menubar reusable (View + Layouts) cableado, persistencia de layouts en shaders_lab.db
Si el usuario ya invoco /entrada_diario antes en esta sesion para este bloque, no duplicar: solo añadir lo que no estaba.
PASO 5 — Reportar al usuario
Resumen breve (formato texto, no tabla a no ser que sean muchos):
=== DOCUMENTADO ===
Artefactos (.md de registry):
- apps/shaders_lab/app.md (Fase 6 — menubar)
- cpp/functions/core/app_menubar.md (notas de uso)
- cpp/functions/core/layouts_menu.md (notas de cableado)
Globales:
- CHANGELOG.md (Added: app_menubar, layouts_menu)
- docs/adr/0002-menubar-arch.md (nuevo ADR — decision menubar reusable)
- dev/issues/README.md (issue 0027 → completado)
- dev/issues/completed/0027-...md (movido)
- .claude/rules/cpp_icons.md (regla nueva, anadida a INDEX.md)
Diario: docs/diary/2026-04-25.md (## 18:30 — ...)
Re-indexado: si | no
Pendientes registrados: {N}
Secretos omitidos: {lista de tipos redactados, ej. "REGISTRY_API_TOKEN"}
Checklist final
- Cada artefacto tocado tiene su
.mdactualizado (append, no overwrite). - Ningun secreto, password, token o key en los archivos.
- Comandos exactos, IDs y paths para que otro LLM reproduzca.
- Decisiones con su "porque", bugs con su raiz+fix.
CHANGELOG.mdactualizado si el cambio es visible al usuario / agentes.- ADR creado (
docs/adr/NNNN-*.md) si hay decision arquitectural con alternativas descartadas. dev/issues/*.mdydev/issues/README.mdactualizados si la sesion toco issues.docs/{architecture,integrity,functions,types,fn_operations,execution_standard,sync_setup,init-pipelines,testing}.mdactualizado si el cambio afecta lo que cada uno documenta..claude/CLAUDE.mdraiz actualizado si cambian convenciones / comandos / schema globales..claude/rules/*+INDEX.mdactualizado si el usuario formaliza una regla nueva.- Sub-CLAUDE de la app/analysis afectada actualizado si cambia comportamiento agente local.
/entrada_diarioinvocado con resumen de la sesion../fn indexcorrido si hubo creacion o cambio de frontmatter.- Reporte final al usuario con la lista de archivos tocados (artefactos + globales).
$ARGUMENTS