feat: add config/local/ overlay for persistent custom configurations#101
Open
bookandlover wants to merge 1 commit intobfly123:mainfrom
Open
feat: add config/local/ overlay for persistent custom configurations#101bookandlover wants to merge 1 commit intobfly123:mainfrom
bookandlover wants to merge 1 commit intobfly123:mainfrom
Conversation
Problem: `ccb update` downloads the latest release and overwrites all config templates (role table, review framework, collaboration rules). Users who customize these settings lose their changes on every update. Solution: Introduce a `config/local/` directory that acts as a persistent overlay layer. Files placed here take priority over upstream defaults and survive updates. Changes: - install.sh: copy_project() saves and restores config/local/ during updates - install.sh: add resolve_config_template() helper; config install functions check for local override before falling back to upstream default - ccb: add `ccb config` subcommand (init/edit/show/reset) for managing local overrides - docs/custom-config.md: usage documentation and examples - .gitignore: ignore user override files but track .gitkeep Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Author
|
CI Failure Analysis The CI failure is not caused by this PR. The single failing test test_per_session_worker_pool_reuses_same_key also fails on the upstream Root cause: _NoopThread in the test fixture passes a list as _started, but Python 3.13's threading.Thread.is_alive() expects _started to be lib/worker_pool.py:66: in get_or_create Local verification:
This is a pre-existing issue unrelated to the config/local overlay changes. |
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.
Problem
ccb update downloads the latest release and replaces the entire install directory, including config templates (config/claude-md-ccb.md,
config/agents-md-ccb.md, config/clinerules-ccb.md). Users who customize role assignments or review rules lose their changes on every update.
Solution
Introduce a config/local/ directory that acts as a persistent overlay layer:
Usage
ccb config init # Copy templates to config/local/
ccb config edit claude-md-ccb.md # Edit role assignments
ccb reinstall # Apply changes
ccb config show # Check active overrides
ccb config reset # Revert to upstream
Files changed
┌───────────────────────┬──────────────────────────────────────────────────────────────────────────────────────────────────┐
│ File │ Change │
├───────────────────────┼──────────────────────────────────────────────────────────────────────────────────────────────────┤
│ install.sh │ Preserve/restore config/local/; add resolve_config_template(); update 3 config install functions │
├───────────────────────┼──────────────────────────────────────────────────────────────────────────────────────────────────┤
│ ccb │ Add cmd_config() with init/edit/show/reset │
├───────────────────────┼──────────────────────────────────────────────────────────────────────────────────────────────────┤
│ config/local/.gitkeep │ Placeholder directory │
├───────────────────────┼──────────────────────────────────────────────────────────────────────────────────────────────────┤
│ docs/custom-config.md │ Usage documentation │
├───────────────────────┼──────────────────────────────────────────────────────────────────────────────────────────────────┤
│ .gitignore │ Ignore user files, track .gitkeep │
└───────────────────────┴──────────────────────────────────────────────────────────────────────────────────────────────────┘
Design decisions
Test plan