Consolidate Claude config: shared vs personal split + project.md#4035
Draft
Leiyks wants to merge 3 commits into
Draft
Consolidate Claude config: shared vs personal split + project.md#4035Leiyks wants to merge 3 commits into
Leiyks wants to merge 3 commits into
Conversation
Add a portable, repo-side convention so each developer can keep personal Claude config alongside the shared team config without committing it, and fold project-level knowledge into the committed common config. - .claude/.gitignore: ignore per-developer paths (personal/, commands/, scripts/, skills/omc-reference/, settings.local.json, worktrees/, .omc/) in place; keep personal/README.md committed. Previously this relied on each developer's global gitignore, which isn't portable and silently hid new shared files. - .claude/personal/: git-ignored drop zone for per-developer config; CLAUDE.md optionally imports personal/CLAUDE.md if present. - .claude/project.md: project knowledge (overview, layout, architecture, INI, conventions) in the terse house style, cross-referencing the existing build/CI/debug docs instead of duplicating them. Reflects the ext/ -> tracer/ split (#3912); versions reference VERSION / Cargo.toml / rust-toolchain.toml rather than being pinned inline. - CLAUDE.md: link general.md, project.md, ci/index.md and import personal.
|
Plain markdown links in CLAUDE.md are not injected into context by Claude Code — only @-imports are. Import general.md and project.md so the shared operating rules and project knowledge are always loaded alongside each developer's personal config. ci/index.md stays a link (large on-demand CI reference).
b315fbb to
71979cc
Compare
… commands Addresses PR review feedback: - .claude/.gitignore: commands/ is now personal-by-default via `/commands/*` (instead of ignoring the whole dir), so the team CAN commit shared commands by un-ignoring them while personal ones stay ignored. Claude Code discovers commands by filesystem regardless of git status, so both coexist. - Scripts: shared helper scripts moved into .claude/scripts/ (dd_php_release_url, find_map_region.py, parse_ucontext.py); personal scripts go in .claude/scripts/local/ (git-ignored). crash-analysis skill refs updated. - Debugging docs grouped under .claude/debugging/ with an index.md (like ci/): gdb.md, appsec-integration.md (was debugging.md), system-tests.md (was debugging-system-tests.md). All inbound/outbound links updated. Note: ci/ keeps its own co-located tooling (dockerh, check-ci, ...) since those are referenced throughout the ci/ docs as a self-contained module.
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 & why
Our repo
.claude/config had a shared team config and per-developer config coexisting, where the personal part was only hidden by each developer's global gitignore (*.claude). That isn't portable to teammates and would silently hide any new shared file too.This PR makes the split explicit and repo-side, and folds project-level knowledge into the shared config.
Changes
.claude/.gitignore(new) — ignores per-developer paths in place so they never get committed, regardless of anyone's global gitignore:personal/*(exceptREADME.md),commands/,scripts/,skills/omc-reference/,settings.local.json,worktrees/,.omc/.claude/personal/(new, git-ignored except README) — each developer's drop zone. Put personal memory inpersonal/CLAUDE.md; the rootCLAUDE.mdimports it via@.claude/personal/CLAUDE.mdif present.README.mddocuments the convention..claude/project.md(new) — project knowledge (overview, layout, architecture, INI, conventions) written in the existing terse house style. It cross-references the existing build/CI/debug docs instead of duplicating them.ext/→tracer/split (Split the tracer parts off from ext directory #3912).VERSION/Cargo.toml/profiling/rust-toolchain.tomlrather than being pinned inline, so it won't rot.CLAUDE.md— now linksgeneral.md,project.md,ci/index.mdand imports the optional personal config.Verified
*.claude): the shared files stage cleanly and every personal path is refused by the local.gitignore.Adopting locally
If you currently rely on a global
*.claudeignore, you can drop it — this repo now handles the split itself. Move personal memory to.claude/personal/CLAUDE.md.