Communitygithub.com

tuannv0069/claude-doc-genome

Plugin de Claude Code para iniciar un sistema de documentación de agentes de IA (CLAUDE.md + reglas + guía de agente) en un solo paso.

¿Qué es claude-doc-genome?

Este skill, diseñado para Claude Code, permite inicializar un sistema de documentación completo para proyectos de desarrollo de agentes de IA mediante un único comando. Instala reglas portátiles, guías de agente, skills y agentes auxiliares en las ubicaciones estándar del proyecto, configurando la base para que el proyecto se mantenga por sí mismo según estándares predefinidos. Ofrece varios modos: `init` para nuevos proyectos, `update` para actualizar archivos portátiles en proyectos ya inicializados (mediante una fusión segura de 3 vías), y `check`/`promote` para mantener sincronizado el repositorio maestro. Incluye un proceso de detección de pila tecnológica (stack), una fase de entrevista para configurar valores personalizados (como puertos, propiedad y lenguaje), y la generación de reglas opcionales basadas en módulos detectados (por ejemplo, runtime, e2e). Toda la documentación se despliega de manera ordenada, verificando la integridad y el alcance de los archivos, y creando un manifiesto de inicialización para rastrear versiones y cambios.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add tuannv0069/claude-doc-genome

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

init-project

propósito

Inicializar el sistema de documentación de agente de un nuevo proyecto a partir de un paquete portátil en un solo paso. Después de la inicialización, el proyecto se mantiene por sí mismo utilizando el estándar desplegado (árbol de decisión doc-organization.md §8.3 + meta-estándares portátiles). init se ejecuta una vez por proyecto; update se puede volver a ejecutar posteriormente en ese proyecto para extraer archivos portátiles más nuevos del paquete (fusión segura de 3 vías — nunca sobrescribe ediciones locales no promocionadas). check/promote mantienen el paquete en sí y se ejecutan solo en este repositorio maestro.

dependencias

  • ./portable/rules/ — 7 reglas portátiles (siempre cargadas + ámbito de ruta)
  • ./portable/agent-guide/ — five-why.md, markdown.md, mermaid.md, orchestration-policy.md, worktree.md (desplegar en docs/agent-guide/general/)
  • ./portable/skills/ — skill-designer/, skill-writer/, document-writer/ (árboles completos)
  • ./portable/agents/ — skill-writer-auditor.md
  • ./templates/ — CLAUDE.md.tpl, agent-guide/index.md.tpl, docs/index.md.tpl
  • ./VERSION — versión del paquete, aumentada en cada promoción
  • scripts/update.mjs (raíz del repositorio) — motor para el modo update (fusión 3 vías paquete→directorio); scripts/sync-version.mjs — sincronización de fuente única de versión

modos

invocaciónse ejecuta enacción
/init-projectnuevo proyectodesplegar paquete (flujo de trabajo a continuación)
/init-project checkrepositorio maestrocomparación sha256 de paquete ↔ directorio por mapa → reportar desviaciones
/init-project promoterepositorio maestrocopiar directorio → paquete para cada archivo mapeado, aumentar VERSION
/init-project updateproyecto inicializadoextraer archivos portátiles más nuevos del paquete → directorio, fusión segura de 3 vías (manifiesto ↔ directorio ↔ paquete); saltar conflictos (flujo de trabajo a continuación)

flujo de trabajo (init — nuevo proyecto)

  1. Escanear proyecto: detectar pila tecnológica + módulos opcionales según la columna de señal de la ## matriz de módulos. Salida: conjunto de módulos propuesto + valores de ranura descubiertos.
  2. Entrevista: confirmar el conjunto de módulos propuesto; preguntar por ranuras no escaneables (puertos de desarrollo en uso, propiedad del ámbito, lenguaje de documentación). Ranura sin respuesta → dejar marcador TODO, nunca inventar un valor; módulo incierto → omitirlo.
  3. Copiar portable/ textualmente: portable/rules/* → .claude/rules/; portable/agent-guide/* → docs/agent-guide/general/; portable/skills/* → .claude/skills/; portable/agents/* → .claude/agents/.
  4. Renderizar plantillas: rellenar {{slots}} de la entrevista en CLAUDE.md, docs/agent-guide/index.md, docs/index.md; ranura faltante → mantener marcador TODO.
  5. Generar reglas opcionales: para cada módulo opcional confirmado, escribir una regla ajustada al proyecto en docs/agent-guide/general/ según rule-writing-standards, y añadir su línea de activación a CLAUDE.md en el mismo paso — sin plantilla codificada.
  6. Escribir manifiesto .claude/init-manifest.json: { version, deployedAt, files:[{path,sha256}], templates:[{path,sha256}], modules:[...] } (procedencia; files[] leído por update para detección de desviaciones de 3 vías — mantener sha256 preciso; templates[] registra el sha de la .tpl con la que se construyó cada archivo renderizado — path = ruta de la plantilla relativa a templates/, ej. CLAUDE.md.tpl, usado por update para ADVERTIR cuando una plantilla cambió desde el despliegue).
  7. Verificar: cada archivo desplegado está en el nivel correcto; cada archivo de regla/guía de agente lleva metadatos scope:; CLAUDE.md dentro del presupuesto de tokens; cada archivo bajo demanda que afecta el comportamiento tiene una línea de activación o entrada de enrutador (alcanzabilidad, archivo→activación); cada activación MUST Read en CLAUDE.md resuelve a un archivo desplegado (alcanzabilidad, activación→archivo — sin activaciones muertas); no queda ningún {{slot}} sin renderizar excepto marcadores TODO intencionales. Hecho = lista de verificación aprobada + manifiesto escrito.

mapa paquete ↔ directorio (check / promote — repositorio maestro; update — proyecto inicializado)

ruta del paqueteruta del directorio
portable/rules/*.claude/rules/*
portable/agent-guide/*docs/agent-guide/general/*
portable/skills/*.claude/skills/*
portable/agents/*.claude/agents/*
  • check: sha256 de cada par → listar discrepancias. La dirección de actualización predeterminada es directorio → paquete (promote); corregir el directorio primero, luego promover.
  • promote: copiar directorio → paquete para cada archivo mapeado, luego aumentar la versión mediante node scripts/sync-version.mjs set <x.y.z> (escribe el VERSION canónico + lo refleja en .claude-plugin/* y la insignia del README).

flujo de trabajo (update — proyecto inicializado)

Dirección paquete → directorio (inverso de promote). Toca solo el conjunto portátil textual; el fenotipo renderizado (CLAUDE.md, index.md, guías creadas por el proyecto) está fuera del alcance. Invocar update.mjs por su ruta dentro del plugin instalado (se localiza a sí mismo desde su propia ubicación); --project es la raíz del proyecto inicializado y por defecto es el directorio actual.

  1. Simulación: node <plugin>/scripts/update.mjs --project <project-root> → revisar el plan de AÑADIR / ACTUALIZAR / CONFLICTO y el delta de versión.
  2. Resolver cada CONFLICTO primero — un conflicto = un archivo portátil editado localmente desde el despliegue. Promoverlo río arriba (para que la mejora entre al paquete) o sobrescribir manualmente después de revisar. Nunca sobrescribir a ciegas.
  3. Aplicar: node <plugin>/scripts/update.mjs --apply --project <project-root> → escribe AÑADIR + ACTUALIZAR, salta conflictos, actualiza version del manifiesto + files[].sha256.
  4. Solo aditivo e in situ — update nunca elimina: un archivo eliminado del paquete permanece en el proyecto, y un archivo eliminado localmente se vuelve a añadir. Podar esos manualmente si es necesario.
    • templates/* (CLAUDE.md, index.md — fenotipo renderizado) nunca se sobrescriben: sus ranuras contienen valores específicos del proyecto. update solo emite una ADVERTENCIA cuando una .tpl cambió desde el despliegue (sha vs manifest.templates[]); volver a renderizar manualmente (diff de .tpl vs directorio, re-aplicar cambios estructurales, mantener valores de ranura) o volver a ejecutar /init-project. La ADVERTENCIA persiste hasta que el próximo init vuelva a registrar el sha de la plantilla.
  5. Código de salida: 0 = actualizado o aplicado limpiamente; 1 = quedan conflictos; 2 = error de configuración (sin manifiesto → el proyecto no fue inicializado por este plugin).

matriz de módulos

móduloincluyedesplegar cuandoseñal de escaneo (ejemplos, no exhaustiva)
coreportable/* (los 4 grupos) + 3 plantillassiempre—
runtimeagent-guide/general/local-runtime.md + activación de CLAUDE.md (el skill escribe según escaneo, paso 5)el proyecto ejecuta un servidor de desarrolloscripts dev/start en package.json, launchSettings.json, configuración vite/next/dotnet/django/cargo
e2eagent-guide/general/<tool>.md (nombrado según la herramienta detectada) + activación de CLAUDE.md (paso 5)el proyecto tiene pruebas E2E de navegadordependencia playwright/cypress/selenium, carpeta e2e/, configuración E2E
  • Módulo opcional se despliega solo cuando el escaneo confirma O el usuario confirma en la entrevista — incierto → omitir.
  • Git: guardarraíl mínimo (hacer commit solo a solicitud, nunca hacer push) se entrega en CLAUDE.md.tpl; la política detallada es scope: project — el proyecto escribe docs/agent-guide/general/git.md bajo demanda, añadiendo su línea de activación en el mismo commit (alcanzabilidad — nunca una activación que apunte a un archivo faltante).
  • Un módulo omitido que se necesite más tarde → el proyecto escribe la regla por sí mismo según el estándar desplegado. Un nuevo módulo entra al paquete solo mediante promote después de que un proyecto real pruebe el patrón.

reglas de independencia

  • El skill se ejecuta una vez por proyecto; los archivos desplegados no hacen referencia a ningún archivo de este repositorio maestro; las reglas del proyecto nunca nombran este skill.
  • Autónomo excepto por el mapa paquete↔directorio anterior, que se ejecuta solo en el repositorio maestro para check/promote.

ejemplos

✅ el escaneo encuentra package.json con script "dev" → proponer módulo runtime → paso 5 escribe
   general/local-runtime.md + añade "Ejecutar servidor de desarrollo → MUST Read ..." a CLAUDE.md
❌ desplegar módulo runtime sin señal de escaneo ni confirmación en entrevista (módulo adivinado)

✅ /init-project check → "DISCREPANCIA: portable/rules/doc-organization.md != .claude/rules/doc-organization.md"
   → corregir directorio primero → /init-project promote
❌ editar portable/* directamente y luego iniciar un nuevo proyecto (el paquete diverge silenciosamente del directorio)

archivos de referencia

  • paquete: ./portable/**
  • plantillas: ./templates/**
  • versión: ./VERSION

Skills relacionados