Repository navigation
docs(claude): move single-scope guidance out of the root CLAUDE.md - #143
Merged
Merged
Conversation
The root file was 277 lines against a 200-line limit, and about a third of its Applied Learning bullets apply to one file pattern each while loading in every session. - Thirty-six bullets move to path-scoped rules, unchanged: the snapshot and fixture ones to a new behavior-gate rule, the vocabulary guard, tree-sitter and detection ones to a new framework-parsers rule, and five CLI and fake traps into the existing tests rule. - Four bullets are deleted because a rule already states them: the fingerprint invariant, the meta stage's rewritten fields, the per-skill baseline, and the discovered analyzer registry. - Four clusters of near-duplicates become one bullet each: gh body edits, CRLF noise, Ticket PR checks, and mutation testing. The three corpus-count bullets become one line in the behavior-gate rule. - The bullet saying no test covers the vocabulary_sweep role maps was wrong; contrib/vocabulary_sweep/tests/test_readers.py does, outside make test. - The Spec execution workflow moves to docs/agents/spec-workflow.md, the drift schedule's two human steps move into the upstream-sync skill, and Code search shrinks to what the user's global instructions do not already say. The root is now 186 lines. No instruction was dropped: every original bullet is present verbatim in the root or a rule, or is one of the merges and deletions listed above. Signed-off-by: Rodrigo França <20980109+rodrigorjsf@users.noreply.github.com>
The upstream-sync skill and an Applied Learning bullet both gave the repair as 'git merge -s ours upstream/main'. That is right only while upstream has not moved. Once it has, the ours merge records commits nobody integrated as already merged, and the next sync skips them without a conflict to reveal it. The command now names the synced commit, the verification says what the drift count should be when upstream has moved, and the section records how the repair lands: a fast-forward push the maintainer approves, since a pull request goes back through the buttons that removed the parent. PR #142 was squashed despite the warning at the top of its body, which is the second time. Signed-off-by: Rodrigo França <20980109+rodrigorjsf@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this changes
Documentation and agent guidance only. No source, test logic or behavior changes.
The root
CLAUDE.mdloads in every session and had grown to 277 lines against a 200-line limit.About a third of its Applied Learning bullets apply to one file pattern each. This moves them to
path-scoped rules, which load only when a matching file is touched. The root is now 186 lines.
Where things went
.claude/rules/behavior-gate.mdtests/behavior/**,tests/fixtures/**,pattern_defaults.py.claude/rules/framework-parsers.mdframework.py,framework_*.py, the vocabulary guard tests.claude/rules/tests.mdtests/**/*.pydocs/agents/spec-workflow.md, with a pointer under Agent skills.claude/skills/upstream-sync/SKILL.md§ 1Also in the root:
registry (
analyzers.md), the meta stage's rewritten fields and the per-skill baseline(
suppression.md).ghbody edits (3 → 1), CRLF noise (2 → 1), Ticket PR checks (2 → 1),mutation testing (2 → 1).
Every original bullet is either present verbatim in the root or a rule, or is one of the merges and
deletions listed here. I checked that by comparing the old bullet list against the new files.
Two corrections
contrib/vocabulary_sweep/tests/test_readers.pycovers both role maps; it sits outsidemake test, which is probably how the bullet came to say otherwise.git merge -s ours upstream/main. That is only right while upstream has not moved. Once it has,the merge records commits nobody integrated as already merged, and the next sync skips them with
no conflict to show it. The command now names the commit the sync merged, and the section says how
the repair lands. PR merge: sync with NVIDIA/SkillSpector 2.12.0 #142 was squashed despite the warning in its body, so this was needed again.
Not changed, on purpose
ci.ymlappearsto exempt a multi-parent merge whose committer is
noreply@github.com, which would make thisbullet imprecise. I have not measured it, so it stays as it is.
.claude/rules/license-compliance.mdis 156 lines and loads on every.pyand.md. It isthe compliance rule; I did not trim it.
.gitattributes eol=lfwould retire the CRLF bullets, but it renormalizes the tree of a forkthat still merges upstream.
Verification
tests/unit/test_upstream_drift_workflow.py, which reads the sync skill: 18 passed.always-loaded content went down by 91.