sync-migration
User-invoked as /sync-migration. Compares the date in .github/copilot/Migration-report.md with the latest git history touching .claude/, then syncs changed Claude files into the Copilot layout when Cl
Files1
View on GitHubSKILL.md.github/copilot/skills/sync-migration/SKILL.md
GitHubSync Migration
Keep the Copilot migration current with the latest Claude-side changes.
This skill treats .github/copilot/Migration-report.md as the sync boundary:
- Read
**Date**: YYYY-MM-DDfrom.github/copilot/Migration-report.md - Fetch the latest git date touching
.claude/ - If
.claudeis newer, migrate the changed files
Helper
Use the helper script first:
python scripts/sync_copilot_migration.py --json
It reports:
migration_datelast_claude_dateclaude_aheaddirect_copy[]— safe 1:1 sync candidatesmanual_port[]— transformed surfaces that need a real Copilot-aware port
Workflow
Check whether Claude is ahead
- Run
python scripts/sync_copilot_migration.py --json. - If
claude_aheadisfalse, stop and report that the migration is current.
- Run
Apply safe direct ports
- Run:
python scripts/sync_copilot_migration.py --apply - This copies changed files from:
.claude/agents/**→.github/copilot/agents/**.claude/skills/**→.github/copilot/skills/**
- This includes
references/andexamples/assets, not justSKILL.md.
- Run:
Manually port transformed surfaces
- Review every
manual_port[]item from the helper output. - Apply the change to the Copilot-native target instead of copying blindly.
Manual-port rules:
.claude/hooks/*.py→.github/hooks/*.py- Preserve Copilot JSON output behavior (
permissionDecision,additionalContext,decisionforStop). - Do not overwrite native Copilot hook protocol handling with raw Claude code.
- Preserve Copilot JSON output behavior (
.claude/settings.json→.github/hooks/aegis-hooks.json- Sync new hook matchers, new hook scripts, or policy intent.
- Preserve Copilot event names and repository-level hook layout.
.claude/loops/*.md→.github/copilot/loops-emulated/**/SKILL.md- Preserve the Copilot iterative-skill adaptation.
- Do not reintroduce
ScheduleWakeupassumptions.
.claude/CLAUDE.md- Propagate durable policy changes into relevant Copilot agents, skills,
hooks, and
Migration-report.md.
- Propagate durable policy changes into relevant Copilot agents, skills,
hooks, and
- Review every
Refresh the migration boundary
- After all changed Claude files are migrated, update:
**Date**:in.github/copilot/Migration-report.md
- Set it to the
last_claude_datereported by the helper script.
- After all changed Claude files are migrated, update:
Summarize what changed
- In
.github/copilot/Migration-report.md, update any sections that are now stale:- structure
- hook map
- remaining gaps
- Mention newly migrated files or behavior changes if they affect how Copilot works.
- In
Output
Report:
- migration date
- last Claude git date
- whether Claude was ahead
- direct-copy files synced
- manual-port files updated
- final date written back to
.github/copilot/Migration-report.md
Completion checklist
-
python scripts/sync_copilot_migration.py --jsonrun - If
claude_ahead = true, direct-copy files applied with--apply - Every
manual_portitem reviewed and ported to the Copilot-native target -
.github/hooks/*.pychanges preserve Copilot hook JSON protocol -
.github/hooks/aegis-hooks.jsonupdated if.claude/settings.jsonchanged -
.github/copilot/Migration-report.mddate set tolast_claude_date - Final migration summary reflects the newly synced state