synclisted
Install: claude install-skill mifunedev/openharness
# /sync — bidirectional origin↔upstream sync dispatcher
`/sync <subcommand>` routes origin↔upstream sync operations. The first
whitespace-delimited token of `$ARGUMENTS` selects the subcommand; the
remainder is that subcommand's own argument string. Each subcommand's
full procedure lives in a reference doc under `references/` — read that
doc and follow it as the authoritative instructions.
The canonical topology (origin=operator fork, upstream=mifunedev
canonical) and the intentional divergences that every sync must preserve
live in `references/topology.md`. Read it before executing any subcommand.
## Subcommands
| Subcommand | Direction | Purpose | Procedure |
|---|---|---|---|
| `publish` | origin→upstream | Branch off upstream/development, merge-no-commit origin/development, sanitize private state, reconcile structure, eval-gate, draft PR to upstream | `references/publish.md` |
| `catchup` | upstream→origin | Cherry-pick the squash commit of a specific upstream feature onto origin/development; never `git merge upstream/development` | `references/catchup.md` |
| `status` | read-only | Invoke `/audit drift` and interpret its section (A) framework-drift output to report which direction is needed | inline — see below |
## Dispatch
```bash
ARGUMENTS="${ARGUMENTS:-}"
SUB="${ARGUMENTS%% *}" # first token
REST="${ARGUMENTS#"$SUB"}" # everything after it
REST="${REST# }" # trim one leading space
```
Route on `$SUB`:
| `$SUB` | Action |
|--------