Communitygithub.com

lguidolin/designing-before-building

Verwenden Sie dies, wenn Sie eine Funktion beginnen, einen nicht-trivialen Fehler beheben oder Implementierungscode schreiben möchten – bevor Code existiert. Symptome: ‚Das ist einfach, ich programmiere es einfach‘, zum Editor greifen, bevor ein Design genehmigt ist, oder eine Idee, die noch nicht in eine Spezifikation und einen Plan umgewandelt wurde.

Was ist designing-before-building?

Diese Fähigkeit zwingt zu einem strukturierten, fünfteiligen Arbeitsablauf (Brainstorm → Spec → Plan → Execute → Record), bevor jeglicher Implementierungscode geschrieben wird. Sie verhindert kostspielige Annahmen und Nacharbeiten, indem sie eine explizite Designphase mit Genehmigung vor dem Bauen erzwingt. Sie unterstützt KI-Agenten wie Claude Code und ist ideal für Funktionen, Fehlerbehebungen oder jede nicht-triviale Änderung. Die Regel verbietet ‚Design beim Codieren‘ und bietet klare rote Flaggen und häufige Ausreden, die vermieden werden sollten.

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

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation


name: designing-before-building description: Verwenden Sie dies, wenn Sie eine Funktion beginnen, einen nicht-trivialen Fehler beheben oder Implementierungscode schreiben möchten – bevor Code existiert. Symptome: "Das ist einfach, ich programmiere es einfach", zum Editor greifen, bevor ein Design genehmigt ist, oder eine Idee, die noch nicht in eine Spezifikation und einen Plan umgewandelt wurde.

Design vor dem Bauen

Überblick

Die Arbeit durchläuft fünf Stufen in dieser Reihenfolge: Brainstorm → Spezifikation → Plan → Ausführen → Aufzeichnen. Keine Implementierung beginnt, bevor ein Design formuliert und genehmigt ist. Die einfachste Aufgabe ist die, bei der ungeprüfte Annahmen am meisten kosten.

Den Buchstaben dieser Regel zu verletzen, verletzt auch ihren Geist. "Ich designe während des Codierens" ist kein Design.

Die fünf Stufen

  1. Brainstorm. Erkunden Sie Absicht, Einschränkungen, Erfolgskriterien. Stellen Sie eine Frage nach der anderen. Schlagen Sie 2–3 Ansätze mit Kompromissen und einer Empfehlung vor. Einigen Sie sich auf ein Design und holen Sie explizite Genehmigung ein. Hier kein Code.
  2. Spezifikation. Schreiben Sie das genehmigte Design in ein datiertes Dokument. Die Spezifikation ist der Vertrag für das, was gebaut wird.
  3. Plan. Zerlegen Sie die Spezifikation in einen geordneten, überprüfbaren Implementierungsplan, bevor Sie Code anfassen.
  4. Ausführen. Implementieren Sie gemäß Plan mit Überprüfungs-Meilensteinen.
  5. Aufzeichnen. Destillieren Sie, was gebaut wurde und warum, in einen Entscheidungsnachweis (siehe recording-decisions).

Große Vorhaben zerlegen. Wenn eine Anfrage mehrere unabhängige Subsysteme umfasst, stoppen Sie und zerlegen Sie, bevor Sie Details verfeinern. Jedes Unterprojekt durchläuft seinen eigenen Zyklus, aufgebaut in Abhängigkeitsreihenfolge.

Wann NICHT verwenden

Wirklich triviale, umkehrbare Bearbeitungen (ein Tippfehler, eine Logzeile, ein Konfigurationswert) überspringen direkt zur Ausführung. Der Test: Würde eine falsche Annahme hier mehr kosten als der Design-Schritt? Wenn ja, zuerst designen.

Häufige Ausreden

AusredeRealität
"Das ist zu einfach, um ein Design zu brauchen"Einfache Aufgaben verbergen Annahmen. Ein paar Sätze Design sind billig; ein Neuschreiben nicht.
"Ich designe während des Codierens"Code, der vor dem endgültigen Design geschrieben wurde, ist Code, der neu geschrieben wird. Design ist ein separater Akt.
"Der Benutzer hat mir gesagt, was zu bauen ist, das IST das Design"Eine Anfrage sagt was, nicht wie. Das Wie ist das Design.
"Das zuerst Erkunden der Codebasis zeigt mir den Ansatz"Erkundung informiert Design; sie ersetzt nicht die Genehmigung eines Designs.
"Wir haben es eilig"Eile ist genau dann, wenn übersprungenes Design Wegwerfarbeit produziert.

Rote Flaggen — STOPP

  • Den Editor öffnen, bevor ein genehmigtes Design existiert
  • "Lass mich schnell einen Prototypen bauen" (ein Prototyp ohne Spezifikation ist ungeprüfter Umfang)
  • Eine Änderung über mehrere Dateien ohne Plan beginnen
  • Die einzeilige Anfrage des Benutzers als fertige Spezifikation behandeln

All dies bedeutet: Stopp, designen, Genehmigung einholen, dann bauen.

Vollständige Begründung: Artikel I der Verfassung, gebündelt in 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.

Verwandte Skills