> ## Documentation Index
> Fetch the complete documentation index at: https://pm-plugin.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# /pm:sync — Register New Proposals and External Issues

> Scan for new OpenSpec proposals, Superpowers plans, or GitHub Issues not yet tracked as epics and register them. Deduplicates automatically.

`/pm:sync` scans your project for work that should be tracked as epics but isn't yet. It picks up new OpenSpec proposals and Superpowers plans found on disk, and — when a `github-issues` tracker is configured — pulls open GitHub Issues in as untriaged epics. After sync completes, PM prompts you to triage any newly registered epics: assign priorities, set statuses, and add any dependency links.

## What it registers

<CardGroup cols={3}>
  <Card title="OpenSpec proposals" icon="file-circle-plus">
    Any `openspec/changes/<id>/` directory not yet tracked becomes an `openspec`-lane epic registered with `status: untriaged` and `priority: P?`.
  </Card>

  <Card title="Superpowers plans" icon="bolt">
    Any Superpowers plan file not yet tracked becomes a `superpowers`-lane epic registered with `status: untriaged` and `priority: P?`.
  </Card>

  <Card title="GitHub Issues" icon="github">
    When a `github-issues` tracker is configured, open issues without a matching `externalId` become `claude-code`-lane epics. Default priority is `P2`; a `P0`, `P1`, `P2`, or `P3` label on the issue overrides the default.
  </Card>
</CardGroup>

## Deduplication

Sync never creates duplicate epics. For OpenSpec and Superpowers sources, deduplication is by the epic's id — if an epic with that id already exists in `state.json`, the candidate is skipped silently. For GitHub Issues, deduplication is by `externalId` (the issue number): if any existing epic already carries that `externalId`, the issue is not re-registered. Re-running `/pm:sync` as many times as you like is always safe.

## When to run it

Run `/pm:sync` after **pulling changes from another branch** that may have introduced new OpenSpec proposals, after **generating new proposals** in the current session, at the **start of a session** when you know new work was filed in your issue tracker since you last worked, or any time you suspect the epic index is out of date relative to disk.

<Note>
  For `github-issues` sync, the engine itself only scans local files and never calls an external system directly. When `github-issues` is configured (via `/pm:tracker`), the sync process fetches open issues, deduplicates them against existing `externalId` values in `state.json`, and registers each new issue as an untriaged `claude-code`-lane epic at `P2`. Any `P0`–`P3` label present on the issue overrides the `P2` default. Configure your GitHub tracker via `/pm:tracker` before expecting issue sync to work.
</Note>
