mcpField
O
openspec-sync-specs

openspec-sync-specs

github.com/pbh-btn开发6.4k153 次安装2 周前更新
代码仓库

关于 openspec-sync-specs

openspec-sync-specs 是用于将 OpenSpec 变更增量规范合并到主规范的 Agent 技能。它会保留变更未涉及的内容,并按需求类型处理更新。

主要功能

  1. 01将增量规范合并到主规范
  2. 02添加、修改、删除和重命名需求
  3. 03保留无关场景与内容
  4. 04提示用户选择变更
  5. 05汇总已同步的规范更新

适用场景

  1. 01将变更需求应用到主规范
  2. 02添加场景并保留现有场景
  3. 03检查增量文件后更新规范

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/pbh-btn/peerbanhelper --skill openspec-sync-specs

安装后在 Claude Code 中输入/openspec-sync-specs确认已加载。

详细介绍

将变更中的增量规范同步到主规范。

这是一个由 Agent 驱动的操作:你将阅读增量规范,并直接编辑主规范以应用变更。 这样可以实现智能合并(例如,添加一个场景,而无需复制整个需求)。

输入:可选择指定变更名称。若未指定,请检查能否从对话上下文中推断。如果含糊 不清或存在歧义,你必须提示用户选择可用的变更。

步骤

  1. 如果未提供变更名称,提示用户选择

    运行 openspec list --json 获取可用变更。使用 AskUserQuestion 工具让用户选择。

    显示包含增量规范的变更(位于 specs/ 目录下)。

    重要:不要猜测或自动选择变更。始终让用户选择。

  2. 查找增量规范

    在 openspec/changes/<name>/specs/*/spec.md 中查找增量规范文件。

    每个增量规范文件都包含以下章节:

    • ## ADDED Requirements - 要新增的需求
    • ## MODIFIED Requirements - 要修改的现有需求
    • ## REMOVED Requirements - 要删除的需求
    • ## RENAMED Requirements - 要重命名的需求(FROM:/TO: 格式)

    如果未找到增量规范,告知用户并停止。

  3. 针对每个增量规范,将变更应用到主规范

    对于每项包含增量规范的能力(路径为 openspec/changes/<name>/specs/<capability>/spec.md):

    a. 阅读增量规范,了解预期变更

    b. 阅读主规范,路径为 openspec/specs/<capability>/spec.md(可能尚不存在)

    c. 智能地应用变更:

    ADDED Requirements:

    • 如果主规范中不存在该需求 → 添加该需求
    • 如果该需求已存在 → 更新以使其匹配(视为隐式 MODIFIED)

    MODIFIED Requirements:

    • 在主规范中找到该需求
    • 应用变更,方式可以包括:
      • 添加新场景(无需复制现有场景)
      • 修改现有场景
      • 更改需求描述
    • 保留增量规范未提及的场景和内容

    REMOVED Requirements:

    • 从主规范中删除整个需求块

    RENAMED Requirements:

    • 找到 FROM 需求,并将其重命名为 TO

    d. 如果该能力尚不存在,则创建新的主规范:

    • 创建 openspec/specs/<capability>/spec.md
    • 添加 Purpose 章节(可简短说明,并标记为 TBD)
    • 添加 Requirements 章节,并包含 ADDED 需求
  4. 显示摘要

    应用所有变更后,总结:

    • 更新了哪些能力
    • 做了哪些变更(新增/修改/删除/重命名的需求)

增量规范格式参考

## ADDED Requirements

### Requirement: New Feature
The system SHALL do something new.

#### Scenario: Basic case
- **WHEN** user does X
- **THEN** system does Y

## MODIFIED Requirements

### Requirement: Existing Feature
#### Scenario: New scenario to add
- **WHEN** user does A
- **THEN** system does B

## REMOVED Requirements

### Requirement: Deprecated Feature

## RENAMED Requirements

- FROM: `### Requirement: Old Name`
- TO: `### Requirement: New Name`

核心原则:智能合并

与程序化合并不同,你可以应用部分更新:

  • 要添加场景,只需在 MODIFIED 下包含该场景,无需复制现有场景
  • 增量内容代表的是意图,而非整体替换
  • 运用你的判断,合理地合并变更

成功时的输出

## Specs Synced: <change-name>

Updated main specs:

**<capability-1>**:
- Added requirement: "New Feature"
- Modified requirement: "Existing Feature" (added 1 scenario)

**<capability-2>**:
- Created new spec file
- Added requirement: "Another Feature"

Main specs are now updated. The change remains active - archive when implementation is complete.

注意事项

  • 修改前阅读增量规范和主规范
  • 保留增量规范未提及的现有内容
  • 如果有不清楚的地方,请求澄清
  • 逐步展示你正在进行的变更
  • 此操作应具备幂等性——运行两次应得到相同结果

评论

支持 Markdown