# Alpha — Reglas de Prompt para Criterios de Aceptación

> Documento de referencia para la generación de criterios de aceptación mediante IA.
> Basado en Skill HU v3.5 (Lambda Analytics) + estructura Quill de KAPPA.

**Versión**: 1.0 | **Fecha**: 2026-05-26

---

## 1. Formato esperado en KAPPA

KAPPA almacena los criterios de aceptación en el campo `criterios_aceptacion` usando el editor **Quill** (rich text). El formato es HTML:

```html
<ol>
  <li>URL producción accesible</li>
  <li>API OP conectada</li>
  <li>54+ proyectos cargan</li>
</ol>
```

## 2. Formato en Alpha (BD + UI)

Alpha lo convierte a JSON array y lo almacena en `acceptance_criteria`:

```json
[
  "URL producción accesible",
  "API OP conectada",
  "54+ proyectos cargan"
]
```

En la UI se muestra como tooltip con lista ordenada al lado del título de la HU.

## 3. Prompt para generación de criterios

### 3.1 Reglas de formato

1. Los criterios deben generarse como **lista numerada** (ordenada)
2. Cada criterio debe ser una **frase concreta y verificable**
3. Usar el formato `<li>texto</li>` dentro de `<ol>`
4. Mínimo 3 criterios, máximo 10 por HU

### 3.2 Reglas de contenido

Basado en la Skill HU v3.5, cada criterio debe:

- Ser **medible y comprobable** (no opiniones)
- Describir un **resultado tangible** ("El botón X existe en la pantalla Y")
- Evitar términos subjetivos ("fácil", "rápido", "intuitivo")
- Incluir **condiciones de frontera** cuando aplique
- Separar criterios de **diferente naturaleza** en items distintos

### 3.3 Ejemplos por tipo de item

**HU (User Story):**
```
<ol>
  <li>El usuario puede iniciar sesión con email y contraseña</li>
  <li>Muestra mensaje de error si las credenciales son incorrectas</li>
  <li>Redirige al dashboard en menos de 3 segundos</li>
  <li>El botón "Olvidé mi contraseña" redirige a la pantalla de recuperación</li>
</ol>
```

**Feature:**
```
<ol>
  <li>El módulo de cartera está desplegado en producción</li>
  <li>Al menos 1 usuario PMO lo está operando</li>
  <li>Los KPIs del módulo son visibles en el dashboard</li>
  <li>La curva S muestra 3 líneas (planeado, real, proyección)</li>
</ol>
```

**Bug:**
```
<ol>
  <li>El error reportado no se reproduce en el ambiente corregido</li>
  <li>La funcionalidad afectada opera según lo especificado</li>
  <li>No se introdujeron regresiones en módulos relacionados</li>
  <li>La corrección está desplegada en el ambiente correspondiente</li>
</ol>
```

### 3.4 Keywords para detectar tipo de criterio

| Tipo | Keywords en el criterio |
|------|------------------------|
| Funcional | "El usuario puede", "El sistema debe", "Muestra", "Redirige" |
| Performance | "En menos de N segundos", "Responde en", "Carga en" |
| Seguridad | "Solo usuarios autorizados", "Encriptado", "Token expira" |
| UX | "Visible", "Accesible", "Responsive", "Navegación" |
| Integración | "API conectada", "Webhook", "Sincroniza", "Endpoint" |
| Despliegue | "Desplegado en producción", "Ambiente", "URL accesible" |

### 3.5 Estructura del prompt

```
Genera los criterios de aceptación para la siguiente HU como una lista HTML ordenada.
Usa <ol><li>...</li></ol>.
Cada criterio debe ser verificable y medible.

Título: {título de la HU}
Descripción: {descripción de la HU}
Tipo: {HU / Feature / Bug / Tarea}
```

## 4. Parseo en Alpha

La función `parseQuillList()` en `src/services/clean-html.ts` extrae los items de `<li>` y los convierte en array. El HTML se almacena RAW en `user_stories.acceptance_criteria` para mantener fidelidad con KAPPA, mientras que la UI muestra la versión parseada como tooltip.

## 5. Referencias

- Skill HU v3.5 → `/Volumes/MonkeyVault/Library/OneDrive/.../Skills/skill_HU_v3.5.md`
- Código: `src/services/clean-html.ts` (parseQuillList, criteriaToJson, criteriaFromJson)
- Stores: `src/stores/workitems.ts` (enrichHU, syncHUsToTurso)
