Communitygithub.com

maskshell/solidforge-pi

Un système d'ingénierie en boucle pour les agents de codage IA, distribué en tant que package Pi. Converger → spécifier → implémenter : développement TDD parallèle avec portes de convergence à double anneau, révision contradictoire multi-source, vérification des citations ancrée dans les sources, et recherche de collision avec l'art antérieur — une couverture honnête à chaque étape, jamais un feu vert silencieux.

Qu'est-ce que solidforge-pi ?

Ce skill, fourni en tant que package Pi, implémente un système complet d'ingénierie en boucle pour les agents de codage IA. Il structure le processus de développement en trois phases : convergence (alignement sur les objectifs), spécification (définition précise des exigences), et implémentation (développement TDD parallèle). Au cœur du système se trouvent des portes de convergence à double anneau qui assurent que chaque étape atteint un consensus solide avant de passer à la suivante. La révision contradictoire multi-source, la vérification des citations ancrée dans les sources, et la recherche de collision avec l'art antérieur fournissent des contrôles de qualité rigoureux à chaque porte, garantissant une couverture honnête sans faux positifs. Le skill est conçu pour fonctionner avec des agents comme Claude Code, Cursor ou Codex, et se coordonne avec d'autres skills (cross-source-review, primary-source-verification, blueprint-crafting) pour offrir une solution de développement complète. La couverture novatrice (prior-art-search) est un module distinct qui recherche les collisions avec l'art antérieur non cité, émet des constats honnêtes et ne déclare jamais la nouveauté. L'architecture est conçue pour être additive et non fusionnante avec les autres skills.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add maskshell/solidforge-pi

Demander à votre IA préférée

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

Documentation

Couverture de Nouveauté

Un détecteur de collision en lecture seule, ancré dans la recherche, pour chaque revendication de nouveauté d'un artefact en forme de document (un article de conception, un document de recherche, une spécification). Il ouvre la surface de nouveauté de l'axe RÉSULTAT que ni cross-source-review (csr), primary-source-verification (psv), ni le chercheur de blueprint-crafting n'atteignent : csr converge l'axe PROCESSUS d'un document mais ne recherche pas l'art antérieur ; psv RÉCUPÈRE chaque source citée (en arrière, citée) mais ne chasse pas l'art antérieur non cité ; le chercheur COLLECTE des sources vers l'avant pour la rédaction (la direction opposée). prior-art-search est le contrôle de collision arrière avec l'art antérieur non cité manquant — il CHERCHE dans le corpus d'art antérieur chaque revendication de nouveauté et rapporte honnêtement les collisions.

Positionnement Central

Ancré dans la recherche, pas basé sur le rappel

Un résultat de collision / pertinent-non-cité DOIT citer une CITATION récupérée de l'art antérieur trouvé, pas un rappel du modèle. Un résultat qui ne peut pas ancrer une citation récupérée du texte d'art antérieur trouvé est rétrogradé à non-concluant, jamais affirmé. C'est l'invariant porteur de charge (règle d'espace de travail 3 + L1), imposé par une auto-porte (NC-I5). Le texte trouvé est lui-même extrait par le modèle des résultats de recherche — un oracle plus faible que la source faisant autorité récupérée par psv (voir la mise en garde à deux couches ci-dessous).

Couverture par revendication de collision, pas un verdict de nouveauté

prior-art-search n'émet JAMAIS nouveaute_confirmee ou "le document est nouveau." Son seul signal de première ligne est collisions_sous_couverture_connue : C clair-sous-recherche, N collisions, U pertinent-non-cité, I non-concluant sur M revendications de nouveauté extraites. Les revendications I (et le cas M=0 — pas de surface de nouveauté) sont ESCALADÉES à un humain. Il s'agit d'une divulgation honnête de la couverture, PAS d'un verdict de nouveauté. La limite irréductible de l'absence de preuve : vous ne pouvez pas prouver une négative ("aucun art antérieur n'existe"), donc un document sans collision trouvée est "aucune collision trouvée dans le corpus recherché," PAS "nouveau." Un skill symétrique de "convergence de nouveauté" qui boucle vers un booléen nouveaute_confirmee est l'erreur catégorielle — il aplatit une divulgation de COUVERTURE ("aucune collision trouvée dans le corpus recherché") en un VERDICT ("nouveau"), c'est-à-dire que l'absence de preuve est traitée comme une preuve d'absence ; prior-art-search n'est explicitement PAS cela. (Le cadre plus large à deux axes — processus × résultat — est l'article §4.2 du spec-gaming ; prior-art-search vit entièrement sur l'axe résultat, donc son erreur est interne au résultat, pas une confusion processus/résultat.)

Additif à csr et psv ; un pipeline unique

prior-art-search est ADDITIF à csr (axe processus) et psv (vérification des sources citées) ; il ne FUSIONNE avec aucun des deux. Contrairement au débat multi-tour même-famille + famille-différente de csr, prior-art-search est un pipeline UNIQUE — extraire les revendications de nouveauté → rechercher l'art antérieur → verdict de collision par revendication → divulgation de la couverture. L'oracle est le corpus d'art antérieur interrogeable, pas un modèle de famille différente, donc il ne porte PAS le substrat hétérogène de csr. psv et prior-art-search composent : un document à enjeux élevés peut exécuter psv (les sources citées sont-elles exactes ?) ET prior-art-search (les revendications de nouveauté sont-elles sans collision par rapport à l'art antérieur trouvable ?). Ils ne fusionnent pas.

Faiblesse d'oracle à deux couches, déclarée honnêtement (règle d'espace de travail 3)

L'oracle de prior-art-search est le corpus d'art antérieur interrogeable, PLUS FAIBLE que la source primaire récupérée de psv à DEUX couches (la mise en garde d'honnêteté porteuse de charge, proposition §3 / ADR §8 Q4) :

  1. Faiblesse du côté de la comparaison (partagée avec psv). La comparaison revendication-vs-art-antérieur est jugée par le modèle — clair-sous-recherche signifie que le modèle n'a trouvé aucune collision, pas qu'il n'en existe pas. C'est la faiblesse de comparaison partielle de niveau 2 de psv.
  2. Faiblesse du côté de la sélection (propre à prior-art-search). Un résultat de recherche ajoute une faiblesse de sélection en plus de la faiblesse de comparaison : biais de classement, limites de rappel (vous ne pouvez pas rechercher tout le corpus), et le texte d'art antérieur trouvé est lui-même extrait par le modèle du résultat de recherche, pas d'une plage d'octets faisant autorité récupérée.

Donc prior-art-search est plus faible à deux couches, pas "oracle faible vs oracle fort." C'est précisément POURQUOI il n'émet JAMAIS nouveaute_confirmee et pourquoi sa première ligne est une déclaration de couverture, pas un verdict. clair-sous-recherche signifie "aucune collision dans ce qui a été recherché," pas "nouveau." L'oracle plus faible est la limite irréductible de la vérification de nouveauté en l'absence d'un humain.

Deux angles morts, déclarés honnêtement (règle d'espace de travail 3)

Les propres étapes effectuées par le modèle de prior-art-search comportent des angles morts divulgués plutôt que cachés : (1) l'extraction des revendications de nouveauté hérite des angles morts de l'extracteur — les revendications que ni l'auteur ni l'extracteur n'identifient comme "nouveauté" sont absentes de M ; (2) la comparaison revendication-vs-art-antérieur est jugée par le modèle — clair-sous-recherche signifie que le modèle n'a trouvé aucune collision, pas qu'il n'en existe pas. Les comptes C/N/U/I/M sont conditionnés par ce qui a été extrait, recherché et comparé, pas une garantie d'exhaustivité. Une branche d'extraction de famille différente est une atténuation différée (partielle).

Périmètre

  • Inclus : extraire les revendications atomiques de nouveauté d'un document (chacune : emplacement + cible de recherche) ; rechercher le corpus d'art antérieur par revendication ; émettre un verdict de collision par revendication (collision/pertinent-non-cité/clair-sous-recherche/non-concluant) ancré dans une citation récupérée de l'art antérieur trouvé pour les collisions ; émettre un enregistrement de collision (collisions_sous_couverture_connue) + un paquet de constats de collision.
  • Exclus : révision de code (developpement-parallele) ; rédaction de spécifications/conception d'architecture (blueprint-crafting) ; convergence de processus de document (cross-source-review) ; vérification des sources CITÉES (primary-source-verification) ; collecte de recherche (chercheur blueprint-crafting) ; un verdict de nouveauté — si la nouveauté du document est RÉELLE ou significative — (humain).

Garde de Périmètre (détection à l'entrée)

  • Le livrable est du code source/test → acheminer vers developpement-parallele.
  • Le livrable est la rédaction/réécriture d'une spécification, d'une conception d'architecture, d'un plan d'itération, ou d'une recherche → acheminer vers blueprint-crafting.
  • La demande est "mener une révision contradictoire multi-tour jusqu'à convergence sur ce document" → acheminer vers cross-source-review (axe processus).
  • La demande est "les revendications CITÉES de ce document tiennent-elles face à leurs sources ?" → acheminer vers primary-source-verification (psv = arrière-CITÉ ; prior-art-search = arrière-NON-CITÉ).
  • La demande est "ce document SURÉVALUE-t-il la nouveauté — entre-t-il en collision avec l'art antérieur qu'il n'a pas cité ?" → prior-art-search (ce skill).
  • La demande est "est-ce nouveau / significatif / la bonne contribution ?" → axe résultat, humain uniquement.

La garde est souple (rappeler + acheminer, pas refuser). La Phase A repose sur l'invocation explicite (/skill:prior-art-search).

Démarrage Rapide

Vous êtes l'orchestrateur. Les branches sont en lecture seule ; le pilote exécute le pipeline unique (PAS un débat multi-tour). Exécutez dans l'ordre.

  1. Cadrer — identifier l'artefact + sa surface de nouveauté. Énumérer les revendications centrales de nouveauté (les affirmations porteuses de charge "X est nouveau / premier / n'a pas d'art antérieur" à vérifier pour collision). Déclarer le périmètre.

  2. Extraction des revendications de nouveauté (NC-I2) — invoquez l'outil subagent avec agent="solidforge:extracteur-revendications-nouveaute" (contexte frais) ; il lit l'artefact et énumère les revendications atomiques de nouveauté, chacune liée à un emplacement et une cible de recherche. Atomique = une proposition de nouveauté par revendication (composé divisé). Une revendication de nouveauté est une affirmation de nouveauté ("X est un nouveau cadre," "Y est le premier à," "Z n'a pas d'art antérieur"). Distinguer des revendications factuelles/de citation (domaine de psv — vérifier, ne pas vérifier les collisions) et des revendications interprétatives ("c'est significatif" — PAS adjugeable par recherche ; escalader à l'humain, marqué comme irrecevable). (Mise en garde sur l'angle mort de l'extracteur : les revendications qu'aucune des parties n'identifie comme "nouveauté" sont absentes de M.)

  3. Recherche multi-source + verdict de collision (NC-I3) — pour chaque revendication de nouveauté, rechercher dans le corpus d'art antérieur (arXiv, web, dépôts publics) des travaux qui ONT DÉJÀ formulé la revendication, puis comparer la revendication avec l'art antérieur trouvé et attribuer l'un des :

    • collision — l'art antérieur trouvé formule déjà cette revendication (la nouveauté du document est surestimée) ; citez la source en collision + CITEZ le texte d'art antérieur trouvé (gravité bloquant ; preuve DOIT citer l'art antérieur trouvé).
    • pertinent-non-cité — un travail pertinent trouvé que le document n'a pas cité (pas une collision directe, mais un manque de couverture) ; CITEZ l'art antérieur trouvé (gravité avertissement).
    • clair-sous-recherche — aucune collision trouvée DANS LE CORPUS RECHERCHÉ (PAS nouveau ; juste aucune collision n'a fait surface). Compté seulement, pas un constat.
    • non-concluant — la recherche n'a pas pu couvrir la revendication (corpus payant, requête ambiguë, rien de trouvable) ; escalader à l'humain (gravité couverture). Les sources ouvertes (résumés arXiv, dépôts publics) sont recherchées sans identifiant ; les API de recherche web utilisent une surface HTTP nommée séparément (PAS l'espace de jetons LLM _ANTHROPIC_AUTH_TOKEN de csr — voir install.md). (Mise en garde sur l'angle mort de la comparaison + la faiblesse du côté de la sélection.)
  4. Divulgation de la couverture (NC-I4) — émettre un enregistrement-collision : collisions_sous_couverture_connue = C clair-sous-recherche / N collisions / U pertinent-non-cité / I non-concluant sur M = C+N+U+I revendications de nouveauté extraites ; plus un paquet de constats de collision (constats de collision / pertinent-non-cité / non-concluant ; les revendications clair-sous-recherche sont comptées, pas listées). M=0 (aucune revendication de nouveauté extractible — un document ne faisant aucune affirmation de nouveauté, ou toutes les revendications de nouveauté interprétatives) et I>0 ESCALADENT tous deux à un humain. JAMAIS nouveaute_confirmee. Un constat de collision/pertinent-non-cité sans citation récupérée est rétrogradé à non-concluant.

Le signal honnête est la divulgation de la couverture — exactement ce qui a été recherché et ce qui est entré en collision, et ce qui n'a pas pu être couvert. La question de savoir si le document est véritablement NOUVEAU reste humaine.

Chaîne d'Autorité

  • docs/proposal.md = conception faisant autorité (maître ; axe processus CSR SUBSTANTIELLEMENT-CONVERGÉ + psv N=9/K=0 vérifié, 2026-07-31).
  • docs/iteration-plan.md = plan d'exécution (éléments de travail Phase A NC-I0–NC-I6 ; en cas de conflit, proposal.md l'emporte).
  • docs/design-decisions.md = journal ADR (les décisions non évidentes : jamais-nouveaute_confirmee, pipeline-unique-pas-debat, le proxy structurel faux-positif, la faiblesse d'oracle de recherche à deux couches, la relation avec psv/chercheur, la surface d'identification).
  • docs/proposal.convergence.md = trace de révision croisée de la proposition.

Coordination avec cross-source-review / primary-source-verification / blueprint-crafting / parallel-development

  • cross-source-review reste le moteur de convergence de l'axe PROCESSUS. prior-art-search est ADDITIF et non fusionnant : substantiellement_converge de csr n'implique pas la couverture de prior-art-search, et vice versa.
  • primary-source-verification est la branche complémentaire de l'axe résultat. psv = arrière-CITÉ (récupérer chaque source citée) ; prior-art-search = arrière-NON-CITÉ (rechercher l'art antérieur que le document n'a PAS cité). Ils composent (un document peut exécuter les deux) ; ils ne fusionnent pas. prior-art-search réutilise le motif de champ de schéma de psv (les constats de collision étendent les constats de document de psv — un sur-ensemble strict) et le RAISONNEMENT sur l'identification de install.md — modèles de copie, PAS code (règle d'espace de travail 7).
  • blueprint-crafting reste pur (axe processus). Son chercheur est une collecte VERS L'AVANT ("trouver des sources sur X pour la rédaction") — la direction opposée à la collision arrière de prior-art-search. Ils ne fusionnent pas.
  • developpement-parallele possède la révision de code. prior-art-search est en forme de document, pas en forme de code.
  • Limite fichiers_touches : ce skill possède prior-art-search/ + agents/extracteur-revendications-nouveaute.agent.md à la racine du dépôt (en miroir de solidforge:extracteur-revendications de psv). Il ne modifie pas la logique centrale de csr, psv, bc, ou pd (prior-art-search est additif). Terminologie (règle d'espace de travail 10) : collisions_sous_couverture_connue est le seul terme de première ligne ; nouveaute_confirmee est le terme interdit et n'apparaît jamais comme champ émis.

Auto-Vérifications (Définition de Fini)

Note de maturité (construction Phase A) : toutes les auto-portes ci-dessous sont livrées et passent au vert (NC-I0–NC-I6 convergé ; docs/iteration-plan.run-record.json porte le verdict). Le dogfood N≥3 en direct a eu lieu le 2026-08-01 sur 3 artefacts réels, y compris le long article spec-gaming — profil de couverture dans dogfood-run-2026-08-01.md : 2 résultats pertinents-non-cités ont fait surface via l'art antérieur récupéré (spec-gaming NC34 ↔ SWE-ABS ; psv NC2 ↔ Vérification de Citation Alimentée par IA), et la collision connue du paradoxe d'auto-certification est revenue clair-sous-recherche sous l'oracle arXiv uniquement — démontrant la faiblesse à deux couches en production (un résultat de collision zéro signifie "aucune collision dans ce qui a été recherché," PAS "nouveau"). La porte dogfood.py hors ligne couvre le dispositif canonique uniquement (chemin de saut règle-1 lorsqu'il n'y a pas de réseau). Report restant : une branche d'extraction de famille différente (atténuation partielle de l'angle mort de l'extracteur). Le nom prior-art-search est PROPOSÉ, en attente de VERROUILLAGE humain (proposition §8 Q1).

Une modification de skill n'est pas terminée tant qu'une auto-vérification échoue (règle d'espace de travail 1). Exécuter avant le commit :

python3 skills/prior-art-search/infra/test/disconnect_check.py        # structure + chaîne de chargement
python3 skills/prior-art-search/infra/test/plugin_layout.py           # plugin.json + agents bien formés
python3 skills/prior-art-search/infra/test/findings_shape_check.py    # chaque chemin d'émission → constats-collision + enregistrement-collision valide
python3 skills/prior-art-search/infra/test/coverage_policy_check.py   # les comptes totalisent M=C+N+U+I ; M=0/I>0 escalade ; pas de nouveaute_confirmee ; invariant de citation récupérée
python3 skills/prior-art-search/infra/test/fetched_quote_gate.py      # chaque constat de collision/pertinent-non-cité cite le texte d'art antérieur récupéré ; sans citation → non-concluant (l'invariant L1/règle-3)
python3 skills/prior-art-search/infra/test/lint_self.py               # dogfood : lint la propre infrastructure de ce skill (ruff)
python3 skills/prior-art-search/infra/test/dogfood.py                 # exécute le pipeline sur un document factice avec une collision plantée (saute gracieusement sans réseau ; le journal enregistré le remplace)

Fichiers de Référence

  • proposal.md — conception faisant autorité (problème, non-objectifs, contrat détenu, couches, décisions §8).
  • iteration-plan.md — exécution Phase-A

… [tronqué pour la traduction]

Skills associés