@weotro/dx 0.1.15 → 0.1.16
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.
- package/package.json +1 -1
- package/skills/ship-issue-pr/SKILL.md +86 -45
package/package.json
CHANGED
|
@@ -6,94 +6,135 @@ disable-model-invocation: true
|
|
|
6
6
|
|
|
7
7
|
# Ship Issue PR
|
|
8
8
|
|
|
9
|
-
统一 Codex 与 Claude Code
|
|
9
|
+
统一 Codex 与 Claude Code 的 Issue → 实现 → PR → 审查修复 → 验证 → 合并交付流程。
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
本文件包含完整流程与两种宿主的工具说明。依次完成下列步骤;已有成果按验收标准承接,缺失的 Issue、方案审核、审查评论或验证报告必须补齐。
|
|
12
12
|
|
|
13
13
|
## 执行边界与优先级
|
|
14
14
|
|
|
15
15
|
在宿主系统与开发者指令约束内,当前任务的具体要求和已有授权 > 项目适用的 AGENTS.md > 本技能及其他通用技能。项目规定的验证、分支与合并要求继续适用。
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
用户调用本技能执行交付时,默认流程包括:创建或复用本次 Issue、提交与推送代码、创建或更新 PR、发布审查/修复/验证评论、通过门禁后合并、关闭已完成的 Issue,以及按下文规则创建和派发 follow-up Issue。沿用会话中已有授权,不逐步重复确认;用户明确限定仅本地、仅审查或不合并时遵守该终点。编辑或讨论本技能本身不触发交付操作。
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
从相关文件和直接依赖开始,按证据扩大范围。交付授权不包含生产部署、破坏性数据操作或与任务无关的对外消息;需要额外授权的动作先准备可审阅结果,说明对象与影响。缺少目标事实时先查上下文与项目配置,能独立进行的工作继续,确实无法确定目标时才询问。
|
|
20
20
|
|
|
21
|
-
##
|
|
21
|
+
## 1. 检查状态并确定交付目标
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
检查当前分支、工作区状态(已暂存、未暂存及未跟踪文件)、分支相对基线的 diff 和已有提交,同时读取当前对话中的问题、需求、Issue/PR 链接。核对 remote、相关 Issue、已有 PR 和认证;基线、命令、模板和 CI 从项目实际配置确定。
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
- 已有修改:判断是否就是本次待交付内容,对照上下文识别已实现、待修复和待验证部分;有 diff 不等于已完成需求。
|
|
26
|
+
- 没有修改:根据上下文和关联 Issue 明确要解决的问题,再进入实现;已有提交或 PR 时从剩余步骤继续。
|
|
27
|
+
- 既没有可交付修改,也没有可确定的问题或 Issue:先询问具体目标,获得目标后创建 Issue,避免编造需求。
|
|
28
|
+
|
|
29
|
+
无关改动保持原样;不明归属的文件先避开,必要时在隔离 worktree 继续。只在必须修改且无法安全保留时澄清归属。工具或认证缺失只阻塞依赖它的操作,本地准备继续。
|
|
26
30
|
|
|
27
31
|
按本次需求或 diff 检查直接相关的重复实现;没有证据时不扩大为全仓历史审计。
|
|
28
32
|
|
|
29
|
-
## Issue
|
|
33
|
+
## 2. 补齐 Issue 与工作分支
|
|
34
|
+
|
|
35
|
+
本次交付必须关联 Issue。优先核实并复用上下文、分支或 PR 指向的 Issue,搜索相关 Issue 避免重复;没有匹配项就创建,适用于已有代码修改和只有待解决问题两种入口。
|
|
30
36
|
|
|
31
|
-
|
|
37
|
+
创建前读取项目 Issue 模板、贡献规范及与本次需求相关的规划/路线图,按模板填写背景、目标、范围、验收标准、依赖和规划归属。没有模板时使用这些字段;缺少规划信息时如实注明,不编造里程碑或扩大范围。创建后读回编号、正文与 URL,确认覆盖实际任务。远端创建失败时保留正文草稿并继续独立准备,但 Issue 未补齐不能完成交付。
|
|
32
38
|
|
|
33
39
|
采用项目分支规则和指定基线;无规则时为本次交付创建独立分支,遵守宿主的默认命名前缀。已有合规分支可继续。创建 worktree 时保留任务所需的未提交上下文,按项目实际 setup 准备依赖,不默认执行全量构建或同步私有环境文件。
|
|
34
40
|
|
|
35
|
-
Issue/PR
|
|
41
|
+
Issue/PR 正文及评论优先使用结构化工具参数;使用 CLI 时将多行内容写入本次任务独立的临时文件,用 `--body-file` 传递,提交说明可用 `git commit -F`。每次发布后读回内容与链接;重试前检查是否已成功,避免重复记录。修正影响理解的占位内容,合法代码示例或引用中的 TODO 不当作未完成工作。
|
|
42
|
+
|
|
43
|
+
## 3. 判定复杂度并确定方案
|
|
44
|
+
|
|
45
|
+
满足任一条件即按复杂任务处理:
|
|
46
|
+
|
|
47
|
+
- 本次修改的文件超过 5 个,且新增与删除的总行数超过 100 行;两个数量条件必须同时成立。
|
|
48
|
+
- 涉及并发逻辑、数据库变更或多端协同,例如事务/锁/并行写入、数据模型/迁移、前后端或多个客户端的契约与行为联动。
|
|
49
|
+
|
|
50
|
+
统计范围是本次交付相对目标基线的完整改动,包含已提交、已暂存、未暂存及相关未跟踪文件,同一文件只计一次,排除无关工作。未开始实现时依据预计范围和语义影响判断,实施中范围扩大或最终 diff 达到条件时升级为复杂任务。记录统计、影响点和判定理由到 Issue 或 PR。
|
|
51
|
+
|
|
52
|
+
简单任务由主线程拟定必要步骤并直接实现。复杂任务必须依次完成:
|
|
36
53
|
|
|
37
|
-
|
|
54
|
+
1. 主线程先提出方案,包含现状、目标、拟改文件/模块、接口与数据影响、风险、验收和测试计划。
|
|
55
|
+
2. 调用下文第三方独立通道审核方案,提供需求、规划约束及相关源码;仅咨询,不授予写权限。
|
|
56
|
+
3. 主线程核验返回意见,修订方案,记录采纳项、未采纳理由及最终方案。关键分歧未解决时再次审核,方案确定后才交给第三方实施。
|
|
38
57
|
|
|
39
|
-
|
|
58
|
+
如果接手时复杂改动已存在,先根据现有 diff 整理方案并补做第三方审核,再交由第三方核查实现与完成必要修正,无需删除成果重做。
|
|
40
59
|
|
|
41
|
-
|
|
60
|
+
## 4. 实施与主线程复核
|
|
42
61
|
|
|
43
|
-
|
|
62
|
+
复杂任务由第三方实施,主线程负责方案定稿、协调与验收;简单任务主线程直接实施。交接包含最终方案、Issue、工作目录、责任文件、项目约束、已完成成果、验收标准及实际验证命令。主线程负责本次 Git/GitHub 交付,实施者只修改分配文件。
|
|
44
63
|
|
|
45
|
-
|
|
64
|
+
咨询与审查只读,实施才授予必要写权限。不同执行者避免同时修改同一范围,可在不重叠文件上继续工作;需要隔离时使用独立 worktree。任务书必须带上相关流程和项目规则,不能假定执行通道能加载技能。
|
|
65
|
+
|
|
66
|
+
第三方完成后,主线程核对完整 diff、责任范围和验收标准,检查遗漏、回归、越界改动与测试证据,处理发现的问题。第三方返回成功不等于主线程已验收,也不替代后续 PR Code Review。
|
|
67
|
+
|
|
68
|
+
复杂任务的第三方方案审核、实施与 Code Review 都是必需步骤。通道不可用时记录具体阻塞,继续可独立完成的准备或诊断;只有用户明确调整流程后才能以主线程实现或自审替代。依赖工具降级为当前模型 sub-agent 时如实记录,不能算已满足第三方要求。
|
|
69
|
+
|
|
70
|
+
### 委派活性与接管
|
|
46
71
|
|
|
47
72
|
保存本次任务 ID、工作目录、输出来源和责任文件基线,持续观察同一任务。有效日志、工具进展或责任文件变化可以证明活动;只读任务不要求文件修改。
|
|
48
73
|
|
|
49
74
|
单次等待超时或静默告警只触发诊断,检查原会话、子命令、权限等待与错误;重复空心跳不代表进展。确认失败或无法推进后优先恢复;接管前确认原执行者及其写进程已停止,再核对现有成果,仅完成剩余工作。遵守用户取消要求,不盲目重放任务或绕过权限拒绝。
|
|
50
75
|
|
|
51
|
-
##
|
|
76
|
+
## 5. 提交代码并创建或更新 PR
|
|
52
77
|
|
|
53
|
-
|
|
78
|
+
完成实现与主线程复核后,按项目要求执行提交前检查。按项目提交规范和 PR 模板准备交付;无 PR 模板时写明问题、最终变更、Issue 关联、复杂度判定、方案审核、验证现状与遗留风险。
|
|
54
79
|
|
|
55
|
-
|
|
80
|
+
暂存明确的本次文件,核对暂存 diff,避免带入无关修改或凭据,随后提交并推送;提交钩子改变内容时补验受影响部分。复用已有 PR,确认 base/head 正确。创建或更新后读回标题、正文和 URL;部分失败先核对远端实际状态,只补剩余操作。
|
|
56
81
|
|
|
57
|
-
|
|
58
|
-
- 仅 commit SHA 改变、内容相同:核对后关联新提交,不重跑相同检查。
|
|
59
|
-
- 代码、验收标准、依赖或环境变化:检查增量及受影响调用方,仅补跑受影响项。
|
|
60
|
-
- 来源或覆盖不足:补齐缺失检查;影响无法界定时再扩大到当前交付的完整 diff 和必要测试。
|
|
82
|
+
尚未完成审查或验证时准确标记待完成项,可使用草稿 PR;不能把创建 PR 当作交付结束。
|
|
61
83
|
|
|
62
|
-
|
|
84
|
+
## 6. Code Review、评论与修复循环
|
|
63
85
|
|
|
64
|
-
|
|
86
|
+
按最新复杂度选择审查方式:简单任务由主线程直接 Code Review;复杂任务必须调用第三方独立审查通道。独立审查使用未参与实现或修复的会话,主线程仍须核验关键证据。
|
|
65
87
|
|
|
66
|
-
|
|
88
|
+
首次审查覆盖本次完整 PR diff 及必要上下文。每轮完成后都向 PR 发布 Code Review 结果评论,包括审查方式、实际审查者、被审查 head SHA、覆盖范围、发现及结论;无发现也要留下记录。每条发现给出严重程度、文件位置、触发条件、影响与修复建议。
|
|
67
89
|
|
|
68
|
-
|
|
90
|
+
存在有效问题时完成修复并推送,在 PR 发布修复报告评论:逐项关联发现、说明修复内容、提交与验证结果;不采纳的意见写明证据和理由。阻塞验收或影响正确性、安全的未解决问题不能转成 follow-up 后视为通过。
|
|
69
91
|
|
|
70
|
-
|
|
92
|
+
修复后判断是否需要再次 Code Review:修改行为、接口、数据/并发逻辑,修复重大问题,或引入新风险时必须复审;复杂任务仍走第三方独立通道。复审覆盖修复增量与受影响调用方,范围扩大时重新覆盖完整 diff,并发布新一轮审查评论。纯文字或不改变行为的修正可核对后不再调用审查,但在修复报告中写明理由。循环直至阻塞性发现解决,不按固定轮数提前结束。
|
|
71
93
|
|
|
72
|
-
|
|
94
|
+
## 7. 最终运行、编译与测试验证
|
|
73
95
|
|
|
74
|
-
|
|
96
|
+
审查与最后一次修复完成后,对最终待合并代码完成一轮验证:按项目配置运行受影响目标的编译/构建、启动或运行冒烟检查,以及与改动相关的单元测试、集成测试和端到端(E2E)测试。多端改动覆盖受影响各端与关键联动路径,同时完成项目 AGENTS.md 和 CI 要求的检查。
|
|
75
97
|
|
|
76
|
-
|
|
98
|
+
按实际影响选择相关测试,不强制执行与任务无关的全仓或跨端检查。某类检查不适用或项目没有对应命令时,在报告中明确说明理由;关键行为缺少自动化覆盖时补充适当测试或可复现验证。环境、认证或外部资源缺失导致必需检查无法运行时,标记阻塞,不声称验证通过。
|
|
77
99
|
|
|
78
|
-
|
|
100
|
+
记录被验证的代码与输入、覆盖范围、命令、实际执行者和可读结果。未提交改动也属于输入;不能只用 HEAD 代表含本地修改的验证现场。证据详细程度以能够判断是否仍适用为准。
|
|
79
101
|
|
|
80
|
-
|
|
102
|
+
- 最终修复后已执行且内容、基线与相关输入未变:复用这一轮可核实的验证结果,包括其他执行者结果,无需重复运行同一命令。早于最后修复的结果只作过程证据,不能替代最终一轮。
|
|
103
|
+
- 仅 commit SHA 改变、内容相同:核对后关联新提交,不重跑相同检查。
|
|
104
|
+
- 最终验证后代码再次修复:重新完成最终一轮;仅验收标准、依赖或环境变化时核对覆盖并补齐失效项。
|
|
105
|
+
- 来源或覆盖不足:补齐缺失检查;影响无法界定时再扩大到当前交付的完整 diff 和必要测试。
|
|
81
106
|
|
|
82
|
-
|
|
107
|
+
测试通过不能替代代码审查。失败按复现、日志或基线证据归因;已知失败清单只是线索,未收录不代表本次引入。保留失败事实,修复任务范围内的问题,其他问题写明影响。
|
|
108
|
+
|
|
109
|
+
将最终验证报告发布为 PR 评论,包含 head SHA、环境、执行者、命令、覆盖范围、通过/失败结果、不适用项及阻塞。检查当前 head 对应的实际必需 CI;CI 未结束则等待,失败或必需验证缺失则继续处理。评论发布后读回确认;报告仍在本地或发布失败时,记录步骤尚未完成。
|
|
83
110
|
|
|
84
|
-
|
|
111
|
+
测试若会清理共享数据库或改动共用资源,使用隔离环境,或沿用项目的互斥机制。不要把生产迁移当常规测试,也不要通过固定全局锁路径假定所有项目共享一套数据库。
|
|
112
|
+
|
|
113
|
+
## 8. 合并与关闭
|
|
114
|
+
|
|
115
|
+
默认在门禁全部满足后合并;用户限制终点时按其要求停止。合并前确认 Issue 验收完成、复杂任务必需的第三方步骤完成、Code Review 报告及发生修复时的修复报告已评论、适用的最终运行/编译/相关测试及必需 CI 通过、验证报告已评论、阻塞性 findings 已解决。核对最新远端 head、base 与验证对象;变化使证据失效时重新进入相关审查和最终验证步骤。
|
|
85
116
|
|
|
86
117
|
使用项目允许的合并方式,绑定已核验的 head(例如 gh 的 `--match-head-commit`);保留分支保护,不能用管理员开关绕过。自动合并已设置不代表已合并,读回 `mergedAt` 与状态后再报告;异步检查仍在运行时准确说明等待原因。
|
|
87
118
|
|
|
88
119
|
合并后按任务要求回访关联 Issue,确认实际验收与关闭状态。只有本次确实完成整个 Issue 时才使用关闭关联;对误关或剩余工作按已有授权修正并报告。
|
|
89
120
|
|
|
90
|
-
##
|
|
121
|
+
## 9. Follow-up Issue 与派发
|
|
122
|
+
|
|
123
|
+
全过程发现新的范围外问题时,搜索去重后直接创建或补充 follow-up Issue,按项目模板与规划记录复现/证据、影响、目标、验收标准、来源 Issue/PR 和依赖。当前验收必须解决的问题留在本次修复循环,不能通过拆 Issue 绕过合并门禁。
|
|
124
|
+
|
|
125
|
+
| Follow-up 状态 | 处理 |
|
|
126
|
+
| --- | --- |
|
|
127
|
+
| 无阻塞,代码与所需资源均可用 | 直接创建独立 worktree,派发 sub-agent,要求调用 `ship-issue-pr` 完成同一套流程 |
|
|
128
|
+
| 依赖当前 PR、其他任务或尚未满足的条件 | 在 Issue 按项目支持的状态/标签标记等待,写明阻塞对象与解除条件;条件满足后再派发 |
|
|
129
|
+
| 需要额外外部资源、人工决策、账号或权限 | 只创建 Issue 并列出需要谁提供什么,不派发执行者 |
|
|
130
|
+
|
|
131
|
+
主线程维护后续队列,记录 Issue、状态、依赖、worktree、agent ID 与交付进度,避免重复派发。运行中的依赖完成、当前 PR 合并或收到条件变更时重查等待项;如需跨会话等待,使用宿主可用的持久任务/提醒机制,记录唤醒条件与检查方式。宿主不支持持久等待时,将等待项与恢复条件明确交付,不能声称会自动唤醒。
|
|
91
132
|
|
|
92
|
-
|
|
133
|
+
子任务采用各自责任范围与正确基线,交接 Issue、验收、项目规则和完整交付终点。依赖父 PR 时等合并后从最新基线派发。子任务发现新问题仍创建 follow-up Issue,交回主线程统一去重与调度,避免重复或递归派发。外部资源后来齐备时,重新判断阻塞并进入可派发队列。
|
|
93
134
|
|
|
94
|
-
|
|
135
|
+
主线程持续跟踪已派发任务直到完成或明确阻塞;follow-up 的等待不阻止满足门禁的当前 PR 合并。回收 worktree 前确认成果已保留、没有待整合改动且允许删除;squash 合并后不能仅凭分支名称判断可强删。
|
|
95
136
|
|
|
96
|
-
|
|
137
|
+
最终报告实际终点、本次改动、复杂度、第三方执行情况、审查/修复/验证评论链接、Issue/PR 状态,以及 follow-up 的已派发、等待和外部资源清单。已设置自动合并与已合并分别陈述;有阻塞时明确停在哪一步、缺什么以及恢复条件。
|
|
97
138
|
|
|
98
139
|
## 按宿主选择工具
|
|
99
140
|
|
|
@@ -103,9 +144,9 @@ Issue/PR 多行正文写入本次任务独立的临时文件,用 `--body-file`
|
|
|
103
144
|
| --- | --- |
|
|
104
145
|
| Codex | 下文 Codex 运行时:通过 ask_cc / delegate-cc 咨询、审查或执行 |
|
|
105
146
|
| Claude Code | 下文 Claude Code 运行时:通过可用的 Codex 插件协作 |
|
|
106
|
-
| 其他或外部工具不可用 |
|
|
147
|
+
| 其他或外部工具不可用 | 简单任务由当前执行者完成;复杂任务记录第三方通道阻塞,按第 4 步处理 |
|
|
107
148
|
|
|
108
|
-
|
|
149
|
+
简单任务直接推进。复杂任务必须使用当前宿主对应的第三方通道:Codex 调用 Claude Code,Claude Code 调用 Codex。普通同宿主 sub-agent 可承接 follow-up,但不替代复杂任务的第三方步骤。外部执行者接手的是分配范围,完整交付与事实核验仍由主线程负责。
|
|
109
150
|
|
|
110
151
|
## Codex 运行时
|
|
111
152
|
|
|
@@ -128,11 +169,11 @@ Issue/PR 多行正文写入本次任务独立的临时文件,用 `--body-file`
|
|
|
128
169
|
|
|
129
170
|
### 等待、验收与后续任务
|
|
130
171
|
|
|
131
|
-
保存会话 ID
|
|
172
|
+
保存会话 ID,读取同一任务的流式结果;静默或宿主单次等待超时先排查,接管前确保原写进程停止。依赖缺失或确实无法运行时按第 4 步记录阻塞与已完成成果,不能把降级接手计为第三方完成。
|
|
132
173
|
|
|
133
174
|
可核实的验证结果按共享流程复用,不因来自其他执行者而全部重跑。
|
|
134
175
|
|
|
135
|
-
|
|
176
|
+
对第 9 步已满足派发条件的 follow-up,使用 `spawn_agent` 的可用角色,prompt 指定独立 worktree、Issue、目标、交付终点和责任文件,并要求调用 `ship-issue-pr`。子任务发现新问题创建或复用 Issue,交回主线程统一调度。
|
|
136
177
|
|
|
137
178
|
## Claude Code 运行时
|
|
138
179
|
|
|
@@ -146,7 +187,7 @@ Issue/PR 多行正文写入本次任务独立的临时文件,用 `--body-file`
|
|
|
146
187
|
- 普通审查:Codex companion 的 `review`。
|
|
147
188
|
- 需要挑战方案假设时:companion 的 `adversarial-review`。
|
|
148
189
|
|
|
149
|
-
|
|
190
|
+
通道不可用时按第 4 步记录复杂任务的阻塞,并继续可独立完成的准备。
|
|
150
191
|
|
|
151
192
|
### companion 与结果
|
|
152
193
|
|
|
@@ -165,6 +206,6 @@ node "<plugin-root>/scripts/codex-companion.mjs" review --wait --base "<actual-b
|
|
|
165
206
|
|
|
166
207
|
根据实际权限判断补跑项,不预设沙箱不能联网、绑定端口或运行数据库测试。核对版本、命令、环境和可读输出后复用验证,只补缺失或失效项。
|
|
167
208
|
|
|
168
|
-
|
|
209
|
+
等待期间主进程可继续不重叠工作。静默告警触发诊断,接管前确保原写进程停止;无法使用外部通道时记录阻塞,不把自审冒充独立审查。
|
|
169
210
|
|
|
170
|
-
|
|
211
|
+
对第 9 步已满足派发条件的 follow-up,使用 `Agent(subagent_type: "general-purpose", run_in_background: true)`,指定独立 worktree、Issue、责任范围及交付终点,要求调用 `ship-issue-pr`。子任务发现新问题创建或复用 Issue,交回主线程统一调度。
|