Primer commit - Sprint 1

This commit is contained in:
markosbenitez
2026-05-31 04:33:07 -03:00
commit ef9e4bf998
22 changed files with 2515 additions and 0 deletions

126
GUIA_PRIMEROS_PASOS.md Normal file
View File

@@ -0,0 +1,126 @@
# GUÍA — Primeros pasos con Claude Code
> Cómo arrancar la Etapa 1 con Claude Code siguiendo el método. Tu rol acá es **director**: decidís
> qué se hace, validás el output, no traducís entre el agente y el código.
---
## 0. Antes de tocar Claude Code
1. Creá el repo y copiá estos archivos respetando la estructura:
```
encuestas-soberanas/
├── CLAUDE.md
├── ARCHITECTURE.md
├── DATA_MODEL.md
├── .claude/
│ ├── settings.json ← este (commiteable: deny compartido)
│ └── settings.local.json ← lo creás vos (gitignored: tus allow personales)
├── docs/adr/
│ ├── ADR-001-privacidad-y-gobierno-de-datos.md
│ ├── ADR-002-stack-tecnologico.md
│ └── ADR-003-consentimiento-versionado.md
└── sprints/sprint-1/
├── BRIEF.md
└── ETAPA_1_PROMPT.md
```
2. `git init`, primer commit con estos archivos **antes** de generar código. Así cada cambio del
agente es auditable contra un punto de partida limpio.
3. Agregá un `.gitignore` con `.env`, `.env.*`, `.claude/settings.local.json`. **El `.gitignore` es la
protección real de los secretos**; las reglas `Read(...)` de `settings.json` son defensa adicional
pero han tenido fallas conocidas — no dependas solo de ellas.
## 1. Instalar Claude Code
Se distribuye como paquete npm: `@anthropic-ai/claude-code`. La forma recomendada de instalar cambia
seguido (npm global, instalador nativo, etc.), así que seguí la oficial actual:
**https://docs.claude.com/en/docs/claude-code/overview**. Necesita Node.js; verificá la versión
mínima en esa misma página. Lo abrís desde la carpeta del repo para que cargue tu `.claude/`.
## 2. Entender los permisos versionados (`.claude/settings.json`)
El método separa **protecciones (deny, compartidas)** de **preferencias (allow, personales)**:
- `settings.json` (commiteable) → reglas **deny** críticas que hereda todo el equipo: bloquea
`rm -rf` peligrosos, `git push --force`, `git reset --hard`, y lectura de secretos. Incluye
`"disableBypassPermissionsMode": "disable"`, que impide usar `--dangerously-skip-permissions` — es
la barrera de equipo contra el anti-patrón AP.7.
- `settings.local.json` (gitignored) → tus **allow** personales para que los comandos rutinarios
(`npm run`, `supabase migration`, etc.) no te pidan aprobación a cada paso. Ejemplo:
```json
{
"permissions": {
"allow": [
"Bash(npm run:*)",
"Bash(npm install)",
"Bash(supabase migration new:*)",
"Bash(supabase db reset)",
"Bash(git add:*)",
"Bash(git commit:*)"
]
}
}
```
- Las reglas se evalúan **deny → ask → allow**; deny siempre gana. Aceptá la fricción ocasional de un
`ask` como precio de la gobernanza; no skipees permisos de rutina.
## 3. Arrancar la Etapa 1 — mensaje inicial corto
No pegues el prompt entero en el chat (anti-patrón AP.6). El prompt ya vive en el repo. Tu mensaje
inicial es corto y referencia paths (Patrón B.2). Algo así:
```
Vamos con la Etapa 1 del Sprint 1.
Leé en este orden antes de tocar nada:
1. CLAUDE.md (reglas no negociables — especialmente privacidad y la política de niveles)
2. ARCHITECTURE.md y docs/adr/ADR-001-privacidad-y-gobierno-de-datos.md
3. DATA_MODEL.md (el contrato de esquema que vas a implementar)
4. sprints/sprint-1/BRIEF.md y sprints/sprint-1/ETAPA_1_PROMPT.md
Ejecutá la Etapa 1 según ETAPA_1_PROMPT.md. Respetá el alcance: solo esquema + RLS +
constraints + función de k-anonimato + tablas de consentimiento + seed. Nada de frontend.
Cuando termines, reportá en el formato de la sección 7 del prompt, con la salida de
git diff --name-only HEAD. No declares la etapa lista solo por tests verdes.
```
## 4. Tu loop de validación (cuando el agente reporta)
No confíes en "todo OK". Aplicá las 3 preguntas (auditoría adversarial, Principio 3):
1. **¿Los números cuadran?** Pedí la salida concreta de `agg_segment` para n=3 y n=5, el conteo de
preguntas del seed, el nº de tablas. Si el reporte describe en vez de mostrar, pedí los datos.
2. **¿Es el artefacto que pedí?** Abrí el esquema generado (Supabase Studio o el SQL de las
migraciones) **con tus ojos**. ¿Están las 7 tablas? ¿`responses.respondent_id` es nullable y va
NULL? ¿Existe el constraint anti-`respondent_id`?
3. **¿Qué NO menciona el reporte?** Si el reporte está más limpio de lo esperado, sospechá. Revisá
`git diff --name-only HEAD`: ¿tocó algún archivo fuera de scope?
Checklist mínima específica de esta etapa:
- [ ] Probá vos mismo: como rol de organización, ¿podés leer una fila cruda? (debe dar 0)
- [ ] Probá: `INSERT` con `respondent_id` en encuesta anónima → debe fallar.
- [ ] Probá: `UPDATE` sobre `consent_records` → debe fallar.
- [ ] Mirá el seed: ¿B1/C1/D1 despliegan sus sub-preguntas según las reglas condicionales?
## 5. Qué NO hacer (anti-patrones)
- **No** declares la etapa lista por "tests verdes" sin abrir el esquema (AP.1).
- **No** pegues briefs gigantes en el chat; viven en el repo (AP.6).
- **No** uses `--dangerously-skip-permissions` de rutina (AP.7) — ya está bloqueado en settings.json.
- **No** dejes que el agente "arregle de paso" algo de privacidad/consentimiento: es Nivel 3, consulta antes (AP.8).
- Si una convención (formato de cifras, idioma) aparece 2 veces como pregunta → documentala en
`CONVENTIONS.md` (AP.4).
## 6. Antes de cargar datos reales (no en v1 interno)
- Resolver la **residencia de datos** (ADR-002 abierto): self-host vs Cloud.
- Validar el flujo de consentimiento y el lenguaje legal con un **asesor paraguayo** (Ley 7593/2025).
- Hasta entonces, v1 corre con **datos de prueba/simulados**, no con respuestas reales de ciudadanos.
---
### Qué sigue después de la Etapa 1
Validada la fundación de datos, las próximas etapas (a especificar en sus prompts) son: el formulario
funcional sobre este esquema, y luego el dashboard con los reportes cruzados. El wizard de creación
de encuestas viene después de validar el caso fijo. Cada una arranca con su prompt versionado.