nc://openspec

v0.1.0Pinned
ThomSharklint: the rewrite cells published since 846d0b0 pass the structural lint (#109)0caf25c· 9 Nov2 commits
test1 filecell.lisp71.3 KBmodel.lisp19.0 KB

nodecode-openspec

OpenSpec: spec-driven development over a project's openspec/ folder — changes, tasks, specs, ideas and a board of what is in flight. A Nodecode rewrite of FelineStateMachine/hermes-openspec by FelineStateMachine.

The model gets twenty openspec_* tools that read and write the same artifacts the original plugin did: a change is a folder under openspec/changes/ holding proposal.md, design.md, tasks.md and specs/<capability>/spec.md; its status is derived from the checkboxes in tasks.md, never stored. Everything is plain markdown, so the tools work with nothing installed.

Get it

Tell the agent "add the openspec cell", or run nodecode add nc://openspec.

Set it up

Set workdir to the project whose openspec/ the tools work in, in /settings or in the openspec section of config.jsonc:

{
  "openspec": {
    "workdir": "~/code/myproject"
  }
}

More projects can be named for openspec_context:

{
  "openspec": {
    "workdir": "~/code/myproject",
    "projects": ["api=~/code/api", "web=~/code/web"]
  }
}

cli names the openspec command when it is not on PATH; only openspec_cli runs it. Every tool also takes a workdir of its own, so a session can work in another project for one call.

Use it

Tool What it does
openspec_list The project's changes (status and task progress) or its specs
openspec_show One change whole (proposal, design, tasks, delta specs) or one spec, parsed
openspec_status Which artifacts a change has and which are missing
openspec_task_list / openspec_task_set_status A change's checklist; tick or untick it by id or by text
openspec_change_create / openspec_change_promote A change scaffold; then its task list and delta spec placeholder
openspec_change_archive / openspec_change_unarchive Move a finished change into changes/archive/, or back
openspec_idea_create / openspec_idea_enrich / openspec_idea_promote Capture an idea, evaluate it, turn it into a change
openspec_spec_list / openspec_spec_show / openspec_spec_create Read and write a spec.md as requirements and scenarios
openspec_spec_diff A change's delta spec against the baseline, by requirement and scenario
openspec_validate The shape checks: a proposal with ## Why, tasks, a delta spec, a scenario per requirement
openspec_instructions The authoring guide for the proposal, design, tasks, specs, and how to apply a change
openspec_context Resolve project or project/change into the change's content
openspec_cli The openspec CLI itself, for the subcommands the files do not carry

/openspec prints the project's board: every active change with its status and done/total tasks. The tools are also callable from eval and from a layer: (opsx:status), (opsx:validate :change "add-login").

A change's lifecycle, as the tools see it: draft (no tasks), todo, in_progress, done, archived.

What is in it

File What it is
package.lisp The nodecode-openspec package, nicknamed opsx
model.lisp The openspec/ folder as data: paths, tasks, specs, ideas
cell.lisp The operations, the twenty tools, /openspec, and the cell declaration
test/cell-test.lisp Fifteen tests over scratch projects, no network, no CLI

License

MIT. The rewrite is Nodecode's; the design and the guides come from FelineStateMachine's plugin. See LICENSE and NOTICE.

Add nc://openspec

  1. 1

    Install Nodecode

    Once per machine.

    $ curl -fsSL https://nodecode.ai/install.sh | sh
  2. 2

    Add the cell

    Pinned at 0caf25c.

    $ nodecode add nc://openspec

    Or tell the agent add the openspec cell.