OpenSpec

OpenSpec

Experimental

Operator can import work from OpenSpec, the spec-driven development (SDD) framework for AI coding assistants. OpenSpec keeps proposed changes as plain-markdown bundles in your repository; Operator turns their task checklists into queued tickets.

Experimental. This provider is pull-only and file-based. Operator never edits your OpenSpec files — checking off completed tasks in tasks.md remains yours (or your agent’s) to do.

How the mapping works

OpenSpec stores each proposed change at openspec/changes/<change-id>/ with a proposal.md, an implementation checklist in tasks.md, and optional design.md + spec deltas. Operator maps that structure onto its kanban model:

OpenSpec Operator
Active change (changes/<id>/) A kanban “project” (the change id is the project key)
## 1. Group heading in tasks.md One ticket per task group
Checklist items under the group The ticket’s task list (embedded in the body)
All items checked Group counts as done and is skipped on import

Each imported ticket carries external_provider: openspec and external_id: <change-id>#<group-number> in its frontmatter, so re-running an import skips everything already in your queue — imports are idempotent.

The ticket body includes the change id, the proposal’s Why section, the group’s checklist verbatim, and a pointer to the change directory so agents read the full spec (proposal, design, deltas) before starting.

Configuration

Add an OpenSpec root to operator.toml:

[kanban.openspec.myrepo]
enabled = true
root_path = "/path/to/your-repo/openspec"  # the dir containing changes/
project = "yourproject"                     # operator project for imported tickets
Setting Default Description
enabled false Whether this OpenSpec root is active
root_path Directory containing the OpenSpec changes/ tree
project change id Operator project stamped on imported tickets

No credentials are needed — OpenSpec is local markdown.

Importing

# Import one change's open task groups as tickets
operator import openspec add-dark-mode

# Import every active (non-archived) change under all configured roots
operator import openspec

# Sync all configured kanban providers, OpenSpec included
operator import

Fully-checked task groups are skipped; unchecked or partially-checked groups become TASK tickets (flagged needs_issuetype_mapping so you can retype them if desired). Re-running any of these commands only creates tickets for groups not already imported.

Limitations