Progressive Polyrepo Workspaces
For projects with 10+ repositories, creating all worktrees upfront wastes time and disk space — most issues only touch 1-3 repos. Progressive polyrepo workspaces solve this by starting with only essential repos (like a meta repo) and adding more on demand during work.When to Use Progressive Mode
Overview
Progressive workspaces are opt-in per-project via theprogressive: true flag. When enabled:
- Workspace creation is fast — only
always_includerepos get worktrees/symlinks - Agents add repos on demand — using the
/workspace-add-reposkill or CLI command - Meta repos stay clean — they symlink to
mainwith no feature branches - Repo groups simplify addition — agents can add a named group (
simphony,aloha) instead of individual repos
Configuration
New Configuration Fields
WorkspaceConfig Additions
RepoConfig Additions
Repo Groups
Repo groups let agents add multiple related repos at once. Groups are defined in arepo-groups.yaml file within your meta repo:
Adding Repos Mid-Work
CLI Command
--new clones the repository under the project root, appends it to the project’s workspace.repos configuration, and creates the issue feature worktree inside the active workspace. Review, inspection, verification, and merge then resolve it through the same configured repo set as every other polyrepo member. If a repo name is unknown and --new is absent, the command fails without changing the workspace.
Run --new before manually cloning or committing to the new repository. The command refuses to adopt an existing workspace checkout on the wrong branch because that would preserve the evidence-blind main-branch workflow.
Skill: /workspace-add-repo
Agents invoke this skill during work when they need repos not yet in the workspace:
- Reads
repo-map.mdin the meta repo for architecture context - Reads
repo-groups.yamlfor available group names - Adds only the repos needed — agents can always add more later
Meta Repos (Symlink Behavior)
Meta repos (shared skills, architecture docs, team conventions) uselink_type: symlink:
- A symlink is created:
workspaces/feature-int-123/meta → /project/team-meta - The symlink always reflects the latest state of the actual repo
readonly: truetells the agent not to commit changes there- No git worktree is created — the meta repo stays on
main
PR Target Branch
Thepr_target field surfaces in agent context so PRs get created against the right branch:
-
CLAUDE.md injection — workspace CLAUDE.md includes:
-
Polyrepo context —
buildPolyrepoContext()lists repos with theirpr_targetvalues
Per-Repo Override
Migration from Standard Polyrepo
Existing polyrepo projects (noprogressive field) work identically to before:
- Add
progressive: true - Identify
always_includerepos (typically just the meta repo) - Optionally add
groups_filefor team-defined repo groups - Optionally add
pr_targetif your project uses a non-standard PR target branch - Update meta repo
readonlyrepos withlink_type: symlink
Related Guides
- Polyrepo Configuration — Standard polyrepo setup
- Meta Repos — Meta repo pattern and team onboarding
- Setup Wizard — Interactive project setup
- Issue Tracker Integration — Rally and other tracker configuration