From 9223fda99f9471a0c0865663afa4021929c96138 Mon Sep 17 00:00:00 2001 From: bastien Date: Mon, 28 Sep 2026 18:59:49 +0200 Subject: [PATCH] feat(effort): pin effort on the 20 repo-authored agents (BDR-077 second axis) --- agents/analyzer.md | 1 + agents/bugfixer.md | 1 + agents/code-cleaner.md | 1 + agents/commit-changer.md | 1 + agents/doc-syncer.md | 1 + agents/feater.md | 1 + agents/geo-analyzer.md | 1 + agents/handover-doc-writer.md | 1 + agents/hotfixer.md | 1 + agents/onboarder.md | 1 + agents/plan-challenger.md | 1 + agents/plugin-advisor.md | 1 + agents/plugin-probe.md | 1 + agents/refactorer.md | 1 + agents/release-executor.md | 1 + agents/scaffolder.md | 2 +- agents/security-auditor.md | 1 + agents/seo-analyzer.md | 1 + agents/validator-analyzer.md | 1 + agents/verifier.md | 1 + lib/tests/effort-routing.test.sh | 8 ++++++++ skills/init-project/SKILL.md | 2 +- 22 files changed, 29 insertions(+), 2 deletions(-) diff --git a/agents/analyzer.md b/agents/analyzer.md index b7f7728..84b7f0a 100644 --- a/agents/analyzer.md +++ b/agents/analyzer.md @@ -3,6 +3,7 @@ name: analyzer description: Analyze code, codebase, or problem before any modification. Produces a factual report without proposing solutions. Use proactively before any refactoring, design, or implementation. tools: Read, Grep, Glob, Bash model: opus +effort: high memory: project --- diff --git a/agents/bugfixer.md b/agents/bugfixer.md index 3bbd971..3094d12 100644 --- a/agents/bugfixer.md +++ b/agents/bugfixer.md @@ -3,6 +3,7 @@ name: bugfixer description: Bug-fix EXECUTOR — dispatched by /bugfix with a closed DIAGNOSIS + FIX PLAN + contract. Applies the fix and a regression test, runs the suite, reports. No investigation, no questions, no commit. tools: Read, Edit, Write, Bash, Grep, Glob model: sonnet +effort: medium --- # BUGFIXER — fix executor diff --git a/agents/code-cleaner.md b/agents/code-cleaner.md index 3f94d21..6c32af2 100644 --- a/agents/code-cleaner.md +++ b/agents/code-cleaner.md @@ -3,6 +3,7 @@ name: code-cleaner description: Cleanup EXECUTOR (PHASE 2) — dispatched by /code-clean with an APPROVED scope. Deletes approved dead code, hands style/structural items to the refactorer, re-audits. Zero behavior change. No audit, no questions, no commit. tools: Read, Edit, Write, Bash, Grep, Glob model: sonnet +effort: medium --- # CODE-CLEANER — cleanup executor (PHASE 2) diff --git a/agents/commit-changer.md b/agents/commit-changer.md index 4b7712d..b74d68b 100644 --- a/agents/commit-changer.md +++ b/agents/commit-changer.md @@ -3,6 +3,7 @@ name: commit-changer description: Retrace-and-commit engine — dispatched by /commit-change. Groups pending changes into atomic commits, one per logical step, in work order. tools: Bash, Read, Grep, Glob model: sonnet +effort: high --- # Git Smart Commit diff --git a/agents/doc-syncer.md b/agents/doc-syncer.md index a042395..08bf745 100644 --- a/agents/doc-syncer.md +++ b/agents/doc-syncer.md @@ -3,6 +3,7 @@ name: doc-syncer description: 'Two-mode public-doc sync agent — MODE: audit (dispatched model="opus" — drift detection, semantic analysis, drafts, PATCH PLAN, read-only) and MODE: patch (sonnet pin — applies the APPROVED plan, oracle-checked, emits CHANGE SUMMARY + PATCHED_FILES). The validation gate lives in the DISPATCHER (BDR-077). Convention-aware (Diátaxis, Keep a Changelog); never touches .claude/.' tools: Read, Write, Edit, Bash, Grep, Glob model: sonnet +effort: high --- # DOC SYNCER diff --git a/agents/feater.md b/agents/feater.md index e834ef6..99e9a92 100644 --- a/agents/feater.md +++ b/agents/feater.md @@ -3,6 +3,7 @@ name: feater description: Small-feature EXECUTOR — dispatched by /feat with a closed plan + contract. Implements to the letter, tests, reports. No planning, no questions, no commit. tools: Read, Edit, Write, Bash, Grep, Glob model: sonnet +effort: medium --- # FEATER — plan executor diff --git a/agents/geo-analyzer.md b/agents/geo-analyzer.md index f23e0e7..22f37d9 100644 --- a/agents/geo-analyzer.md +++ b/agents/geo-analyzer.md @@ -3,6 +3,7 @@ name: geo-analyzer description: GEO audit agent for AI search engines — dispatched by /geo and /seo. Audits AI crawlers, llms.txt, entity signals, Schema.org; emits a fix bundle (dispatcher applies), scored report. Classical SEO → seo-analyzer agent. tools: Read, Edit, Write, Bash, Grep, Glob, WebFetch, WebSearch model: opus +effort: xhigh --- # GEO — Generative Engine Optimization audit, fix & strategy diff --git a/agents/handover-doc-writer.md b/agents/handover-doc-writer.md index 85d7e36..79b63dc 100644 --- a/agents/handover-doc-writer.md +++ b/agents/handover-doc-writer.md @@ -3,6 +3,7 @@ name: handover-doc-writer description: 'Two-mode deliverable writer — MODE: synthesize (dispatched model="opus" — memory+git clustering, 6-chapter synthesis into a run-scoped draft) and MODE: render (sonnet pin — annexes, precheck, deterministic gates, MD + branded HTML/PDF from the draft). Dispatched twice by client-handover with the resolved PACKAGE. No audits, no questions, no dispatch.' tools: Read, Write, Edit, Bash, Grep, Glob, WebSearch, WebFetch model: sonnet +effort: high --- # HANDOVER DOC WRITER diff --git a/agents/hotfixer.md b/agents/hotfixer.md index 5f4eb1e..1aeb4e9 100644 --- a/agents/hotfixer.md +++ b/agents/hotfixer.md @@ -3,6 +3,7 @@ name: hotfixer description: Quick-fix executor — dispatched by /hotfix, which owns the routing and gitflow gate. Max 2 files, obvious root cause only (typo, CSS value, config, off-by-one, missing import). tools: Read, Edit, Write, Bash, Grep, Glob model: sonnet +effort: low --- # HOTFIXER — closed-fix executor / L1 fix-bundle applier diff --git a/agents/onboarder.md b/agents/onboarder.md index 4a8a792..209d1d7 100644 --- a/agents/onboarder.md +++ b/agents/onboarder.md @@ -3,6 +3,7 @@ name: onboarder description: Generate claude-config files (CLAUDE.md, settings.json, .claudeignore, .gitignore safety, .claude/tasks/ + .claude/memory/ + .claude/audits/) for an existing project. Pure config generator — no interview, no audit. Called by /onboard orchestrator. tools: Read, Write, Edit, Bash, Glob, Grep model: sonnet +effort: medium --- # ONBOARDER (config generator) diff --git a/agents/plan-challenger.md b/agents/plan-challenger.md index 50d91fa..58a8426 100644 --- a/agents/plan-challenger.md +++ b/agents/plan-challenger.md @@ -3,6 +3,7 @@ name: plan-challenger description: Fresh independent plan challenger — reads a PLAN file from disk and adversarially attacks it through ONE assigned lens (correctness | robustness | simplicity), then renders structured findings + a verdict. Report-only, never fixes, never implements. Dispatched fresh; blind to the other lenses. tools: Read, Grep, Glob, Bash model: opus +effort: xhigh --- # PLAN-CHALLENGER AGENT diff --git a/agents/plugin-advisor.md b/agents/plugin-advisor.md index 1772299..2237d53 100644 --- a/agents/plugin-advisor.md +++ b/agents/plugin-advisor.md @@ -3,6 +3,7 @@ name: plugin-advisor description: Plugin-fit REASONER — dispatched by lib/plugin-gate.md with a PROBE REPORT (from plugin-probe). Classifies signals, scores complexity, recommends enable/disable via the decision table + compatibility matrix. Report-only. tools: Read, Glob, Grep model: opus +effort: xhigh --- # PLUGIN ADVISOR diff --git a/agents/plugin-probe.md b/agents/plugin-probe.md index 31c4eac..9f427be 100644 --- a/agents/plugin-probe.md +++ b/agents/plugin-probe.md @@ -3,6 +3,7 @@ name: plugin-probe description: Mechanical detection probe — dispatched by lib/plugin-gate.md BEFORE the plugin-advisor reasoner. Runs the CLI/filesystem probes, reports raw facts as a PROBE REPORT. No analysis, no recommendations. tools: Bash, Read, Glob, Grep model: sonnet +effort: low --- # PLUGIN PROBE diff --git a/agents/refactorer.md b/agents/refactorer.md index dbd4145..e5480f6 100644 --- a/agents/refactorer.md +++ b/agents/refactorer.md @@ -3,6 +3,7 @@ name: refactorer description: Refactor existing code without changing external behavior. Applies strict project norms. Use on legacy or non-compliant code. tools: Read, Write, Edit, Grep, Glob, Bash model: sonnet +effort: high --- # REFACTORER diff --git a/agents/release-executor.md b/agents/release-executor.md index 204582f..f33a180 100644 --- a/agents/release-executor.md +++ b/agents/release-executor.md @@ -3,6 +3,7 @@ name: release-executor description: Mechanical release executor — dispatched by /release-candidate for its two spans (prep, finish+tag). Never decides the version number or the when-to-release call, never pushes. tools: Read, Edit, Write, Bash, Grep, Glob model: sonnet +effort: low --- # RELEASE-EXECUTOR — mechanical release spans diff --git a/agents/scaffolder.md b/agents/scaffolder.md index a758ddb..607bde3 100644 --- a/agents/scaffolder.md +++ b/agents/scaffolder.md @@ -3,7 +3,7 @@ name: scaffolder description: Create empty project skeleton. Generates CLAUDE.md, settings, structure, config, empty entry points, installs deps, optional Docker. NO business logic. tools: Read, Write, Edit, Bash, Glob, Grep model: sonnet -effort: high +effort: medium --- # SCAFFOLDER diff --git a/agents/security-auditor.md b/agents/security-auditor.md index 01352d7..5f1b586 100644 --- a/agents/security-auditor.md +++ b/agents/security-auditor.md @@ -3,6 +3,7 @@ name: security-auditor description: 'SAST security gate — runs the pinned semgrep rulesets + the CLAUDE.md security checklist on a diff or project scope, maps severities, renders SECURITY — VERDICT: PASS | BLOCK(n). Blocks HIGH/CRITICAL only, reports the rest. Never fixes code. Fresh dispatch, no iteration history.' tools: Read, Grep, Glob, Bash, Write model: sonnet +effort: xhigh --- # SECURITY-AUDITOR AGENT diff --git a/agents/seo-analyzer.md b/agents/seo-analyzer.md index 7233632..9d5d580 100644 --- a/agents/seo-analyzer.md +++ b/agents/seo-analyzer.md @@ -3,6 +3,7 @@ name: seo-analyzer description: 'Classical SEO audit agent (Google, Bing) — dispatched from /seo. Live audit: Core Web Vitals, on-page, technical, local SEO, legal (FR). Emits a fix bundle (dispatcher applies) + scored report. AI/GEO → geo-analyzer agent.' tools: Read, Edit, Write, Bash, Grep, Glob, WebFetch, WebSearch model: opus +effort: xhigh --- # SEO — Classical Search Engines audit, fix & strategy diff --git a/agents/validator-analyzer.md b/agents/validator-analyzer.md index 57112d0..3156755 100644 --- a/agents/validator-analyzer.md +++ b/agents/validator-analyzer.md @@ -3,6 +3,7 @@ name: validator-analyzer description: Web standards audit agent — W3C HTML validity (validator.nu), W3C CSS validity (jigsaw.w3.org), WCAG 2.1 accessibility (axe-core, pa11y, WAVE). Dispatched from /web-validate. Produces scored .claude/audits/VALIDATE.md report with concrete diffs for auto-fixable issues and user actions for judgment-required fixes. Complementary to /harden (security), /seo (indexability), /geo (AI extraction). tools: Read, Edit, Write, Bash, Grep, Glob, WebFetch model: sonnet +effort: low --- # Validator — W3C + WCAG audit diff --git a/agents/verifier.md b/agents/verifier.md index c9cdc2d..3fb7116 100644 --- a/agents/verifier.md +++ b/agents/verifier.md @@ -3,6 +3,7 @@ name: verifier description: Fresh independent verifier — reads a CONTRACT file from disk and renders a structured verdict (CONFORME / ECARTS / ERROR) on the implemented diff. Report-only, never fixes. Dispatched fresh at every iteration; receives no iteration history. tools: Read, Grep, Glob, Bash model: sonnet +effort: xhigh --- # VERIFIER AGENT diff --git a/lib/tests/effort-routing.test.sh b/lib/tests/effort-routing.test.sh index 1de335f..a34a89b 100755 --- a/lib/tests/effort-routing.test.sh +++ b/lib/tests/effort-routing.test.sh @@ -33,6 +33,14 @@ has "settings.json" '"effortLevel": "high"' has "hooks/session-start.sh" 'CLAUDE_CODE_EFFORT_LEVEL' has "hooks/statusline.sh" 'CLAUDE_EFFORT' +# ── 3) agent pins (spec D2): one effort per agent file, judgment mode wins on mode-based agents +for a in hotfixer release-executor plugin-probe validator-analyzer; do fm_has_effort "agents/$a.md" low; done +for a in feater bugfixer code-cleaner onboarder scaffolder; do fm_has_effort "agents/$a.md" medium; done +for a in refactorer analyzer commit-changer doc-syncer handover-doc-writer; do fm_has_effort "agents/$a.md" high; done +for a in plan-challenger plugin-advisor verifier security-auditor seo-analyzer geo-analyzer; do fm_has_effort "agents/$a.md" xhigh; done +for a in interviewer client-handover-writer status-reporter; do fm_no_effort "agents/$a.md"; done +has "skills/init-project/SKILL.md" 'pin sonnet, effort medium' + # ── summary (later tasks insert their locks ABOVE this line) printf 'effort-routing census: %d pass, %d fail\n' "$pass" "$fail" [ "$fail" -eq 0 ] diff --git a/skills/init-project/SKILL.md b/skills/init-project/SKILL.md index a156cf7..e5d240c 100644 --- a/skills/init-project/SKILL.md +++ b/skills/init-project/SKILL.md @@ -95,7 +95,7 @@ contract, each tagged `[gated ]`. STEP 9's verifier judges against this enriched contract. ## STEP 5 — SCAFFOLD -Dispatch `Agent(subagent_type="scaffolder")` (pin sonnet, effort high — +Dispatch `Agent(subagent_type="scaffolder")` (pin sonnet, effort medium — BDR-077 : le design est CLOS au gate #1, le scaffold est de l'exécution, plus jamais inline sur le modèle de session). Pass IN THE PROMPT (LRN-126 — every field the scaffolder consumes crosses the dispatch): BRIEF (verbatim)