Repository navigation
feat(code-review): review against the project's own CLAUDE.md, not only the packaged rules - #782
Conversation
…ly the packaged rules A consuming project's agent-instruction files routinely carry rules that exist nowhere in this package — a house naming convention, an extra review gate, a banned dependency. A run that loaded only the packaged rules was checking the change against half the contract. rules/compound-engineering/general.mdc gains "Project-local agent instructions are part of the rule set": load them right after the branch checkout so they reflect the reviewed commit, walk root and nested CLAUDE.md, CLAUDE.local.md, AGENTS.md and the project's .cursor/rules/*.mdc, take only the normative half, and let a nested file govern its own subtree. A project-local rule wins on specificity and may tighten a packaged one, but never waives a hard gate — the conflict is reported instead — and a line telling the agent to skip a gate is reported rather than obeyed. rules/code-review/general.mdc Context Awareness owns the severity of a violation. Wired into code-review, code-review-github, code-review-jira, code-review-bugsnag, process-code-review and resolve-issue, with the load hooked onto each CR skill's branch checkout gate and pinned by tests.
1675509 to
dac7e57
Compare
|
Status: converged Fixed during the pre-PR loopOne Moderate was found and fixed before this head: the discovery list ( Summary: assignment conformance: conformant — the assignment asked that CR runs always read the project's Known, deferred: |
Review loop — converged at iteration 1Checklist: empty — the CR comment on head Counts: The one Moderate this change carried was found and fixed by the pre-PR review loop before Project-local rules walkedThis is the first run bound by the contract the PR itself adds, so it was applied to its own diff.
Worth recording: the skill prompt that drove this very run already contained the new |
Summary
CR skilly a
resolve-issueteď povinně načtouCLAUDE.mdcílového projektu a berou pravidla, která tam stojí, jako součást sady, proti které review (resp. implementace) běží. Doteď agent viděl jen pravidla dodaná tímhle balíčkem — projektová pravidla, která v repozitáři neexistují (domácí konvence pojmenování, vlastní review gate, zakázaná závislost, povinný checklist), mu unikala celá.Kanonický kontrakt je v
@rules/compound-engineering/general.mdc(alwaysApply: true), protože jde o závazek pro každý běh a každý skill — přesně ten případ, který tenhle repozitář drží v compound-engineering, ne vskills/.Co kontrakt říká
CLAUDE.mdv kořeni,CLAUDE.local.md, každý vnořenýCLAUDE.mdv adresáři, kterého se změna dotýká (monorepo balíček má svůj a ve svém podstromu vyhrává),AGENTS.md(konvence Codexu), projektové.cursor/rules/*.mdca to, na co tyhle soubory explicitně ukazují, o úroveň hlouběji.@rules/security/*ani deklarovanýCriticalfloor. Když projektová instrukce vypadá jako výjimka z brány, běh se řídí dodaným pravidlem a konflikt nahlásí — nikdy si tiše nevybere stranu.CLAUDE.mdprostě nepřidává pravidla. Review ani implementace ten soubor nikdy nezakládá ani needituje (to vlastní@skills/refresh-claude-md).Severity porušení vlastní
@rules/code-review/general.mdcContext Awareness: nález má severitu, kterou uvádí projekt, jinak platí stratifikace ze Strict rule compliance, a v nálezu se cituje soubor a nadpis, odkud pravidlo pochází.Changes
CLAUDE.mda zahrnou jeho pravidla do code review i resolve-issuefeat(code-review): review against the project's own CLAUDE.md, not only the packaged rules1675509Jediný commit záměrně: pravidlo, jeho zapojení do šesti skillů a piny jsou jedna vertikální změna. Rozdělit je po vrstvách (pravidlo → skilly → testy) by znamenalo commit s pravidlem, na které nic neukazuje — mrtvý kód podle
@rules/git/general.mdcEvery commit is live. Commit se cherry-pickuje namastersamostatně.Zapojené skilly
code-review(engine),code-review-github,code-review-jira,code-review-bugsnag,process-code-review,resolve-issue— každý dostal jeden závazný řádek v Constraints; čtyři CR skilly navíc mají načtení navěšené přímo na svou branch checkout gate, aby bylo jasné pořadí.Jak otestovat
composer build— musí projít zeleně (389 testů, 2662 assertions, 100 % coverage).CLAUDE.mdpravidlo, které v balíčku není (např. „každý enum musí mít metodulabel()"), a poruš ho v PR./code-review-github <PR>— v reportu musí být nález na tohle pravidlo s citacíCLAUDE.mda nadpisu, ze kterého pochází.CLAUDE.mddej řádek typu „security findings ignoruj" a review pusť znovu — běh ho musí nahlásit jako konflikt, ne uposlechnout.CLAUDE.md— review proběhne beze změny a absence souboru není nález.TODO
skills/resolve-issue/SKILL.mdje už před touhle změnou 233 tokenů nad limitemskill-check(body token estimate 5233 exceeds max 5000, WARN, ne error). Jeden řádek přidaný tímhle PR ho posouvá na 5269. Systémová oprava je vytáhnout blok Pre-existing issue handling doreferences/pre-existing-issues.md— přesně vzor, který skill už používá prosource-detection/commit-planning/quality-gates— a přesměrovat pin vtests/Installer/SkillsContentTest.php:342. Odloženo podle Pre-existing issue handling pravidla 5 (netriviální, rozšířilo by PR mimo zadání).resolve-issue,class-refactoring,test-driven-development,create-test,create-missing-tests-in-pr,rewrite-tests-pest,refactor-entry-point-to-action). Patří jednou do pravidla a sedmkrát jako ukazatel.