adrkit decision memory
adrkit
Memoria de decisiones para planes escritos por humanos y agentes — registros de decisiones de arquitectura que son legibles por máquina, aplicables en CI y comprensibles para agentes, sin salir de git.
La mayoría de las herramientas ADR son una plantilla de markdown y un generador de sitios estáticos. Eso registra una decisión; no hace que la decisión haga nada. adrkit trata un registro como datos tipados con un cuerpo markdown y añade un campo — affects — para que una herramienta pueda responder "¿qué decisiones rigen esta pull request?" y poner la respuesta donde se está tomando la siguiente decisión.
Inicio rápido
La CLI se publica como @adrkit/cli y expone el binario adr. Los artefactos publicados están dirigidos a Node 22+:
npx @adrkit/cli lint # validate the corpus in docs/adr
npx @adrkit/cli explain src/payments/api.ts # which decisions govern this file?O añádelo a un proyecto (los repositorios que usan Bun pueden usar bun add -D @adrkit/cli / bunx):
npm i -D @adrkit/cliLa biblioteca pura se instala de forma independiente: npm i @adrkit/core @adrkit/evaluator.
Consulta la guía de inicio rápido y la referencia completa de comandos.
Related MCP server: agentic-os-mcp
Elige un punto de partida
Si quieres... | Empieza aquí | Notas |
Validar o inspeccionar un corpus de ADR |
| |
Construir tu propia herramienta | API puras de parser, validador, matcher y cola | |
Ejecutar las comprobaciones deterministas de propuestas | El pase 0 es la superficie del evaluador publicada hoy | |
Alimentar a los agentes de codificación con decisiones previas | Servidor MCP stdio local y de solo lectura | |
Ejecutar adrkit desde una imagen OCI | Imagen multiarquitectura en pasos, comenzando con la primera versión que contenga ADR-0032 | |
Comentar decisiones que rigen las pull requests | Acción de GitHub desde este repositorio | |
Añadir memoria de decisiones a Spec Kit | Publicado por separado para Spec Kit | |
Añadir memoria de decisiones a Copilot, Claude Code u opencode | Instalar desde este repositorio o marketplace |
Uso en contenedor
A partir de la primera versión en pasos que contenga
ADR-0032,
las versiones se publican como una imagen OCI multiarquitectura en
ghcr.io/mbeacom/adrkit. Fija una etiqueta inmutable vX.Y.Z en la automatización; vX
y latest solo se mueven después de que esa versión en pasos se haya completado:
docker run --rm --read-only --network none \
-v "$PWD:/workspace:ro" \
ghcr.io/mbeacom/adrkit:vX.Y.Z lint
docker run --rm --read-only --network none -i \
-v "$PWD:/workspace:ro" \
ghcr.io/mbeacom/adrkit:vX.Y.Z mcpEl comando MCP mantiene stdin abierto porque MCP usa stdio. Su montaje de repositorio es
de solo lectura, según el contrato del servidor; usa una ruta absoluta del host en la configuración
del cliente MCP. Para comandos CLI que escriben intencionalmente (new, o
migrate sin --dry-run), omite --read-only y el sufijo :ro del montaje.
La imagen se ejecuta como el usuario no root node; en un host con un UID/GID
diferente, añade --user "$(id -u):$(id -g)". En hosts SELinux, añade la
etiqueta de montaje bind adecuada (por ejemplo, :Z).
La imagen predeterminada trata un selector no reconocido como un subcomando adr.
Los selectores explícitos son cli/adr/adrkit, mcp/adrkit-mcp,
ci/adrkit-ci y queue-action/adrkit-queue-action. El --help
predeterminado describe estos selectores; cli --help abre la referencia de comandos CLI.
El contenedor también reserva -h, container-help y
--container-help; los subcomandos de ayuda CLI como help lint pasan sin cambios.
Construye la misma fuente localmente con Docker o Podman. Los objetivos específicos cli,
mcp, ci y queue-action están aislados para políticas locales e inspección de SBOM;
el registro publica solo el objetivo todo-en-uno adrkit:
docker build -f Containerfile -t adrkit:local .
docker build -f Containerfile --target mcp -t adrkit-mcp:local .
docker run --rm --read-only --network none -i \
-v "$PWD:/workspace:ro" \
adrkit-mcp:localLos dos puntos de entrada de CI preservan el contrato de ejecución existente de GitHub Actions:
esperan GITHUB_WORKSPACE, la carga útil del evento y el entorno del repositorio,
los valores INPUT_* y un token. Para GitHub Actions alojado, las Actions respaldadas por
repositorio siguen siendo la interfaz más simple:
mbeacom/adrkit/packages/ci@v0 y
mbeacom/adrkit/packages/ci/queue@v0. La publicación y recuperación del contenedor están
documentadas en docs/RELEASING.md.
Cómo se ve
adr queue emite el backlog de revisión como una proyección determinista y de solo lectura del
corpus — idéntica byte por byte para entradas idénticas:
# ARB Queue — 2026-07-25
Corpus fingerprint: `96e7f3185c5bb89bd1c87e10a28dcbef66703f381d3f14ea486ceaf29903cb00`
7 item(s) | 0 corpus finding(s) | 0 item(s) with findings
## Queue Items
| # | ID | Title | Tier | SLA State | Deadline | Approvals | Objections |
|---|----|-------|------|-----------|----------|-----------|------------|
| 1 | `0005` | Gate proposals with a deterministic-first evaluator … | arb | within-sla | 2027-01-18 | 0/- | 0 |
| 2 | `0015` | Validate descriptors against Backstage field formats … | arb | within-sla | 2027-01-25 | 0/- | 0 |En CI, la Action @adrkit/ci comenta las decisiones que rigen en las PRs que las tocan — solo lectura, solo comentarios, sin base de datos, sin aprobación. Consulta
Uso en CI.
Para agentes: el servidor MCP
El gancho más diferenciador: @adrkit/mcp es un servidor local, de solo lectura
Model Context Protocol que permite a un agente
recuperar decisiones previas — incluidas las rechazadas y las superadas —
antes de proponer algo ya intentado. Sin escrituras, sin HTTP/auth, sin modelo,
incrustaciones o acceso a red, y sin índice persistente. Expone exactamente cuatro herramientas:
Herramienta | Propósito |
| Búsqueda filtrada en todo el corpus |
| Obtener un registro por id |
| Decisiones que rigen un conjunto de archivos |
| El cementerio — lo que ya fue rechazado |
Ejecútalo contra el corpus de un repositorio:
npx @adrkit/mcp # or the adrkit-mcp bin
adrkit-mcp --cwd /path/to/repo --dir docs/adr--cwd (env ADRKIT_MCP_CWD) debe ser la raíz de un worktree de Git; --dir (env
ADRKIT_MCP_DIR, por defecto docs/adr) se resuelve dentro de ella. stdout lleva solo
marcos JSON-RPC; los diagnósticos van a stderr; el cementerio se incluye por defecto.
Consulta la guía de configuración de MCP y
packages/mcp/README.md para los contratos completos de las herramientas.
Para flujos de trabajo basados en especificaciones: la extensión Spec Kit
Spec Kit te lleva de specify a
plan a tasks a implement. Lo que no hace es comprobar el plan que acaba de
producir contra las decisiones que ya tomaste, ni registrar las nuevas decisiones
que ese plan contiene — así que cada característica comienza desde un contexto vacío y
re-litiga cuestiones ya resueltas.
@adrkit/spec-kit cierra ese bucle:
Comando | Propósito | Escribe |
| Trae las decisiones que rigen — incluidas las rechazadas y superadas — al contexto antes de planificar | no |
| Comprueba un plan producido contra las decisiones que lo rigen | no |
| Crea un borrador de ADR a partir del artefacto del plan | un nuevo registro |
Además, un hook after_plan que ofrece ejecutar la comprobación. Es opcional por
construcción, y los hooks solo pueden alcanzar comandos que no escriben — draft está
deliberadamente inalcanzable desde cualquier hook, porque un hook en fase de plan que creara
registros sin que se le pida fabricaría memoria de decisiones en lugar de registrarla.
Fijado a Spec Kit >=0.13.0,<0.16.0 y probado contra 0.13.0, 0.14.4 y
0.15.1. Está disponible en el catálogo comunitario de Spec Kit; consulta el README
del paquete para la configuración.
Para cualquier agente de codificación: el plugin
Spec Kit es un flujo de trabajo. El lugar donde se escriben los planes ahora es dentro de un agente de codificación que no tiene idea de que tu corpus de decisiones existe.
packages/adapters/agent-plugin
empaqueta el mismo bucle como componentes de agente portátiles — instalables en GitHub
Copilot CLI, Claude Code, opencode y cualquier cosa que
APM tenga como objetivo:
copilot plugin marketplace add mbeacom/adrkit && copilot plugin install adrkit@adrkit
/plugin marketplace add mbeacom/adrkit # Claude Code, then /plugin install adrkit@adrkit
apm install mbeacom/adrkit/packages/adapters/agent-plugin --target opencodeCada componente invoca la CLI adr, así que instálala también si aún no lo has hecho —
npm i -g @adrkit/cli, o añade @adrkit/cli al proyecto. Los componentes la resuelven
desde $ADRKIT_CLI, luego ./node_modules/.bin/adr, y luego PATH.
Componente | Propósito | Escribe |
habilidad | Enseña el bucle contexto → comprobación → borrador, el contrato de código de salida y las reglas que mantienen el registro honesto | no |
habilidad | Audita código, documentación, planes e historial en busca de candidatos ADR respaldados por evidencia sin tratar la implementación como ratificación | no |
agente | Concilia un plan o diff contra el corpus, un veredicto por decisión | no |
| Carga las decisiones que rigen las rutas que estás a punto de cambiar | no |
| Comprueba el cambio, o un plan, contra ellas | no |
| Redacta un ADR a partir de una decisión actual o de una entrega de backfill seleccionada | un nuevo registro |
| La cola de revisión — las preguntas aún abiertas | no |
| Produce un registro de cobertura y un informe de candidatos ADR deduplicado a partir de un código heredado o un corpus de documentación | no |
Deliberadamente no incluye ninguna configuración de MCP: Copilot CLI lanza los servidores MCP de un plugin fuera del espacio de trabajo y fuera de cualquier repositorio Git, por lo que el servidor de adrkit sale durante initialize. En su lugar, MCP se conecta por proyecto — consulta el README del plugin para la configuración específica del host y ADR-0028. La expansión de backfill está autorizada por ADR-0034.
Estado: instalable hoy desde este repositorio y con versionado independiente de los paquetes npm. Hace que el bucle context -> check -> backfill -> draft esté disponible dentro de los hosts actuales de agentes de codificación.
El flujo de trabajo de backfill es de solo lectura hasta que un humano selecciona un candidato. Consulta la guía para el enrutamiento de fuentes, los umbrales de evidencia, el tratamiento de estados y el traspaso /adr-backfill → /adr-draft.
Con versionado independiente según ADR-0007. El flujo de trabajo original de context/check/draft/queue está en el escalón 1 de ADR-0014 — cobertura unitaria y de contrato, más verificación de mantenedores contra los hosts instalados. La adición de backfill v0.2.0 está validada por contrato y con hosts estáticos, y cuenta con una ejecución funcional reciente de consumidor sintético de Copilot que demuestra la conciliación de candidatos y la ausencia de escrituras. No existe ninguna ejecución persistente de repositorio de referencia ni validación externa para el plugin.
El problema
Tu organización decide algo. Seis meses después nadie lo recuerda, la decisión se vuelve a cuestionar y el código se desvía de lo acordado. Ahora los agentes también escriben planes — más rápido de lo que cualquiera puede revisarlos, sin memoria de lo que ya se decidió y rechazó.
La idea
Trata un registro de decisión como datos tipados con cuerpo Markdown y dale un campo que lo cambia todo — affects, que declara qué gobierna la decisión:
---
id: "0042"
title: Use server-side rendering for authenticated routes
status: accepted
reversibility: one-way-door
blastRadius: cross-team
affects:
- type: path
pattern: "apps/web/app/\\(authed\\)/**" # ( and ) are glob syntax — escape them
- type: package
pattern: "next@>=16"
---Ahora una herramienta puede responder "¿qué decisiones gobiernan esta pull request?" — y poner la respuesta donde realmente se toma la siguiente decisión.
Qué hace
adr lint— valida registros, detecta ciclos de sustitución y encuentra decisiones que se contradicen silenciosamente entre sí. Advierte cuando el markdown del directorio del corpus no es descubrible, de modo que "checked 0 records" nunca sea silencioso.adr migrate --from madr— adopta un corpus MADR existente en su lugar, de forma aditiva, sin romper tus herramientas actuales. Lee estado, fecha y decisores del frontmatter de MADR 3.x, las viñetas* Status:de MADR 2.x y las secciones## Statusde Nygard.--renametambién renombra cada archivo a<id>-<slug>.md.adr explain <path>— imprime cada decisión que gobierna un archivo y por qué. Las decisiones llegan a un archivo en dos direcciones y la salida las mantiene separadas: el patrónaffectsdel propio registro coincidió (via path: src/**), o el archivo declaró la decisión por sí mismo con un marcador@adr 0012en un comentario (declared by src/sync.ts:3). Los marcadores permiten queaffectspermanezca acotado — los archivos definitorios — mientras que el código circundante se adhiere una línea a la vez, en cualquier lenguaje, sin cambios de esquema. Solo los registrosacceptedse notifican como gobernantes; las propuestas coincidentes y los registros superseded/rejected/deprecated se enumeran por separado.adr check <files...>— valida los registros cambiados y lista las decisiones que gobiernan un conjunto de archivos modificados, incluidas las declaraciones@adrentrantes. Las lecturas de marcadores están limitadas a 3,000 archivos / 16 lecturas concurrentes, 64 declaraciones por archivo y 10,000 declaraciones por lote, todo informado en--json; las afirmaciones de marcadores y las advertencias de escaneo nunca influyen en el código de salida.adr evaluate <proposal> --snapshot <bundle.json> --date YYYY-MM-DD— ejecuta el Pass 0 determinista y sin modelo sobre un ADR propuesto más un paquete de instantánea inmutable sin conexión. Aplica las once reglas de la rúbrica, escala en disparadores probados a un humano activo designado (o a ununresolvedexplícito), y devuelve unPass0Reportenriquecido más unevaluationPatchcompatible con el esquema. No lee ningún modelo, red, reloj o (en la biblioteca) sistema de archivos, y enruta — nunca aprueba, persiste ni escribe.adr queue— emite la cola de operaciones ARB: una proyección determinista y de solo lectura de los metadatosreviewdel corpus (niveles, estado de SLA, aprobaciones, objeciones) como Markdown o JSONQueueReportv1; también una Action de gestión de incidencias.Comentario de CI — la GitHub Action
@adrkit/cimuestra las decisiones gobernantes en las PRs que las tocan o las declaran explícitamente; las coincidencias de patrones se muestran comoviay las afirmaciones de marcadores escritas en la PR comodeclared by. El comentario también distingue los archivos de marcadores que no pudo inspeccionar, las declaraciones de marcadores omitidas por un límite de seguridad y las afirmaciones que leyó pero no pudo vincular. Todo es informativo: nunca hacen fallar el trabajo. Se ejecuta solo con elGITHUB_TOKENpredeterminado y se degrada (nunca falla el trabajo) ante un token de fork de solo lectura.Servidor MCP — permite a los agentes recuperar decisiones anteriores, incluidas las rechazadas, antes de proponer algo que ya se ha intentado.
Nunca aprueba nada. Enruta, y los humanos deciden.
Usa ambas CI Actions desde su tag major móvil (consulta Uso en CI):
permissions:
contents: read
pull-requests: write
steps:
- uses: actions/checkout@v4
- uses: mbeacom/adrkit/packages/ci@v0¿Por qué no MADR simple — o "MADR estructurado"?
El frontmatter de adrkit es un superconjunto estricto de MADR, así que esto no es "en lugar de MADR" — puedes aplicar adr migrate --from madr a un corpus existente en su lugar. La diferencia es lo que ocurre después de que el registro exista.
Una plantilla — incluyendo una variante de MADR más estructurada — estandariza cómo escribes una decisión. No hace lo siguiente:
aplicarlo en CI — adrkit resuelve
affectsy comenta las decisiones gobernantes en las PRs que modifican los archivos que gobiernan;responder "¿qué decisiones gobiernan esta PR?" — eso requiere un comparador puro y reproducible sobre campos
affectstipados (ADR-0009), no prosa;permitir que un agente recupere el cementerio — el servidor MCP de solo lectura expone los registros
rejected/superseded/deprecatedpara que un agente deje de volver a proponerlos.
Un esquema que puedas entregar a un linter, un resolvedor, un agente y un trabajo de CI es un artefacto distinto de una convención de encabezados. Esa es toda la tesis.
Estado del proyecto
adrkit sigue en pre-1.0, pero varias superficies están listas para usarse hoy. Esta tabla es la versión corta:
Estado | Superficie | Qué significa |
Disponible ahora |
| Publicado en npm para Node 22+ |
Disponible ahora |
| Publicado por separado para las versiones actuales de Spec Kit |
Disponible ahora |
| La generación de informes de cola y los comentarios en PR forman parte del flujo de trabajo incluido |
Disponible ahora | plugin de agente | Se instala desde este repositorio o marketplace; ejecuta |
En desarrollo | Passes posteriores del evaluador | Los Passes 1–3 y la calibración siguen siendo objetivos de diseño; Pass 0 es la superficie del evaluador implementada |
En desarrollo | Paquetes de catálogo |
|
Planificado | Integraciones adicionales posteriores | Las integraciones futuras se basarán en el corpus tipado actual y en el modelo de recuperación de solo lectura |
Compromisos de diseño
Estos se aplican, no son aspiracionales. Cada uno enlaza al registro que lo decidió.
Compromiso | Registro |
Git es la fuente de verdad; toda escritura automática abre una PR | |
El esquema es un superconjunto estricto de MADR — las migraciones son aditivas | |
Un clon limpio sin credenciales compila, prueba y pasa el lint correctamente | |
Cada integración es un adaptador opcional; el núcleo no depende de ninguno | |
La resolución de coincidencias es una función pura — reproducible en CI | |
Las comprobaciones deterministas se ejecutan antes de cualquier llamada al modelo | |
Bun es solo una dependencia de desarrollo; los artefactos publicados se ejecutan en Node | |
Los analizadores son deterministas; los modelos sugieren, nunca analizan |
Dogfooding
Cada decisión de este proyecto está gobernada por este proyecto. El primer commit del repositorio es su propio corpus de decisiones — consulta docs/adr/. La rúbrica del evaluador también está versionada aquí. El evaluador publicado implementa actualmente solo el Pass 0 determinista; los passes posteriores siguen siendo objetivos de diseño documentados, no comportamiento publicado.
Licencia
Apache-2.0 — consulta LICENSE.
Excepción: el contenido de schema/ se publica además bajo CC0. El esquema está pensado para convertirse en un contrato compartido; las implementaciones competidoras deberían poder adoptarlo sin ninguna consideración de licencia.
Cadena de herramientas
Construido con Bun — consulta ADR-0010. Bun es solo una dependencia de desarrollo. Nada de lo publicado por este proyecto lo requiere: la CLI, la GitHub Action y el servidor MCP están orientados a Node y se someten a pruebas de humo bajo Node 22 y 24 en CI.
Contribuciones
Consulta CONTRIBUTING.md, incluida la rampa de entrada "Tu primera PR". Las contribuciones requieren una firma de DCO y deben compilarse desde un clon limpio sin credenciales configuradas.
This server cannot be installed
Maintenance
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA read-only MCP server for AI coding agents to inspect repositories, audit code quality, route engineering skills, and plan safe issue/PR workflows.1MIT
- AlicenseAqualityAmaintenanceRead-only MCP server that exposes the agentic-os governance, SDLC, and Quality Engineering methodology to any MCP host. It never writes to your repository and never executes code — it serves the methodology, plans an install, and verifies it, handing any commands back to the host to run.7Apache 2.0
- AlicenseNot gradedqualityBmaintenanceAn MCP server that turns a folder of Markdown ADRs into live tools for AI agents: search, author, validate, link, and trace architectural decisions, with preview-by-default writes.1MIT

Euthynosofficial
AlicenseNot gradedqualityBmaintenanceA local, read-only MCP server that provides AI coding agents with structural evidence about a repository, including dependency analysis and impact assessment, while naming the boundary of every answer without any LLM calls.201Apache 2.0
Related MCP Connectors
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
Read-only Remote MCP for externally grounded AI agent trust receipts.
Official remote MCP server for Archivist AI TTRPG campaign memory: characters, sessions, and more.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mbeacom/adrkit'
If you have feedback or need assistance with the MCP directory API, please join our Discord server