项目简介

'@stringsync/spec' 是一个支持规范驱动开发 (Spec-driven Development) 的工具,它帮助开发者通过定义“规范”来指导代码的编写和维护。该项目提供了一个命令行界面 (CLI) 和一个基于 Model Context Protocol (MCP) 的服务器实现,使得大型语言模型 (LLM) 客户端能够以标准化的方式访问和交互这些规范。

主要功能点

  • 规范定义与管理: 允许在 Markdown 文件 ('.spec.md') 中定义模块和具体功能(Specification),并能从代码注释中提取“标签” (Tag) 来关联规范和实现。
  • 代码与规范同步: 能够扫描项目文件,检查代码中的标签是否与定义的规范一致,帮助发现不匹配或缺失的实现。
  • 智能提示生成: 提供多种预设的 Prompt 模板(如 'refine', 'plan', 'build', 'sync'),用于生成LLM可理解的指令,以协助 LLM 执行任务,例如改进规范、规划代码结构、实现功能或同步规范与代码。
  • MCP 服务器: 作为一个 MCP 服务器,它通过 JSON-RPC 协议向兼容的 LLM 客户端提供“工具”和“Prompt 模板”。LLM 客户端可以通过调用这些工具来获取项目规范信息,或通过使用 Prompt 模板来指导自身完成开发任务。
  • 上下文服务: 向 LLM 提供关于项目规范、代码标签和开发流程的结构化上下文信息,增强 LLM 在软件开发领域的理解和执行能力。

安装步骤

  1. 安装 Bun: 'stringsync/spec' 项目推荐使用 'bun' 作为包管理器和运行时。请确保您的系统已安装 Bun。如果未安装,请参考 Bun 官方文档进行安装。
  2. 克隆仓库并安装依赖:
    git clone https://github.com/stringsync/spec.git
    cd spec
    bun install
  3. 安装 CLI:
    bun setup
    这将把 'spec' CLI 工具安装到您的系统路径中。

服务器配置

MCP 服务器通常由 MCP 客户端启动和管理。以下是配置 MCP 客户端连接 '@stringsync/spec' MCP 服务器的示例(以 JSON 格式表示):

{
  "mcpServers": {
    "spec": {
      "type": "stdio",
      "command": "bunx",
      "args": ["-y", "@stringsync/spec", "mcp"],
      "description": "提供基于规范驱动开发 (Spec-driven Development) 的上下文服务,包括规范扫描、提示生成和LLM工具集成。",
      "name": "@stringsync/spec MCP Server"
    }
  }
}
  • '"spec"': 这是您为 MCP 服务器指定的名称,客户端将使用此名称引用该服务器。
  • '"type": "stdio"': 表示服务器使用标准输入/输出 (Stdio) 进行通信。
  • '"command": "bunx"': 启动服务器的命令。
  • '"args": ["-y", "@stringsync/spec", "mcp"]': 传递给 'bunx' 命令的参数。'-y' 标志用于跳过包下载确认,'@stringsync/spec' 是要执行的包,'mcp' 是启动 MCP 服务器的子命令。
  • '"description"': 对此 MCP 服务器的简要描述。
  • '"name"': 此 MCP 服务器的友好名称。

基本使用方法

配置好您的 MCP 客户端后,它将能够通过 JSON-RPC 协议与 '@stringsync/spec' MCP 服务器通信,从而:

  1. 调用工具:

    • 'spec.show': 获取关于特定规范的详细信息。
    • 'spec.scan': 获取模块、规范和标签的摘要信息。 LLM 客户端可以传递 'selectors'、'includePatterns'、'excludePatterns' 等参数来控制查询范围。
  2. 获取 Prompt 模板:

    • 'spec.refine': 用于指导 LLM 审查和改进规范的 Prompt。
    • 'spec.plan': 用于指导 LLM 根据规范生成代码骨架的 Prompt。
    • 'spec.build': 用于指导 LLM 完成现有 TODO 并实现功能的 Prompt。
    • 'spec.sync': 用于指导 LLM 同步代码与规范的 Prompt。 LLM 客户端可以根据需要传递相应的参数(例如 'selector')来渲染具体的 Prompt 内容。

这些功能使得 LLM 能够更好地理解项目规范,自动化开发流程,并辅助开发者进行规范驱动开发。

信息

分类

开发者工具