关于 leanspec
LeanSpec 是面向 Agent 的规范驱动开发技能和命令行工具,将规范作为与代码关联的持久成果。其适配器机制支持不同后端,并通过发现、创建、细化、实现和验证指导工作。
主要功能
- 01发现适配器能力与字段
- 02创建并关联持久规范
- 03按五个阶段指导工作
- 04遵循后端定义的元数据与关系
- 05依据代码和测试验证完成情况
适用场景
- 01用可审查的规范规划功能开发
- 02在不同后端管理规范
- 03跟踪实现并核验验收标准
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ codervisor/ leanspec --skill leanspec安装后在 Claude Code 中输入/leanspec确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/adapters.mdbest-practices.mdcommands.mdexamples.mdworkflow.md详细介绍
LeanSpec — 规格编码技能
教 Agent 规格编码:将规格视为推动开发的持久工件,而不是转瞬即逝的规划笔记。LeanSpec 提供方法论和 leanspec CLI;每种适配器(markdown、GitHub Issues、ADO、Jira 等)都使用其后端的原生语言。此技能刻意与适配器无关——不要在此处硬编码状态值、优先级名称或字段键。
每次会话都从能力发现开始
在读取、编写或关联任何规格之前,运行:
leanspec capabilities -o json
输出是事实依据。它会告诉你:
- 当前适配器的名称(
markdown、github、ado等)。 - 存在哪些元数据字段,以及它们的类型/枚举值。
- 此适配器上哪些字段分别承担各个语义角色(
status、priority、tags、assignee、due_date)。 - 后端支持哪些链接类型(
parent、depends_on等)。
返回的枚举值是唯一有效的词汇。如果你想将规格转入“进行中”状态,请查找语义字段 status,选择适配器称为“工作正在进行”的值,并发送该值——不要假设它叫 in-progress。
核心原则
- 规格是持久工件。 它们会在会话结束后继续存在,可供审查,并且与代码关联。它们不是规划模式下的临时草稿。
- 关注方法论,而非机制。 以下五个阶段适用于任何后端,无论它是 markdown 文件夹、GitHub 仓库还是 Jira 项目。
- 先发现。 在编写任何新内容之前,务必先阅读现有内容。
- 先明确意图,再实现。 先记录为什么,再记录如何做。
- 根据实际情况验证。 不要只相信状态字段——还要检查代码、提交、测试和 CI。
- 使用适配器的词汇。 不要硬编码字段名称或值。
五个阶段
1. 发现
在动手之前,了解项目的当前状态。
- 运行
leanspec capabilities -o json(会话开始时)。 - 运行
leanspec board,查看项目的当前概况。 - 运行
leanspec search "<keywords>",查找相关条目。 - 如果存在高度匹配的条目,请考虑扩展该条目或与其建立链接,而不是创建新条目。
2. 创建
将意图记录为新的持久工件。
- 在一次调用中使用所有已知字段运行
leanspec create <short-name>(标题、正文、状态/优先级等语义字段、标签、父项、依赖项)。不要先创建空条目,再对其进行修改。 - 按以下结构编写正文:
- 概述——此项要解决什么问题,以及为何重要。
- 需求——可独立验证的条目清单。
- 非目标——明确不在范围内的内容。
- 验收标准——可衡量的完成定义。
- 随着关系逐渐明确,建立关联。使用适配器声明的链接类型(通常用
parent表示层级关系,用depends_on表示阻塞关系——通过capabilities确认)。
3. 细化
在开始编码之前,让规格达到可直接实施的程度。
- 定位规格中提到的文件、模块和 API,并确认它们确实存在。
- 找出可复用的现有模式,并在规格中注明具体路径和函数签名。
- 验证依赖项是否可用。
- 准入条件:不存在阻塞性未知因素;每个清单条目都具体且可执行。
4. 实施
按照细化后的规格执行。
- 阅读规格(
leanspec view <id>),包括父项、子项和依赖项。 - 使用适配器声明的状态值,通过
leanspec update <id>将规格转入“工作正在进行”状态。 - 按顺序处理清单;遵守范围边界;及时在规格中记录决策和发现。
- 如果发现范围外的工作,请创建一个新规格并建立关联,而不是扩大当前规格的范围。
5. 验证
根据实际情况完成闭环,而不是依据状态。
- 运行项目的质量检查(测试、类型检查、lint、构建)。
- 重新阅读规范的验收标准,只有在能指出证明它的提交、测试或文件时,才勾选该标准。
- 将规范转换为适配器声明的“已完成”状态,并附上简短的实现说明。
- 如果有任何失败,保持进行中状态,修复原因并重新运行。
关系类型
关系类型由适配器声明。检查 capabilities.link_types。最常见的两种形式:
- 父级 / 子级 — 一个总项分解为多个子项。子项脱离父项便没有意义;所有子项完成后,父项才算完成。
- 依赖 — 阻塞关系。两个事项是独立工作,只是其中一个必须先交付。
决策流程图:
- 事项 B 是否属于事项 A 的范围?→ 父级 / 子级。
- 事项 B 是否只需要等事项 A 完成?→ 依赖。
- 同一对事项之间绝不要同时使用两种关系。
试金石:“如果事项 A 不存在,事项 B 仍然有意义吗?” 否 → B 是 A 的子项。是 → B 依赖于 A。
管理不断演进的工作
- 内容变更 — 使用
leanspec update --content或编辑事项正文。 - 元数据变更 — 对适配器声明的字段,使用受支持的
leanspec update标志(--status、--priority、--assignee、--add-tags、--remove-tags等)。每个标志都接受适配器功能中声明的值。该技能绝不会直接写入 frontmatter 或 YAML。 - 范围蔓延 — 拆分。创建一个同级规范并建立关联;更新原规范的非目标,以引用拆分出的规范。
- 过时的工作 — 转换为适配器的“已关闭 / 已归档”状态,而不是删除;历史记录很重要。
上下文精简
- 每个事项控制在约 2000 个 token 以下。超过则拆分。
- 优先使用项目符号列表,而非散文。
- 使用外部文档作为参考,而不是复制其内容。
- 清单仅用于可执行事项;其他内容使用普通列表。
最佳实践 — 一览
- 绝不要手动创建事项。 始终使用
leanspec create。 - 绝不要直接编辑元数据。 使用
leanspec update。 - 始终先探索。 在
create前运行board/search。 - 使用
create时始终传入所有已知字段。 不要先创建空项,再补充字段。 - 关闭前始终进行验证。 测试、类型检查、lint、构建。
- 遵循适配器的词汇。 如果有任何不明确之处,重新运行
capabilities。
参考资料
- references/adapters.md — 适配器的工作方式,以及如何基于它们编写 SOP。
- references/workflow.md — 包含示例的五阶段工作流。
- references/commands.md — CLI 参考。
- references/best-practices.md — 详细模式与反模式。
- references/examples.md — 基于 Markdown、GitHub Issues 和 Azure DevOps 后端的端到端场景。
评论
支持 Markdown