Multi-repository orchestration for coordinating atomic changes across dependent repositories. Tracks dependency graphs, coordinates cross-repo PRs, and detects breaking changes.
Coordinate atomic changes across multiple repositories when features span repo boundaries. Track dependencies, manage linked PRs, and detect breaking changes before they propagate.
USE FOR:
AVOID FOR:
All multi-repo data is stored in ~/.amplihack/.claude/data/multi-repo/:
dependencies.yaml - Repository dependency graphlinked-prs.yaml - Currently active linked PR setsbreaking-changes.log - History of detected breaking changesThe dependency graph uses simple YAML:
# .claude/data/multi-repo/dependencies.yaml
version: "1.0"
repositories:
my-org/api-server:
depends_on: []
exposes:
- type: api
name: REST API v2
contract: openapi.yaml
my-org/web-client:
depends_on:
- repo: my-org/api-server
type: api
version: ">=2.0"
exposes: []
my-org/mobile-app:
depends_on:
- repo: my-org/api-server
type: api
version: ">=2.0"
exposes: []
When: Setting up multi-repo tracking for the first time
Process:
~/.amplihack/.claude/data/multi-repo/ directory if not existsdependencies.yaml with current repositoryCommand: "Initialize multi-repo dependencies"
When: Registering a new dependency relationship
Process:
dependencies.yamlExample:
"Add dependency: my-org/web-client depends on my-org/api-server for REST API"
When: Before creating a PR that modifies a public interface
Process:
Output:
Breaking Change Impact Report
=============================
Changed: my-org/api-server/openapi.yaml
- Removed endpoint: DELETE /users/{id}
- Modified field: User.email now required
Affected Dependents:
- my-org/web-client (uses DELETE /users/{id})
- my-org/mobile-app (no impact detected)
Recommendation: Coordinate changes with my-org/web-client
When: Making atomic changes across multiple repositories
Process:
linked-prs.yamlLinked PR Format:
# .claude/data/multi-repo/linked-prs.yaml
linked_sets:
- id: "auth-v2-migration"
created: "2025-11-25T10:00:00Z"
status: "pending"
prs:
- repo: my-org/api-server
pr: 123
status: "merged"
merge_order: 1
- repo: my-org/web-client
pr: 456
status: "approved"
merge_order: 2
- repo: my-org/mobile-app
pr: 789
status: "open"
merge_order: 3
When: Merging a linked PR set
Process:
linked-prs.yamlMerge Order Logic:
When working across local repositories, leverage the worktree-manager agent:
git worktree add to create isolated workspace./worktrees/{repo-name}-{branch}/For complex multi-repo projects:
Ruthless Simplicity:
Zero-BS Implementation:
Modular Design:
Scenario: Updating API endpoint signature
User: "I need to change the /users endpoint from GET to POST"
Skill Response:
1. Detected change to api-server/openapi.yaml
2. Scanned dependents:
- web-client: Uses GET /users in 3 locations
- mobile-app: Uses GET /users in 2 locations
3. Impact: HIGH - 5 usages across 2 repositories
Recommended approach:
1. Add POST /users endpoint (non-breaking)
2. Create linked PRs to update web-client and mobile-app
3. Deprecate GET /users with sunset date
4. Remove GET /users after clients migrate
Scenario: New authentication flow spanning 3 repos
User: "Implement OAuth2 across api-server, web-client, and mobile-app"
Skill Response:
1. Created linked PR set: "oauth2-implementation"
2. Dependency order: api-server -> web-client, mobile-app (parallel)
3. Created branches:
- api-server: feat/oauth2-backend
- web-client: feat/oauth2-frontend
- mobile-app: feat/oauth2-mobile
4. PRs created with cross-references:
- api-server#123 (merge first)
- web-client#456 (after #123)
- mobile-app#789 (after #123)