9.1 KiB
Referencia de clusterlog
1. Forma general
clusterlog [opciones globales] <comando> [opciones del comando]
Las opciones globales deben colocarse antes del comando.
| Opción | Efecto |
|---|---|
--root DIR |
raíz del repositorio; si se omite, la CLI busca el proyecto desde el directorio actual |
--json |
salida estructurada y estable para agentes |
--ssh-key PATH |
llave pública o ruta base usada para resolver identidad y firma |
--commit |
crea un commit Git SSH firmado con sólo los archivos de la operación |
--dry-run |
valida y calcula el resultado sin escribir |
También puede definirse CLUSTERLOG_SSH_KEY.
2. Contrato JSON
Éxito:
{
"ok": true,
"command": "memory.create",
"data": {},
"warnings": []
}
Error:
{
"ok": false,
"error": {
"kind": "identity_not_found",
"message": "ninguna llave SSH local coincide con un administrador activo",
"details": {}
}
}
Un agente debe usar el código del proceso como decisión primaria y error.kind para tratamiento específico. No debe inferir éxito por texto parcial.
3. Códigos de salida
| Código | Significado |
|---|---|
0 |
éxito |
2 |
uso, flags o entrada inválida |
3 |
identidad no encontrada o no autorizada |
4 |
validación, firma o contenido inválido |
5 |
conflicto de estado |
6 |
operación Git fallida |
10 |
error interno no clasificado |
4. Identidad
clusterlog --root . --json --ssh-key ~/.ssh/id_ed25519.pub identity
La respuesta incluye el administrador, la huella, la ruta pública y la ruta que Git intentará usar para firmar. No prueba posesión hasta que exista una firma válida.
5. Administradores
Agregar
clusterlog --root . --ssh-key ~/.ssh/id_ed25519.pub admin add \
--id ana \
--name "Ana Torres" \
--email ana@example.org \
--key ~/.ssh/id_ed25519.pub \
--roles owner,admin
Reglas:
- El primer administrador obtiene
owneraunque no se incluya explícitamente. - Después del primero, sólo un
ownerpuede agregar administradores. - No se aceptan IDs, correos o huellas duplicados.
data/admins.jsonyconfig/allowed_signersse actualizan juntos.
Listar
clusterlog --root . --json admin list
clusterlog --root . --json admin list --active
6. Memorias
Consultar esquema
clusterlog --json schema memory
Crear por JSON
cat examples/memory.json | clusterlog \
--root . --json --commit --ssh-key ~/.ssh/id_ed25519.pub \
memory create --from-json -
Crear por flags
clusterlog --root . --commit --ssh-key ~/.ssh/id_ed25519.pub memory create \
--title "Rotar certificado del API" \
--description "Renovación programada y comprobación de clientes" \
--tags tls,certificados \
--systems kube-apiserver \
--risk medium \
--ticket CHG-1042 \
--duration 45m \
--agent claude-code \
--body-file memoria.md
Opciones específicas:
--title--description--tags--systems--risk low|medium|high|critical--ticket--review(por defectotrue)--review-policy all-active|all-active-except-author--durationen minutos,90mo2h--agent--body-file ARCHIVO|---from-json ARCHIVO|-
Cuando se combinan JSON y flags, los flags que se proporcionen explícitamente tienen precedencia.
7. Revisión
Listar pendientes
clusterlog --root . --json review list
clusterlog --root . --json --ssh-key ~/.ssh/id_ed25519.pub review list --mine
--mine requiere identidad y devuelve sólo memorias cuyo conjunto pendiente contiene al administrador actual.
Marcar la versión actual
clusterlog --root . --json --commit --ssh-key ~/.ssh/id_ed25519.pub \
review mark MEM-20260812-... --note "Revisado; sin objeciones"
El evento guarda el SHA-256 del contenido actual. Repetir el comando sobre el mismo hash es idempotente; editar la memoria hace que el evento anterior deje de contar.
8. Tareas
Crear
cat examples/task.json | clusterlog \
--root . --json --commit --ssh-key ~/.ssh/id_ed25519.pub \
task create --from-json -
Flags disponibles:
--title,--description--project PRJ-...--priority low|medium|high|urgent--assignees ana,luis--estimate 120m--due YYYY-MM-DD--tags,--systems--objective--acceptanceseparado por comas--notes--body-file ARCHIVO|---from-json ARCHIVO|-
Iniciar y detener tiempo
clusterlog --root . --json --commit --ssh-key ~/.ssh/id_ed25519.pub \
task start TSK-... --note "Diagnóstico inicial"
clusterlog --root . --json --commit --ssh-key ~/.ssh/id_ed25519.pub \
task stop TSK-... --note "Prueba completada"
Un administrador sólo puede mantener un temporizador activo. Los eventos se ordenan por fecha y tipo para producir un total reproducible.
Ajustar tiempo
clusterlog --root . --json --commit --ssh-key ~/.ssh/id_ed25519.pub \
task adjust TSK-... --minutes 20 --note "Trabajo previo no registrado"
clusterlog --root . --json --commit --ssh-key ~/.ssh/id_ed25519.pub \
task adjust TSK-... --minutes -10 --note "Corregir doble conteo"
El total efectivo nunca puede quedar negativo.
Cambiar estado
clusterlog --root . --json --commit --ssh-key ~/.ssh/id_ed25519.pub \
task status TSK-... --status blocked --note "Esperando refacción"
Estados admitidos aquí: backlog, todo, in_progress, blocked, cancelled. Para finalizar use task done.
Completar
clusterlog --root . --json --commit --ssh-key ~/.ssh/id_ed25519.pub \
task done TSK-... --note "Criterios de aceptación verificados"
Si el administrador actual mantiene el temporizador, la CLI lo detiene. Rechaza completar si otra persona sigue registrando tiempo en la misma tarea.
Listar
clusterlog --root . --json task list
clusterlog --root . --json task list --status blocked
clusterlog --root . --json --ssh-key ~/.ssh/id_ed25519.pub task list --mine
clusterlog --root . --json task list --project PRJ-...
9. Proyectos
Crear
cat examples/project.json | clusterlog \
--root . --json --commit --ssh-key ~/.ssh/id_ed25519.pub \
project create --from-json -
Flags:
--title,--description,--objective--owners--target-date YYYY-MM-DD--status planned|active|blocked|done|cancelled|archived--tags,--systems--scope,--out-of-scope--milestones,--success--body-file ARCHIVO|---from-json ARCHIVO|-
Listar
clusterlog --root . --json project list
clusterlog --root . --json project list --status active
10. Documentación y manuales
cat examples/manual.json | clusterlog \
--root . --json --commit --ssh-key ~/.ssh/id_ed25519.pub \
content create --from-json -
También acepta:
clusterlog --root . --commit --ssh-key ~/.ssh/id_ed25519.pub content create \
--section manuales \
--title "Reemplazar nodo de cómputo" \
--description "Procedimiento seguro y validaciones" \
--tags runbook,hardware \
--systems compute \
--body-file reemplazo.md \
--weight 20
section sólo puede ser documentacion o manuales.
11. Proyección
clusterlog --root . sync
clusterlog --root . sync --check
sync lee Markdown, administradores y eventos; genera data/generated/site_state.json. --check no escribe y falla cuando el archivo derivado no coincide con la fuente.
Los agentes no deben editar data/generated/site_state.json a mano.
12. Validación
clusterlog --root . --json validate
clusterlog --root . --json validate --skip-zola
clusterlog --root . --json validate --require-zola
Se comprueban, entre otros:
- registro de administradores y
allowed_signers; - IDs, autores, revisores, owners y assignees;
- estados, fechas y referencias de proyectos;
- eventos huérfanos o inconsistentes;
- temporizadores concurrentes y totales negativos;
- secretos probables;
- vigencia de la proyección;
- plantillas y enlaces con
zola check, cuando está disponible.
13. Firmas
clusterlog --root . verify commit HEAD
clusterlog --root . verify commit abc1234
La verificación usa:
config/allowed_signers
namespace: git
En CI conviene verificar todos los commits nuevos, no sólo HEAD.
14. Esquemas para agentes
clusterlog --json schema
clusterlog --json schema memory
clusterlog --json schema task
clusterlog --json schema project
clusterlog --json schema content
Los esquemas siguen JSON Schema 2020-12 y rechazan propiedades adicionales. Esta restricción permite detectar errores ortográficos en nombres de campos.
15. Patrón recomendado para agentes
set -euo pipefail
SCHEMA="$(clusterlog --json schema memory)"
# Construir input.json con base en data del sobre.
clusterlog --root . --json --dry-run --ssh-key "$KEY" \
memory create --from-json input.json
RESULT="$(clusterlog --root . --json --commit --ssh-key "$KEY" \
memory create --from-json input.json)"
printf '%s\n' "$RESULT"
clusterlog --root . --json verify commit HEAD
El agente debe detenerse ante cualquier código distinto de cero y presentar el error al usuario sin ocultarlo.