OpenSpec × GitHub Issues

The issue is the spec.

Plan in OpenSpec, sync to issues and boards, and ship from one source of truth. Start spec-first or pull an existing board issue and plan implementation tasks locally.

npm npm install -g @androidand/specsync
go go install github.com/androidand/specsync/cmd/specsync@latest

Dogfooded here: every shipped change traces from OpenSpec plan to issue to release notes.

How it works

Two flows. One source of truth.

specsync supports both entry points: spec-first and issue-first (from your issue tracker). Start from either side, keep OpenSpec as the source of truth, and synchronize issue tracker issues/boards as work evolves.

Spec-first

Plan locally, project outward

Start in openspec/changes/, define proposal and tasks, then sync to the tracker when the plan is ready.

Issue-first

Pull inward, then evolve in spec

Start from an existing issue tracker issue via specsync pull, refine locally, and keep issue plus board state aligned.

Everything a spec workflow needs. Nothing heavyweight.

specsync is a small CLI binary: no daemon, no SDK lock-in, and no mandatory central config file. In GitHub mode it uses gh, with flags and env vars controlling behavior.

Plan

Spec-first or issue-first

Start from local proposal.md/tasks.md or pull an existing issue tracker issue with specsync pull.

Planning scan

specsync scan shows what already exists for an area — in-flight changes, loose issues, recent commits — before you plan.

Collaborate

Idempotent

Run specsync -change my-change as often as needed. If the issue tracker issue already exists, specsync updates it (same identity marker) instead of creating a duplicate.

Workflow state management

Set stage explicitly with specsync set-stage my-change [active|blocked|in-review|complete] so progress is visible and committed in metadata.

Priority-driven dispatch

Set priorities (1-100) with specsync set-priority my-change 85. Agents respect priority when deciding what to work on next — humans direct focus.

Projects board sync

Project and sync with specsync -change my-change -project my-org/6. Add -status-map "active=In Progress,complete=Done" to align board columns with change stages.

Ship

Release follow-up

specsync release-plan highlights shipped changes, loose/unlinked work, archive candidates, and advisory release impact from spec-level deltas.

Spec-driven changelog

specsync changelog writes a Keep a Changelog section from your shipped changes — one entry per change, release notes authored at planning time, never a raw commit dump.

In practice

Two commands, both directions.

Project a local plan outward, or pull an existing issue inward — either way you end up in the same loop.


Repository Evidence

specsync is dogfooded on specsync itself.

Not a staged demo — follow one real change, the v0.8.0 board projection, through every form it takes:

1 · Planning artifact openspec/changes/github-projects-compatibility/ Proposal and task checklist, written before any code. Pinned at the v0.8.0 tag so the link never rots. 2 · Tracker projection specsync#37 The issue specsync generated from that change — same body, live task checklist, closed when the work shipped. 3 · Shipped output v0.8.0 release notes The changelog entry derived from the same change, linking back to #37. The loop closes itself.


Changelog

Recent releases

v0.9.0 Jul 17, 2026
Added
  • Advisory title suggestions: warn on unwieldy titles, never rewrite them #52
  • The changelog now ignores commits that were reverted within the same release range, so net no-op work no longer produces entries describing behavior the release doesn't contain. #53
  • Fail CI when a commit ships without a linked issue #51
Fixed
  • don't make push an alias — point it at sync instead 46f5478
  • reject unrecognized leading arguments instead of silently falling through to sync 5893ebe
View complete release details on GitHub →
v0.8.0 Jul 16, 2026
Added
  • add three-phase workflow state management for SpecSync 0ba30bd
  • phase 1 - implement SpecSource interface and OpenSpec implementation 1065b59
  • add SpecSourceFactory and --spec CLI flag 1094ca1
  • implement rich-change-state foundation 1ae74b8
  • add change-status commands (partial) 36c7dde
  • implement three-way merge reconciliation with human-move detection 4b7bc5a
  • add three-way merge infrastructure for board-state-reconciliation 8386fe9
  • add explicit archive-completed execution 8389873
  • rework changelog, hero, IA, and a11y per review feedback d0de2e5
  • complete change-status-cli with atomic writes and JSON output fe6e6a3
Changed
  • Breaking: repair set-stage/set-priority semantics; drop dead code and artifact docs 3cd81b7
Fixed
  • show unlinked-but-shipped commits too, not just spec-backed ones 07602bd
View complete release details on GitHub →
v0.7.0 Jul 14, 2026
Added
  • resolve refs live at release time, wire into release CI d057829
  • render changelog from CHANGELOG.md, not the GitHub API e2c18f8
Fixed
  • never let a failed build degrade committed content 9035465
  • stop reading bare #N in commit prose as issue evidence aeee62a
View complete release details on GitHub →