Synthèse automatique
Diagnostique et corrige de façon autonome une compétence brepjs-cad (implement, verify ou polish) à partir de son propre signal d'évaluation, puis re-vérifie en RED→GREEN et publie une PR.
Points forts
- Exécute la boucle complète sans demander : évaluation, diagnostic, correction, vérification et PR.
- Utilise des sous-agents auteurs en clean-room pour limiter la contamination lors du healing d'implement.
- La cible verify s'appuie sur la précision/rappel face à des fixtures connues mauvaises, avec confirmation RED→GREEN.
- La cible polish exige un juge aveugle pré/post et une règle de polish nommée et attribuable.
Limites
- Ne couvre que les compétences géométriques brepjs-cad ; brainstorm/design sont explicitement hors périmètre.
- Dépend d'un harnais local déjà construit (lib, CLI, viewer, Chrome) ; un dist viewer obsolète casse silencieusement les snapshots.
- Le rappel de verify est une borne inférieure limitée aux codes présents dans mutate.ts.
À utiliser lorsqu'un sweep d'évaluation sur une compétence brepjs-cad révèle une lacune et que vous voulez la corriger puis la re-vérifier de bout en bout sans étapes manuelles.
À ne pas utiliser pour les compétences textuelles brainstorm/design, ni lorsqu'il faut des évaluations live facturées, un journal Langfuse, ou que le harnais local build/viewer ne peut pas tourner.
Analyse de sécurité
PrudenceThe skill orchestrates legitimate development workflows (build, test, file writes, subagent fan-out) but contains no destructive, exfiltrating, or obfuscated commands. Autonomy is scoped to the repository and /tmp, and it explicitly avoids billed evaluations. Rated caution because it uses network-installing tools and autonomous subagents.
- •Runs npm/npx commands (build, vite build, puppeteer browsers install) and spawns autonomous subagents without human approval.
- •Writes files to /tmp and executes verification harness, though scoped to the repo and temporary directories.
Exemples
/heal-skill implement hardest/heal-skill verify (fix a missed code in the recall table; update HINT_TABLE with a matching tests/report.test.ts case if needed)/heal-skill polish (use the implement heal's first-valid parts; accept only if the post render is still valid and the blind judge prefers it for a named polish rule)description: Autonomously self-heal a brepjs-cad pipeline skill from its own eval — /heal-skill <target> for implement (clean-room authors + auto/judge), verify (precision/recall over known-bad fixtures), or polish (pre/post design judge). Diagnose against the real source, fix the skill, RED→GREEN re-verify, ship a PR. Sub-only ($0 incremental), drives end-to-end without asking.
argument-hint: '<target: implement | verify | polish> [scope] (default: implement hardest)'
brepjs-cad skill self-heal loop
Drive eval → diagnose → fix → RED→GREEN verify → ship end-to-end so a skill heals from its own
signal. The autonomous sibling of /eval-skill (which measures + proposes fixes). Self-heal,
don't ask first — when the sweep surfaces a gap, run the whole loop.
Targets
The geometry-producing skills each have an automated signal — pick one with the first argument
(default implement). Brainstorm/design are text-only and are reviewed via the skill-reviewer
agent + bench/specFixtures.ts, not healed here.
- implement — heals
skills/implement/SKILL.md. Fan out clean-room subagent authors (each reads only the implement skill + its references) over the corpus; signal =auto(valid + declared dims) + blind visual judge. The full procedure below is this target. - verify — heals
skills/verify/SKILL.md(and, if the gap is in code, theHINT_TABLEinsrc/verify/report.tswith a matchingtests/report.test.tscase). Signal =npm run eval:verify -w brepjs-cad(bench/verifyEval.ts): precision over the good corpus + recall over the known-bad fixtures (bench/mutate.ts). RED→GREEN = a missed code in the recall table flips to PASS because the verifier now emits/explains it. Recall is a lower bound (only the mutate.ts codes) — say so; add a fixture when a new code appears. - polish — heals
skills/polish/SKILL.md. Corpus = the implement heal's first-valid parts (fallback: the 16skills/implement/examples). Signal = the pre/post protocol inbench/blind-judge-polish.md: render pre → run polish → render post; a heal is confirmed only if post is still valid AND the blind judge prefers post AND the change is attributable to a named polish rule.
The procedure below details the implement target; for verify/polish, substitute the signal above and the same diagnose → fix → RED→GREEN → ship discipline.
Scope & cost
- Corpus = the playground examples (
apps/playground/src/lib/examples/,basics+mechanical; skipbim/sheet-metal). Re-read the catalog each run so new examples are picked up.$ARGUMENTSscopes it; defaulthardest= the advanced-op parts (lofts, sweeps, revolves, threads, chamfers, multi-body assemblies) — that's where gaps hide, and a clean sweep there means the reliable core is fine. - Sub-only, $0 incremental. Clean-room subagents are flat-rate. Do NOT run the billed
eval:liveCI or push to Langfuse routinely (thebrepjs judgeevaluator bills Anthropic per item). Langfuse stays opt-in.
0. Pre-flight (once)
Build only what's missing: root lib (test -f dist/index.js || npm run build), CLI
(--workspace=brepjs-cad), snapshot viewer (packages/brepjs-cad/viewer/dist, from the
brepjs-cad build — NOT brepjs-viewer; rebuild if missing or stale, since a dist older than
viewer/src throws globalThis.__setScene is not a function and silently fails every --snapshot:
[ -f packages/brepjs-cad/viewer/dist/index.html ] && [ -z "$(find packages/brepjs-cad/viewer/src -newer packages/brepjs-cad/viewer/dist/index.html)" ] || (cd packages/brepjs-cad && npx vite build --config viewer/vite.config.ts)), Chrome
(cd packages/brepjs-cad && npx puppeteer browsers install chrome). Scratch ESM dir:
mkdir -p /tmp/brepjs-eval && printf '{"type":"module"}\n' > /tmp/brepjs-eval/package.json.
Smoke-test the harness before fanning out: author a trivial box part and verify --check;
all N authors share the one assumption that bare import 'brepjs' resolves + the kernel loads, so
prove it with a 3-line part first (turns an N-way silent failure into a 5-second check).
1. Signal — clean-room author fan-out (the auto signal)
One general-purpose subagent per example, dispatched in parallel batches. Each subagent:
- Reads ONLY
packages/brepjs-cad/skills/implement/SKILL.md+ its references/examples + the bundledreference/llms-full.txt. MUST NOT read anything underapps/playground/**(the answer key) or lean on remembered brepjs API — that measures the model, not the skill. - Gets the example's
descriptionas the whole prompt (+id/label). - Authors
/tmp/brepjs-eval/<id>.brep.ts, runsverify <id>.brep.ts --check --json <id>.report.jsonwith NO--snapshot(the render server is a singleton on :7373; concurrent snapshots crash — rendering is the main session's job, step 2). Iterates ≤4 attempts. - Reports a terse fixed shape:
FIRST_TRY_OK,FIRST_TRY_CODES(normalized —TS2304,CHAMFER_FAILED,EXPECTED_ASSERTION_FAILED,TYPECHECK+TSxxxx, …), the verbatim first error,EVENTUAL_OK,ATTEMPTS, a causal field (what tripped it; did the skill's prose carry or fail it),SKILL_GAP(did a rule mislead/omit/contradict — name it), andFINAL_CODE.
2. Judge — blind subagent (the design signal)
Don't grade your own loop's output — you authored the heal, so you're a conflicted judge. Hand
the design signal to a blind judge subagent (full protocol: bench/blind-judge.md): render the
author part AND the playground reference serially, strip the labels to neutral A/B filenames
(coin-flipped per part), and a judge that never saw the heal or which render is whose returns the
verdict — you only render, shuffle, decode, aggregate. One judge per part, escalate to a panel of 3
on tie-good/confidence:low (tie-blob re-renders instead — see bench/blind-judge.md). Note: clean-room authors stop at ok:true with no --snapshot, skipping
the polish pass (SKILL.md authoring step 8), so this measures first-valid design quality — call
that out.
3. Diagnose — verify before healing
Tally the first-try failure-mode distribution; the dominant normalized code is the gap. Clean-room
agents misattribute citations — turn every claimed gap into ground truth: grep the actual
src/**/*.ts + shipped dist/**/*.d.ts (and the references) before touching the skill. A
doc-vs-type contradiction (the skill tells you to write code that won't compile) is the worst
class and a must-fix; an omission is lower-severity. Never heal a phantom.
4. Fix — surgical SKILL.md prose
Edit the canonical packages/brepjs-cad/skills/implement/SKILL.md (+ its references/*.md) in the house
style: terse, failure-mode-keyed, cite the error code. The fix must live in prose (the real
eval author is prompt-only — file-only example fixes don't transfer). If a bundled reference
(llms-full.txt/llms.txt) is itself wrong, fix it and grep everywhere — root llms.txt +
root llms-full.txt + their build-synced bundled copies under packages/brepjs-cad/reference/
(it hides in 4 places). Don't leave a self-referential cross-link that your own fix falsifies.
5. Verify — RED→GREEN (writing-skills TDD)
Re-run the failing clean-room authors against the patched skill. Each failure must flip to a
clean pass and be causally attributable — the author now does the right thing because of the
new rule (it imports the symbol, omits the derived bound, passes 'Z'), quoting it. A pass for an
unrelated reason isn't a verified heal. Add a deterministic micro-test where one is cleaner than an
agent (e.g. a typed-vs-untyped --check pair).
6. Ship
Branch first (never commit on main), conventional commit (fix(brepjs-cad): …), push over
SSH (sandboxed is fine), open the PR with gh — only the gh pr create/api/merge calls need
the unsandboxed shell (dangerouslyDisableSandbox), so scope the disable to those. Monitor
CI; when Greptile posts, verify each finding before complying (receiving-code-review — don't
perform agreement), fix to 5/5, then squash-merge on green + 5/5 (the standing flow). Multiple
independent, each-RED→GREEN-verified heals in one PR is fine; defer single-incident findings
(let them earn a fix by recurring) and list them. Clean up the branch after merge.
Scorecard & honesty
Emit the two-signal scorecard in the formatScorecard shape (see /eval-skill): header
(model … brepjs … skill=brepjs-cad@<ver> … units=mm), per-part valid|INVALID + judge:✓|✗|—,
per-category + TOTAL, first-try both% vs eventual both% + lift, and the failure-mode breakdown.
No silent caps: if you swept a subset (hardest) or judged a sample, say so loudly — first-try%
is then a lower bound, and unjudged-but-valid parts are a coverage gap (judge:—), not a pass.
Du fichier au premier essai
Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.
Consulter la source et ses fichiers annexesCe téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.
1. Télécharger le fichier
Télécharger SKILL.mdDepuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/brepjs-cad-skill-self-heal-loop-mrwakds1/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.
Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.
mkdir -p '.skill-downloads/brepjs-cad-skill-self-heal-loop-mrwakds1' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/brepjs-cad-skill-self-heal-loop-mrwakds1/download' --output '.skill-downloads/brepjs-cad-skill-self-heal-loop-mrwakds1/SKILL.md.part' && mv '.skill-downloads/brepjs-cad-skill-self-heal-loop-mrwakds1/SKILL.md.part' '.skill-downloads/brepjs-cad-skill-self-heal-loop-mrwakds1/SKILL.md'2. Vérifier les prérequis
Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.
Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.
Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.
3. Charger la skill
Le fichier ne fournit pas un en-tête name/description exploitable pour cette procédure native. Le téléchargement reste disponible pour lecture ; utilisez le mode manuel ci-dessous.
Mode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.
4. Faire un premier essai
Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :
Lis .skill-downloads/brepjs-cad-skill-self-heal-loop-mrwakds1/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.
Bonnes pratiques React Hook Form
Developpement
Maîtrisez React Hook Form : évitez les anti-patterns, gérez les abonnements, et traitez correctement reset, dirty state et entrées contrôlées.
Migration Emotion vers Mantine
Developpement
Migrer les styled-components Emotion vers des composants Mantine avec style props et modules CSS. Pour convertir .styled.tsx ou supprimer les imports @emotion.
Détecteur de dérive de périmètre
Developpement
Analyse les diffs git par rapport à une intention pour détecter la dérive de périmètre, fichiers non liés et PR trop larges, puis suggère de garder, diviser ou justifier.