reconcilelisted
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