Skip to main content

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 the progressive: true flag. When enabled:
  1. Workspace creation is fast — only always_include repos get worktrees/symlinks
  2. Agents add repos on demand — using the /workspace-add-repo skill or CLI command
  3. Meta repos stay clean — they symlink to main with no feature branches
  4. 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 a repo-groups.yaml file within your meta repo:

Adding Repos Mid-Work

CLI Command

Examples:
--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:
The skill:
  1. Reads repo-map.md in the meta repo for architecture context
  2. Reads repo-groups.yaml for available group names
  3. Adds only the repos needed — agents can always add more later
Meta repos (shared skills, architecture docs, team conventions) use link_type: symlink:
What happens:
  • A symlink is created: workspaces/feature-int-123/meta → /project/team-meta
  • The symlink always reflects the latest state of the actual repo
  • readonly: true tells the agent not to commit changes there
  • No git worktree is created — the meta repo stays on main
Generated CLAUDE.md includes:

PR Target Branch

The pr_target field surfaces in agent context so PRs get created against the right branch:
  1. CLAUDE.md injection — workspace CLAUDE.md includes:
  2. Polyrepo contextbuildPolyrepoContext() lists repos with their pr_target values

Per-Repo Override

Migration from Standard Polyrepo

Existing polyrepo projects (no progressive field) work identically to before:
To migrate to progressive mode:
  1. Add progressive: true
  2. Identify always_include repos (typically just the meta repo)
  3. Optionally add groups_file for team-defined repo groups
  4. Optionally add pr_target if your project uses a non-standard PR target branch
  5. Update meta repo readonly repos with link_type: symlink