English | Español
A keyboard-driven terminal UI for reading and navigating OpenSpec project artifacts — proposals, designs, specs, and tasks.
Built with OpenSpec. This repository contains 12 project-level spec files and 20+ archived changes that document the complete development history of the tool.
- Navigates all active changes and their artifacts from a single interface
- Renders Markdown with full syntax highlighting
- Toggles task checkboxes (
- [ ]/- [x]) in-place, writing directly totasks.md - Live-reloads on disk changes (500 ms polling)
- Opens any artifact in
$EDITOR - Accepts a path argument to view a single change directory without a full project
Requirements: terminal with ANSI color support. Go 1.25 or later if building from source.
# Homebrew
brew tap fselich/tap
brew install dossier
# From source
git clone https://github.com/fselich/dossier
cd dossier
make build # produces ./dossier
make install # installs via go install
# Using go install
go install github.com/fselich/dossier/cmd/dossier@latestRun from the root of an OpenSpec project:
dossierView a single change directory by path:
dossier /path/to/openspec/changes/my-change| Key | Action |
|---|---|
h / l |
Previous / next change |
1 |
Proposal tab |
2 |
Design tab |
3 |
Specs tab (press again to cycle through multiple spec files) |
4 |
Tasks tab |
j / down |
Scroll down (or move task cursor down) |
k / up |
Scroll up (or move task cursor up) |
Space |
Toggle task under cursor (tasks tab only) |
e |
Open artifact in $EDITOR |
a / Esc |
Enter index mode |
q / Ctrl+C |
Quit |
| Key | Action |
|---|---|
j / down |
Move cursor down |
k / up |
Move cursor up |
Enter |
Open selected change, spec, or archived change |
Space |
Expand / collapse a project spec |
q / Esc / Ctrl+C |
Quit |
| Key | Action |
|---|---|
1–4 |
Switch artifact tab |
j / k |
Scroll |
a / Esc |
Return to index |
q / Ctrl+C |
Quit |
| Key | Action |
|---|---|
j / k |
Scroll |
Esc |
Return to index |
q / Ctrl+C |
Quit |
In requirement focus mode:
| Key | Action |
|---|---|
h / l |
Previous / next requirement |
j / k |
Scroll |
Esc |
Return to index |
q / Ctrl+C |
Quit |
dossier expects an openspec/ directory at the project root:
openspec/
├── changes/
│ ├── <change-name>/
│ │ ├── .openspec.yaml # Required: identifies the directory as a change
│ │ ├── proposal.md
│ │ ├── design.md
│ │ ├── tasks.md # GFM checkbox syntax: - [ ] / - [x]
│ │ └── specs/
│ │ └── <spec-name>/
│ │ └── spec.md
│ └── archive/
│ └── YYYY-MM-DD-<name>/
└── specs/
└── <spec-name>/
└── spec.md # Requirements parsed from: ### Requirement: <name>
