# Mapeo a frameworks de seguridad (REC-C01)

Complemento a `SKILL.md` de `meta-skills-estandar`. Aplicable SOLO a skills
del dominio seguridad.

---

Skills del dominio de seguridad pueden declarar mapeos opcionales a cinco
frameworks estándar en el frontmatter. El propósito es enriquecer reportes
(`/swl:salud`, `/swl:dashboard`) con cobertura de control y alinear el sistema
con vocabulario de la industria. **No es evolución — es metadata aditiva que
no cambia comportamiento.**

## Campos disponibles (todos opcionales, todos propios SWL en español)

| Campo | Framework | Formato | Ejemplo |
|-------|-----------|---------|---------|
| `nist_csf` | NIST CSF 2.0 | `GV\|ID\|PR\|DE\|RS\|RC.XX[-NN]` | `[GV.SC-07, PR.PS-01]` |
| `nist_ai_rmf` | NIST AI RMF 1.0 | `GOVERN\|MAP\|MEASURE\|MANAGE-N.N` | `[GOVERN-1.1, MEASURE-2.5]` |
| `atlas_techniques` | MITRE ATLAS v5.4 | `AML.TNNNN[.NNN]` | `[AML.T0051, AML.T0080]` |
| `attack_techniques` | MITRE ATT&CK v18 | `TNNNN[.NNN]` | `[T1190, T1552]` |
| `d3fend_techniques` | MITRE D3FEND v1.3 | `D3-XXX` | `[D3-MFA, D3-NTA]` |

## Cuándo declarar cada framework

- **NIST CSF 2.0**: skills que cubren controles organizacionales o funciones
  (GOVERN, IDENTIFY, PROTECT, DETECT, RESPOND, RECOVER). Aplicable a casi
  cualquier skill de seguridad.
- **NIST AI RMF 1.0**: skills específicas de sistemas agénticos o IA. Todos
  los skills de seguridad del sistema SWL (que ES agéntico) deberían declararlo.
- **MITRE ATLAS v5.4**: skills que defienden contra amenazas adversarias sobre
  modelos o pipelines LLM (prompt injection, context poisoning, jailbreak).
- **MITRE ATT&CK v18**: skills de defensa contra TTPs de atacantes en la
  infraestructura desplegada (no en el código). Más útil para operaciones
  que para SDLC, pero aplicable a skills que documentan detección en logs.
- **MITRE D3FEND v1.3**: contramedidas defensivas específicas. Útil para
  autenticación (D3-MFA), rotación de credenciales (D3-CR), análisis de
  tráfico (D3-NTA).

## Ejemplo de uso en frontmatter

```yaml
---
name: checklist-seguridad
description: ...
version: "1.0.0"
nist_csf: [PR.PS-01, PR.DS-02, PR.DS-10, DE.CM-09, RS.MI-01]
attack_techniques: [T1190, T1059, T1556]
---
```

## Qué NO hacer

- **No inventar mapeos**: verificar cada ID en la fuente oficial del framework
  antes de declararlo. Un mapeo incorrecto es peor que ausencia de mapeo.
- **No saturar**: 3-6 entradas por framework son suficientes. Listar 20
  controles diluye la señal.
- **No mezclar capas**: un skill de SDLC no debe mapear a tácticas ofensivas
  fuera de contexto (T1059 Command Execution en un skill de revisión de código
  es válido porque describe el vector defendido; T1021 Remote Services no es
  apropiado para un skill que nunca toca red).
- **No mapear skills que no son de seguridad**: el mapeo es para el dominio
  seguridad, no para todos los skills.

## Auditoría de cobertura

El script `scripts/auditar-cobertura-frameworks.js` reporta cobertura agregada
del sistema por framework. Ver `comandos/swl/salud.md` para el paso opt-in que
expone el reporte con `SWL_AUDIT_FRAMEWORKS=1`.

## Referencias a fuentes oficiales

- NIST Cybersecurity Framework 2.0: https://www.nist.gov/cyberframework
- NIST AI Risk Management Framework: https://airc.nist.gov/AI_RMF
- MITRE ATT&CK: https://attack.mitre.org
- MITRE ATLAS: https://atlas.mitre.org
- MITRE D3FEND: https://d3fend.mitre.org

---

## Migración a nombres propios en español (REC-S15)

Los campos `provenance`, `targets`, `evolvable`, `evolvable_scope` del schema
de skills están en transición a sus equivalentes en español: `procedencia`,
`destinos`, `evolucionable`, `evolucionable_alcance`.

**Nuevos skills**: usar solo los nombres en español (propios de SWL). El módulo
`scripts/lib/skill-normalizer.js` promueve el campo en inglés si solo ese está
presente (fallback no-breaking).

**Skills existentes**: sin cambio obligatorio. El validador emite W010 (-2 en
`robustness`) como señal de migración pendiente, no como error bloqueante. Tras
2 releases con coexistencia, los campos en inglés se marcarán deprecated.

**Validación cruzada**: si ambos campos están presentes deben coincidir en
valor. La divergencia entre `targets` y `destinos` (o cualquier par) emite
W010 ALIAS_DIVERGENTE.

**Campos excluidos de migración** (permanecen en inglés por contrato con el
protocolo Anthropic):

- `name`, `description`, `user-invocable`, `allowed-tools`, `when_to_use`,
  `disable-model-invocation`.

**Herramienta de detección**: `scripts/lib/skill-normalizer.js` expone
`detectarUsoLegacy()` y `detectarDivergencias()` — usados por el validador
`/swl:evaluar-skill` en el Paso 1.3.
