Summary
The hardcoded directory skip list includes deploy, deployment, and deployments. On repos where deployment logic is the product domain (deploy control planes, CD tooling, IaC orchestrators), this silently drops core source code from the graph, and docs/cbmignore.md states the built-in list is "Not overridable from any ignore file today."
Repro (v0.9.0, darwin-arm64)
Next.js/TypeScript repo with real source at src/lib/deploy/ (23 .ts files) and src/app/api/webhooks/deploy/:
codebase-memory-mcp cli index_repository --repo-path <repo> --mode full
Response:
"excluded":{"dirs":[".claude",".git",".vscode",".superpowers","src/lib/deploy","src/app/api/webhooks/deploy"],"count":6}
- No
.gitignore / nested gitignore / global excludes / .cbmignore match these paths (git check-ignore exits 1).
strings on the binary confirms deploy, deployment, deployments in the built-in name list.
- Symbols from those dirs (verified via
search_graph) are absent from the graph.
- A
.cbmignore negation can't rescue them — per docs, negation only overrides the git-global-excludes layer.
Why it matters
Unlike dist/target/vendor, deploy is a common source directory name (deployment engines, deploy/ K8s dirs that the README's own IaC-indexing feature targets). The exclusion is silent unless the user inspects excluded — and it's capped at 25 entries, so on bigger repos it may not even be visible there.
Suggested fixes (any of)
- Let
.cbmignore negation (!src/lib/deploy/) override the built-in list — most flexible.
- Remove
deploy/deployment(s) from the always-on list (or demote them to fast/moderate modes only, like docs/examples).
- Only skip these names when they contain no parseable source files (heuristic).
Workaround used
Index the excluded dirs as companion projects:
codebase-memory-mcp cli index_repository --repo-path <repo>/src/lib/deploy --name myrepo-deploy-lib --mode full
— works, but loses cross-file edges into the main project graph.
Summary
The hardcoded directory skip list includes
deploy,deployment, anddeployments. On repos where deployment logic is the product domain (deploy control planes, CD tooling, IaC orchestrators), this silently drops core source code from the graph, anddocs/cbmignore.mdstates the built-in list is "Not overridable from any ignore file today."Repro (v0.9.0, darwin-arm64)
Next.js/TypeScript repo with real source at
src/lib/deploy/(23 .ts files) andsrc/app/api/webhooks/deploy/:Response:
.gitignore/ nested gitignore / global excludes /.cbmignorematch these paths (git check-ignoreexits 1).stringson the binary confirmsdeploy,deployment,deploymentsin the built-in name list.search_graph) are absent from the graph..cbmignorenegation can't rescue them — per docs, negation only overrides the git-global-excludes layer.Why it matters
Unlike
dist/target/vendor,deployis a common source directory name (deployment engines,deploy/K8s dirs that the README's own IaC-indexing feature targets). The exclusion is silent unless the user inspectsexcluded— and it's capped at 25 entries, so on bigger repos it may not even be visible there.Suggested fixes (any of)
.cbmignorenegation (!src/lib/deploy/) override the built-in list — most flexible.deploy/deployment(s)from the always-on list (or demote them to fast/moderate modes only, likedocs/examples).Workaround used
Index the excluded dirs as companion projects:
— works, but loses cross-file edges into the main project graph.