Operation 1: Initialize Dependency Graph
When: Setting up multi-repo tracking for the first time
Process:
- Create
~/.amplihack/.claude/data/multi-repo/ directory if not exists - Create initial
dependencies.yaml with current repository - Prompt for known dependencies (repos this one depends on)
- Prompt for known dependents (repos that depend on this one)
- Save and display the graph
Command: "Initialize multi-repo dependencies"
Operation 2: Add Repository Dependency
When: Registering a new dependency relationship
Process:
- Read current
dependencies.yaml - Validate both repositories exist (via gh CLI)
- Add dependency entry with type and version constraint
- Update dependent repo's entry
- Save changes
Example:
```
"Add dependency: my-org/web-client depends on my-org/api-server for REST API"
```
Operation 3: Detect Breaking Changes
When: Before creating a PR that modifies a public interface
Process:
- Identify changed files in current branch
- Check if changes touch exposed contracts (API specs, schemas, exports)
- Look up dependents in dependency graph
- For each dependent:
- Clone/fetch latest (use worktree if local)
- Check if dependent uses affected interface
- Report potential breakage
- Generate impact report
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
```
Operation 4: Create Linked PRs
When: Making atomic changes across multiple repositories
Process:
- User specifies the set of repos to update
- For each repo in order (respecting dependency graph):
- Create worktree or navigate to repo
- Create feature branch with common prefix
- Make changes
- Create PR with links to other PRs in set
- Track linked PRs in
linked-prs.yaml - Add cross-references in PR descriptions
Linked PR Format:
```yaml
# .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
```
Operation 5: Coordinate Merge Sequence
When: Merging a linked PR set
Process:
- Read linked PR set from
linked-prs.yaml - Verify all PRs are approved/ready
- Merge in dependency order (upstream first)
- Wait for CI to pass after each merge
- Update linked-prs status
- Report completion
Merge Order Logic:
- Repos with no dependencies merge first
- Repos with dependencies merge after their dependencies
- Circular dependencies: Error (should not exist in healthy graph)