Communitygithub.com

lguidolin/enregistrement-des-decisions

À utiliser lorsqu'une décision d'architecture ou de conception est prise et doit être capturée — rédaction d'un enregistrement de décision ou ADR, mise à jour d'un index des décisions, notation d'une idée différée, ou remplacement d'une décision antérieure. Mots-clés — ADR, enregistrement de décision, justification, alternatives rejetées, index des dépendances.

Qu'est-ce que enregistrement-des-decisions ?

Cette compétence permet de capturer les décisions d'architecture et de conception de manière durable, en les transformant en enregistrements structurés plutôt que de les laisser dans la mémoire ou l'historique de discussion. Elle est utile car une décision perdue impose de reconstruire l'intention à partir du code à chaque fois, ce qui coûte du temps et de l'énergie. Compatible avec les assistants IA comme Claude Code, Cursor ou Codex, elle fournit une structure fixe d'enregistrement (architecture, modèle de données, décisions avec justification, interfaces, contraintes, pièges, alternatives rejetées) ainsi que trois artefacts compagnons : un index avec suivi des dépendances, un document « Considérations futures » pour les idées différées, et une archive pour l'historique. Elle inclut également des scripts bash sans dépendance (doc-archive.sh et index-rebuild.sh) pour automatiser la recherche de spécifications sans enregistrement et la régénération de l'index. L'objectif est de réduire la charge cognitive et le coût de contexte en remplaçant les spécifications verbeuses par des enregistrements concis de 30 à 50 lignes.

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

Demander à votre IA préférée

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

Documentation

Enregistrement des décisions

Aperçu

Les décisions sont une infrastructure durable ; la mémoire et l'historique de discussion ne le sont pas. Le coût d'un enregistrement est payé une fois ; le coût d'une décision perdue est payé chaque fois que quelqu'un reconstitue l'intention à partir du code.

La forme de l'enregistrement

Chaque décision non triviale produit un enregistrement avec une structure fixe, afin que tout lecteur sache où regarder :

SectionContenu
ArchitectureLa forme de la solution et les fichiers clés
Modèle de donnéesEntités, champs, relations
Décisions (avec POURQUOI)Chaque choix accompagné de sa justification — pourquoi est obligatoire
InterfacesComment les autres codes l'utilisent
ContraintesCe qui doit rester vrai
PiègesPièges non évidents pour la personne suivante
Alternatives rejetéesCe qui a été considéré et écarté, et pourquoi — empêche de rouvrir des questions réglées

Les trois artefacts compagnons

  • Un index de toutes les décisions avec un suivi explicite des dépendances (ce qui se base sur quoi) et une section remplacé. Transforme un tas d'enregistrements en un graphe navigable.
  • Un document « Considérations futures » — idées différées et préoccupations connues, consulté lors du démarrage de nouveaux travaux pour que rien ne soit silencieusement oublié. Les actions issues d'incidents et les décisions différées avec déclencheur atterrissent ici.
  • Une archive — les enregistrements remplacés sont déplacés ici plutôt que supprimés. L'historique est conservé, pas écrasé.

Référence rapide

  • Convention d'emplacement des enregistrements : docs/superpowers/decisions/YYYY-MM-DD-<sujet>.md avec un frontmatter YAML (title, date, component, status, supersedes, dependencies).
  • Les Considérations futures se trouvent dans docs/superpowers/future-considerations.md. Chaque entrée porte un statut (open / triggered / done / dropped) et, le cas échéant, le déclencheur qui devrait la réactiver. Consultez-le lorsque vous démarrez de nouveaux travaux.
  • Le frontmatter alimente l'index généré automatiquement — tenez-le à jour.
  • Le pourquoi et les alternatives rejetées sont les deux sections les plus utiles. Un enregistrement sans elles est une mine.
  • Rédigez l'enregistrement à l'étape Enregistrement du pipeline (voir designing-before-building), après Exécuter.

Outillage fourni

Cette compétence embarque ses propres scripts et modèle, afin qu'ils fonctionnent dans n'importe quel dépôt où la compétence est installée. Ils se trouvent à côté de SKILL.md :

recording-decisions/
  scripts/doc-archive.sh      trouve les specs/plans sans enregistrement de décision
  scripts/index-rebuild.sh    régénère l'index à partir du frontmatter des enregistrements
  templates/decision-record.md

Pour les localiser — la compétence peut être installée par projet ou globalement :

for base in .claude/skills ~/.claude/skills; do
  d="$base/recording-decisions/scripts"
  [ -d "$d" ] && echo "$d" && break
done

doc-archive.sh [specs_dir] [plans_dir] [decisions_dir] [archive_dir] Liste les specs sans enregistrement de décision correspondant et affiche une invite de conversion construite à partir du modèle. Par défaut, utilise docs/superpowers/{specs,plans,decisions,archive}.

index-rebuild.sh [decisions_dir] [output_file] Réécrit docs/superpowers/index.md à partir du frontmatter de chaque enregistrement — une table Active (component, title, date, dependencies) et une table Remplacé (component, title, superseded by). Régénéré en totalité, donc ne le modifiez jamais à la main.

Les deux sont des scripts bash sans dépendance : un projet utilisant cette compétence n'a pas besoin de yq, jq ni de gestionnaire de tâches. Si les scripts sont manquants, les procédures ci-dessus sont autonomes — faites le travail directement.

Pourquoi cela importe pour le contexte

Les specs et plans sont volontairement verbeux ; ils sont écrits pour un humain qui suit le raisonnement. Cette verbosité est facturée au contexte chaque fois que Claude en ouvre un. Un enregistrement de décision garde ce qui est nécessaire pour avancer — décisions, le pourquoi, interfaces, contraintes, pièges, alternatives rejetées — en environ 30 à 50 lignes, tandis que la spec originale est déplacée dans archive/ où elle reste lisible pour les humains et ne coûte rien tant qu'elle n'est pas ouverte délibérément.

Quand ne PAS l'utiliser

Les changements triviaux et évidents n'ont pas besoin d'enregistrement. Le test : quelqu'un se demanderait-il plus tard « pourquoi cela a-t-il été fait ainsi ? » Si oui, enregistrez-le.

Raisonnement complet : Article II de la constitution, inclus dans 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/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/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/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