Diseñar con IA antes
de escribir código
11+ años construyendo software que escala a millones, en 18+ países.
reliese/laravel (3M+ descargas) · kotlin-container · kotlin-events.
Hoy construyo anvil — un cliente HTTP de escritorio. Será nuestro ejemplo de principio a fin.
Abres tu propio código de hace 3 meses…
Tú en 3 meses, el siguiente dev, o un agente de IA: todos re-derivan, rediscuten y adivinan mal.
Si no externalizas la decisión, la vuelve a tomar — y distinto.
Un spec es un contrato con un agente que no tiene memoria.
— mi forma de pensar un spec
El cliché. Autocompletado con esteroides.
Articular la tensión, sacar tradeoffs y producir un contrato ejecutable.
El ROADMAP es la única fuente de verdad.
No avanza hasta tenerlas claras.
…la visión todavía no está clara.
Visión, comportamiento y fases — y lo que no se hace, explícito.
# Roadmap · Environment Editor
Gestión in-app de variables:
máscaras de secretos, edición
tabla/raw e import/export.
## Non-goals
- Sync de entornos en equipo
- Almacenamiento cifrado
- Herencia de entornos
Tipos, data flow, edge cases. La IA lo ejecuta sin adivinar.
// environment.rs · auto-migración
fn migrate_variable(v: &Value)
-> EnvVariable {
match v {
Value::String(s) =>
EnvVariable {
value: s.clone(),
secret: false,
},
Value::Object(_) =>
from_value(v.clone())
.unwrap_or_default(),
_ => EnvVariable::default(),
}
}
El oro está en lo Rechazado: evita rediscutir lo ya decidido.
## 002 · Enmascarado de secretos
Decidido:
convención + flag explícito.
Por qué:
la convención cubre el 90%;
el flag maneja las excepciones.
Rechazado:
✗ sin máscara (maneja API keys)
✗ solo convención
✗ solo explícito (se olvida)
Atrapa ~80% de los problemas en diseño, no en código.
El CLAUDE.md trae la regla para IA: el proceso principal orquesta y delega en subagentes — el contexto es el recurso escaso.
### Login
POST {{base_url}}/auth/login
Content-Type: application/json
{ "email": "{{email}}" }
### Perfil
GET {{base_url}}/me
# ← lo único nuevo
Authorization: Bearer {{@login.data.token}}
Tú-del-futuro no rediscute. Un dev nuevo — o un agente — ejecuta sin alucinar.