Communitygithub.com

lguidolin/engineering-constitution

Utilisez cette compétence lorsque vous débutez sur un projet qui suit la constitution d'ingénierie, pour vous orienter vers ses règles, ou pour décider quelle pratique d'ingénierie appliquer à une tâche — rédaction de spécifications, commits, tests, sécurité, déploiements, base de données ou travail d'interface.

Qu'est-ce que engineering-constitution ?

Cette compétence agit comme un index portable des pratiques d'ingénierie, décomposé en compétences plus ciblées. Elle définit les principes inviolables du génie logiciel (comprendre avant de construire, enregistrer chaque décision, tests comme contrôle, YAGNI, automatisation, intégration dans le temps, règles appliquées par les outils, priorité aux instructions de l'utilisateur) et achemine vers la compétence spécifique selon la tâche (conception, commits, tests, sécurité, déploiement, etc.). Son principal intérêt est d'optimiser pour les systèmes maintenables sur le long terme, en supplantant les habitudes par défaut des développeurs. Elle supporte tous les projets via un niveau universel (Tier 1) qui s'applique sans modification, et un niveau spécifique à la pile technique (Tier 2) qui peut être échangé selon le stack. La documentation complète se trouve dans references/engineering-constitution.md et accompagne cette compétence. Pour l'utiliser, chargez-la avant d'écrire du code, de committer, de déployer ou de modifier un test si vous n'avez pas consulté la compétence pertinente. La constitution remplace les habitudes par défaut (principe 7) et corrige ainsi les automatismes inadaptés.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/lguidolin/agent-skills/tree/main/skills/engineering-constitution

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Constitution d'Ingénierie

Vue d'ensemble

Une charte portable des pratiques d'ingénierie, décomposée en compétences ciblées. Cette compétence est l'index : elle énonce les principes inviolables et vous achemine vers la compétence spécifique à votre tâche. Le raisonnement complet se trouve dans references/engineering-constitution.md, fourni avec ce SKILL.md afin qu'il voyage avec la compétence où qu'elle soit installée.

Idée centrale : Le génie logiciel, c'est de la programmation intégrée dans le temps. Optimisez pour le système durable — son exploitation, sa modification sécurisée, sa récupération en cas de panne — pas le premier déploiement.

Les Huit Principes Inviolables

  1. Comprendre avant de construire. Pas de code sans conception approuvée.
  2. Enregistrer chaque décision avec sa justification — et ce que vous avez rejeté.
  3. Les tests sont un contrôle, pas une formalité — et un changement de comportement se fait test-first. Un test qui échoue est une information, jamais éditée. Un changement structurel est au contraire conditionné par le passage de la suite existante sans modification.
  4. YAGNI, sans pitié.
  5. Automatiser le répétable.
  6. Le génie logiciel, c'est de la programmation intégrée dans le temps.
  7. Une règle non appliquée n'est qu'une suggestion. Liez les règles à des outils ou étiquetez-les comme soumises au jugement du relecteur.
  8. Les instructions explicites de l'utilisateur priment sur ce document. Priorité : Utilisateur → Constitution → valeurs par défaut de l'outil.

Quelle Compétence Ai-Je Besoin ?

Niveau 1 — universel (s'applique à tout projet) :

Votre tâcheCompétence
Démarrer une fonctionnalité, transformer une idée en spécification/plandesigning-before-building
Une décision a été prise ; la consigner (ADR, index, idées différées)recording-decisions
Commiter, rédiger des messages, releases automatiséesconventional-commits-and-releases
Écrire/modifier des tests ; règles de permission/rôle ; un test cassé lors d'un refactoringtests-as-a-control
Écrire ou refactoriser du code ; structurer un changement ; décisions DRYchange-hygiene-and-code-craft
Construire l'UI, les composants, le style, l'accessibilitéinterface-craft-and-accessibility
CI, hooks pre-push, exécuteurs de tâches, portes de mergemerge-gates-and-automation
Logging, métriques, tracing, checks de santé, SLOs, alertesobservability-and-slos
Entrées non fiables, secrets, auth, dépendances, modélisation des menacesdefense-in-depth-security
Chemins chauds, pagination, N+1, endpoints de liste, interfaces publiquesperformance-and-scale
Planifier un déploiement, un rollback, ou un incident/post-mortemresilience-and-deploy-safety

Niveau 2 — spécifique à la pile (charger uniquement si l'outillage/le sujet est présent) :

Votre tâcheCompétence
PostgreSQL, PostGraphile, RLS, fichiers SQL, le chemin app → GraphQL → DBpostgres-postgraphile-rls-and-sql
Requêtes GraphQL partagées entre UI et tests ; tests de contrat route/schémagraphql-contract-testing
Changement de schéma avec des données qui doivent survivre — migrations, backfillszero-downtime-migrations
Déploiement sur Kubernetes/AKS, secrets cloud, déploiement progressif, environnements par PRcloud-delivery-aks

Comment ces Compétences s'Appliquent à un Nouveau Projet

  • Le Niveau 1 voyage inchangé. Chaque compétence ci-dessus s'applique à tout projet — application web, pipeline, CLI, bibliothèque.
  • Le Niveau 2 est interchangeable. Lorsque la pile est différente, les compétences de Niveau 2 ne se déclenchent pas (leurs descriptions sont spécifiques à la pile) et vous les remplacez par des équivalents. Les principes qu'elles implémentent (chemin de données unique, application finale basse, coutures de contrat, déploiements réversibles) restent valables.
  • S'adapter au cycle de vie. Un projet en pré-lancement ou purement local applique les migrations sans temps d'arrêt, le canary et le processus d'incident formel comme écrire-la-règle-maintenant, activer-sur-déclencheur. Indiquez le mode du projet dans son premier enregistrement de décision.

Drapeau Rouge

Si vous êtes sur le point d'écrire du code, de commiter, de déployer ou de modifier un test et que vous n'avez pas consulté la compétence pertinente ci-dessus — arrêtez-vous et chargez-la d'abord. La constitution remplace l'habitude par défaut (Principe 7) ; c'est contre l'habitude qu'elle corrige.

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/designing-before-building

Use when starting a feature, fixing a non-trivial bug, or about to write implementation code — before any code exists. Symptoms you need this: "this is simple, I'll just code it", reaching for the editor before a design is approved, or an idea that hasn't been turned into a spec and plan.

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 associés