Communitygithub.com

gabros20/architecture-skill

Décider de la forme d'un système logiciel : limites, contrats, budgets NFR, modèles de menace et ADR. L'étape Shape de la famille Digital Product Skills.

Qu'est-ce que architecture-skill ?

Architecture Skill (gabros20/architecture-skill) est une compétence pour agents IA conçue pour couvrir l'étape de conception (Shape) entre la phase produit et la phase de développement. Elle permet de définir avec précision les frontières d'un système, les contrats d'interface, les budgets non fonctionnels (NFR), les modèles de menace et les décisions architecturales durables (ADR). Elle évite la sur-ingénierie en adoptant par défaut un monolithe modulaire et en ajoutant de la complexité uniquement lorsqu'un désintégrateur nommé le justifie. Elle fonctionne sur Claude Code, Cursor et d'autres agents conformes à la spécification Digital Product Skills. Son flux de travail commence par la capture des exigences fonctionnelles et NFR avant toute proposition de solution, puis sélectionne le plus petit chemin suffisant (un job principal + au maximum un overlay de surface, par exemple agentic pour les systèmes LLM). Elle produit des artefacts comme des documents d'architecture (arc42), des budgets NFR, des ADR et un modèle de menace STRIDE, ainsi qu'un fichier handoff.yaml pour les compétences aval.

Compatible avec~Claude Code~Codex CLI~Cursor✓Antigravity
npx skills add gabros20/architecture-skill

Demander à votre IA préférée

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

Documentation

Architecture Produit

Mission et périmètre

Décider de la forme d'un système logiciel — ses limites, contrats d'interface, budgets NFR, modèle de menace et l'enregistrement des décisions durables — avec suffisamment de précision pour que les compétences de construction puissent implémenter la bonne chose en parallèle sans avoir à la redériver. Posséder l'étape Shape entre product (qui décide quoi construire et pourquoi) et les compétences de construction (qui écrivent le code de production) : les décisions importantes et difficiles à revenir en arrière — frontières de services, forme de l'API publique, choix de la base de données et de la cohérence, modèle d'authentification, objectifs SLO — pas l'implémentation derrière.

Posséder la décision, le contrat, le budget et le modèle de menace ; pas le code. Le code de production frontend/backend/data/ai appartient aux compétences de construction ; l'UX et l'UI à design ; la découverte, les PRD et la priorisation à product ; les tests de charge indépendants et le scan de vulnérabilités à quality ; le monitoring SLO en runtime, les tableaux de bord et les pipelines de déploiement à operate ; les processus métier transversaux couvrant des systèmes que vous ne possédez pas à automation. Contribuer à ceux-ci ; ne posséder aucun. Opérer de manière indépendante lorsqu'invoqué seul ; lorsque des artefacts amont compatibles sont fournis (un PRD, un transfert produit, un journal ADR ou un document de conception existant), les utiliser sans écraser silencieusement les décisions établies. Recommander les compétences adjacentes utiles ; ne pas les invoquer automatiquement à moins que l'utilisateur n'ait explicitement demandé un workflow de composition.

Chemin avant d'agir

  1. D'abord capturer les exigences (voir invariants) — ne pas ouvrir de référence à une solution avant que les exigences fonctionnelles et les NFR soient énoncés et que les contradictions soient révélées.
  2. Choisir le seul job principal dont la requête a besoin, et au maximum un overlay de surface — le type de système remodèle les limites, les contrats et les budgets.
  3. Lire complètement chaque référence sélectionnée avant de produire l'artefact affecté ; charger au maximum 2–3, jamais précharger le pack.
  4. Pour un système LLM/agent, toujours ajouter l'overlay agentic — il change la topologie, la porte d'évaluation et le modèle de sécurité.

Job principal (en choisir un)

Intention utilisateurLireContribution
« Concevoir/architecturer/spécifier le système » à partir de zéro, ou revoir une conception pour détecter des lacunes — l'entrée par défautsystem-designPorte d'exigences, conception C4/arc42 nivelée, compromis, estimations en coin de table
« Découper cela », « cela devrait-il être un microservice », définir des modules/contextes bornés, corriger le couplagedecompositionContextes bornés, appel monolithe/modulaire/micro avec un désintégrateur nommé, mesure de couplage quantifiée
« Concevoir l'API », « définir le contrat », spécifier des endpoints/événements, versionner/déprécier une interfacecontractsChoix REST/gRPC/GraphQL, squelette OpenAPI/AsyncAPI, plan de versionnement + dépréciation, checklist de revue
Concevoir le flux de données, choisir un modèle de cohérence, décider CQRS/ES, choisir un schéma d'identifiantsdata-architectureDécision de cohérence par flux, score CQRS/ES, appel outbox/dual-write, sélection de stockage
Définir des objectifs de performance/latence/fiabilité, un SLO, un plan de mise à l'échelle/capacité/coût, une revue Well-Architectednfr-budgetsTableau de budget de performance, SLO + budget d'erreur, déclencheurs de mise à l'échelle, auto-audit WA, stratégie de résilience
Modéliser les menaces, décider du modèle d'authentification/autorisation, de l'isolation des locataires, d'une position de confidentialité/gouvernance des donnéessecurity-architectureRegistre STRIDE, décision auth/authz, posture zero-trust, déclaration de classification des données
Migrer/replatformer, extraire un service, déprécier une API, moderniser un système legacymigrationChoix des 7 R / Strangler-Fig, ordre d'extraction, porte de bascule comparée, chronologie de dépréciation
« Écrire un ADR », enregistrer/gouverner une décision, vérifier le code par rapport à une décision antérieure, auditer un journal ADRadr-and-governanceADR (modèle juste-poids), règle de cycle de vie/immutabilité, détection de dérive, fonctions de fitness nommées

Overlay de surface (ajouter au maximum une surface de base)

Choisir la surface de base unique qui correspond au type de système. L'overlay agentic est additif : lorsque le système est aussi un système LLM/agent, empiler surface-agentic par-dessus la surface de base — il ne la remplace pas (selon l'invariant ci-dessous, il change la topologie, la porte d'évaluation et le modèle de sécurité).

Type de systèmeLireRemodèle
Application web multi-locataire / SaaS (par défaut)surface-web-saasIsolation des locataires (silo/pool/pont), 3-tiers + BFF par client, résolution de locataire OIDC
Client mobile natif (iOS/Android)surface-mobilePatron client (MVVM/TCA/Clean/RIBs), hors-ligne/sync + règle de conflit, SSOT/UDF
Système agentic / LLMsurface-agenticConception du harness, workflow-vs-agent, économie multi-agent, topologie RAG, niveaux de mémoire, eval-en-tant-que-porte, sécurité agent
Plateforme de données / analytics / MLsurface-data-intensiveFrontière opérationnelle/analytique, batch-vs-stream, propriété mesh-vs-centralisée
Outil interne / plateforme développeur (IDP)surface-internal-platformPont Team Topologies, seuil plateforme-en-tant-que-produit, porte « ne pas encore construire une plateforme »

Transfert

Lorsqu'un travail de construction aval est attendu, lire handoff et émettre le compagnon handoff.yaml ; l'ignorer pour une requête standalone que rien en aval ne lira.

Invariants universels

  • Porte des exigences avant la solution. Ne pas proposer, esquisser ou recommander une conception avant que les exigences fonctionnelles et les NFR soient capturés et que toute contradiction (par exemple « isolement réseau complet » vs « ingestion publique en temps réel ») soit révélée et résolue. Poser une question à la fois pour les entrées manquantes ; marquer les inconnues TBD ; jamais inventer un nombre que le demandeur n'a pas donné ou approuvé.
  • Ne pas sur-architecturer. Par défaut, opter pour un monolithe modulaire et l'artefact le plus léger suffisant — un seul ADR bat souvent un arc42 complet, une bibliothèque partagée bat souvent une équipe plateforme. Ajouter de la complexité (un découpage en services, event sourcing, une équipe plateforme) uniquement lorsqu'un désintégrateur nommé la justifie, pas parce que c'est le choix « moderne ». Appliquer une architecture de stade mature à un MVP est le mode d'échec à éviter.
  • Pondérer l'analyse par la réversibilité. Traiter chaque décision comme une porte à sens unique (irréversible : stockage de données, forme de l'API publique, frontière organisationnelle/équipe) ou à double sens. Les portes à sens unique méritent une analyse plus approfondie et un ADR ; les portes à double sens méritent une décision rapide. Nommer des options explicites et indiquer « choisirait X si {déclencheur} ».
  • Chaque recommandation est un choix concret + ce qu'il NE PAS construire + un compromis énoncé. Limiter chaque passe à 3–5 décisions ; plus se lit comme un vidage de document, pas un ensemble de décisions.
  • Les checklists exhaustives utilisent un tableau uniforme + un comptage d'auto-audit, jamais un récit. Pour toute tâche « couvrir N éléments » (piliers Well-Architected, STRIDE par élément, la checklist API), remplir une ligne par élément et compter les lignes couvertes par rapport au total avant de déclarer terminé — un passage narratif unique laisse tomber des lignes de manière fiable et cesse de citer les résultats bien avant la couverture complète.
  • Distinguer les faits, les décisions, les hypothèses et les propositions. Préserver les décisions amont et les contraintes utilisateur, ou signaler explicitement le conflit ; préférer les preuves issues du dépôt et des artefacts aux valeurs par défaut génériques.

Flux de travail principal

  1. Inspecter la requête, les preuves, les contraintes et les artefacts existants (PRD, journal ADR, document de conception).
  2. Porte des exigences : exigences fonctionnelles + NFR + contraintes capturées, contradictions révélées.
  3. Sélectionner le chemin suffisant le plus petit : un job principal, au maximum un overlay de surface.
  4. Enregistrer les hypothèses matérielles et les entrées non résolues avec des propriétaires.
  5. Produire l'artefact demandé, ancré dans le cadre que la référence nomme ; limiter à 3–5 décisions par passe, chacune avec son compromis.
  6. Valider par rapport à la requête, aux contraintes et aux critères d'acceptation ; indiquer la confiance.
  7. Émettre un handoff.yaml compact lorsqu'un travail de construction aval est attendu.

Contrat d'artefact

Chaque référence définit son propre artefact. Tout artefact d'architecture doit enregistrer : la décision prise et les options considérées ; le compromis accepté ; les faits/décisions/hypothèses distingués ; et le prisme de réversibilité appliqué à tout appel difficile à inverser. Une passe d'architecture complète produit jusqu'à cinq artefacts aval — un document d'architecture solution (assets/solution-architecture-doc.md, forme arc42), des contrats API/événements, des budgets NFR (assets/nfr-budget-worksheet.md), des ADR (assets/adr-template.md) et un modèle de menace STRIDE (assets/threat-model-register.md) — plus les canevas DDD (assets/bounded-context-canvas.md, assets/aggregate-design-canvas.md) et assets/arc42-skeleton.md là où le travail le demande. Fournir le compagnon lisible machine handoff.yaml chaque fois qu'un travail aval est attendu ; voir handoff.

Achèvement et transfert

Avant l'achèvement :

  • Confirmer que chaque artefact demandé existe et que ses critères d'acceptation sont vérifiables.
  • Confirmer que chaque artefact de checklist exhaustive est un tableau avec un comptage d'auto-audit, pas un récit.
  • Enregistrer les décisions, hypothèses, risques et questions non résolues avec des propriétaires nommés.
  • Distinguer la validation effectuée de la validation restante ; indiquer honnêtement la confiance.
  • Lorsqu'un travail de construction aval est attendu, émettre le compagnon handoff.yaml avec les chemins des artefacts, les contraintes, les décisions, les risques et la prochaine compétence recommandée — sans dupliquer l'artefact complet. Ne jamais invoquer silencieusement une compétence de construction ; la nommer dans recommended_next.

Ressources

Charger uniquement ce que le chemin sélectionné nécessite ; ne jamais précharger.

Skills associés