JohnXu22786/spec-driven
keel is a self-contained pluginized skill pack: five skills (Anchor → Spec → Probe → Build → Audit) constrain the agent's coding behavior, three tools provide spec generation and discipline review, and template variants adapt to task size. It works with plugin-everything harnesses such as dsh (DeepSeek Harness), and can also be used standalone without a harness.
catalog 简介 / catalog descriptioncatalog description:keel(龙骨):规格驱动开发纪律技能包——先立规格、验证假设、防过度工程与范围蔓延,为 dsh 等插件化 harness 提供技能+工具+模板
项目介绍Project Overview
keel 是规格驱动开发纪律插件,提供锚定、规格、探查、构建、审计五步技能,以及规格生成与审查工具,用门禁约束代理先写规格、验证假设再编码。适合需求模糊、易过度设计或范围蔓延的功能开发与故障复盘。注意:它强制流程与产物,不替代具体实现判断。
keel is a spec-driven development discipline plugin for DSH. It provides five skills—Anchor, Spec, Probe, Build, Audit—plus tools for generating specs and reviewing SPEC, ASSUMPTIONS, and AUDIT files, enforcing gates before implementation and delivery. Use it for feature work or post-mortems where vague requirements, unverified assumptions, over-engineering, or scope creep are risks. It constrains workflow, but does not replace implementation decisions.
请帮我了解并安装插件:【spec-driven】【https://github.com/JohnXu22786/spec-driven】
把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.
或使用命令行安装(适合开发者)Or use CLI install (for developers)
命令行安装CLI Install
dsh plugin --profile demo add github:JohnXu22786/spec-driven
把 JohnXu22786/spec-driven 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
keel — Spec-Driven Development Discipline Skill Pack
Write the spec first, then the code. Turn "don't ship it broken" from a slogan into skills, tooling, and gates.
keel is a self-contained pluginized skill pack: five skills (Anchor → Spec → Probe → Build → Audit) constrain the agent's coding behavior, three tools provide spec generation and discipline review, and template variants adapt to task size. It works with plugin-everything harnesses such as dsh (DeepSeek Harness), and can also be used standalone without a harness.
Why you need it
The three main causes of coding failure:
- Missing spec — you start with vague requirements, and wrong implementation direction costs the most rework;
- Unverified assumptions — treating "I assumed" as "it's a fact" builds the plan on quicksand;
- Engineering out of control — doing too much (over-engineering) or drifting (scope creep).
keel's response: write the spec and verify assumptions first; no implementation until the spec passes the gates. During implementation, use the rules to prevent over-engineering and change requests to prevent scope creep. Before delivery, audit each acceptance criterion one by one. Discipline is enforced through skills/prompts that constrain agent behavior and through tools that provide deterministic checks — it does not rely on human self-discipline.
Five-step discipline loop
| Step | Skill | Action | Artifact | Gate |
|---|---|---|---|---|
| 1 Anchor | keel-anchor | Three boundary questions: what to do, what not to do, what success looks like | Three sentences | All three sentences verifiable |
| 2 Spec | keel-spec | Pick a template by size and generate the spec | SPEC.md | keel_review zero errors |
| 3 Probe | keel-probe | Register assumptions, flag risks, verify high-risk ones first | ASSUMPTIONS.md | All [High] assumptions resolved (enforced by KEEL-0303) |
| 4 Build | keel-build | Implement per the spec, follow the ten rules and the scope guardrails | Code | Spec frozen, changes go through change requests |
| 5 Audit | keel-audit | Check acceptance criteria one by one, record deviations and retro | AUDIT.md | No unaddressed ❌ (enforced by KEEL-0403) |
Failure post-mortems follow the same discipline: write a failure-cause spec first, verify assumptions, then fix.
Quick start
Option 1: Plug into dsh (pluginized harness)
- Put this directory into your project, or copy it anywhere;
- Create a
cordis.ymlpatch (you can copycordis.example.ymlfrom the repo root) pointing to this plugin's entry:
- insert:
- id: keel
name: '/absolute/path/spec-driven/src/index.ts'
- Start the harness and load the patch:
dsh web --patch ./cordis.yml
Once loaded, the model gains three tools (keel_catalog, keel_spec, keel_review) and five skills (keel-anchor, keel-spec, keel-probe, keel-build, keel-audit). See docs/INTEGRATION.md for details.
Option 2: Bare-metal CLI (no harness)
node src/cli.ts catalog
node src/cli.ts scaffold spec SPEC.md "--title=Example" "--goal=Goal" "--in_scope=- behavior" "--out_of_scope=- not doing" "--requirements=- R-01" "--acceptance=- AC-01" "--verification=command"
node src/cli.ts review SPEC.md
Values containing spaces must be quoted (as above). review exits with code 0 when there are no errors (usable as a CI gate) and 1 when errors exist. Zero dependencies; runs directly on Node ≥ 22.18.
Installing in DSH
keel ships a dsh.bundle manifest (cordis.patch.yml, referenced from package.json),
so it installs and activates in one command:
dsh plugin --profile demo add github:JohnXu22786/spec-driven
The bundler inserts a plugin row (name: keel) into the profile and dsh resolves the
package entry (src/index.ts), registering the three tools and five skills on load.
Manual local loading via a cordis.yml patch still works (see
docs/INTEGRATION.md).
Tool interface
| Tool | Purpose |
|---|---|
keel_catalog |
List the skills and templates (routing entry) |
keel_spec |
Generate spec-class files from a template (template/path/fields args; rejects the whole call if any field is missing) |
keel_review |
Review SPEC/ASSUMPTIONS/AUDIT files; outputs a report with rule IDs and line numbers |
Spec templates (with variants)
| Template | Size | Use |
|---|---|---|
spec.minimal |
Micro task | Single file, single behavior, done in under half an hour |
spec |
Standard | Regular feature tasks |
spec.feature |
Large task | Involves interfaces, data, and error paths |
assumptions |
— | Assumption register (risk levels + verification conclusions) |
audit |
— | Acceptance audit table (result + evidence + deviation + retro) |
change-request |
— | Change request (the only entry for scope changes after the spec is frozen) |
Configuration
Passed via the config field of the host patch line (defaults are used without a harness):
{
"strictness": "relaxed", // relaxed | strict (strict upgrades warnings to errors)
"requireAssumptions": true, // require an ASSUMPTIONS*.md file in the same directory when reviewing a spec
"maxFindings": 100 // cap on findings per review report (1–1000)
}
Invalid configuration fails at load time with a message containing fix guidance.
Documentation index
- docs/METHODOLOGY.md — methodology overview: five-step discipline loop, the ten rules against over-engineering, scope-creep guardrails, review rule list (KEEL-*)
- docs/INTEGRATION.md — dsh integration: loading, registration interface, the three ways to load skills, unload and reload
- docs/PLANNING_BRIDGE.md — bridging to planning/task-breakdown skills: how spec artifacts feed into planning
- examples/ — good examples (spec/assumptions/audit) and counter-examples (demonstrating the review engine's findings)
Development
npm test # node --test all tests (zero test dependencies)
npm run typecheck # tsc --noEmit
npm run cli # bare CLI
Running tests and type checks requires Node ≥ 22.18; npm install only installs dev-time type packages (typescript, @types/node); zero runtime dependencies.
License
MIT, see LICENSE.
nexu-io/open-design
freestylefly/awesome-gpt-image-2
anywhere-labs/dsh-desktop
walkinglabs/learn-harness-engineering
awesome-dsh-plugin/awesome-dsh-plugin
MemTensor/MemOS