sysspec
v0.1.1
Published
System specs first: enforceable system intent (contracts + gherkin) with deterministic gates, generated docs and mocks. The MCP server is the companion package sysspec-mcp.
Readme
sysspec (CLI)
The sysspec command on npm: deterministic gates, lint, generated docs,
Microcks mock orchestration and the init scaffold for a contract-first
spec repository.
npx -y sysspec init my-specs --org com.acme # scaffold a spec repo
npx -y sysspec lint manifest # any command, ad hocScaffolded repos pin sysspec@<version> in their Taskfile (Renovate bumps
it, npm datasource); this repo's own Taskfile runs the committed bundle
dist/cli.mjs directly, so a checkout needs nothing but node.
External tools the CLI shells out to are pinned in src/pins.ts:
spectral, gherkin-lint, @asyncapi/cli and mermaid-cli via npx,
oasdiff from the mise toolchain, docker compose for the Microcks
stack — and datacontract-cli via uvx, the one Python tool left
(no npm equivalent for ODCS validation), which is why uv stays in
mise.toml.
Layout
src/— the command implementations;cli.tsis the entry.templates/— everythingsysspec initlays down (dotfiles stored undotted so packaging tools cannot drop them;scaffold.tsrenames on copy), plus the bundled Spectral ruleset and Microcks compose file.dist/cli.mjs— committed dependency-free bundle.task check:cli:distfails when it is stale: rebuild (npm run build) and commit with anysrc/ortemplates/-adjacent change.test/— vitest suite: goldenspecs.jsonbyte-comparison against a frozen snapshot (test/fixtures/expected-specs.json), gate logic units, scaffold/rename/packaging pins (pack.test.tsguards the npm tarball contents), and the null-service falsifiability gate.
Development
cd cli
npm install
npm test
npm run build # refresh dist/ — commit itReleases: tag v<version> matching package.json — release.yml
publishes to npm via trusted publishing and moves the floating v<major>
tag adopter workflows reference. See CONTRIBUTING.md.
