dsh-spec-kit
v0.7.0
Published
把 github/spec-kit 的 /speckit-* slash 命令接入 DeepSeek Harness 输入框,在当前项目目录执行规格驱动开发工作流。
Maintainers
Readme
dsh-spec-kit
把 github/spec-kit 的 /speckit-* slash 命令接入
DeepSeek Harness (dsh) 输入框,在当前项目目录执行规格驱动开发工作流。
包含 host 半部(/speckit-* 命令 + 项目绑定/体检)与一个极简 web 半部:
/speckit-bind、/speckit-status 的命令结果卡默认直接展开显示完整体检,
不用点开看全。
提供的命令(/speckit-*)
| 命令 | 作用 |
|---|---|
| /speckit-bind | 绑定项目根:写入 <项目根>/.speckit/config.json,并自动体检该项目的初始化/宪法状态 |
| /speckit-status | 自动体检当前项目:specs/ plans/ memory/ 是否建立、宪法是否生成(只读不改) |
| /speckit-init | 初始化:建立 specs/ plans/ memory/ constitution.md 约定 |
| /speckit-constitution | 创建/更新项目宪法 memory/constitution.md |
| /speckit-specify | 生成特性规格到 specs/<N>-<name>/spec.md |
| /speckit-clarify | 澄清规格未定项(最多 5 个问题并回写) |
| /speckit-plan | 产出设计计划(研究/数据模型/契约/宪法检查) |
| /speckit-tasks | 生成依赖排序、可执行的 tasks.md |
| /speckit-checklist | 生成自定义检查清单 |
| /speckit-analyze | 跨工件一致性分析 |
| /speckit-implement | 按 tasks.md 分阶段实现 |
| /speckit-taskstoissues | tasks 转 GitHub issues |
命令名用了 - 而不是 .(DSH 命令名不允许 .),语义等价于官方 /speckit.specify。
触发方式:在输入框敲 /,或直接输入命令并在后面补你的个人意见/修复建议后发送——
命令之后的内容会被作为本次工作流的附加要求一起带上。
项目体检
/speckit-bind 和 /speckit-status 会返回当前项目的一行体检,例如:
项目根:D:\myproj
绑定状态:已绑定(.speckit/config.json)
目录约定:specs/✓ plans/✓ memory/✗
宪法:缺失
任务:共 12 个,已完成 4 个
- tasks.md(根级): 4/12
状态:已初始化 · 宪法仍需生成据此你知道项目是否已初始化、宪法是否已生成、当前有多少任务及其完成进度、下一步该跑哪个命令。
未绑定时返回会附带如何绑定指引;已绑定时附带换绑 / 多项目用法,例如:
—— 如何绑定项目 ——
1) 打开目标项目目录对应的会话/工作区(或在任意会话里直接用绝对路径):
示例:/speckit-bind D:\your\project
示例:/speckit-bind C:\code\my-repo
不带路径的 /speckit-bind 会用当前会话的工作目录。
2) 绑定后建议先 /speckit-init 建立约定,再 /speckit-constitution 生成宪法。
· 同时跑多个项目 = 每个项目一个会话/工作区,各自 cwd 指向各自项目后分别 /speckit-bind。项目绑定(持久化到项目目录,跨会话/机器)
spec-kit的绑定不依赖会话,而是永久写到项目根.speckit/config.json。- 首次:在目标项目目录里跑
/speckit-bind(或先/speckit-init),即把该项目绑定写盘。 - 之后任何会话/任何机器:工作流命令触发时会从当前会话目录【向上】自动查找
.speckit/, 找到即视为这个已绑定项目,无需重新绑定。 /speckit-bind D:\some\project可显式指定要绑定的项目根。
行为
- 项目根:优先自动发现已绑定项目(向上找
.speckit/);否则用当前会话工作目录。 - 触发后:插件把一份规格驱动提示词(含项目根路径 + 绑定状态 + 步骤要求)用
agent.followup()投递给当前模型代理,模型带读写工具在项目根上落实约定并完成该步骤。
安装(在目标机器)
# 本机已准备了一键脚本:D:\pyCode\dsh_work\dsh-spec-kit\install.ps1
# 或手动执行:
dsh plugin --profile web add file:D:/pyCode/dsh_work/dsh-spec-kit等价于在 profile 里 pnpm add 这个本地包。装完重启 dsh web,然后在输入框敲 / 即可看到命令。
若要从 npm 安装他人发布的同名包,把 file:... 换成包名即可。
卸载
dsh plugin --profile web remove dsh-spec-kit重启 dsh web。
在别的电脑复现
把整个 dsh-spec-kit/ 目录拷过去,再跑上面的安装命令即可。依赖只有
@deepseek-ai/dsh-llm(dsh 自带),无需额外联网安装。
发布到 npm(做成可一装即用的插件库)
DSH 的「插件库」本质就是 npm registry:dsh plugin add <包> 内部是 pnpm add,从 npm 拉包。
把这个包发布成公开 npm 包后,任何机器 dsh plugin --profile web add dsh-spec-kit 即可直接安装。
发布前先改 package.json 里的 author / repository / homepage 占位符(目前是 YOUR-ORG 等)。
cd 本目录
npm adduser # 登录 npm(若之前发布过会换登录到 npmjs 用 --registry 指定)
npm publish # 发布到当前配置的 registry
# 若想发布到官方 npmjs(推荐,全球可装):
npm publish --registry=https://registry.npmjs.org/发布成功后,在任意目标机器:
dsh plugin --profile web add dsh-spec-kit # 或 dsh plugin --profile tui add dsh-spec-kit
# 重启 dsh web装好后在输入框敲
/应看到/speckit-*命令。 若没有出现,去宿主日志里搜[dsh-spec-kit] loaded这行——有则插件加载成功(只是命令列表没刷), 无则说明加载报错,把报错信息发回维护者修。
说明
- 这是从「动态 cordis 插件」迁移而来的正式版,只含 host 命令,不带 dock UI (目录绑定选择器、自动扫描初始化状态等 UI 因依赖浏览器↔主机通信,未包含在正式版)。
- 如果你还需要那条 dock UI,告诉我,我们再按 DSH 正式插件的 client 机制补。
