Beta·every release is a pre-releaseAPIs and harness behavior are still changing·every release until v1 is a pre-release
uzev1.0.0-beta.12
Workspace

Spec

Read what a change intends: its proposal, design and tasks, from the spec-driven tool the project uses

The spec surface: an agent's change opened on its proposal, its tasks read as a checklist, then the project's specs and archive.
Alt+X opens it on the change the agent is working on.

Alt+X opens the plans a spec-driven tool keeps in the checkout: each change's proposal, design and tasks, and the specs that outlive them. They are found on their own; there is nothing to declare.

SubjectLists
ChangesWhat is in flight, with how many of its tasks are done, and last the changes the tool put away
SpecsThe requirements that outlive the changes
DecisionsThe decision records (ADRs) the project keeps, each with its status

There are never more than these three. Decisions appears only when the declared places hold one.

Changes are grouped by where they stand. This checkout is the change the agent in the selected tab is working on, found from the files its branch touched, and it opens first. In progress comes next. A change whose tasks are all done sits in ready to archive when its tool archives, and in done when it does not. What the tool put away is the last band, archived, newest first. Done and archived open folded, since they only grow.

p switches a document between preview and source. Enter opens it in Code, where you can edit it. The subjects take the workspace bar while Spec is open, in place of the agent's tabs, and Tab moves between them.

Decisions

No spec tool decides where decisions live, so Spec looks for them where the project keeps what describes it: the directories in workspace.artifacts (agents.yaml). Nothing else is declared, and any spec tool, or none, works the same:

workspace:
  artifacts: docs     # docs/adr/*.md is found inside it

Records are read the way the published ADR formats write them (see Supported ADR formats), and nothing a team adds of its own is guessed at.

Read from
A recorda file named like one: a number of three or more digits, optionally after adr-, then a slug (0042-use-yaml.md, 20240105-use-yaml.md, adr-0042-use-yaml.md). Guides, indexes, templates and dated documents (2026-01-02-plan.md) beside them are passed over
Titlethe front matter's title, else the first # heading (without adr-tools' 1. ), else the slug
Statusthe front matter's status (MADR), else the header's Status: field (MADR 2, log4brains), else the first line of a ## Status section (adr-tools). A record with none is listed without one

Each decision is listed by its number and title, with its status beside it.

A record is superseded when its status says so, the way every template writes it: superseded by [ADR-0005](0005-example.md), superseded by ADR-0005, or adr-tools' own Superceded by [5. …](0005-….md); or when a format keeps it as a field: adrkit's front matter supersedes / supersededBy, or the Supersedes: ADR-0001 field OpenSpec's ADR schema writes on the new record without touching the old one. Either way both records say it.

Any other link from a status to a record, like adr-tools' Supercedes and the pairs adr link writes, or adrkit's relatesTo, is shown once on each record as Related to, with no direction claimed. Links anywhere else in a record are its text's.

A numbered record written inside a change, like openspec/changes/<name>/adr/, is listed in that change as its decision, after the design.

Tasks in the sidebar

When the selected agent is working on a change, a tasks section sits in the sidebar above the timeline. Its header says how many of that work's tasks are done out of all of them, even folded. Open, it lists each change with its own count, and clicking one opens Spec on it. Like the timeline, it is about the selected checkout only: the rest of the project's changes are in Spec.

Supported tools

A tool is recognised by the directory it keeps in the checkout.

ToolFound byStatus
OpenSpecopenspec/Supported
Spec Kit.specify/Supported
Superpowersdocs/superpowers/Supported
GSD.planning/Supported
Kiro.kiro/specs/Planned

Each tool is a small table of where its files live and what each one is for: the proposal or requirements, the design, the tasks, the specs. The surface reads those roles, never a tool's own file names, so adding one needs no new screen.

OpenSpecSpec Kit
A changeopenspec/changes/<name>/specs/<NNN-name>/
Why, how, tasksproposal.md, design.md, tasks.mdspec.md, plan.md and what it writes beside it, tasks.md
Specsopenspec/specs/<capability>/spec.md.specify/memory/constitution.md
Archiveopenspec/changes/archive/none
SuperpowersGSD
A changeone plan, docs/superpowers/plans/<date>-<feature>.mda phase, .planning/phases/<NN-name>/, or a quick task, .planning/quick/<id>-<slug>/
Why, how, tasksthe plan's checkbox stepsNN-SPEC.md and NN-CONTEXT.md, NN-RESEARCH.md and the UI and AI specs, every NN-MM-PLAN.md
Specsthe designs, docs/superpowers/specs/<date>-<topic>-design.mdPROJECT.md, REQUIREMENTS.md, ROADMAP.md, STATE.md
Archivenone.planning/milestones/

Superpowers writes a design and its plan as two files with no link between them, so each is listed on its own, newest first. A GSD plan is a list of task blocks rather than checkboxes, so a phase counts its plans instead: a plan is done once GSD has written its SUMMARY.md beside it. Summaries, verification and UAT reports are listed after the plans, by name.

A checkout that keeps more than one lists them together, each change named with its tool. Contracts written as YAML, JSON, GraphQL or protobuf are listed beside the documents and shown as source.

Supported ADR formats

A format is recognised by what it writes, not by a marker: every one below is read wherever workspace.artifacts points, beside any spec tool or none.

FormatStatus read fromSupersession read from
MADR 3 and 4front matter statusstatus: "superseded by ADR-0005", or with a link
MADR 2* Status: in the headersuperseded by [ADR-0005](0005-….md)
adr-tools (Nygard)first line of ## StatusSuperceded by [5. …](0005-….md) / Supercedes, as the tool writes them
log4brains- Status: in the headersuperseded by [xxx](yyyymmdd-xxx.md)
adrkit (Spec Kit)front matter statusfront matter supersedes, supersededBy; relatesTo as related
OpenSpec spec-driven-with-adr- Status: in the headerSupersedes: ADR-0001 on the new record, the old one untouched

A record in a shape of its own is still listed, by its title, with no status read into fields none of these formats define.

On this page