
Gestor de registro de herramientas verificado. Gestiona cadenas de herramientas de desarrollo desde registros basados en git.

# kit
[](https://crates.io/crates/nomograph-kit)
[](https://gitlab.com/nomograph/kit/-/pipelines)
[](LICENSE)
[](https://gitlab.com/nomograph/kit)
Gestor de registros de herramientas -- gestiona cadenas de herramientas de desarrolladores desde registros basados en git, sobre [mise](https://mise.jdx.dev).
## Qué es
kit resuelve versiones de herramientas a través de múltiples registros, genera configuración de mise, verifica sumas de comprobación SHA-256 contra artefactos de lanzamiento de los publicadores, verifica firmas cosign cuando los publicadores firman binarios sin empaquetar, y automatiza el seguimiento de actualizaciones ascendentes mediante una arquitectura CI de tres pipelines.
## Arranque

## Instalación
Si aún no tienes Rust, la ruta más rápida es [mise](https://mise.jdx.dev):
```bash
mise use --global rust
cargo install nomograph-kit
```
O usa rustup:
```bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
cargo install nomograph-kit
```
El binario se llama `kit`.
## Inicio rápido
```bash
kit setup --registry https://gitlab.com/your/registry.git
kit sync
kit status
```
## Comandos
| Comando | Descripción |
|---------|-------------|
| `kit setup` | Configuración única, opcionalmente añade un registro |
| `kit sync` | Trae registros, resuelve, genera configuración de mise, instala |
| `kit status` | Instalado vs registro, detección de desviaciones, fuerza de verificación |
| `kit diff` | Muestra cambios entre el archivo de bloqueo y el registro |
| `kit upgrade` | Flujo de trabajo interactivo de actualización de herramientas |
| `kit verify` | Vuelve a verificar todos los binarios instalados (siempre sumas de comprobación; cosign solo para activos de binarios sin empaquetar) |
| `kit audit` | Verifica herramientas en busca de avisos de seguridad conocidos |
| `kit add <name> <source>` | Consulta el upstream, genera definición de herramienta |
| `kit push <name>` | Confirma y envía una definición de herramienta |
| `kit remove <name>` | Elimina una herramienta de un registro escribible |
| `kit pin <name> <version>` | Fija localmente la versión de una herramienta |
| `kit unpin <name>` | Elimina un fijado local |
| `kit sense` | Detecta cambios upstream, clasifica por riesgo (CI) |
| `kit evaluate` | Revisión basada en reglas + LLM de hallazgos (CI) |
| `kit apply` | Actualiza TOMLs, particiona por elegibilidad de fusión automática (CI) |
| `kit verify-registry` | Valida todas las definiciones de herramientas antes de fusionar (CI) |
| `kit init [--ci]` | Andamia un nuevo registro |
| `kit completions <shell>` | Completado para el shell (bash/zsh/fish) |
| `kit man-page` | Genera página de manual |
## Registros
Un registro es un repositorio git con definiciones TOML por herramienta:
```
tools/
_meta.toml # registry metadata + merge policy
gh.toml # one file per tool
muxr.toml
...
```
Cada definición de herramienta es autocontenida:
```toml
[tool]
name = "gh"
source = "github"
repo = "cli/cli"
version = "2.89.0"
tag_prefix = "v"
bin = "gh"
tier = "high"
aqua = "cli/cli"
[tool.assets]
macos-arm64 = "gh_{version}_macOS_arm64.zip"
linux-x64 = "gh_{version}_linux_amd64.tar.gz"
[tool.checksum]
file = "gh_{version}_checksums.txt"
format = "sha256"
[tool.signature]
method = "github-attestation"
```
Fuentes: `github`, `gitlab`, `npm`, `crates`, `direct`, `rustup`, `brew`
La fuente `brew` delega la instalación al backend `brew:` de mise (no se requiere CLI local de `brew` en CI). kit rastrea versiones a través de la API de formulae.brew.sh y emite entradas `name = "brew:<formula>@<version>"` en mise.toml.
El inteligente `kit add` consulta upstream y autocompleta:
```bash
kit add jq jqlang/jq # GitHub
kit add muxr nomograph/muxr --gitlab # GitLab (resolves project_id)
kit add claude-code --npm @anthropic-ai/claude-code
kit add cargo-nextest --crates
kit add chafa --brew # Homebrew formula (formula defaults to tool name)
kit add go121 --brew [email protected] # Homebrew formula with explicit formula name
```
### Niveles de confianza
Cada herramienta tiene un nivel que controla la política de fusión:
| Nivel | Significado | Política típica |
|------|-------------|-----------------|
| own | Herramientas que construyes y publicas | Fusión automática de todos los incrementos |
| high | Herramientas críticas de terceros | Revisión manual |
| low | Herramientas comunes | Fusión automática de parche/menor |
Los niveles se establecen por herramienta en la definición TOML. El `_meta.toml` del registro define qué niveles se fusionan automáticamente:
```toml
[policy]
auto_merge_tiers = ["own", "low"]
auto_merge_bump = ["patch", "minor"]
auto_merge_requires_checksum = true
```
### Multirregistro
Configura múltiples registros en `~/.config/kit/config.toml`. El primer registro gana cuando hay superposición de herramientas. Los fijados locales anulan.
```toml
[[registry]]
name = "nomograph"
url = "https://gitlab.com/nomograph/kits.git"
[[registry]]
name = "personal"
url = "https://gitlab.com/you/kits.git"
```
Separa los registros por límite de confianza. Por ejemplo, mantén tus propias herramientas en un registro y las herramientas de terceros en otro. Cada registro tiene su propio pipeline, política de fusión y cadencia de actualización.
### Local de proyecto
kit descubre `kit.toml` subiendo desde el directorio de trabajo. Cuando se encuentra, las herramientas se limitan a ese proyecto:
- `.kit.lock` junto a `kit.toml` (confirmado en git)
- `.mise.toml` fusionado con marcadores `# kit:begin` / `# kit:end`
- Las herramientas del usuario fuera de los marcadores nunca se tocan
## Pipeline de CI
kit impulsa una arquitectura de cadena de suministro de tres pipelines mediante el componente CI [kit-registry](https://gitlab.com/nomograph/pipeline):
```yaml
include:
- component: gitlab.com/nomograph/pipeline/kit-registry@v3
inputs:
kit_version: "0.10.1"
mr_assignee: "andunn"
```
### Sense (programado, solo lectura)
`kit sense` consulta lanzamientos upstream, descarga activos, verifica sumas de comprobación y comprueba bases de datos de avisos. Clasifica cada hallazgo por riesgo (nivel de incremento, nivel, estado de suma de comprobación). Nunca falla en desviación de versión -- la desviación es lo que detecta.
### Evaluate (después de sense)
`kit evaluate` aplica reglas deterministas (aprobación automática de parches limpios, rechazo de discrepancias de suma de comprobación) y opcionalmente invoca un LLM para casos límite (incrementos mayores, sumas de comprobación faltantes, avisos).
### Apply (después de evaluate)
`kit apply` actualiza archivos TOML de herramientas en disco y particiona las actualizaciones en dos grupos según la elegibilidad de fusión automática:
- **auto_merge_group** -- actualizaciones elegibles según la política del registro (nivel correcto, incremento correcto, sumas de comprobación verificadas)
- **review_group** -- todo lo demás (nivel incorrecto, incrementos mayores, marcado por el evaluador, sumas de comprobación no verificadas)
El componente CI crea una rama separada y un MR para cada grupo. El MR de fusión automática se fusiona solo después de que el pipeline de verificación pase. El MR de revisión permanece abierto para revisión humana.
### Verify (en MR)
`kit verify-registry` revalida todas las definiciones de herramientas y vuelve a verificar las sumas de comprobación. Se ejecuta en cada MR como puerta de fusión.
## Seguridad
Lo que realmente hace kit en la ruta de verificación:
- **Validación de entrada**: todos los campos validados contra patrones regex estrictos
- **Prevención de inyección TOML**: configuración de mise construida mediante la API toml_edit
- **Detección de cambio de suma de comprobación en la misma versión**: parada forzosa
- **Confirmación de migración de registro**: evita el intercambio silencioso entre registros
- **Verificación Cosign**: coincidencia de identidad de certificado anclada (solo activos de binarios sin empaquetar; los archivos recurren a sumas de comprobación)
- **Restricción de URL de registro**: solo https:// y git@
- **Rechazo de enlaces simbólicos**: los registros maliciosos no pueden escapar del directorio tools/
- **Solo HTTPS**: todos los clientes HTTP exigen TLS
Lo que kit no hace: verificación de suma de comprobación fuera de banda (las sumas de comprobación se obtienen del mismo lanzamiento que el activo), verificación de firma de contenido de archivo, ni sustitución de revisión humana para niveles que se fusionan automáticamente.
## Retirado el 2026-06-16
kit está retirado, reemplazado por **mise** (jdx/mise). Los fijados de herramientas ahora residen en `mise.toml` con control de versiones + un `mise.lock` confirmado (sha256 por plataforma + procedencia): la línea base de máquina en `dunn.dev/harness`, configuraciones por entorno (ej. `nomograph/keaton`). Las actualizaciones fluyen a través de Renovate (con un customManager para backends `gitlab:`) + una auditoría de procedencia CI sobre diferencias de `mise.lock` — la intención de instalador verificado + incremento automático de kit, en un host estable. Registro de migración: `nomograph/keaton` -> `campaigns/harness/sessions/baseline.md` (2026-06-16).
## Licencia
MIT -- [Nomograph](https://gitlab.com/nomograph)