> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fhiron.cl/llms.txt
> Use this file to discover all available pages before exploring further.

# lint

> Linter local — sin red, sin cuota. Primera línea de defensa antes de validar.

## Uso

```bash theme={null}
fhiron lint "src/**/*.fhir.json"
```

Si no pasas un path o glob, usa `lint.include` de `fhiron.config.json`:

```bash theme={null}
fhiron lint
```

## Qué detecta

El linter usa [`@fhiron/linter`](https://www.npmjs.com/package/@fhiron/linter), mismas reglas que el MCP connector. Captura errores que se ven **sin necesidad de HAPI**:

* `resourceType` ausente o desconocido
* Identificadores well-known mal escritos (ej. `CSNombreCampana`, comunas, TFC, ATC)
* Estructura mínima rota (campos requeridos por R4 ausentes)
* Sistemas de codificación con namespace incorrecto
* Patrones de fecha ISO-8601 inválidos

Para validación semántica completa contra perfiles CL Core, usa [`fhiron validate`](/cli/validate).

## Output

```
23 archivos · 0 errores · 3 warnings

  warning · src/observation-05.json (Observation.code.coding[0].system)
    [system-unknown] http://minsal.cl/codigo-inventado no aparece en el catálogo CL Core 1.9.4
    Sugerencia: verifica el namespace contra hl7chile.cl/fhir/ig/clcore

Para validación semántica completa contra HAPI + perfiles: fhiron validate
```

## Flags

| Flag      | Efecto                                                        |
| --------- | ------------------------------------------------------------- |
| `--json`  | Output programático en JSON (válido para parsear en scripts). |
| `--quiet` | Solo errores, oculta warnings.                                |

## Exit codes

| Code | Significado                                                   |
| ---- | ------------------------------------------------------------- |
| `0`  | Sin errores (puede haber warnings).                           |
| `1`  | Hay al menos un error.                                        |
| `2`  | No se pudo cargar `@fhiron/linter` (problema de instalación). |

Usar en pre-commit hooks (ejemplo Husky):

```bash theme={null}
#!/bin/sh
# .husky/pre-commit
fhiron lint "$(git diff --cached --name-only --diff-filter=ACM | grep -E '\.fhir\.json$')" || exit 1
```

## Limitaciones

El linter NO conoce los perfiles oficiales completos: no resuelve cardinalidades de slicing complejo, bindings required contra ValueSets externos (UCUM, SNOMED, LOINC), ni invariantes FHIRPath. Para eso usa `fhiron validate`, que pasa por HAPI con CL Core 1.9.4 cargado.

Piensa en `lint` como ESLint, y en `validate` como TypeScript: detectan capas distintas.
