- frontend/DESIGN_SYSTEM.md: contrato del @fn_library (regla suprema para Claude Design y agentes). - frontend/design_prompts/: 11 plantillas de prompt (onboarding, dashboard, crud, detail, settings, auth, error, custom, handoff_integrate) + questionnaire numerado para arranque rapido. - .claude/commands/extract-design.md: workflow de 10 pasos para extraer componentes nuevos y mejoras desde exports "standalone" de Claude Design al registry, sync al espejo fn-design-system y push a gitea+github. - .claude/scripts/extract_design_bundle.py: decodificador del bundle (base64+gzip en manifest, nombra JSX por heuristica de header). - .gitignore: ignorar subrepos/*/ (el mirror fn-design-system es repo propio con remotes dataforge/fn-design-system + gutierenmanuel/fn-design-system). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
9.3 KiB
Questionnaire — arranque rápido para prompts de Claude Design
Cuando el usuario pida un prompt (ej. "quiero un dashboard", "prompt para crud de clientes", "hazme una settings"), el agente NO le pregunta todo en abierto. Le hace el cuestionario numerado de abajo, una tanda de preguntas cada vez, con opciones 1) 2) 3) 4) 5) para que responda rápido con los números correspondientes (1,3,2,4 o similar).
Reglas del flujo
- Detecta el template que aplica (dashboard / crud / detail / settings / auth / error / custom).
- Pregunta en tandas de 4-6 preguntas numeradas. No todo de golpe.
- Si una pregunta es texto libre, márcala como
(abierta); el usuario contesta con texto en vez de número. - Si una respuesta necesita opción fuera del menú, el usuario escribe
"otra: <texto>"y continúa. - Al final de todas las tandas, recapitulas las respuestas en una tabla y generas el prompt de Claude Design rellenado, listo para copiar.
- Si el usuario responde con un número fuera de rango o ambiguo, repite la pregunta con el rango válido resaltado.
Formato de respuesta del usuario
Puede contestar:
1,2,3,1,2— una respuesta por pregunta en el orden.1) 2 2) 3 3) 1— explícito por número de pregunta.- Mezcla libre con números y texto:
1, "dashboard ventas", 3, 4, 2.
Template: dashboard
Tanda 1 — Contexto
Q1. Tipo de dashboard:
- Monitoreo técnico (latencias, errores, uptime)
- Business analytics (ventas, conversiones, ingresos)
- Contenido / tráfico (usuarios, pageviews, engagement)
- Operacional (inventario, órdenes, tareas)
- Otro (abierta — describe)
Q2. Título del dashboard (abierta).
Q3. Subtítulo / contexto temporal:
- "Tiempo real"
- "Últimas 24h"
- "Últimos 7 días"
- "Último mes"
- Configurable por usuario (date range picker)
Q4. Audiencia principal:
- Operador técnico
- Ejecutivo / C-level
- Cliente externo
- Equipo interno mixto
Tanda 2 — KPIs
Q5. Número de KPIs (fila superior):
- 2 2) 3 3) 4 4) 5 5) 6
Q6. Estilo de deltas:
- Porcentaje con flecha (▲ +12%)
- Valor absoluto (+123)
- Mixto (algunos % otros absolutos)
- Sin deltas
Q7. ¿Incluyen sparkline inline el KPI?
- Sí, todos los KPIs
- Solo los KPIs principales (1-2)
- No
Tanda 3 — Charts
Q8. Número de charts:
- 2 2) 3 3) 4 4) 5 5) 6
Q9. Mix de tipos de chart:
- Solo line (time-series)
- line + bar (evolución + comparación)
- line + bar + pie (variado)
- area stacked + line (distribución + serie)
- Otro (abierta — describe la combinación)
Q10. ¿Hay un chart principal (span 2, full width)?
- Sí, el primero
- Sí, el último
- Varios con span 2
- Todos span 1 (grid uniforme)
Tanda 4 — Header y controles
Q11. Acciones en el header:
- Solo Refresh
- Refresh + Export
- Refresh + Date range picker
- Refresh + Export + Date range picker
- Ninguna
Q12. Color scheme:
- Dark (por defecto)
- Light
- Sigue la preferencia del sistema
Q13. ¿Va dentro de FnAppShell (con header + navbar)?
- Sí — especifica qué items lleva el navbar (abierta si eliges esto)
- No — la página ocupa pantalla completa sin shell
Template: crud
Tanda 1 — Entidad
Q1. Nombre de la entidad (abierta, PascalCase. Ej. "Customer", "DeployTarget").
Q2. ¿Cuántas columnas visibles en la tabla?
- 3 2) 4 3) 5 4) 6 5) 7+
Q3. Lista las columnas (abierta, separadas por coma) — para cada una indica si es texto / número / fecha / badge / acción.
Tanda 2 — Acciones
Q4. Acciones por fila:
- Solo Edit
- Edit + Delete
- Edit + Delete + Duplicate
- Edit + Delete + "Ver detalle"
- Custom (abierta)
Q5. Acciones del header:
- Solo "Add"
- "Add" + "Import"
- "Add" + "Export"
- "Add" + "Import" + "Export"
- Bulk actions (select rows + apply)
Q6. ¿Modal o página separada para create/edit?
- Modal (Dialog)
- Drawer lateral (Sheet)
- Página completa aparte
Tanda 3 — Form
Q7. Número de campos en el form (1-5, 6-10, 11+):
- 1-5 2) 6-10 3) 11+
Q8. Lista los campos (abierta — nombre + tipo cada uno).
Q9. ¿Validación?
- Básica (required only)
- Completa (email, rangos, regex)
- Async (verificar contra API)
- Sin validación
Tanda 4 — Lista
Q10. Filtros sobre la tabla:
- Solo SearchBar global
- SearchBar + SimpleSelect (por categoría)
- SearchBar + Chips (tags activos)
- Filtros complejos (multi-select + date range)
- Sin filtros
Q11. Paginación:
- Pagination componente (numbers)
- Infinite scroll
- "Load more" button
- Sin paginación (máximo 100 filas)
Q12. ¿Sorting en columnas?
- Sí, en todas
- Solo en 2-3 principales
- No
Template: detail
Tanda 1 — Entidad
Q1. Nombre de la entidad (abierta).
Q2. Avatar del header:
- Iniciales generadas
- Imagen (URL)
- Icono Tabler (abierta — cuál)
- Sin avatar
Q3. Badge lateral:
- Status (success/warning/destructive)
- Tipo / categoría (secondary)
- Ambos
- Sin badge
Tanda 2 — Contenido
Q4. Número de campos en el grid:
- 3 2) 4-6 3) 7-10 4) 11+
Q5. Lista los campos (abierta — label + tipo).
Q6. Número de tabs:
- 1 (sin tabs) 2) 2 3) 3 4) 4 5) 5+
Q7. Tabs (abierta — lista de keys + labels + tipo de contenido de cada una).
Tanda 3 — Extras
Q8. ¿Timeline de actividad?
- Sí, vertical bajo los tabs
- Sí, en un tab propio
- Sí, en sidebar derecho
- No
Q9. Acciones del header:
- Solo Edit
- Edit + Delete
- Edit + Delete + Duplicate
- Edit + Delete + Share
- Custom (abierta)
Template: settings
Tanda 1 — Estructura
Q1. Número de secciones (items del nav lateral):
- 2-3 2) 4-5 3) 6-8 4) 9+
Q2. Lista las secciones (abierta — key + label + icono Tabler sugerido para cada una).
Q3. Modo de guardado:
- Botones "Cancelar" + "Guardar" al pie de cada sección
- Autosave con toast de confirmación
- Un solo "Guardar" global
Tanda 2 — Campos
Q4. Tipos de campos más comunes:
- Solo texto y toggles
- Texto + toggle + select
- Todo lo anterior + file upload (avatar, etc.)
- Todo + campos complejos (2FA, sessions, API keys)
Q5. ¿Hay sección de seguridad? (password, 2FA, sessions, api keys)
- Sí 2) No
Q6. ¿Hay sección de facturación? (plan, tarjetas, historial)
- Sí 2) No
Template: auth
Tanda 1 — Modo
Q1. Modo:
- Solo login
- Solo register
- Toggle login/register
Q2. Nombre de la app (abierta) (aparece en el header).
Q3. Logo / marca:
- Icono Tabler (abierta — cuál)
- SVG inline
- Texto (nombre de la app)
- Sin logo
Tanda 2 — Campos
Q4. Campos en register extra a email/password:
- Solo full_name
- full_name + organization
- full_name + organization + role
- Ninguno (solo email + password)
- Otro (abierta)
Q5. Password strength meter:
- Sí 2) No
Q6. Remember me:
- Sí 2) No
Tanda 3 — Social
Q7. Proveedores OAuth (puedes elegir varios — ej. 1,2):
- GitHub
- GitLab
- Microsoft
- SSO corporativo
- Ninguno (solo email/password)
Q8. Terms & conditions checkbox en register:
- Sí, required 2) No
Template: error
Q1. Código:
- 404 2) 500 3) 403 4) 503 5) Custom (abierta)
Q2. Tono del mensaje:
- Formal y breve
- Amigable / humorístico
- Técnico (para devs)
Q3. Icono Tabler:
- IconBug (error genérico)
- IconServerOff (backend down)
- IconLock (permission denied)
- IconSearchOff (not found)
- Otro (abierta)
Q4. Acciones:
- Solo "Volver al inicio"
- "Volver al inicio" + "Contactar soporte"
- "Volver al inicio" + "Reintentar"
- Las tres
Q5. ¿Mostrar request-id / trace-id para debugging?
- Sí 2) No
Template: custom
Q1. Descripción del objetivo de la pantalla (abierta — 1-2 frases).
Q2. ¿Dentro de FnAppShell?
- Sí, con header + navbar
- Sí, solo header
- No, pantalla completa
Q3. Primitivas principales (puedes marcar varias con coma):
- Card + KpiCard
- DataTable
- Charts (line/bar/area/pie)
- Command (combobox cmdk)
- GraphContainer (sigma.js)
- Timeline
- Dropzone (upload)
- Stepper
- Otro (abierta)
Q4. Estados a cubrir:
- Loading + Empty + Error
- Loading + Empty
- Solo loading
- Ninguno (datos siempre presentes)
Q5. Interactividad:
- Solo lectura
- Formulario / edición
- Drag & drop
- Realtime (SSE / WebSocket)
- Mix (abierta)
Q6. Data mock (abierta — pega JSON o describe).
Salida final del agente
Cuando el usuario haya respondido todas las tandas, el agente:
- Recapitula las respuestas en una tabla Markdown
| # | Pregunta | Respuesta |. - Genera el prompt completo de Claude Design con todos los placeholders rellenos, tomando el template correspondiente de
frontend/design_prompts/{template}.md. - Entrega el prompt final en un bloque de código copiable.
- Pregunta al final: "¿Copio al portapapeles / abres Claude Design?" o "¿Ajustamos algo antes?".