guía

Construya una capa de contexto y compruebe que es conforme.

Traducción asistida por agentes de IA. Ante cualquier diferencia, prevalece la página en inglés. Si encuentra algún problema en el texto, abra un issue o envíe un pull request.

Cinco comandos, desde la instalación hasta la conformidad. Todo lo que hace leji viene incluido en el paquete y se ejecuta offline; lo que llega a la red lo invoca usted mismo. El paso de dependencias de leji init y leji adopt ejecuta su propio gestor de paquetes cuando usted dice que sí, y las descargas de federación contactan con el repositorio que usted nombró: leji mounts hydrate --fetch, leji mounts update-pin --fetch y leji conformance --federation=verify.

Runtimes admitidosNode.js Node.js 22+Python Python 3.10+Go Go 1.26.6+

01Instale el utillaje

Las tres superan el mismo conjunto de fixtures, por lo que las opciones, la salida JSON y los códigos de salida son idénticos, con independencia de cuál instale en su integración continua.

Al declararla como dependencia de desarrollo, la integración continua, el hook de pre-commit y todas las personas que contribuyan ejecutarán la misma versión fijada. No hace falta averiguar el comando: leji init y leji adopt detectan el gestor de paquetes que este repositorio usa realmente y ofrecen ejecutar por usted su propio comando de añadir, solo con su sí explícito: npm, pnpm, yarn y bun; uv, poetry, pdm y pipenv; y go get -tool, que necesita Go 1.24 o posterior, mientras que compilar la propia CLI de Go necesita Go 1.26.6 o posterior. Con pip, leji imprime la línea que hay que añadir en vez de ejecutar nada. Una instalación global no estorba: dentro de un repositorio que fija su propia copia, las CLI de Node y de Python ejecutan esa copia en cada invocación (la CLI que fija un repositorio).

npm install -g @leji-org/leji

02Cree una capa de contexto nueva, o adopte un repositorio existente

Obtiene un manifiesto leji.json en la raíz del repositorio, un perfil de arranque, documentos de categoría sembrados, un primer registro de decisión y un brief de incorporación. Con ellos vienen dos archivos fuera de la raíz del contexto: un AGENTS.md de solo puntero cuando el repositorio no tiene ninguno (--no-agents lo omite), y una línea de .gitignore en la raíz para .leji/, el espacio de trabajo donde vive el brief. Nada de esto exige un agente.

El andamiaje comienza como un marcador de posición. Si acepta la propuesta, el agente leerá su repositorio, preparará un mapeo para que usted lo apruebe y, después, borrará el brief. Si la rechaza, obtiene el comando para ejecutarlo más tarde; --yes lo omite, así que la integración continua sigue sin necesitar a nadie delante.

¿Trabaja en solitario? --mode solo siembra puntos de partida de identidad y de estilo de escritura y dirige el brief hacia una entrevista con quien es responsable; las respuestas se pueden teclear, adjuntar o dejar en una carpeta. Solo la síntesis que usted aprueba se convierte en contexto, y el material en bruto se queda en el espacio de trabajo ignorado por git que hay en el .leji/ de la raíz del repositorio: init y adopt escriben esa regla de exclusión, y ambos se niegan a ejecutarse mientras algo de lo que hay dentro esté bajo seguimiento de git. El agente borra esos artefactos una vez que la capa de contexto tiene contenido.

leji adopt --dry-run    # el plan exacto de escritura; no escribe nada
leji adopt              # adopta un repositorio existente (leji init para uno nuevo)
                        # después ofrece abrir Claude Code o Codex

leji adopt --wire-adapters  # adopta sobre un CLAUDE.md / AGENTS.md existente

npm create leji         # o hace todo lo anterior en un paso, sin instalar nada:
                        # lee el directorio y elige adopt o init

03Valide

  • Comprobado por esquema: el manifiesto, el índice, el registro de cambios y el frontmatter de los perfiles de agente y de los registros de decisión.
  • Estructura y lint: los perfiles de arranque, los archivos de índice y los documentos corrientes no tienen esquema. Los archivos declarados deben existir, y el registro de cambios es de solo anexión frente a HEAD. A partir de indexed, un índice desactualizado falla de plano.

Tras un adopt normal sobre un CLAUDE.md o un AGENTS.md existente, espere un fallo vendor-adapter-redirect por cada uno de ellos hasta que se ejecute --wire-adapters.

leji validate           # esquemas y reglas de lint
leji validate --content # más avisos de marcadores de posición o contenido escaso
leji index              # genera el índice

04Declare un nivel y después compruébelo

La adopción parcial es intencionada: empiece en core, y cada nivel contiene al anterior. El manifiesto declara el nivel; leji conformance puntúa la capa de contexto frente a él.

coreindexedgovernedfederated

Qué le pide cada nivel

leji conformance        # puntúa la declaración

05Vea su capa de contexto

La misma capa que leen sus agentes, presentada para personas.

leji view               # abre en el navegador el visor legible por personas
leji viewer build       # exporta una carpeta estática para alojarla tras la autenticación interna

Manténgala honesta en integración continua

El proveedor se infiere de su remoto origin, y recurre a GitHub cuando el remoto no nombra ninguno.

leji ci                 # genera el flujo de trabajo
leji ci --hooks         # las mismas comprobaciones como hook de pre-commit local

# lo que ejecuta el trabajo generado:
leji validate           # esquemas y reglas de lint
leji index --check      # falla si el índice está desactualizado

# se añade a partir de indexed:
leji changelog check    # de solo anexión

Los códigos de salida están pensados para la integración continua: 0 limpio, con avisos permitidos; 1 una comprobación que no ha pasado, haya notificado un hallazgo o no; 2 un error de uso o un fallo interno, como negarse a sobrescribir.

Entre en la capa de contexto

La capa pasa a ser el primer contexto del agente, sin ningún archivo de proveedor de por medio.

leji start              # o --agent claude-code | codex para fijar uno

Si detecta varios hosts, pregunta cuál usar. Si no detecta ninguno, o si se trata de una ejecución automatizada o de integración continua, muestra el comando que debe ejecutarse en lugar de elegir por su cuenta. La guía de adopción cubre las opciones de paso al host y la tabla de reserva de archivos de proveedor.

Dele a su agente las herramientas, no solo el contexto

Al entrar en la capa de contexto, su agente recibe el contexto. El servidor MCP le proporciona el utillaje: un servidor local, de solo lectura, que ejecuta la validación y la conformidad contra la capa de contexto que hay en disco, de modo que el agente nunca necesita una shell. Lee e informa; nunca escribe.

# Claude Code (este proyecto)
claude mcp add leji --scope project -- npx -y @leji-org/mcp

# Codex
codex mcp add leji -- npx -y @leji-org/mcp

init y adopt ofrecen registrarlo por usted: con ámbito de proyecto en Claude Code, a nivel de usuario en Codex. Los comandos de arriba son para quien omitió esa pregunta, y cambiar --scope project por --scope user lo registra una vez para usted personalmente en vez de para este repositorio. Cualquier cliente MCP sirve; la página del servidor MCP tiene la lista completa de herramientas.

Después adopte según su situación

MonorepoUn repositorio, una capa de contexto, inicializada una vez en la raíz del repositorio.
Muchos repositorios, una capaUn repositorio de contexto dedicado, montado en modo solo documentación en cada repositorio consumidor, fijado repositorio a repositorio.
Varias capas con responsable propioEquipos que ya poseen una capa de contexto cada uno. Monte cada una como hermana; la responsabilidad y el flujo de trabajo se quedan igual.

Desde un script

La mayoría de los comandos son también llamadas de biblioteca, para hooks, bots y pasos de compilación. Código fuente en leji-org/leji, Apache-2.0.

import { validateLayer, writeIndex, conformanceReport } from '@leji-org/leji';

const { findings } = validateLayer('.');

Siguiente: la guía de adopción para un repositorio existente, o federación cuando varios equipos poseen una capa de contexto cada uno.