relay-kit 0.2.0 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/.claude/commands/opsx/apply.md +152 -0
  2. package/.claude/commands/opsx/archive.md +157 -0
  3. package/.claude/commands/opsx/explore.md +173 -0
  4. package/.claude/commands/opsx/propose.md +106 -0
  5. package/.claude/skills/openspec-apply-change/SKILL.md +156 -0
  6. package/.claude/skills/openspec-archive-change/SKILL.md +114 -0
  7. package/.claude/skills/openspec-explore/SKILL.md +288 -0
  8. package/.claude/skills/openspec-propose/SKILL.md +110 -0
  9. package/.claude/skills/relay-delegator/SKILL.md +55 -0
  10. package/.claude/skills/relay-escalation/SKILL.md +47 -0
  11. package/.claude/skills/relay-planner/SKILL.md +64 -0
  12. package/.claude/skills/relay-reviewer/SKILL.md +59 -0
  13. package/.codex/skills/openspec-apply-change/SKILL.md +156 -0
  14. package/.codex/skills/openspec-archive-change/SKILL.md +114 -0
  15. package/.codex/skills/openspec-explore/SKILL.md +288 -0
  16. package/.codex/skills/openspec-propose/SKILL.md +110 -0
  17. package/.opencode/commands/opsx-apply.md +149 -0
  18. package/.opencode/commands/opsx-archive.md +154 -0
  19. package/.opencode/commands/opsx-explore.md +170 -0
  20. package/.opencode/commands/opsx-propose.md +103 -0
  21. package/.opencode/skills/openspec-apply-change/SKILL.md +156 -0
  22. package/.opencode/skills/openspec-archive-change/SKILL.md +114 -0
  23. package/.opencode/skills/openspec-explore/SKILL.md +288 -0
  24. package/.opencode/skills/openspec-propose/SKILL.md +110 -0
  25. package/CHANGELOG.md +33 -1
  26. package/README.en.md +247 -0
  27. package/README.md +202 -190
  28. package/dist/cli.js +1000 -215
  29. package/dist/cli.js.map +1 -1
  30. package/docs/CLI_SPEC.md +108 -53
  31. package/docs/FINAL_DESIGN.md +18 -16
  32. package/docs/OPENSPEC_INTEGRATION.md +60 -30
  33. package/docs/SKILLS_INSTALLATION.md +46 -4
  34. package/docs/USAGE_FLOW.md +47 -58
  35. package/package.json +15 -9
  36. package/skills/relay-delegator/SKILL.md +14 -2
  37. package/skills/relay-planner/SKILL.md +12 -0
  38. package/skills/relay-runner/SKILL.md +15 -2
package/README.md CHANGED
@@ -1,236 +1,248 @@
1
- # relay-kit
2
-
3
- `relay-kit` 是一个 **Skills-first、CLI-assisted** 的 AI 编程工作流工具包。它把 Advisor Strategy 固化为可复用流程:小模型 / Executor 负责执行,聪明模型 / Advisor 负责规划、指点和 Review,人类 Owner 负责方向、验收和最终提交。
4
-
5
- 它不是自动写代码工具,也不是多 Agent 框架。它只负责初始化规则、安装项目级 Skills、生成 handoff 文件、收集受限上下文,并帮助你在真实项目里把任务交给 OpenCode、Claude Code、Codex 或其他执行工具。
6
-
7
- ```text
8
- OpenSpec 管“做什么”
9
- relay-kit 管“怎么交给小模型、卡住怎么求助、完成怎么 Review”
10
- OpenCode / Claude Code / Codex 等工具负责实际执行
11
- ```
12
-
13
- ## 安装
14
-
15
- 从 npm 安装:
1
+ <p align="center">
2
+ <img src="https://img.shields.io/npm/v/relay-kit.svg" alt="npm version">
3
+ <img src="https://img.shields.io/node/v/relay-kit.svg" alt="node version">
4
+ <img src="https://img.shields.io/npm/l/relay-kit.svg" alt="license">
5
+ </p>
6
+
7
+ # relay-kit 🔄
8
+
9
+ > **Skills-first、CLI-assisted AI 编程接力工作流工具包**
10
+ >
11
+ > 把 AI 编程拆成「规划 → 委派 → 执行 → 求助 → 审查」的接力赛。
12
+ > 内置 OpenSpec,零外部依赖。
13
+
14
+ ```
15
+ ┌──────────────────────────────────────┐
16
+ │ 人类 Owner │
17
+ │ 方向 · 验收 · 提交 │
18
+ └────┬──────────┬──────────┬───────────┘
19
+ │ 规划 │ 求助 │ 审查
20
+ ▼ ▼ ▼
21
+ ┌─────────────────────────────────────────────────────────────┐
22
+ │ relay-kit 工作流 │
23
+ │ │
24
+ │ /relay:plan relay ask /relay:review │
25
+ │ 规划顾问 ──────────► ASK_ADVISOR ────► 审查顾问 │
26
+ │ │ ▲ │ │
27
+ │ │ 委派 │ 升级 │ 裁决 │
28
+ │ ▼ │ ▼ │
29
+ │ relay start /relay:run ADVISOR_DECISION │
30
+ │ EXECUTOR_TASK ──────► 执行者 ──────────► REPLAN / FIX │
31
+ │ │
32
+ │ 内置 OpenSpec (relay openspec) │
33
+ │ new-change → status → instructions → archive │
34
+ └─────────────────────────────────────────────────────────────┘
35
+ ```
36
+
37
+ ---
38
+
39
+ ## 为什么 relay-kit?
40
+
41
+ | | 裸用 AI 工具 | 多 Agent 框架 | **relay-kit** |
42
+ | ------------ | ---------------------------- | ------------------------- | ------------------------------- |
43
+ | **定位** | 聊天式编程 | 自动化 Agent 协作 | **人工主导的接力工作流** |
44
+ | **角色分工** | 无 | Agent 自行协商 | **Owner / Advisor / Executor** |
45
+ | **任务交接** | 粘贴对话 | 框架内部传递 | **结构化的 handoff 文件** |
46
+ | **卡住处理** | 手动问 | 自动重试或失败 | **ASK_ADVISOR 升级 → 人工决策** |
47
+ | **代码审查** | 肉眼 diff | 无 | **REVIEW_REQUEST → 裁决报告** |
48
+ | **规范驱动** | 无 | 取决于框架 | **内置 spec-driven OpenSpec** |
49
+ | **依赖** | 零 | 重 | **零外部依赖(CLI 仅 commander)** |
50
+
51
+ relay-kit 不是「自动写代码」工具,也不是「多 Agent 框架」。它是**把真实团队的工作流(PM 规划 → 工程师执行 → 卡住求助 → 代码审查)固化为 AI 可复用的流程**。
52
+
53
+ ---
54
+
55
+ ## 快速开始
56
+
57
+ ### 安装
16
58
 
17
59
  ```bash
18
60
  npm install -g relay-kit
19
61
  relay --help
20
62
  ```
21
63
 
22
- 从当前仓库本地试用:
23
-
24
- ```bash
25
- pnpm install
26
- pnpm build
27
- npm link
28
- relay --help
29
- ```
30
-
31
- 使用打包产物试用:
32
-
33
- ```bash
34
- pnpm build
35
- npm pack
36
- npm install -g ./relay-kit-0.1.0.tgz
37
- relay --help
38
- ```
39
-
40
- 本地 `npm link` 会写入全局 npm link 状态。试用结束后可以清理:
41
-
42
- ```bash
43
- npm unlink -g relay-kit
44
- ```
45
-
46
- ## 快速开始:simple 模式
47
-
48
- 适合没有 OpenSpec 的项目。
64
+ ### 初始化项目
49
65
 
50
66
  ```bash
51
67
  cd your-project
52
- relay init --mode simple
53
- relay start --title "实现登录错误提示" --scope "src/**" --blocked-scope "不要修改数据库 schema"
54
- relay ask
55
- relay review
56
- relay doctor
57
- ```
58
-
59
- 执行后会生成项目级配置、Skills 和 handoff 文件:
60
-
61
- ```text
62
- .relay/config.json
63
- .relay/state.json
64
- .relay/skills/
65
- .claude/skills/
66
- .agents/skills/
67
- docs/agent-handoffs/runs/<run-id>/lanes/main/EXECUTOR_TASK.md
68
- docs/agent-handoffs/runs/<run-id>/lanes/main/ASK_ADVISOR.md
69
- docs/agent-handoffs/runs/<run-id>/lanes/main/REVIEW_REQUEST.md
70
- AGENTS.md
71
- ```
72
-
73
- 如果 Advisor 已经把决策写入 `ADVISOR_DECISION.md`,可以继续生成给 Executor 的恢复提示:
74
-
75
- ```bash
76
- relay resume
68
+ relay init
77
69
  ```
78
70
 
79
- ## 快速开始:OpenSpec 模式
80
-
81
- 适合已经有 `openspec/` 的项目。relay-kit 会读取 change 文档并生成交接材料,但不会替代 `/opsx:apply`,也不会自动执行 OpenSpec change。
71
+ `openspec/` 时会弹出交互菜单:
82
72
 
83
- ```bash
84
- cd your-openspec-project
85
- relay init --mode openspec
86
- relay start --change add-example-feature --title "执行 add-example-feature"
87
- relay ask
88
- relay review
89
- relay doctor
90
73
  ```
91
-
92
- 如果项目还没有 OpenSpec,可以只显示引导说明:
93
-
94
- ```bash
95
- relay init --with-openspec
74
+ Select initialization mode:
75
+ 1. Simple mode — relay-kit standalone (no OpenSpec)
76
+ 2. OpenSpec mode — integrated with OpenSpec for spec-driven development (recommended)
77
+ Choose mode (1/2, default 2):
96
78
  ```
97
79
 
98
- 这个命令不会静默创建 `openspec/`。
99
-
100
- ## 命令说明
80
+ 选择 OpenSpec 模式后自动创建 `openspec/` 结构并安装全套命令和 Skills。如果系统已安装过外部 `openspec` CLI,会提示选择使用内置还是外部版本。
101
81
 
102
- ### relay init
103
-
104
- 初始化当前项目:
82
+ 也可以跳过交互直接指定:
105
83
 
106
84
  ```bash
107
- relay init
108
- relay init --mode simple
109
- relay init --mode openspec
110
- relay init --with-openspec
111
- relay init --force
85
+ relay init --mode openspec --yes
112
86
  ```
113
87
 
114
- `init` 会写入 `.relay/config.json`、`.relay/state.json`、`.relayignore`、`AGENTS.md` advisor 规则、项目级 Skills 和 `docs/agent-handoffs/runs/`。
115
-
116
- ### relay start
117
-
118
- 开始一次 handoff run,生成 `EXECUTOR_TASK.md`:
88
+ ### 规划 执行 审查
119
89
 
120
90
  ```bash
121
- relay start --title "实现登录错误提示" --scope "src/**" --blocked-scope "不要修改数据库 schema"
122
- relay start --change add-example-feature --title "执行 add-example-feature"
123
- relay start --copy
124
- ```
91
+ # 1. 创建 OpenSpec change
92
+ relay openspec new-change add-login
125
93
 
126
- `start` 只生成交接文件,不调用模型、不执行构建、不提交 git。
94
+ # 2. 让 Advisor 规划并生成制品(在 AI 工具中运行)
95
+ # /opsx:propose add-login
127
96
 
128
- ### relay ask
97
+ # 3. 生成执行任务
98
+ relay start --change add-login --title "实现登录功能"
129
99
 
130
- Executor 卡住时生成 `ASK_ADVISOR.md`:
100
+ # 4. 交给 Executor 执行(在 AI 工具中运行)
101
+ # /relay:run
131
102
 
132
- ```bash
103
+ # 5. 卡住时生成求助包
133
104
  relay ask
134
- relay ask --run build
135
- relay ask --run test
136
- relay ask --copy
137
- ```
138
-
139
- 默认只收集现有上下文。只有显式传入 `--run build` 或 `--run test` 时,才会执行项目配置中的 build/test 命令,并把命令、退出码和截断日志写入求助包。
140
-
141
- ### relay resume
142
-
143
- 读取 Advisor 决策并生成 `RESUME_PROMPT.md`:
144
-
145
- ```bash
146
- relay resume
147
- relay resume --from ./ADVISOR_DECISION.md
148
- relay resume --copy
149
- ```
150
-
151
- 默认从当前 run/lane 的 `ADVISOR_DECISION.md` 读取决策。
152
-
153
- ### relay review
154
105
 
155
- 完成实现后生成 `REVIEW_REQUEST.md`:
156
-
157
- ```bash
106
+ # 6. Advisor 审查
158
107
  relay review
159
- relay review --copy
160
108
  ```
161
109
 
162
- `review` 会收集当前任务、OpenSpec 上下文和受限 git diff,交给 Advisor 做审查。
163
-
164
- ### relay doctor
165
-
166
- 检查当前项目接入状态:
167
-
168
- ```bash
169
- relay doctor
170
- ```
171
-
172
- 它会检查配置、状态、`AGENTS.md` 注入块、Skills 目录、handoff 目录、OpenSpec 状态和 package scripts。
173
-
174
- ### relay sync --skills
110
+ ---
111
+
112
+ ## 命令参考
113
+
114
+ ### relay-kit 核心命令
115
+
116
+ | 命令 | 说明 |
117
+ |------|------|
118
+ | `relay init` | 初始化项目(交互式选择 simple / openspec 模式) |
119
+ | `relay start` | 生成 EXECUTOR_TASK.md,开始一次 handoff run |
120
+ | `relay ask` | Executor 卡住时生成 ASK_ADVISOR.md 求助包 |
121
+ | `relay resume` | 读取 ADVISOR_DECISION.md,生成 RESUME_PROMPT.md 继续执行 |
122
+ | `relay review` | 完成实现后生成 REVIEW_REQUEST.md,交给 Advisor 审查 |
123
+ | `relay doctor` | 诊断当前项目接入状态 |
124
+ | `relay sync` | 同步 Skills 和 OpenSpec 文件到目标工具目录 |
125
+
126
+ ### relay openspec 子命令(内置 OpenSpec CLI)
127
+
128
+ | 命令 | 说明 |
129
+ |------|------|
130
+ | `relay openspec new-change <name>` | 创建新的 OpenSpec change |
131
+ | `relay openspec status --change <name>` | 查看 artifact 完成状态 |
132
+ | `relay openspec list` | 列出所有活跃 changes |
133
+ | `relay openspec instructions <id> --change <name>` | 获取 artifact 创建指引(模板 + 规则) |
134
+ | `relay openspec apply-instructions --change <name>` | 获取 apply 执行指引和任务进度 |
135
+ | `relay openspec archive <name>` | 归档已完成的 change |
136
+ | `relay openspec schemas` | 列出可用 workflow schema |
137
+
138
+ ### relay sync 选项
139
+
140
+ | 选项 | 说明 |
141
+ |------|------|
142
+ | `relay sync --skills` | 同步 relay Skills 到项目工具目录 |
143
+ | `relay sync --openspec` | 同步 OpenSpec 命令/Skill 文件 |
144
+ | `relay sync --all` | 同步所有(Skills + OpenSpec 文件) |
145
+ | `--target claude \| codex \| all` | 指定同步目标工具 |
146
+ | `--scope project \| user` | 项目级或用户级(默认 project) |
147
+ | `--dry-run` | 预览同步计划,不写入文件 |
148
+ | `--force` | 覆盖冲突的目标文件 |
149
+
150
+ ---
151
+
152
+ ## 工作流
153
+
154
+ ```
155
+ /relay:plan /opsx:propose relay start
156
+ 规划顾问 ───► PLAN_REPORT ───► proposal.md ───► EXECUTOR_TASK.md
157
+ (Advisor) design.md (handoff 文件)
158
+ tasks.md
159
+
160
+ ┌────────────┘
161
+
162
+ /relay:run
163
+ 执行者 ───► 修改代码 ───► [x] 完成任务
164
+ (Executor)
165
+
166
+ ┌─────────┴─────────┐
167
+ ▼ ▼
168
+ 成功完成 卡住 / 失败
169
+ │ │
170
+ ▼ ▼
171
+ relay review relay ask
172
+ REVIEW_REQUEST.md ASK_ADVISOR.md
173
+ │ │
174
+ ▼ ▼
175
+ /relay:review Advisor 决策
176
+ 审查顾问 ───► │
177
+ APPROVE / ┌──┴──────────────┐
178
+ NEEDS_CHANGES / ▼ ▼
179
+ REPLAN_REQUIRED CONTINUE REPLAN / FIX
180
+ │ │
181
+ ▼ ▼
182
+ relay resume 重新规划
183
+ RESUME_PROMPT.md 或 DIRECT_FIX
184
+ ```
185
+
186
+ ---
187
+
188
+ ## 安装与目录结构
189
+
190
+ `relay init` 后项目下生成:
191
+
192
+ ```
193
+ your-project/
194
+ ├── .relay/
195
+ │ ├── config.json # 项目配置
196
+ │ ├── state.json # 运行时状态
197
+ │ └── skills/ # relay Skills 管理副本
198
+ ├── .relayignore # 上下文收集忽略规则
199
+ ├── .opencode/ # OpenCode 的 OpenSpec 命令/Skill
200
+ ├── .claude/
201
+ │ ├── commands/opsx/ # Claude Code 的 OpenSpec 命令
202
+ │ └── skills/ # relay + OpenSpec Skills
203
+ ├── .codex/
204
+ │ └── skills/ # Codex 的 OpenSpec Skills
205
+ ├── .agents/
206
+ │ └── skills/ # Codex 的 relay Skills
207
+ ├── openspec/ # OpenSpec 规范目录
208
+ │ ├── changes/ # 活跃 changes
209
+ │ ├── specs/ # 全局 spec
210
+ │ └── changes/archive/ # 已归档 changes
211
+ ├── docs/agent-handoffs/runs/ # handoff 文件
212
+ └── AGENTS.md # relay-kit 执行规则注入
213
+ ```
214
+
215
+ ---
175
216
 
176
- `.relay/skills` 中的 advisor Skills 同步到工具目录:
217
+ ## 上下文安全
177
218
 
178
- ```bash
179
- relay sync --skills
180
- relay sync --skills --target claude
181
- relay sync --skills --target codex
182
- relay sync --skills --target all --scope project
183
- relay sync --skills --target all --scope user
184
- relay sync --skills --dry-run
185
- relay sync --skills --force
186
- ```
219
+ `relay ask` 和 `relay review` 收集上下文时会应用**三层防护**:
187
220
 
188
- 默认只同步到当前项目配置启用的项目级目录,不会写入用户级 Skills。发生冲突时默认跳过并报告;确认要覆盖时再使用 `--force`。
221
+ 1. **默认忽略** — `.env`, `node_modules/`, `dist/`, `build/`, `*.pem`, `*.key` 等
222
+ 2. **`.relayignore`** — 项目自定义忽略规则,默认包含常见敏感路径
223
+ 3. **基础脱敏** — API key, token, secret, password, bearer token, private key block
189
224
 
190
- ## Skills 安装目录
225
+ 它不是完整安全扫描器,而是**防止常见泄露的保护层**。
191
226
 
192
- `relay init` 默认安装项目级 Skills:
227
+ ---
193
228
 
194
- ```text
195
- .relay/skills relay-kit 管理副本,必选
196
- .claude/skills Claude Code 项目级 Skills
197
- .agents/skills Codex 项目级 Skills
198
- ```
229
+ ## 从已有 OpenSpec 项目迁移
199
230
 
200
- 用户级目录只在显式同步时使用:
231
+ 如果项目已经通过外部 `openspec` CLI(`@fission-ai/openspec`)初始化过:
201
232
 
202
- ```text
203
- ~/.claude/skills
204
- ~/.agents/skills
233
+ ```bash
234
+ relay init --mode openspec --force # 覆盖为 relay-kit 内置实现
235
+ relay sync --all # 更新全部 Skills 和 OpenSpec 文件
205
236
  ```
206
237
 
207
- Codex 项目级目录使用 `.agents/skills`,不会使用 `.codex/skills`。详细规则见 `docs/SKILLS_INSTALLATION.md`。
208
-
209
- ## 上下文安全
238
+ relay-kit OpenSpec 实现完全兼容已有文件格式,`proposal.md` / `design.md` / `tasks.md` / delta spec 等无需任何修改。只有 `.opencode/`、`.claude/commands/opsx/`、`.codex/skills/openspec-*/` 中的命令/Skill 文件会被更新为调用内置 `relay openspec`。
210
239
 
211
- `relay init` 会生成默认 `.relayignore`。`relay ask` 和 `relay review` 收集上下文时会同时应用默认忽略规则、`.relayignore` 和基础脱敏规则,避免把环境变量、密钥文件、日志、构建产物或无关大目录写入 handoff 文档。
212
-
213
- 默认忽略:
214
-
215
- ```text
216
- .env
217
- .env.*
218
- node_modules/
219
- dist/
220
- build/
221
- coverage/
222
- .git/
223
- *.pem
224
- *.key
225
- *.crt
226
- *.p12
227
- *.log
228
- ```
240
+ ## 致谢
229
241
 
230
- 基础脱敏会处理常见 API key、token、secret、password、bearer token private key block。它是防止常见泄露的保护层,不是完整安全扫描器。
242
+ OpenSpec 规范源自 [Fission-AI/OpenSpec](https://github.com/Fission-AI/OpenSpec)。relay-kit 内置了独立实现的 OpenSpec CLI,保持格式兼容。
231
243
 
232
- MVP 不会自动调用模型 API、不会自动执行 OpenCode / Claude Code / Codex、不会自动提交 git,也不会替代 `/opsx:apply`。
244
+ ---
233
245
 
234
- ## v0.1 alpha 状态
246
+ ## 许可
235
247
 
236
- v0.1 alpha 面向本地安装和真实项目试用。发布前检查流程见 `docs/SMOKE_TESTS.md` 和 `docs/V0_1_ALPHA_RELEASE.md`。
248
+ [MIT](LICENSE)