Agent skill

multi-repo

Multi-repository orchestration for coordinating atomic changes across dependent repositories. Tracks dependency graphs, coordinates cross-repo PRs, and detects breaking changes.

Stars 45
Forks 28

Install this agent skill to your Project

npx add-skill https://github.com/rysweet/amplihack/tree/main/.claude/skills/multi-repo

SKILL.md

Multi-Repository Orchestration Skill

Purpose

Coordinate atomic changes across multiple repositories when features span repo boundaries. Track dependencies, manage linked PRs, and detect breaking changes before they propagate.

When to Use This Skill

USE FOR:

  • Changes that require coordinated updates across multiple repositories
  • Managing repository dependency graphs
  • Creating linked PRs that should merge together or in sequence
  • Detecting breaking changes that affect dependent repositories
  • Microservices or monorepo-alternative architectures

AVOID FOR:

  • Single-repository changes (use default workflow)
  • Forking/syncing operations (use git directly)
  • Documentation-only changes
  • Changes with no cross-repo dependencies

Storage Location

All multi-repo data is stored in ~/.amplihack/.claude/data/multi-repo/:

  • dependencies.yaml - Repository dependency graph
  • linked-prs.yaml - Currently active linked PR sets
  • breaking-changes.log - History of detected breaking changes

Dependency Graph Format

The dependency graph uses simple YAML:

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: []

Core Operations

Operation 1: Initialize Dependency Graph

When: Setting up multi-repo tracking for the first time

Process:

  1. Create ~/.amplihack/.claude/data/multi-repo/ directory if not exists
  2. Create initial dependencies.yaml with current repository
  3. Prompt for known dependencies (repos this one depends on)
  4. Prompt for known dependents (repos that depend on this one)
  5. Save and display the graph

Command: "Initialize multi-repo dependencies"

Operation 2: Add Repository Dependency

When: Registering a new dependency relationship

Process:

  1. Read current dependencies.yaml
  2. Validate both repositories exist (via gh CLI)
  3. Add dependency entry with type and version constraint
  4. Update dependent repo's entry
  5. 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:

  1. Identify changed files in current branch
  2. Check if changes touch exposed contracts (API specs, schemas, exports)
  3. Look up dependents in dependency graph
  4. For each dependent:
    • Clone/fetch latest (use worktree if local)
    • Check if dependent uses affected interface
    • Report potential breakage
  5. 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:

  1. User specifies the set of repos to update
  2. 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
  3. Track linked PRs in linked-prs.yaml
  4. 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:

  1. Read linked PR set from linked-prs.yaml
  2. Verify all PRs are approved/ready
  3. Merge in dependency order (upstream first)
  4. Wait for CI to pass after each merge
  5. Update linked-prs status
  6. Report completion

Merge Order Logic:

  1. Repos with no dependencies merge first
  2. Repos with dependencies merge after their dependencies
  3. Circular dependencies: Error (should not exist in healthy graph)

Integration with Worktree Manager

When working across local repositories, leverage the worktree-manager agent:

  1. For each local repo in dependency graph:
    • Use git worktree add to create isolated workspace
    • Worktrees go in ./worktrees/{repo-name}-{branch}/
  2. Make coordinated changes across worktrees
  3. Commit and push from each worktree
  4. Clean up worktrees after PRs merged

Integration with PM Architect

For complex multi-repo projects:

  1. Use backlog-curator to track cross-repo items
  2. Use workstream-coordinator for multi-repo workstreams
  3. Linked PRs map to single workstream items
  4. Breaking change detection feeds into roadmap planning

Philosophy Alignment

Ruthless Simplicity:

  • YAML-based dependency graph (no database required)
  • Leverage existing git and gh CLI tools
  • Minimal skill surface area

Zero-BS Implementation:

  • All operations are functional from day one
  • No "planned" features - only what works now
  • Breaking change detection actually checks code

Modular Design:

  • Skill is self-contained
  • Data stored in simple files
  • Can be used independently or with PM Architect

Examples

Example 1: API Breaking Change

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

Example 2: Coordinated Feature Release

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)

Limitations

  • Dependency graph is per-workspace (not centralized)
  • Requires gh CLI authenticated for PR operations
  • Breaking change detection is heuristic (may miss runtime changes)
  • Circular dependencies are not supported (and shouldn't exist)

Success Criteria

  • Changes across repos are coordinated atomically
  • Breaking changes are detected before they cause production issues
  • PRs merge in correct dependency order
  • Teams have visibility into cross-repo impacts

Expand your agent's capabilities with these related and highly-rated skills.

rysweet/amplihack

chemist-analyst

Analyzes events through chemistry lens using molecular structure, reaction mechanisms, thermodynamics, kinetics, and analytical techniques (spectroscopy, chromatography, mass spectrometry). Provides insights on chemical processes, material properties, reaction pathways, synthesis, and analytical methods. Use when: Chemical reactions, material analysis, synthesis planning, process optimization, environmental chemistry. Evaluates: Molecular structure, reaction mechanisms, yield, selectivity, safety, environmental impact.

45 28
Explore
rysweet/amplihack

learning-path-builder

Creates personalized learning paths for technologies, frameworks, or concepts. Use for user-interactive session only for onboarding new technologies, hackathon skill-building, or personal development planning. Not for use in automated development or investigation. Sequences resources (docs, tutorials, exercises) based on current skill level and learning goals. Adapts to learning style: hands-on, theory-first, project-based.

45 28
Explore
rysweet/amplihack

gh-work-report

Generates comprehensive GitHub activity reports across all authenticated accounts. Gathers repos, PRs, features, and themes for configurable time periods (1/5/7/30/90 days). Produces shareable markdown with tables, mermaid charts, and executive summaries. Can create a private repo with GitHub Actions automation and GitHub Pages aggregation site. Use when: "github report", "work report", "activity summary", "what did I work on", "gh-work-report", "show my github activity".

45 28
Explore
rysweet/amplihack

pr-review-assistant

Philosophy-aware PR reviews checking alignment with amplihack principles. Use when reviewing PRs to ensure ruthless simplicity, modular design, and zero-BS implementation. Suggests simplifications, identifies over-engineering, verifies brick module structure. Posts detailed, constructive review comments with specific file:line references.

45 28
Explore
rysweet/amplihack

code-smell-detector

Identifies anti-patterns specific to amplihack philosophy. Use when reviewing code for quality issues or refactoring. Detects: over-abstraction, complex inheritance, large functions (>50 lines), tight coupling, missing __all__ exports. Provides specific fixes and explanations for each smell.

45 28
Explore
rysweet/amplihack

biologist-analyst

Analyzes living systems and biological phenomena through biological lens using evolution, molecular biology, ecology, and systems biology frameworks. Provides insights on mechanisms, adaptations, interactions, and life processes. Use when: Biological systems, health issues, evolutionary questions, ecological problems, biotechnology. Evaluates: Function, structure, heredity, evolution, interactions, molecular mechanisms.

45 28
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results