clone

a hermes agent plugin for openspec: tools for spec workflows and a dashboard tab for browsing changes and specs

docs: archive dogfooding feedback change

dami etoile committed d183a3e
commit
d183a3e7264db5a2c3fc0c3666ae312ab0ceefe6
parent
0759278322b9007c57357e76f063b195c444cb03
author
dami etoile <dami.etoile@gmail.com>
10 files changed, +22 -10
MREADME.md4++--
Ropenspec/changes/fix-init-instructions-workflow/.openspec.yaml → openspec/changes/archive/2026-06-22-fix-init-instructions-workflow/.openspec.yaml0
Ropenspec/changes/fix-init-instructions-workflow/README.md → openspec/changes/archive/2026-06-22-fix-init-instructions-workflow/README.md0
Ropenspec/changes/fix-init-instructions-workflow/design.md → openspec/changes/archive/2026-06-22-fix-init-instructions-workflow/design.md0
Ropenspec/changes/fix-init-instructions-workflow/proposal.md → openspec/changes/archive/2026-06-22-fix-init-instructions-workflow/proposal.md0
Ropenspec/changes/fix-init-instructions-workflow/specs/agent-tools/spec.md → openspec/changes/archive/2026-06-22-fix-init-instructions-workflow/specs/agent-tools/spec.md0
Ropenspec/changes/fix-init-instructions-workflow/specs/dashboard-sources/spec.md → openspec/changes/archive/2026-06-22-fix-init-instructions-workflow/specs/dashboard-sources/spec.md0
Ropenspec/changes/fix-init-instructions-workflow/tasks.md → openspec/changes/archive/2026-06-22-fix-init-instructions-workflow/tasks.md0
Mopenspec/specs/agent-tools/spec.md14+++++++++++---
Mopenspec/specs/dashboard-sources/spec.md14+++++++++-----
M README.md +2 -2
@@ -31,7 +31,7 @@ This plugin closes both gaps:
3131 - Register repos by path — each gets a vanity name and stable tokens (`name/os_a1b2c3`).3232 - **Changes view** — Kanban-style board: ideas → draft → todo → in_progress → done → archived. Click any change to read its proposal, tasks, design, and spec deltas. Spec deltas render side-by-side (current vs proposed) with structured requirement/scenario parsing.3333 - **Specs view** — browse current specs in the worktree, sorted alphabetically or by last git commit date. Compare against HEAD (dirty mode) or arbitrary git refs (before/after).34-- **Source initialization** — register a repo before it has an `openspec/` directory, then initialize it from the dashboard (runs `openspec init --tools none`, or creates the directory structure as a fallback).34+- **Source initialization** — register a repo before it has an `openspec/` directory, then initialize it from the dashboard. CLI-backed and fallback initialization both normalize the plugin-supported layout: `openspec/changes/`, `openspec/changes/archive/`, `openspec/specs/`, and `openspec/ideas/`.3535 - Deep-linking via URL hash (`#project-name/token#anchor` — the second `#` selects a tab: proposal, tasks, design, or specs).3636 3737 ![Change board](screenshots/board.png)
@@ -62,7 +62,7 @@ To register a repo in the dashboard, open the OpenSpec tab and click **Add sourc
6262 openspec_context(identifier="/path/to/your/repo")6363 ```6464 65-The repo doesn't need an `openspec/` directory upfront — if it's missing, the dashboard shows an **Initialize** button that creates it. Once initialized, the dashboard shows changes and specs live from the filesystem.65+The repo doesn't need an `openspec/` directory upfront — if it's missing, the dashboard shows an **Initialize** button that creates the plugin-supported OpenSpec roots. Once initialized, the dashboard shows changes, ideas, and specs live from the filesystem.6666 6767 ## Verify6868
R openspec/changes/fix-init-instructions-workflow/.openspec.yaml → openspec/changes/archive/2026-06-22-fix-init-instructions-workflow/.openspec.yaml +0 -0

No content changes.

R openspec/changes/fix-init-instructions-workflow/README.md → openspec/changes/archive/2026-06-22-fix-init-instructions-workflow/README.md +0 -0

No content changes.

R openspec/changes/fix-init-instructions-workflow/design.md → openspec/changes/archive/2026-06-22-fix-init-instructions-workflow/design.md +0 -0

No content changes.

R openspec/changes/fix-init-instructions-workflow/proposal.md → openspec/changes/archive/2026-06-22-fix-init-instructions-workflow/proposal.md +0 -0

No content changes.

R openspec/changes/fix-init-instructions-workflow/specs/agent-tools/spec.md → openspec/changes/archive/2026-06-22-fix-init-instructions-workflow/specs/agent-tools/spec.md +0 -0

No content changes.

R openspec/changes/fix-init-instructions-workflow/specs/dashboard-sources/spec.md → openspec/changes/archive/2026-06-22-fix-init-instructions-workflow/specs/dashboard-sources/spec.md +0 -0

No content changes.

R openspec/changes/fix-init-instructions-workflow/tasks.md → openspec/changes/archive/2026-06-22-fix-init-instructions-workflow/tasks.md +0 -0

No content changes.

M openspec/specs/agent-tools/spec.md +11 -3
@@ -3,9 +3,7 @@
33 ## Purpose44 55 The plugin SHALL expose OpenSpec-aware Hermes tools that let agents discover, inspect, validate, and act on repo-local OpenSpec artifacts without manually assembling shell commands. Tools are expected to be safe for maintainers to use across multiple registered repositories and predictable enough for other agents to depend on.6-76 ## Requirements8-97 ### Requirement: Registered-source context resolution108 The plugin SHALL provide an `openspec_context` tool that resolves user-facing OpenSpec identifiers into the source repository path and relevant artifact content.119
@@ -61,7 +59,7 @@ CLI-backed tools SHALL execute OpenSpec commands in a resolved project workdir a
6159 - **THEN** the tool returns `ok: false` with the command, workdir, and timeout error6260 6361 ### Requirement: Artifact listing and inspection64-The plugin SHALL provide tools that map directly to OpenSpec list/show/status/instructions workflows.62+The plugin SHALL provide tools that map directly to OpenSpec list/show/status/instructions workflows while smoothing known CLI rough edges that would otherwise block fresh-repository agent workflows.6563 6664 #### Scenario: List changes or specs6765 - **WHEN** an agent calls `openspec_list` with kind `changes` or `specs`
@@ -78,3 +76,13 @@ The plugin SHALL provide tools that map directly to OpenSpec list/show/status/in
7876 #### Scenario: Retrieve implementation instructions7977 - **WHEN** an agent calls `openspec_instructions`8078 - **THEN** the tool returns OpenSpec's enriched instructions for the requested artifact, schema, and optional change79+80+#### Scenario: Accept singular spec artifact alias81+- **WHEN** an agent calls `openspec_instructions` with artifact `spec`82+- **THEN** the tool treats it as the OpenSpec CLI artifact `specs`83+84+#### Scenario: Fresh repository instructions fallback85+- **GIVEN** a repository has been initialized but contains no changes86+- **WHEN** an agent calls `openspec_instructions` for a known artifact87+- **THEN** the tool returns `ok: true` with template-backed guidance for that artifact instead of failing only because no change exists88+
M openspec/specs/dashboard-sources/spec.md +9 -5
@@ -3,9 +3,7 @@
33 ## Purpose44 55 The dashboard plugin SHALL let maintainers register, inspect, initialize, update, and remove OpenSpec-capable repositories from the Hermes dashboard. Source management must work even before a repository has been initialized with an `openspec/` directory.6-76 ## Requirements8-97 ### Requirement: Source listing API108 The dashboard API SHALL list registered sources with live validity, repository, and OpenSpec scan information.119
@@ -64,23 +62,28 @@ The dashboard API SHALL expose create, update, and delete operations for registr
6462 - **THEN** the API removes it from the registry and subsequent source lists omit it6563 6664 ### Requirement: Source initialization67-The dashboard API SHALL initialize a registered source that exists but lacks an `openspec/` directory.65+The dashboard API SHALL initialize a registered source that exists but lacks an `openspec/` directory and SHALL normalize the resulting OpenSpec layout to include all directory roots used by the plugin.6866 6967 #### Scenario: OpenSpec CLI available7068 - **GIVEN** the OpenSpec CLI binary is available7169 - **WHEN** the dashboard initializes an uninitialized source72-- **THEN** the API runs `openspec init <repo-root> --tools none` and returns the refreshed source payload70+- **THEN** the API runs `openspec init <repo-root> --tools none`, ensures `openspec/changes`, `openspec/changes/archive`, `openspec/specs`, and `openspec/ideas` all exist, and returns the refreshed source payload7371 7472 #### Scenario: OpenSpec CLI unavailable7573 - **GIVEN** the OpenSpec CLI binary is unavailable7674 - **WHEN** the dashboard initializes an uninitialized source77-- **THEN** the API creates a minimal `openspec/changes`, `openspec/specs`, and `openspec/ideas` directory structure and returns the refreshed source payload75+- **THEN** the API creates `openspec/changes`, `openspec/changes/archive`, `openspec/specs`, and `openspec/ideas` and returns the refreshed source payload7876 7977 #### Scenario: Already initialized source8078 - **GIVEN** the source already has an `openspec/` directory8179 - **WHEN** the dashboard initializes the source8280 - **THEN** the API returns success with an `Already initialized` message and does not modify existing artifacts8381 82+#### Scenario: CLI-listable initialized source83+- **GIVEN** a source has been initialized through the dashboard API84+- **WHEN** an agent or maintainer runs OpenSpec list commands in that source85+- **THEN** the required OpenSpec directories exist so list operations are not blocked by a missing `changes` root86+8487 ### Requirement: Dashboard source controls8588 The dashboard UI SHALL present compact controls for selecting and managing registered sources.8689
@@ -97,3 +100,4 @@ The dashboard UI SHALL present compact controls for selecting and managing regis
97100 - **GIVEN** no sources are registered98101 - **WHEN** the dashboard renders the OpenSpec tab99102 - **THEN** it shows an empty-state path to add a source instead of rendering a broken board103+