Orchestrate Changes Across Repos
Coordinate changes — skills, templates, hooks, and harness policies — across multiple repositories using the pattern appropriate to your scale.
1. Choose the right pattern
| Situation | Pattern |
|---|---|
| Syncing skills or hooks from an upstream repo to 2–5 downstream repos | Git-mediated (Level 4) |
| Propagating harness policy changes to downstream consumers | Git-mediated (Level 4) |
| Managing shared standards across 10+ repos | Specification-mediated (Level 5) |
| Aggregating health snapshots across an organisation | Specification-mediated (Level 5) |
Start with git-mediated. Graduate to specification-mediated when the portfolio grows beyond what a single agent or team can manage manually.
2. Git-mediated coordination (Level 4)
This pattern uses the standard git workflow: identify what changed upstream, then apply those changes to each downstream repo via a branch and PR.
Declare what the upstream repo exports
Document the exported artefacts in the upstream README or a manifest section. At minimum, state:
- Which directories contain reusable artefacts
- What the downstream repos are
- What triggers a sync (for example, “after any PR that modifies
skills/”)
What to sync — and what not to
| Sync | Do not sync |
|---|---|
| Skills (tool-agnostic knowledge) | HARNESS.md (project-specific constraints) |
| Agent definitions | AGENTS.md (project-specific learnings) |
Hook scripts and hooks.json | REFLECTION_LOG.md (project-specific reflections) |
| CI workflow templates | Project source code |
| Templates (starting points) | Specs and plans |
Apply changes to each downstream repo
For each downstream repo:
cd /path/to/downstream-repo
git checkout main && git pull
git checkout -b sync/upstream-skills-YYYY-MM-DD
# Copy the changed artefacts from upstream
cp -r /path/to/upstream/skills/ ./skills/
# or use rsync for selective updates
rsync -av --include='*.md' --exclude='*' /path/to/upstream/skills/ ./skills/
# Run lint and verify
npx markdownlint-cli2 "skills/**/*.md"
git add skills/
git commit -m "sync: update skills from upstream (YYYY-MM-DD)"
git push -u origin sync/upstream-skills-YYYY-MM-DD
gh pr create --title "Sync skills from upstream" --body "..."
Watch CI checks and merge when green.
3. Specification-mediated orchestration (Level 5)
At organisational scale, each repo declares its dependencies through a manifest file, and a platform orchestrator resolves and propagates changes automatically.
Create a repo manifest
Add .repo-manifest.yml to the upstream repo:
name: my-platform-repo
version: 0.1.0
exports:
skills:
- harness-engineering
- verification-slots
hooks:
- constraint-gate
- drift-check
imports: []
Downstream repos declare what they consume:
name: my-service-repo
version: 0.1.0
imports:
- source: my-platform-repo
version: ">=0.1.0"
artefacts:
- skills/*
- hooks/*
Let the platform orchestrator propagate changes
When the platform repo changes a harness policy, the orchestrator:
- Reads all downstream manifests
- Identifies which repos consume the changed artefact
- Opens sync PRs in each affected repo
- Reports sync status to the portfolio dashboard
4. Avoid common anti-patterns
| Anti-pattern | Problem | Fix |
|---|---|---|
| Sync without contracts | Nobody knows what should flow where | Declare exports in README or manifest |
| Bidirectional sync | Changes flow both ways, causing conflicts | One direction only — upstream is authoritative |
| Sync everything | Downstream repos lose their identity | Only sync declared exports |
| Manual ad-hoc copies | Drift accumulates silently | Use a documented sync command or workflow |
| Sync without CI | Broken changes propagate downstream | Every sync goes through a PR with CI checks |
5. Monitor portfolio health
For specification-mediated orchestration, aggregate health snapshots give a portfolio-wide view:
Portfolio Health — 2026-04-08
Repos: 12
At L3+: 9 (75%)
Below threshold: 3 (api-gateway, legacy-auth, billing-service)
Enforcement average: 84%
Mutation score average: 76%
Repos with stale snapshots: 1 (legacy-auth, 45 days)
Run /portfolio-assess to generate the current portfolio view.
Summary
After completing these steps you have:
- A documented contract between upstream and downstream repos
- A repeatable sync workflow that goes through PRs and CI
- Clear boundaries around what flows downstream and what stays local
- A monitoring approach scaled to the size of your portfolio