Guía de CLI

Instalación

pip install licit-ai-cli

O desde el código fuente:

git clone https://github.com/Diego303/licit-cli.git
cd licit-cli
pip install -e ".[dev]"

Invocación

# Como comando instalado
licit [opciones] <comando> [argumentos]

# Como módulo Python
python -m licit [opciones] <comando> [argumentos]

Opciones globales

OpciónDescripción
--versionMuestra la versión de licit
--config PATHRuta a un archivo .licit.yaml específico
-v, --verboseActiva logging detallado (nivel DEBUG)
--helpMuestra la ayuda
licit --version
# licit, version 1.0.0

licit --verbose status
# Muestra logs de debug durante la ejecución

Comandos

licit init

Inicializa licit en el proyecto actual. Detecta automáticamente las características del proyecto y genera la configuración.

licit init [--framework {eu-ai-act|owasp|all}]

Opciones:

OpciónDefaultDescripción
--frameworkallMarco regulatorio a habilitar

Qué hace:

  1. Ejecuta ProjectDetector para detectar lenguajes, frameworks, CI/CD, agentes IA, etc.
  2. Genera .licit.yaml con configuración adaptada al proyecto.
  3. Crea el directorio .licit/ para datos internos.
  4. Si detecta architect o vigil, habilita sus conectores automáticamente.

Ejemplo:

$ cd mi-proyecto-fastapi/
$ licit init

Initialized licit in mi-proyecto-fastapi
  Languages: python
  Frameworks: fastapi
  Agent configs: CLAUDE.md
  CI/CD: github-actions
  Config saved to .licit.yaml

Ejemplo con framework específico:

$ licit init --framework eu-ai-act
# Solo habilita EU AI Act, desactiva OWASP

licit status

Muestra el estado actual de licit y las fuentes de datos conectadas.

licit status

Qué muestra:

Ejemplo:

$ licit status

  licit Status
  ────────────────────────────────────────
  Project: mi-proyecto-fastapi
  Config: .licit.yaml

  Frameworks:
    [x] EU AI Act
    [x] OWASP Agentic Top 10
    [ ] NIST AI RMF (V1)
    [ ] ISO 42001 (V1)

  Data Sources:
    [x] Git history (142 commits)
    [x] Provenance tracking
    [ ] Config changelog
    [ ] FRIA document
    [ ] Annex IV documentation

  Connectors:
    [x] architect (.architect/config.yaml, enabled)
    [x] vigil (.vigil.yaml, enabled)
    Security findings: 3 total (1 critical, 1 high)

  Agent Configs (2):
    - CLAUDE.md (claude-code)
    - .cursorrules (cursor)

El comando status ahora muestra:


licit connect

Configura conectores opcionales para integrar fuentes de datos externas.

licit connect {architect|vigil} [--enable|--disable]

Argumentos:

ArgumentoDescripción
architectConector para Architect (reports y audit logs)
vigilConector para Vigil (hallazgos SARIF de seguridad)

Opciones:

OpciónDefaultDescripción
--enable(por defecto)Habilita el conector
--disableDeshabilita el conector

Qué hace:

  1. Habilita o deshabilita el conector en .licit.yaml.
  2. Al habilitar, auto-detecta rutas de configuración si no están configuradas.
  3. Verifica la disponibilidad de datos en disco con available().
  4. Muestra feedback sobre si se encontraron datos del conector.

Ejemplo:

$ licit connect architect
  architect data found at: .architect/reports
  Connector 'architect' enabled.

$ licit connect vigil --enable
  vigil data found
  Connector 'vigil' enabled.

$ licit connect architect --disable
  Connector 'architect' disabled.

Datos que enriquecen los conectores:

ConectorFuentes de datosEvidencia aportada
architectReports JSON, audit JSONL, config YAMLAudit trail, guardrails, quality gates, budget, dry-run, rollback
vigilSARIF 2.1.0, SBOM CycloneDXSecurity findings (critical/high/medium/low)

licit trace

Rastrea la proveniencia del código — identifica qué fue escrito por IA y qué por humanos.

Estado: Funcional (Fase 2 completada).

licit trace [--since DATE|TAG] [--report] [--stats]

Opciones:

OpciónDescripción
--sinceAnaliza commits desde una fecha (YYYY-MM-DD). Filtra por author date
--reportGenera archivo de reporte de proveniencia en .licit/reports/provenance.md
--statsMuestra estadísticas en terminal

Qué hace:

  1. Ejecuta GitAnalyzer para analizar commits con 6 heurísticas (autor, mensaje, volumen, co-autores, patrones de archivos, hora).
  2. Opcionalmente lee logs de sesión de agentes (Claude Code).
  3. Clasifica cada archivo como ai (score >= 0.7), mixed (>= 0.5) o human (< 0.5).
  4. Almacena resultados en .licit/provenance.jsonl (merge + deduplicación por archivo).
  5. Si sign: true, firma cada registro con HMAC-SHA256.

Ejemplo:

$ licit trace --since 2026-01-01

  Analyzing git history for AI provenance...
  Analyzed 45 files across 52 records
  AI-generated: 18 files
  Human-written: 22 files

$ licit trace --stats

  Provenance Statistics
  ────────────────────────────────────────
  Total files tracked: 45
  AI-generated:        18 (40.0%)
  Human-written:       22
  Mixed:               5

Ejemplo con reporte:

$ licit trace --report
# Genera .licit/reports/provenance.md con tabla detallada por archivo

Heurísticas utilizadas:

#HeurísticaPesoQué detecta
H1Author pattern3.0Nombres de autor AI (claude, copilot, cursor, bot, etc.)
H2Message pattern1.5Patrones de commit (conventional commits, “implement”, [ai])
H3Bulk changes2.0Cambios masivos (>20 archivos + >500 líneas)
H4Co-author3.0Co-authored-by: con keywords AI
H5File patterns1.0Todos los archivos son test files
H6Time pattern0.5Commits entre 1am-5am

Solo las heurísticas que producen señal (score > 0) contribuyen al promedio ponderado.


licit changelog

Genera un changelog de cambios en configuraciones de agentes IA con diffing semántico y clasificación de severidad.

Estado: Funcional (Fase 3 completada).

licit changelog [--since DATE|TAG] [--format {markdown|json}]

Opciones:

OpciónDefaultDescripción
--since(todos)Cambios desde fecha o tag
--formatmarkdownFormato de salida: markdown o json

Qué hace:

  1. Ejecuta ConfigWatcher para recuperar el historial git de los archivos monitoreados.
  2. Aplica diff_configs() (differ semántico) entre versiones consecutivas de cada archivo.
  3. Clasifica cada cambio con ChangeClassifier (MAJOR/MINOR/PATCH).
  4. Renderiza el changelog con ChangelogRenderer (Markdown o JSON).
  5. Muestra el output en terminal y lo guarda en output_path.

Archivos monitoreados (por defecto):

Ejemplo:

$ licit changelog

# Agent Config Changelog

> 3 change(s) detected across 2 file(s): **1** major, **1** minor, **1** patch

## .architect/config.yaml

- **[MAJOR]** Changed: model from claude-sonnet-4 to claude-opus-4 (`a1b2c3d4`) — 2026-03-12
- **[PATCH]** Changed: budget.max_cost_usd from 5.0 to 10.0 (`a1b2c3d4`) — 2026-03-12

## CLAUDE.md

- **[MINOR]** Changed: section:Rules from 5 lines to 8 lines (+3/-0) (`e5f6g7h8`) — 2026-03-11

  Changelog saved to .licit/changelog.md

Ejemplo JSON:

$ licit changelog --format json --since 2026-03-01
# Genera JSON con array "changes" y guarda en .licit/changelog.json

Clasificación de severidad:

SeveridadTriggerEjemplos
MAJORCambio de modelo/provider, o eliminación de campo MINORmodel: gpt-4gpt-5, borrar guardrails
MINORCambio de prompt, guardrails, tools, reglas, secciones MarkdownEditar system_prompt, añadir blocked_commands
PATCHTodo lo demásAjuste de parámetros, formatting

Formatos de diff soportados:

FormatoExtensionesEstrategia
YAML.yaml, .ymlDiff recursivo de key-value
JSON.jsonDiff recursivo de key-value
Markdown.mdDiff por secciones (headings)
Texto planoOtrosDiff de contenido completo

Para documentación detallada del sistema de changelog, ver Changelog.


licit fria

Completa la Evaluación de Impacto en Derechos Fundamentales (EU AI Act Artículo 27).

Estado: Funcional (Fase 4 completada).

licit fria [--update] [--auto]

Opciones:

OpciónDescripción
--updateActualiza un FRIA existente en lugar de crear uno nuevo
--autoModo no-interactivo: acepta valores auto-detectados y defaults sin prompts (ideal para CI/CD)

Qué hace:

  1. Detecta el proyecto y recopila evidencia disponible.
  2. Ejecuta un cuestionario interactivo de 5 pasos (16 preguntas). Con --auto, acepta automáticamente todos los valores detectados y usa la primera opción como default para preguntas sin auto-detección.
  3. Auto-detecta respuestas donde es posible (8 campos: system_purpose, ai_technology, models_used, human_review, guardrails, security_scanning, testing, audit_trail).
  4. Guarda datos en .licit/fria-data.json y genera reporte en .licit/fria-report.md.

5 pasos del cuestionario:

PasoTítuloPreguntas
1System DescriptionPropósito, tecnología AI, modelos, alcance, revisión humana
2Fundamental Rights IdentificationDatos personales, empleo, seguridad, discriminación
3Impact AssessmentNivel de riesgo, impacto máximo, velocidad de detección
4Mitigation MeasuresGuardrails, scanning, testing, audit trail, medidas adicionales
5Monitoring & ReviewFrecuencia de revisión, responsable, proceso de incidentes

Auto-detección: Para campos marcados con auto_detect, licit intenta inferir la respuesta desde la configuración del proyecto. Si lo consigue, muestra el valor detectado y pregunta si aceptarlo.

Archivos generados:

Ejemplo:

$ licit fria

============================================================
  FUNDAMENTAL RIGHTS IMPACT ASSESSMENT (FRIA)
  EU AI Act -- Article 27
============================================================

──────────────────────────────────────────────────
  Step 1: System Description
──────────────────────────────────────────────────

  [1.1] What is the primary purpose of this AI system?
  -> Auto-detected: AI-assisted code development using claude-code
    Accept this value? [Y/n]:

licit annex-iv

Genera la Documentación Técnica del Anexo IV (EU AI Act).

Estado: Funcional (Fase 4 completada).

licit annex-iv [--organization NOMBRE] [--product NOMBRE]

Opciones:

OpciónDescripción
--organizationNombre de la organización (default: nombre del proyecto)
--productNombre del producto (default: nombre del proyecto)

Qué hace:

  1. Detecta el proyecto y recopila toda la evidencia disponible.
  2. Auto-puebla un documento Annex IV con 6 secciones desde los metadatos del proyecto.
  3. Genera recomendaciones para secciones con evidencia faltante.
  4. Escribe el resultado en .licit/annex-iv.md.

6 secciones auto-generadas:

SecciónContenido
1. General DescriptionPropósito, componentes AI, lenguajes, frameworks
2. Development ProcessControl de versiones, provenance AI, configs de agentes
3. Monitoring & ControlCI/CD, audit trail, changelog
4. Risk ManagementGuardrails, quality gates, budget, oversight, FRIA
5. Testing & ValidationFramework de tests, herramientas de seguridad
6. Changes & LifecycleResumen de mecanismos de tracking

Ejemplo:

$ licit annex-iv --organization "ACME Corp" --product "WebApp"

  Annex IV documentation saved to: .licit/annex-iv.md

Archivo generado:


licit report

Genera un reporte de compliance unificado.

Estado: Funcional (Fase 6). Evalúa EU AI Act + OWASP Agentic Top 10. Soporta Markdown, JSON y HTML.

licit report [--framework {eu-ai-act|owasp|all}] [--format {markdown|json|html}] [--output PATH]

Opciones:

OpciónDefaultDescripción
--frameworkallMarco a evaluar
--formatmarkdownFormato de salida
-o, --output.licit/reports/compliance-report.{ext}Ruta del archivo de salida

Ejemplo:

$ licit report --framework eu-ai-act

  Compliance Summary
  ─────────────────────────────────────────────
  Project: my-app
  Generated: 2026-03-15 12:00 UTC

  eu-ai-act (2024/1689)
    [##..................] 9.1%
    1 compliant | 4 partial | 6 non-compliant

  ─────────────────────────────────────────────
  Overall: [##..................] 9.1%
  1/11 controls compliant

  Report saved to: .licit/reports/compliance-report.md

Formatos de salida:

FormatoDescripción
markdownTablas de resumen + detalle por requisito con iconos [PASS]/[FAIL]/[PARTIAL]
jsonJSON estructurado con overall, frameworks[], results[]
htmlHTML auto-contenido (sin dependencias externas), badges de color, responsive

Archivos generados:


licit gaps

Identifica brechas de compliance con recomendaciones accionables.

Estado: Funcional (Fase 6). Muestra gaps con herramientas sugeridas y nivel de esfuerzo.

licit gaps [--framework {eu-ai-act|owasp|all}]

Opciones:

OpciónDefaultDescripción
--frameworkallMarco a analizar

Ejemplo:

$ licit gaps --framework eu-ai-act

  10 compliance gap(s) found:

  1. [X] [ART-27-1] Fundamental Rights Impact Assessment (FRIA)
     Missing: Before putting an AI system into use, deployers shall
     carry out an assessment of the impact on fundamental rights.
     -> Run: licit fria -- to complete the FRIA
     Tools: licit fria

  2. [!] [ART-12-1] Record Keeping — Automatic Logging
     Incomplete: AI systems shall be designed with capabilities enabling
     automatic recording of events (logs) over the lifetime.
     -> Enable structured audit trail (architect reports or manual logging)
     Tools: licit trace, architect (audit log)

Los gaps se ordenan por severidad ([X] non-compliant antes que [!] partial) y cada uno incluye descripción, recomendación, y herramientas sugeridas.


licit verify

Verifica compliance y devuelve código de salida para CI/CD.

Estado: Funcional (Fases 4-5). Evalúa EU AI Act (11 artículos) y OWASP Agentic Top 10 (10 riesgos).

licit verify [--framework {eu-ai-act|owasp|all}]

Códigos de salida:

CódigoSignificado
0COMPLIANT — Todos los requisitos críticos cumplidos
1NON_COMPLIANT — Algún requisito crítico no cumplido
2PARTIAL — Algún requisito parcialmente cumplido

Uso en CI/CD (GitHub Actions):

- name: Compliance check
  run: licit verify
  # El pipeline falla si exit code != 0

Tabla resumen de comandos

ComandoFaseEstadoDescripción corta
init1FuncionalInicializa licit en el proyecto
status1FuncionalMuestra estado y fuentes conectadas
connect1FuncionalConfigura conectores
trace2FuncionalTrazabilidad de proveniencia
changelog3FuncionalChangelog de configs de agentes
fria4FuncionalFRIA (EU AI Act Art. 27)
annex-iv4FuncionalDocumentación técnica Anexo IV
report6FuncionalReporte unificado (MD/JSON/HTML)
gaps6FuncionalBrechas con recomendaciones
verify4-6Funcional (EU AI Act + OWASP)Gate de CI/CD