Communitygithub.com

lguidolin/diseñar-antes-de-construir

Úsalo al iniciar una funcionalidad, corregir un error no trivial o estar a punto de escribir código de implementación, antes de que exista cualquier código. Síntomas que indican que lo necesitas: "esto es simple, solo lo codificaré", alcanzar el editor antes de que se apruebe un diseño, o una idea que aún no se ha convertido en especificación y plan.

¿Qué es diseñar-antes-de-construir?

Esta habilidad impone un flujo de trabajo estructurado en cinco etapas —Lluvia de ideas, Especificación, Planificación, Ejecución y Registro— diseñado para prevenir los costos ocultos de las suposiciones no examinadas. Se activa cada vez que un desarrollador está a punto de escribir código de implementación antes de tener un diseño aprobado, garantizando que ninguna línea de código se escriba hasta que se haya articulado y acordado una solución. El asistente guía al usuario a través de cada etapa, desde explorar el contexto y las restricciones hasta redactar una especificación formal y descomponerla en un plan de implementación ordenado. También identifica señales de alerta comunes —como abrir el editor sin un diseño aprobado o tratar una solicitud de una línea como una especificación completa— y proporciona contraargumentos para racionalizaciones típicas. Compatible con herramientas como Claude Code, Cursor y Codex, esta habilidad es más valiosa para tareas que no son triviales ni reversibles, donde un error de diseño podría costar más que el propio paso de diseño. La habilidad incluye documentación completa en 'engineering-constitution/references/engineering-constitution.md' para mayor contexto.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/lguidolin/agent-skills/tree/main/skills/designing-before-building

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación


name: diseñar-antes-de-construir description: Úsalo al iniciar una funcionalidad, corregir un error no trivial o estar a punto de escribir código de implementación, antes de que exista cualquier código. Síntomas que indican que lo necesitas: "esto es simple, solo lo codificaré", alcanzar el editor antes de que se apruebe un diseño, o una idea que aún no se ha convertido en especificación y plan.

Diseñar antes de construir

Resumen

El trabajo fluye a través de cinco etapas, en orden: Lluvia de ideas → Especificación → Planificación → Ejecución → Registro. No se inicia ninguna implementación antes de que se haya articulado y aprobado un diseño. La tarea más simple es donde las suposiciones no examinadas cuestan más.

Violar la letra de esta regla es violar su espíritu. "Diseñaré mientras codifico" no es diseñar.

Las cinco etapas

  1. Lluvia de ideas. Explora la intención, las restricciones y los criterios de éxito. Haz una pregunta a la vez. Propón 2–3 enfoques con sus ventajas y desventajas y una recomendación. Converge en un diseño y obtén aprobación explícita. Aquí no hay código.
  2. Especificación. Escribe el diseño aprobado en un documento con fecha. La especificación es el contrato de lo que se va a construir.
  3. Planificación. Descompón la especificación en un plan de implementación ordenado y revisable antes de tocar el código.
  4. Ejecución. Implementa según el plan, con puntos de control de revisión.
  5. Registro. Destila lo que se construyó y por qué en un registro de decisiones (consulta recording-decisions).

Descompón esfuerzos grandes. Si una solicitud abarca múltiples subsistemas independientes, detente y descompón antes de refinar los detalles. Cada subproyecto ejecuta su propio ciclo, construido en orden de dependencias.

Cuándo NO usarlo

Las ediciones genuinamente triviales y reversibles (un error tipográfico, una línea de registro, un valor de configuración) saltan directamente a Ejecución. La prueba: ¿una suposición incorrecta aquí costaría más que el paso de diseño? Si es así, diseña primero.

Racionalizaciones comunes

ExcusaRealidad
"Esto es demasiado simple como para necesitar un diseño"Las tareas simples ocultan suposiciones. Unas pocas frases de diseño son baratas; una reescritura no.
"Diseñaré sobre la marcha"El código escrito antes de que el diseño esté resuelto es código reescrito. El diseño es un acto separado.
"El usuario me dijo qué construir, ESO es el diseño"Una solicitud establece qué, no cómo. El cómo es el diseño.
"Primero exploraré el código base para conocer el enfoque"La exploración informa el diseño; no reemplaza la aprobación de uno.
"Tenemos prisa"La prisa es exactamente cuando un diseño omitido produce trabajo desechable.

Señales de alerta — DETENTE

  • Abrir el editor antes de que exista un diseño aprobado
  • "Déjame hacer un prototipo rápido" (un prototipo sin especificación es alcance no revisado)
  • Iniciar un cambio de múltiples archivos sin un plan
  • Tratar la solicitud de una línea del usuario como una especificación terminada

Todas estas señales significan: detente, diseña, obtén aprobación, luego construye.

Razonamiento completo: Artículo I de la constitución, incluido en engineering-constitution/references/engineering-constitution.md.

Individual skills in this repo

This repo contains 18 individual skills — each has its own dedicated page.

lguidolin/change-hygiene-and-code-craft

Use when writing or refactoring code, structuring a commit or PR, or deciding whether to abstract duplication. Symptoms — mixing reorg with logic changes, a PR doing several things at once, a file growing large, the second copy of similar code, or unsure whether to DRY something up.

lguidolin/cloud-delivery-aks

Use when deploying to Kubernetes or Azure Kubernetes Service (AKS), configuring cloud secrets, setting up progressive rollout/canary, per-PR ephemeral environments, or k8s health probes. Keywords — Kubernetes, AKS, Key Vault, Argo Rollouts, Flagger, canary, blue-green, liveness, readiness, PodDisruptionBudget, HPA, rollback, GHCR.

lguidolin/commit-history-rewrite

Use when an existing repository has messy commit history that needs to conform to conventional commits before adopting release-please, or when intermediate WIP/fixup/merge commits need to be cleaned up.

lguidolin/conventional-commits-and-releases

Use when committing, writing a commit message, opening a PR that will be squash-merged, or configuring automated versioning/changelogs. Keywords — conventional commits, release-please, semver, feat/fix/chore, breaking change, changelog.

lguidolin/defense-in-depth-security

Use when handling untrusted input, secrets, authentication/authorization, or dependencies — or threat-modeling a new surface. Keywords — STRIDE, threat model, least privilege, secrets management, supply chain, dependency scanning, input validation, audit log, defense in depth.

lguidolin/engineering-constitution

Use when starting work in a project that follows the engineering constitution, orienting to its rules, or deciding which engineering practice applies to a task — spec writing, commits, testing, security, deploys, database, or UI work.

lguidolin/graphql-contract-testing

Use when writing a GraphQL query/mutation that the UI and a test will share, or building route/schema contract or smoke tests. Symptoms — copying a query into a test, a test asserting on query text, schema change that didn't break the UI build, or RLS/permission drift. Keywords — graphql-codegen, typed document, contract test, route smoke test.

lguidolin/init-repo-CI

Use when setting up a new repository with conventional commits, release-please, and CI automation, or when retrofitting an existing repository that lacks automated versioning and PR validation workflows.

lguidolin/interface-craft-and-accessibility

Use when building or styling UI — components, layouts, forms, design tokens — or making accessibility decisions. Keywords — a11y, WCAG, keyboard navigation, focus state, contrast, design system, minimalist UI, component reuse, ARIA, semantic HTML.

lguidolin/merge-gates-and-automation

Use when setting up or changing CI, pre-push hooks, or a task runner, or deciding what must pass before merge. Symptoms — tempted to put authoritative checks only in a local hook, skip CI, bypass with --no-verify, or unsure what gates a merge vs. runs locally.

lguidolin/observability-and-slos

Use when adding logging, metrics, tracing, health checks, SLOs, or alerting — or when building a service surface that needs to be operable and debuggable. Keywords — structured logs, OpenTelemetry, correlation id, RED metrics, liveness, readiness, SLI, SLO, error budget, alerting.

lguidolin/performance-and-scale

Use when working on hot paths, list endpoints, pagination, data-access in loops, or public interfaces/schemas. Symptoms — unbounded queries, N+1 access, no latency budget, optimizing without measuring, or changing an interface many consumers depend on. Keywords — pagination, N+1, Hyrum's Law, performance budget, bundle size.

lguidolin/postgres-postgraphile-rls-and-sql

Use when writing PostgreSQL, PostGraphile config, Row-Level Security policies, SQL schema files, or working on the Browser→App→PostGraphile→Postgres data path. Keywords — RLS, SECURITY DEFINER, search_path, pgSettings, grants, roles, GraphQL depth limit, query cost, statement_timeout, SQL file organization.

lguidolin/recording-decisions

Use when a design or architecture decision has been made and needs to be captured — writing a decision record or ADR, updating a decision index, noting a deferred idea, or superseding a past decision. Keywords — ADR, decision record, rationale, rejected alternatives, dependency index.

lguidolin/resilience-and-deploy-safety

Use when planning a deploy, designing a rollback, or responding to an incident or writing a postmortem. Keywords — deploy safety, rollback, immutable artifact, progressive delivery, canary, blast radius, incident response, blameless postmortem, error budget.

lguidolin/ship-it

Use when the user wants to ship work — push, PR, archive decision records, merge, and clean up. Handles the full lifecycle from committing final changes through post-merge cleanup including converting specs/plans to compact decision records.

lguidolin/tests-as-a-control

Use when writing or modifying tests, when a test breaks during a refactor, or when testing permission/role rules. Symptoms — tempted to edit a test to make it pass, testing only the happy path, a deny-test that started passing, flaky tests, or unsure what to assert.

lguidolin/zero-downtime-migrations

Use when changing a database schema where data must survive the change — adding/removing/renaming columns, constraints, indexes, or backfilling. Symptoms — a destructive migration bundled with a code deploy, a NOT NULL column with a backfill, a table-locking UPDATE, or a rename. Keywords — expand/contract, parallel change, backfill, NOT VALID, CREATE INDEX CONCURRENTLY, graphile-migrate.

Skills relacionados