Editing documents
Tip
Writes are previews until
--write, exceptnewandset, which write directly and accept--dry-run. Sealed and closed documents are refused.
Create
$ spec new plan --governs services/shop --title "Checkout launch"
$ spec new skill --title review --description "Review a change"
Front matter
$ spec set <id> status=active
$ spec set <id> tags+=money
Bodies
spec edit replaces or appends to one section or the whole body, and bumps updated.
spec edit <id> --section Notes --text "Ship on Friday." --write
spec edit <id> --section Notes --write < notes.md
cat body.md | spec edit <id> --write
spec edit <id> --new-section Risks --after Plan --text "None yet." --write
spec edit <id> --row "Login" --cell Status=done --write
Move and fix
spec mv <id> --slug <new> moves a document and rewrites every reference to it. spec fix
applies fixes that need no judgement; spec fix --rule I2 --pick <id> resolves a duplicate alias.
In an editor
spec lsp serves the findings of spec check as diagnostics over the Language Server Protocol
(stdio). It checks unsaved buffers, offers each spec fix replacement as a quick fix, and runs
only the --write fix commands it offered. It finds the repository from the editor’s root, or
from spec lsp --dir <path>. Point any LSP client at it for Markdown files.
Neovim (0.11 or later):
vim.lsp.config("specfold", { cmd = { "spec", "lsp" }, filetypes = { "markdown" }, root_markers = { "spec.toml", ".git" } })
vim.lsp.enable("specfold")
Helix (languages.toml):
[language-server.specfold]
command = "spec"
args = ["lsp"]
[[language]]
name = "markdown"
language-servers = ["marksman", "specfold"]
VS Code: specfold ships no extension; use a generic LSP client extension with the command
spec lsp for Markdown files.