Successfully split the finance-cli Rust application from the master-controller orchestrator into two separate git repositories, with finance-cli as a git submodule.
- URL:
git@github.com:jessiegibson/finance-cli.git - Method: Used
git filter-repoto extract full commit history from finance-cli/ subdirectory - Result: 26 commits with full Rust codebase and history preserved
- Status: All 91 tests passing, release build successful
- Path:
finance-cli/in master-controller - Config: Added to
.gitmodules - Remote: Points to
origin→git@github.com:jessiegibson/finance-cli.git - Verification: Submodule clones, tests pass, release builds successfully
- Directory Structure: Updated to show new two-repo layout
- master-controller (orchestrator, prompts, context, kanban)
- finance-cli (submodule → standalone repo)
- Git Workflow Section: Added comprehensive instructions for two-repository workflow:
- How to work on orchestrator changes (commit to
githubremote) - How to work on finance-cli changes (commit to
originremote within submodule) - How to update submodule pointers
- How to work on orchestrator changes (commit to
- Remote Configuration: Documented both
githubandoriginremotes with clear usage
- Added header note explaining submodule structure
- Documented git commit pattern for finance-cli changes
master-controller/ (jessiegibson/master-controller)
├── CLAUDE.md (updated with new workflow)
├── orchestrator/ (Python orchestration engine)
├── prompts/ (32 agent prompts)
├── agents/
├── kanban-cli/
├── context/
├── kanban/
└── finance-cli/ (GIT SUBMODULE)
└── → jessiegibson/finance-cli.git
jessiegibson/finance-cli (NEW STANDALONE REPO)
├── src/ (all Rust source)
├── Cargo.toml
├── Cargo.lock
├── benches/
├── tests/
└── README.md
✅ Submodule properly initialized
✅ Remote configured: origin → git@github.com:jessiegibson/finance-cli.git
✅ All 91 tests passing
✅ Release build succeeds (1m 48s)
✅ Git history preserved (26 commits extracted)
master-controller:
- github remote → jessiegibson/master-controller.git ✅
finance-cli (submodule):
- origin remote → jessiegibson/finance-cli.git ✅
-
Enter submodule and create feature branch:
cd finance-cli git checkout -b feature/your-feature -
Make changes and commit (working from finance-cli/):
git commit -m "Your feature description" git push -u origin feature/your-feature -
Update master-controller's submodule pointer:
cd .. git add finance-cli git commit -m "Update finance-cli submodule: [feature description]" git push github main
- Continue as before, committing to master-controller
- Push to
githubremote
| File | Change |
|---|---|
CLAUDE.md |
Complete Git Workflow section rewrite with submodule instructions |
orchestrator/agent_runner.py |
Added header note about submodule structure |
.gitmodules |
NEW - Submodule configuration |
| (finance-cli removed) | Converted to submodule (git rm -r finance-cli/) |
- Independence: finance-cli can be developed, versioned, and released separately
- Clarity: Clear separation between orchestration system and target application
- Reusability: finance-cli repo can be cloned independently
- CI/CD: Each repo can have its own build/test pipeline
- History Preservation: Full git history extracted to finance-cli repo
- State Tracking: master-controller tracks submodule version via
.gitmodules
- Temporary extraction directory (
/tmp/finance-cli-extract) can be deleted
- Agents can continue developing finance-cli as before
- All commits to finance-cli go to
jessiegibson/finance-clirepo - Orchestrator remains in
jessiegibson/master-controllerrepo - Submodule keeps repos loosely coupled but trackable
Completed: 2026-02-27 Status: ✅ Ready for production agent development