← ClaudeAtlas

reconcilelisted

Bidirectional sync between plans/phases.yaml and the configured tracker. --pull reads tracker → phases.yaml; --push writes phases.yaml → tracker bodies via updateIssueBody.
firatcand/forge · ★ 7 · DevOps & Infrastructure · score 74
Install: claude install-skill firatcand/forge
# /reconcile Bidirectional sync between `plans/phases.yaml` (local) and the configured tracker (Linear / GitHub / Notion). - `--pull`: tracker → phases.yaml. Updates titles and `depends_on` for matched tasks. Reports orphans (in yaml but not in tracker), new tracker issues, and unmanaged issues (created outside forge). - `--push`: phases.yaml → tracker. Renders each task's body from `description` + `acceptance` and calls `Tracker.updateIssueBody`. Best-effort: per-task errors don't abort the loop. - `--dry-run` is supported on both directions — preview without writing. Per `spec/ORCHESTRATOR.md` §CLI surface: this is the canonical bidirectional sync. **No conflict-resolution UI** — when the same task is edited in both places, the tracker (for `--pull`) or the local yaml (for `--push`) wins. Resolve via `git diff` and re-run. ## Preconditions - `plans/phases.yaml` exists and validates against `PhasesSchema` - `.forge/settings.yaml` exists with a `tracker:` block (validated by `TrackerConfigSchema`) - The tracker is reachable (Linear API key in env / `gh auth status` ok / Notion MCP launchable) ## Step 0 — Direction Ask the user (or accept arg): `--pull` or `--push`? - Use `--pull` when: tracker has changes you want to mirror locally (someone closed an issue, retitled it, edited the blocker graph). - Use `--push` when: you've edited `plans/phases.yaml` locally (refined a description, fixed acceptance criteria) and want tracker bodies to match. ## Step 1 — Dry-run previ