Skip to main content

An unofficial, community-built interactive TUI for visualizing and managing OpenSpec changes and specs. Not affiliated with Fission-AI/OpenSpec.

Project description

openspec-ui

Unofficial. openspec-ui is a community-built tool and is not affiliated with, endorsed by, or sponsored by Fission-AI/OpenSpec. It consumes the openspec CLI over subprocess as a third-party client.

An interactive, keyboard-driven terminal UI for visualizing and managing your OpenSpec changes and specs.

openspec view dumps a static dashboard and exits. openspec-ui is the interactive version: browse changes and specs, glance at progress, see a kanban pipeline of your changes, open artifacts, edit them in $EDITOR, and create new changes — all from one terminal command.

Install & run

uvx openspec-ui

Run it from inside any directory containing an openspec/ root (or a subdirectory of one). Requires the openspec CLI on PATH.

Requires Python 3.10+ and Textual 1.0 or newer (installed automatically).

What it does

  • Dashboard — an aligned table of changes (stage, name, progress, tasks, last modified) over headline counts of specs and of changes per stage. Specs are listed with their requirement counts.
  • Kanban — a pipeline view of changes by stage, each column and card carrying that stage's colour, for at-a-glance status.
  • Change detail — renders a change's artifacts (proposal.md, design.md, specs/**) as scrollable markdown with a navigable table of contents; ASCII diagrams and code blocks stay aligned in monospace. When an artifact resolves to several files, each gets its own tab.
  • Tasks — a change's tasks.md rendered as its checklist, one section per heading with a done/total count. Read-only; edits go through $EDITOR.
  • Spec browser — open a spec to read its overview and requirements, each expandable to reveal its scenarios.
  • Filter — press / to narrow the changes and specs by name.
  • Edit — press e to open the current artifact in $EDITOR; the view reloads from disk when the editor exits.
  • New change — press n to create a change via openspec new change.
  • Command paletteCtrl+P for fuzzy-searchable actions, including jumping straight to any change or spec by name, and switching theme.
  • Live refresh — open views re-read from disk as things change on disk; press p to pause.

Press ? at any time for the key bindings available on the current screen.

Screenshots

Screenshots show an example project, not this repository.

Dashboard — changes in an aligned table with stage, progress and task counts, over headline counts per stage.

The dashboard: changes in an aligned table with stage, progress and task counts, over headline counts per stage

Kanbank. Every column heading and card border carries its stage's colour, so the shape of the pipeline reads before any of the text does.

Kanban: four stage columns with colour-coded headings and cards carrying a stage-coloured left border

Change detailenter on a change. Artifacts render as scrollable markdown with a table of contents; code blocks and ASCII diagrams keep their monospace alignment.

A change's design document with a navigable table of contents on the left and an ASCII diagram preserved in the body

Tasks — the tasks.md checklist, one section per heading with its done/total count. Finished sections start collapsed so the eye lands on what is left. Read-only: edits go through $EDITOR.

The tasks pane: sections with completion counts, completed sections collapsed and remaining work expanded

Spec browserenter on a spec. Requirements expand to reveal their scenarios, which is the only way a spec with thirty of them stays readable.

A spec's requirements listed with scenario counts, one expanded to show its WHEN/THEN scenarios

Command paletteCtrl+P. Fuzzy-matched actions, plus every change and spec by name.

The command palette filtered to billing-related commands

Filter/. Narrows the changes and specs by name; escape clears it.

The dashboard with a filter narrowing the list to changes whose names contain "add"

Light theme — all colour comes from the active Textual theme, so it follows your terminal.

The same dashboard under a light theme

Contributing

This project follows the OpenSpec spec-driven workflow (openspec/).

Git history uses Conventional Commits and conventional branch names:

  • Branches: feat/<scope>, fix/<scope>, refactor/<scope>, chore/<scope>, …
  • Commits: feat:, fix:, docs:, refactor:, chore:, … (with a scope when helpful, e.g. feat: add kanban view).
  • Never commit directly to main. Work on a dedicated branch and open a pull request with the GitHub CLI (gh pr create), referencing the OpenSpec change name in the PR description.

For changes managed through OpenSpec, see openspec/config.yaml for the project context and per-operation guidance that the openspec skills follow.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openspec_ui-0.5.0.tar.gz (688.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openspec_ui-0.5.0-py3-none-any.whl (37.0 kB view details)

Uploaded Python 3

File details

Details for the file openspec_ui-0.5.0.tar.gz.

File metadata

  • Download URL: openspec_ui-0.5.0.tar.gz
  • Upload date:
  • Size: 688.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.8.24

File hashes

Hashes for openspec_ui-0.5.0.tar.gz
Algorithm Hash digest
SHA256 6d5d7a8a93683f34de5b4c4bf9187ead5982045dbd4f0c500990d561145b1fee
MD5 beb5777ad01a32c94076753ce71eed45
BLAKE2b-256 c3008bb3a6889c1da673ab89efdfab4dc93008a215edd8037f1d1bed31921a96

See more details on using hashes here.

File details

Details for the file openspec_ui-0.5.0-py3-none-any.whl.

File metadata

File hashes

Hashes for openspec_ui-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 744c00777f6d2b69eac896bc03441d80bf87c583349cfd21b7883d36cda6c301
MD5 5f75c1df529567f50d0d2586ce56b6d1
BLAKE2b-256 be4ab2e99a9d01c752519ccefaa7baaf1bde839b28b905dc24d255e22b78df11

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page