@aipper/aiws-spec 0.0.33 → 0.0.34
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/docs/aiws-bootstrap-routing-design.md +5 -50
- package/docs/aiws-governance-positioning.md +1 -1
- package/docs/cli-interface.md +13 -73
- package/docs/collaboration-artifacts.md +2 -2
- package/docs/opencode-autonomous-swarm.md +0 -2
- package/docs/opencode-omo-adapter.md +0 -2
- package/docs/opencode-omo-validation-checklist.md +0 -1
- package/docs/spec-contract.md +10 -36
- package/docs/workflow-router-rules.json +2 -2
- package/docs/workflow-router-rules.md +2 -2
- package/docs/ws-goal-contract.md +16 -25
- package/package.json +1 -1
- package/templates/workspace/.aiws/continuation/CONTINUATION_PROTOCOL.md +101 -0
- package/templates/workspace/.aiws/manifest.json +2 -10
- package/templates/workspace/.opencode/command/ws-finish.md +4 -0
- package/templates/workspace/.opencode/command/ws-goal.md +5 -0
- package/templates/workspace/.opencode/commands/ws-finish.md +4 -0
- package/templates/workspace/.opencode/skills/ws-goal/SKILL.md +41 -0
- package/templates/workspace/AGENTS.md +1 -3
- package/templates/workspace/AI_PROJECT.md +6 -1
- package/templates/workspace/AI_WORKSPACE.md +1 -1
- package/templates/workspace/manifest.json +156 -447
- package/templates/workspace/.agents/skills/p-aiws-change-archive/SKILL.md +0 -24
- package/templates/workspace/.agents/skills/p-aiws-change-finish/SKILL.md +0 -24
- package/templates/workspace/.agents/skills/p-aiws-change-list/SKILL.md +0 -18
- package/templates/workspace/.agents/skills/p-aiws-change-new/SKILL.md +0 -26
- package/templates/workspace/.agents/skills/p-aiws-change-next/SKILL.md +0 -19
- package/templates/workspace/.agents/skills/p-aiws-change-start/SKILL.md +0 -33
- package/templates/workspace/.agents/skills/p-aiws-change-status/SKILL.md +0 -19
- package/templates/workspace/.agents/skills/p-aiws-change-sync/SKILL.md +0 -19
- package/templates/workspace/.agents/skills/p-aiws-change-templates-init/SKILL.md +0 -18
- package/templates/workspace/.agents/skills/p-aiws-change-templates-which/SKILL.md +0 -18
- package/templates/workspace/.agents/skills/p-aiws-change-validate/SKILL.md +0 -23
- package/templates/workspace/.agents/skills/p-aiws-hooks-install/SKILL.md +0 -30
- package/templates/workspace/.agents/skills/p-aiws-hooks-status/SKILL.md +0 -18
- package/templates/workspace/.agents/skills/p-aiws-init/SKILL.md +0 -27
- package/templates/workspace/.agents/skills/p-aiws-rollback/SKILL.md +0 -18
- package/templates/workspace/.agents/skills/p-aiws-update/SKILL.md +0 -26
- package/templates/workspace/.agents/skills/p-aiws-validate/SKILL.md +0 -22
- package/templates/workspace/.agents/skills/p-tasks-plan/SKILL.md +0 -37
- package/templates/workspace/.agents/skills/using-aiws/SKILL.md +0 -112
- package/templates/workspace/.agents/skills/ws-analyze/SKILL.md +0 -26
- package/templates/workspace/.agents/skills/ws-bugfix/SKILL.md +0 -111
- package/templates/workspace/.agents/skills/ws-commit/SKILL.md +0 -18
- package/templates/workspace/.agents/skills/ws-delegate/SKILL.md +0 -75
- package/templates/workspace/.agents/skills/ws-deliver/SKILL.md +0 -18
- package/templates/workspace/.agents/skills/ws-dev/SKILL.md +0 -109
- package/templates/workspace/.agents/skills/ws-dev-lite/SKILL.md +0 -58
- package/templates/workspace/.agents/skills/ws-finish/SKILL.md +0 -22
- package/templates/workspace/.agents/skills/ws-frontend-design/SKILL.md +0 -126
- package/templates/workspace/.agents/skills/ws-goal/SKILL.md +0 -89
- package/templates/workspace/.agents/skills/ws-handoff/SKILL.md +0 -18
- package/templates/workspace/.agents/skills/ws-intake/SKILL.md +0 -106
- package/templates/workspace/.agents/skills/ws-migrate/SKILL.md +0 -18
- package/templates/workspace/.agents/skills/ws-plan/SKILL.md +0 -144
- package/templates/workspace/.agents/skills/ws-plan-verify/SKILL.md +0 -18
- package/templates/workspace/.agents/skills/ws-preflight/SKILL.md +0 -56
- package/templates/workspace/.agents/skills/ws-pull/SKILL.md +0 -18
- package/templates/workspace/.agents/skills/ws-push/SKILL.md +0 -18
- package/templates/workspace/.agents/skills/ws-quality-review/SKILL.md +0 -56
- package/templates/workspace/.agents/skills/ws-req-change/SKILL.md +0 -41
- package/templates/workspace/.agents/skills/ws-req-contract-sync/SKILL.md +0 -17
- package/templates/workspace/.agents/skills/ws-req-contract-validate/SKILL.md +0 -12
- package/templates/workspace/.agents/skills/ws-req-flow-sync/SKILL.md +0 -28
- package/templates/workspace/.agents/skills/ws-req-review/SKILL.md +0 -32
- package/templates/workspace/.agents/skills/ws-research/SKILL.md +0 -56
- package/templates/workspace/.agents/skills/ws-review/SKILL.md +0 -55
- package/templates/workspace/.agents/skills/ws-rule/SKILL.md +0 -23
- package/templates/workspace/.agents/skills/ws-spec-review/SKILL.md +0 -57
- package/templates/workspace/.agents/skills/ws-submodule-setup/SKILL.md +0 -18
- package/templates/workspace/.agents/skills/ws-verify-before-complete/SKILL.md +0 -18
- package/templates/workspace/.claude/commands/p-aiws-change-archive.md +0 -24
- package/templates/workspace/.claude/commands/p-aiws-change-finish.md +0 -24
- package/templates/workspace/.claude/commands/p-aiws-change-list.md +0 -23
- package/templates/workspace/.claude/commands/p-aiws-change-new.md +0 -24
- package/templates/workspace/.claude/commands/p-aiws-change-next.md +0 -24
- package/templates/workspace/.claude/commands/p-aiws-change-start.md +0 -24
- package/templates/workspace/.claude/commands/p-aiws-change-status.md +0 -24
- package/templates/workspace/.claude/commands/p-aiws-change-sync.md +0 -24
- package/templates/workspace/.claude/commands/p-aiws-change-templates-init.md +0 -23
- package/templates/workspace/.claude/commands/p-aiws-change-templates-which.md +0 -23
- package/templates/workspace/.claude/commands/p-aiws-change-validate.md +0 -24
- package/templates/workspace/.claude/commands/p-aiws-hooks-install.md +0 -23
- package/templates/workspace/.claude/commands/p-aiws-hooks-status.md +0 -23
- package/templates/workspace/.claude/commands/p-aiws-init.md +0 -20
- package/templates/workspace/.claude/commands/p-aiws-rollback.md +0 -13
- package/templates/workspace/.claude/commands/p-aiws-update.md +0 -19
- package/templates/workspace/.claude/commands/p-aiws-validate.md +0 -14
- package/templates/workspace/.claude/commands/using-aiws.md +0 -25
- package/templates/workspace/.claude/commands/ws-analyze.md +0 -27
- package/templates/workspace/.claude/commands/ws-bugfix.md +0 -32
- package/templates/workspace/.claude/commands/ws-commit.md +0 -67
- package/templates/workspace/.claude/commands/ws-deliver.md +0 -55
- package/templates/workspace/.claude/commands/ws-dev-lite.md +0 -31
- package/templates/workspace/.claude/commands/ws-dev.md +0 -33
- package/templates/workspace/.claude/commands/ws-finish.md +0 -72
- package/templates/workspace/.claude/commands/ws-goal.md +0 -34
- package/templates/workspace/.claude/commands/ws-handoff.md +0 -23
- package/templates/workspace/.claude/commands/ws-intake.md +0 -19
- package/templates/workspace/.claude/commands/ws-migrate.md +0 -22
- package/templates/workspace/.claude/commands/ws-plan-verify.md +0 -25
- package/templates/workspace/.claude/commands/ws-plan.md +0 -21
- package/templates/workspace/.claude/commands/ws-preflight.md +0 -27
- package/templates/workspace/.claude/commands/ws-pull.md +0 -84
- package/templates/workspace/.claude/commands/ws-push.md +0 -90
- package/templates/workspace/.claude/commands/ws-quality-review.md +0 -24
- package/templates/workspace/.claude/commands/ws-req-change.md +0 -42
- package/templates/workspace/.claude/commands/ws-req-contract-sync.md +0 -18
- package/templates/workspace/.claude/commands/ws-req-contract-validate.md +0 -13
- package/templates/workspace/.claude/commands/ws-req-flow-sync.md +0 -20
- package/templates/workspace/.claude/commands/ws-req-review.md +0 -33
- package/templates/workspace/.claude/commands/ws-review.md +0 -31
- package/templates/workspace/.claude/commands/ws-rule.md +0 -24
- package/templates/workspace/.claude/commands/ws-spec-review.md +0 -24
- package/templates/workspace/.claude/commands/ws-submodule-setup.md +0 -54
- package/templates/workspace/.claude/commands/ws-verify-before-complete.md +0 -24
- package/templates/workspace/.claude/settings.json.example +0 -26
- package/templates/workspace/.claude/skills/p-aiws-change-archive/SKILL.md +0 -24
- package/templates/workspace/.claude/skills/p-aiws-change-finish/SKILL.md +0 -24
- package/templates/workspace/.claude/skills/p-aiws-change-list/SKILL.md +0 -18
- package/templates/workspace/.claude/skills/p-aiws-change-new/SKILL.md +0 -26
- package/templates/workspace/.claude/skills/p-aiws-change-next/SKILL.md +0 -19
- package/templates/workspace/.claude/skills/p-aiws-change-start/SKILL.md +0 -33
- package/templates/workspace/.claude/skills/p-aiws-change-status/SKILL.md +0 -19
- package/templates/workspace/.claude/skills/p-aiws-change-sync/SKILL.md +0 -19
- package/templates/workspace/.claude/skills/p-aiws-change-templates-init/SKILL.md +0 -18
- package/templates/workspace/.claude/skills/p-aiws-change-templates-which/SKILL.md +0 -18
- package/templates/workspace/.claude/skills/p-aiws-change-validate/SKILL.md +0 -23
- package/templates/workspace/.claude/skills/p-aiws-hooks-install/SKILL.md +0 -30
- package/templates/workspace/.claude/skills/p-aiws-hooks-status/SKILL.md +0 -18
- package/templates/workspace/.claude/skills/p-aiws-init/SKILL.md +0 -27
- package/templates/workspace/.claude/skills/p-aiws-rollback/SKILL.md +0 -18
- package/templates/workspace/.claude/skills/p-aiws-update/SKILL.md +0 -26
- package/templates/workspace/.claude/skills/p-aiws-validate/SKILL.md +0 -22
- package/templates/workspace/.claude/skills/p-tasks-plan/SKILL.md +0 -37
- package/templates/workspace/.claude/skills/using-aiws/SKILL.md +0 -87
- package/templates/workspace/.claude/skills/ws-analyze/SKILL.md +0 -26
- package/templates/workspace/.claude/skills/ws-bugfix/SKILL.md +0 -111
- package/templates/workspace/.claude/skills/ws-commit/SKILL.md +0 -18
- package/templates/workspace/.claude/skills/ws-deliver/SKILL.md +0 -18
- package/templates/workspace/.claude/skills/ws-dev/SKILL.md +0 -79
- package/templates/workspace/.claude/skills/ws-dev-lite/SKILL.md +0 -58
- package/templates/workspace/.claude/skills/ws-finish/SKILL.md +0 -22
- package/templates/workspace/.claude/skills/ws-frontend-design/SKILL.md +0 -126
- package/templates/workspace/.claude/skills/ws-handoff/SKILL.md +0 -18
- package/templates/workspace/.claude/skills/ws-intake/SKILL.md +0 -53
- package/templates/workspace/.claude/skills/ws-migrate/SKILL.md +0 -18
- package/templates/workspace/.claude/skills/ws-plan/SKILL.md +0 -138
- package/templates/workspace/.claude/skills/ws-plan-verify/SKILL.md +0 -18
- package/templates/workspace/.claude/skills/ws-preflight/SKILL.md +0 -55
- package/templates/workspace/.claude/skills/ws-pull/SKILL.md +0 -18
- package/templates/workspace/.claude/skills/ws-push/SKILL.md +0 -18
- package/templates/workspace/.claude/skills/ws-quality-review/SKILL.md +0 -56
- package/templates/workspace/.claude/skills/ws-req-change/SKILL.md +0 -41
- package/templates/workspace/.claude/skills/ws-req-contract-sync/SKILL.md +0 -17
- package/templates/workspace/.claude/skills/ws-req-contract-validate/SKILL.md +0 -12
- package/templates/workspace/.claude/skills/ws-req-flow-sync/SKILL.md +0 -28
- package/templates/workspace/.claude/skills/ws-req-review/SKILL.md +0 -32
- package/templates/workspace/.claude/skills/ws-review/SKILL.md +0 -55
- package/templates/workspace/.claude/skills/ws-rule/SKILL.md +0 -23
- package/templates/workspace/.claude/skills/ws-spec-review/SKILL.md +0 -57
- package/templates/workspace/.claude/skills/ws-submodule-setup/SKILL.md +0 -18
- package/templates/workspace/.claude/skills/ws-verify-before-complete/SKILL.md +0 -18
- package/templates/workspace/.codex/prompts/aiws-init.md +0 -23
- package/templates/workspace/.codex/prompts/aiws-rollback.md +0 -16
- package/templates/workspace/.codex/prompts/aiws-update.md +0 -22
- package/templates/workspace/.codex/prompts/aiws-validate.md +0 -17
- package/templates/workspace/.codex/prompts/ws-analyze.md +0 -32
- package/templates/workspace/.codex/prompts/ws-dev.md +0 -36
- package/templates/workspace/.codex/prompts/ws-migrate.md +0 -27
- package/templates/workspace/.codex/prompts/ws-preflight.md +0 -32
- package/templates/workspace/.codex/prompts/ws-req-change.md +0 -39
- package/templates/workspace/.codex/prompts/ws-req-contract-sync.md +0 -23
- package/templates/workspace/.codex/prompts/ws-req-contract-validate.md +0 -18
- package/templates/workspace/.codex/prompts/ws-req-flow-sync.md +0 -25
- package/templates/workspace/.codex/prompts/ws-req-review.md +0 -38
- package/templates/workspace/.codex/prompts/ws-review.md +0 -32
- package/templates/workspace/.codex/prompts/ws-rule.md +0 -29
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ws-intake
|
|
3
|
-
description: 计划前置澄清(逐条冻结问题并产出 intake 草案,供 ws-plan 消费)
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
7
|
-
|
|
8
|
-
目标:
|
|
9
|
-
- 在进入 `$ws-plan` 前,把新需求或中大型变更里的待确认问题逐条澄清并冻结
|
|
10
|
-
- 采用“一题一线程”模式推进:每次只处理 1 个问题,允许该问题多轮往返,直到形成明确结论
|
|
11
|
-
- 产出一份可被 `$ws-plan` 消费的轻量草案:`plan/<timestamp>-<slug>.intake.md`
|
|
12
|
-
|
|
13
|
-
约束:
|
|
14
|
-
- 不直接创建 change,不直接落正式 `plan/...`,不直接进入实现
|
|
15
|
-
- 同一时刻只能有 1 条问题处于 `in_discussion`
|
|
16
|
-
- 当前问题没有被标记为 `frozen` 或 `deferred` 前,不进入下一题
|
|
17
|
-
- 新衍生问题只加入 `Open Questions` 队列,不抢占当前问题
|
|
18
|
-
|
|
19
|
-
阶段定位:
|
|
20
|
-
- pre-planning 阶段;负责把“多轮沟通”从正式计划阶段剥离出来,先冻结需求结论。
|
|
21
|
-
|
|
22
|
-
必需输入:
|
|
23
|
-
- 当前任务描述
|
|
24
|
-
- 真值文件:`AI_PROJECT.md` / `REQUIREMENTS.md` / `AI_WORKSPACE.md`
|
|
25
|
-
- 若已存在:最新 `plan/*.intake.md`
|
|
26
|
-
|
|
27
|
-
必需输出:
|
|
28
|
-
- `Intake file:` 实际写入的 `plan/*.intake.md`
|
|
29
|
-
- `Deep Interview:` 9 维分析:Why/非目标/影响面/假设/替代方案/约束/优先级/成功度量/风险
|
|
30
|
-
- `Codebase Knowns:` 来自代码库的已知信息(通过 explore 已确认的事实、模式、配置值等,标注信息来源路径)
|
|
31
|
-
- `Current question:` 当前正在处理的问题
|
|
32
|
-
- `Open Questions:` 尚未冻结的问题列表
|
|
33
|
-
- `Frozen Decisions:` 已冻结结论
|
|
34
|
-
- `Ready for ws-plan:` yes/no
|
|
35
|
-
- `Next:` 继续 `$ws-intake` 或进入 `$ws-plan`
|
|
36
|
-
|
|
37
|
-
阻断条件:
|
|
38
|
-
- 无法确定项目根或真值文件缺失
|
|
39
|
-
- 当前问题无法被表达为具体、可冻结的决策
|
|
40
|
-
- 无法把澄清结果实际写盘
|
|
41
|
-
|
|
42
|
-
完成判定:
|
|
43
|
-
- 已有一份最新 intake 草案,且当前轮次至少把 1 条问题推进到 `frozen` 或 `deferred`
|
|
44
|
-
- 当 `Open Questions` 已清空,或剩余问题明确被标记为 `deferred`,输出 `Ready for ws-plan: yes`
|
|
45
|
-
|
|
46
|
-
执行步骤(建议):
|
|
47
|
-
1) 先运行 `$ws-preflight`,读取真值文件并输出约束摘要。
|
|
48
|
-
2) 读取当前任务描述;若存在最新 `plan/*.intake.md`,先读取其中的:
|
|
49
|
-
- `Deep Interview`
|
|
50
|
-
- `Open Questions`
|
|
51
|
-
- `Resolved Questions`
|
|
52
|
-
- `Frozen Decisions`
|
|
53
|
-
- `Draft Scope`
|
|
54
|
-
- `Draft Verify`
|
|
55
|
-
3) **Deep Interview 层**:在拆解问题前先收集高维信息:
|
|
56
|
-
a) **Why 探询**:问"为什么要做?不做会怎样?谁提出的?什么场景?"
|
|
57
|
-
b) **非目标(Non-goals)**:显式记录什么不在范围内,需用户确认
|
|
58
|
-
c) **影响面(Stakeholders)**:识别受影响的用户、模块、团队
|
|
59
|
-
d) **假设显式化**:列出隐含假设,请用户确认
|
|
60
|
-
e) **替代方案**:问"考虑过其他方案吗?为什么选这个?"
|
|
61
|
-
f) **约束挑战**:对每条约束问"如果不存在会怎样?"——区分硬约束与自设约束
|
|
62
|
-
g) **优先级**:Must-have / Should-have / Nice-to-have
|
|
63
|
-
h) **成功度量**:问"上线后怎么判断成功?"——量化指标,无法量化则记入风险
|
|
64
|
-
i) **风险预判**:识别 3-5 个最关键风险
|
|
65
|
-
j) 结果写入 intake 草案的 `Deep Interview` 小节
|
|
66
|
-
4) **探码后问**:在对每个 Open Question 提问或沟通前,先用 `explore` 检索代码库中是否已有足够信息回答该问题。探查到的已知信息记录在 intake 草案中(见输出要求的 Codebase Knowns),不再问用户。记录每个问题属于以下哪一类:
|
|
67
|
-
- `codebase: answered` — 代码库已可回答,跳过提问
|
|
68
|
-
- `codebase: partial` — 代码库有部分信息,补充提问未覆盖的部分
|
|
69
|
-
- `user: required` — 必须问用户
|
|
70
|
-
4) 初始化或续写问题队列:
|
|
71
|
-
- 把当前任务拆成 `N` 条待决问题
|
|
72
|
-
- 每条问题都要写成一句明确的决策句,而不是模糊话题
|
|
73
|
-
- 状态只允许:`open` / `in_discussion` / `frozen` / `deferred`
|
|
74
|
-
5) 选择唯一的当前问题:
|
|
75
|
-
- 优先取已有 `in_discussion`
|
|
76
|
-
- 否则取最影响 `Goal / Scope / Verify / Binding` 的 `open`
|
|
77
|
-
6) 对当前问题输出并沟通:
|
|
78
|
-
- `Current question:`
|
|
79
|
-
- `Why it matters:`
|
|
80
|
-
- `Current options / current understanding:`
|
|
81
|
-
- `Exit condition:` 这条问题在什么条件下算谈完
|
|
82
|
-
7) 只推进当前问题:
|
|
83
|
-
- 允许围绕这 1 条问题多轮问答
|
|
84
|
-
- 若用户回答引出新问题:加入 `Open Questions`
|
|
85
|
-
- 若当前问题已经有明确结论:标记为 `frozen`
|
|
86
|
-
- 若当前问题故意留到后面:标记为 `deferred`
|
|
87
|
-
8) 每次落盘 `plan/<timestamp>-<slug>.intake.md`,至少包含:
|
|
88
|
-
- `Deep Interview`
|
|
89
|
-
- `Context`
|
|
90
|
-
- `Open Questions`
|
|
91
|
-
- `Resolved Questions`
|
|
92
|
-
- `Frozen Decisions`
|
|
93
|
-
- `Draft Scope`
|
|
94
|
-
- `Draft Verify`
|
|
95
|
-
- `Ready for ws-plan: yes/no`
|
|
96
|
-
9) 判断是否可以移交给 `$ws-plan`:
|
|
97
|
-
- 若仍有关键问题未冻结:`Ready for ws-plan: no`,`Next: 继续 $ws-intake`
|
|
98
|
-
- 若关键问题已冻结,剩余仅是实现细节或已标记 `deferred`:`Ready for ws-plan: yes`,`Next: $ws-plan`
|
|
99
|
-
|
|
100
|
-
输出要求:
|
|
101
|
-
- `Intake file:` <实际写入的路径>
|
|
102
|
-
- `Current question:` <当前问题>
|
|
103
|
-
- `Open Questions:` <剩余问题列表>
|
|
104
|
-
- `Frozen Decisions:` <已冻结结论>
|
|
105
|
-
- `Ready for ws-plan:` <yes/no>
|
|
106
|
-
- `Next:` <继续 `$ws-intake` 或进入 `$ws-plan`>
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ws-migrate
|
|
3
|
-
description: `aiws migrate` 的薄包装入口
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# ws-migrate
|
|
7
|
-
|
|
8
|
-
`aiws migrate` 的薄包装入口。
|
|
9
|
-
|
|
10
|
-
```bash
|
|
11
|
-
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
12
|
-
./node_modules/.bin/aiws migrate
|
|
13
|
-
elif command -v aiws >/dev/null 2>&1; then
|
|
14
|
-
aiws migrate
|
|
15
|
-
else
|
|
16
|
-
npx @aipper/aiws migrate
|
|
17
|
-
fi
|
|
18
|
-
```
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ws-plan
|
|
3
|
-
description: 规划(生成可落盘 plan/ 工件;供 ws-dev 执行)
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
7
|
-
|
|
8
|
-
目标:
|
|
9
|
-
- 对齐真值文件(`AI_PROJECT.md` / `REQUIREMENTS.md` / `AI_WORKSPACE.md`)
|
|
10
|
-
- 若尚未进入本次 change 的工作上下文:先建立 `change/<change-id>` 分支 / worktree,再生成计划
|
|
11
|
-
- 为当前任务生成一份可追踪的执行计划文件:`plan/<timestamp>-<slug>.md`
|
|
12
|
-
- 计划必须包含可复现验证命令(优先引用 `AI_WORKSPACE.md`)
|
|
13
|
-
- 计划必须包含“主索引绑定”:`Change_ID` / (`Req_ID` or `Problem_ID`) / `Contract_Row` / `Plan_File` / `Evidence_Path`
|
|
14
|
-
|
|
15
|
-
约束:
|
|
16
|
-
- 不写入任何 secrets(token、账号、内网端点等不得进入 git)
|
|
17
|
-
- 本 skill 只负责“想清楚怎么做 + 落盘计划”,不要直接大规模改动代码
|
|
18
|
-
- 未运行不声称已运行;验证命令要写清“预期结果”
|
|
19
|
-
- 若存在 `.aiws/changes/<change-id>/proposal.md`,计划与 proposal 的绑定字段必须保持一致(不一致时先修正再继续)
|
|
20
|
-
|
|
21
|
-
阶段定位:
|
|
22
|
-
- planning 阶段;负责把用户目标收敛为 change 绑定、计划文件和验证入口。
|
|
23
|
-
|
|
24
|
-
必需输入:
|
|
25
|
-
- 当前任务描述
|
|
26
|
-
- 真值文件:`AI_PROJECT.md` / `REQUIREMENTS.md` / `AI_WORKSPACE.md`
|
|
27
|
-
- 若已存在:最新 `plan/*.intake.md`
|
|
28
|
-
- 若已存在:`.aiws/changes/<change-id>/proposal.md`
|
|
29
|
-
- 若已有计划:当前 `plan/...` 文件
|
|
30
|
-
|
|
31
|
-
必需输出:
|
|
32
|
-
- `Plan file:` 实际写入的 `plan/...`
|
|
33
|
-
- `Change context:` 当前生效的 `change/<change-id>` 分支或 worktree
|
|
34
|
-
- `Bindings:` `Change_ID` / `Req_ID|Problem_ID` / `Contract_Row` / `Plan_File` / `Evidence_Path`
|
|
35
|
-
- `Verify:` 可复现验证命令与预期
|
|
36
|
-
- `Next:` 先 `$ws-plan-verify`,通过后再 `$ws-dev`
|
|
37
|
-
|
|
38
|
-
阻断条件:
|
|
39
|
-
- 任务目标或归因绑定不清晰
|
|
40
|
-
- 当前工作区 dirty 且尚未进入可复用的 change 上下文
|
|
41
|
-
- 无法把计划实际写盘
|
|
42
|
-
|
|
43
|
-
完成判定:
|
|
44
|
-
- 计划已落盘、绑定已同步、验证入口明确,后续实现可以直接按计划推进。
|
|
45
|
-
|
|
46
|
-
执行步骤(建议):
|
|
47
|
-
1) 先运行 `$ws-preflight`(读取真值文件并输出约束摘要)。
|
|
48
|
-
2) 若存在最新 `plan/*.intake.md`:
|
|
49
|
-
- 优先读取其中的 `Open Questions` / `Resolved Questions` / `Frozen Decisions` / `Draft Scope` / `Draft Verify`
|
|
50
|
-
- 若 `Ready for ws-plan: yes`,把它作为本次计划输入
|
|
51
|
-
- 若仍有未冻结问题,或明确写着 `Ready for ws-plan: no`:停止,并回退到 `$ws-intake`
|
|
52
|
-
3) 若用户任务描述不清,且也没有可消费的 intake 草案:先问 1-3 个关键澄清问题(不要猜);若问题较多则回退到 `$ws-intake`
|
|
53
|
-
4) 判断复杂度:`simple / medium / complex`(给出一句理由),并估算步骤数。
|
|
54
|
-
5) 识别或建立主索引 / change 上下文:
|
|
55
|
-
- 若存在 `.aiws/changes/<change-id>/proposal.md`:读取其中 `Change_ID` / `Req_ID` / `Problem_ID` / `Contract_Row` / `Evidence_Path`
|
|
56
|
-
- 若缺失关键绑定:先补齐 proposal(至少 `Change_ID`、`Req_ID|Problem_ID`、`Contract_Row`)再继续生成计划
|
|
57
|
-
- 若当前不在 `change/<change-id>` 分支 / worktree,且本次任务需要新建 change:先调用 `aiws change start` 建立上下文,再继续写 plan
|
|
58
|
-
- 推荐顺序:
|
|
59
|
-
- 工作区已存在未提交改动:不要先写 `plan/...`;先停下来说明原因,并要求用户先 commit/stash,或改用已有 change 上下文
|
|
60
|
-
- 仓库已有提交:优先创建独立 worktree;若仓库声明了 submodules,加上 `--submodules`
|
|
61
|
-
- 仓库尚无提交 / 不满足 worktree 前置条件:回退为 `--no-switch`
|
|
62
|
-
```bash
|
|
63
|
-
change_id="<change-id>"
|
|
64
|
-
if [[ -n "$(git status --porcelain)" ]]; then
|
|
65
|
-
echo "error: working tree dirty before ws-plan creates change context"
|
|
66
|
-
echo "hint: commit/stash first, or continue inside an existing change/<change-id> context"
|
|
67
|
-
exit 2
|
|
68
|
-
fi
|
|
69
|
-
|
|
70
|
-
has_commits=0
|
|
71
|
-
git rev-parse --verify HEAD >/dev/null 2>&1 && has_commits=1
|
|
72
|
-
|
|
73
|
-
has_submodules=0
|
|
74
|
-
if [[ -f .gitmodules ]] && git config --file .gitmodules --get-regexp '^submodule\\..*\\.path$' >/dev/null 2>&1; then
|
|
75
|
-
has_submodules=1
|
|
76
|
-
fi
|
|
77
|
-
|
|
78
|
-
if [[ "${has_commits}" -eq 1 ]]; then
|
|
79
|
-
if [[ "${has_submodules}" -eq 1 ]]; then
|
|
80
|
-
aiws change start "${change_id}" --hooks --worktree --submodules
|
|
81
|
-
else
|
|
82
|
-
aiws change start "${change_id}" --hooks --worktree
|
|
83
|
-
fi
|
|
84
|
-
else
|
|
85
|
-
aiws change start "${change_id}" --hooks --no-switch
|
|
86
|
-
fi
|
|
87
|
-
```
|
|
88
|
-
- 若上一步创建了 worktree:后续所有读取/写入都必须切到 `aiws change start` 输出的 `worktree:` 路径中进行;不要把 `plan/...` 写回原工作区
|
|
89
|
-
6) 生成计划文件:
|
|
90
|
-
- 文件名:`plan/YYYY-MM-DD_HH-MM-SS-<slug>.md`(`<slug>` 用 kebab-case;同一任务调整计划时尽量复用同一文件)
|
|
91
|
-
- 若 `plan/` 不存在先创建
|
|
92
|
-
- 必须实际写入到磁盘(不要只在对话里输出);如因权限/策略无法写盘,必须明确说明原因并输出可复制的完整内容
|
|
93
|
-
- 计划必须写在当前 active change 上下文内:若当前已进入 `change/<change-id>` worktree,则 `plan/...`、`proposal.md`、`tasks.md` 都应写在该 worktree 中
|
|
94
|
-
7) 计划内容至少包含(不要留空):
|
|
95
|
-
- `Bindings`:`Change_ID` / `Req_ID` / `Problem_ID` / `Contract_Row` / `Plan_File` / `Evidence_Path`
|
|
96
|
-
- `Goal`:要达成什么
|
|
97
|
-
- `Non-goals`:明确不做什么(避免 scope creep)
|
|
98
|
-
- `Intake Decisions`(若消费了 intake 草案):列出本次从 intake 继承的已冻结结论;不要重新打开除非明确发现冲突
|
|
99
|
-
- `Scope`:默认写成 `## Scope` 或 `## 影响范围(Scope)`,并包含 `### In Scope` / `### Out of Scope`;`In Scope` 下列出允许修改的文件/目录清单(支持 glob,不确定就写 `TBD` 并说明如何确定)
|
|
100
|
-
- `Plan`:分步执行(每步尽量落到具体文件/命令;必要时拆 Phase)
|
|
101
|
-
- `Submodules`(当存在 `.gitmodules` 且声明了 submodule 条目时,强制):声明“本次 change 的 submodule 目标分支真值”(用于同一 superproject 分支内的多渠道交付;也避免仅靠 `.gitmodules` 默认分支导致交付推送到错误分支)
|
|
102
|
-
- `Verify`:可复现命令 + 期望结果(优先引用 `AI_WORKSPACE.md` 的入口;必要时补充 e2e)
|
|
103
|
-
- `Risks & Rollback`:风险点 + 回滚方案(例如 git 回滚、`aiws rollback`、恢复备份等)
|
|
104
|
-
- `Evidence`:计划文件路径;若创建了变更工件则附 `.aiws/changes/<change-id>/...`
|
|
105
|
-
8) 若存在 change proposal:回填并对齐 `proposal.md` 的 `Plan_File`(必要时同步 `Contract_Row` / `Evidence_Path`),保证 plan/proposal 一致。
|
|
106
|
-
9) 运行 `$ws-plan-verify` 作为执行前质量门(计划不过长、不跑偏、验证可复现)。
|
|
107
|
-
10) 若计划涉及“需求/验收”变更:先用 `$ws-req-review` 评审 → 用户确认后再 `$ws-req-change` 落盘(避免需求漂移)。
|
|
108
|
-
11) 多步任务(≥2 步):后续进入实现时,使用 `update_plan` 工具跟踪 `pending → in_progress → completed`。
|
|
109
|
-
|
|
110
|
-
补充:submodule 目标分支真值(强约束;同一 superproject 分支内可多渠道)
|
|
111
|
-
- 背景:`.gitmodules submodule.<name>.branch` 适合作为“团队默认分支真值”,但当同一 superproject 分支需要在不同交付中选择不同 submodule 目标分支(多渠道)时,仅靠 `.gitmodules` 不足。
|
|
112
|
-
- 强约束:当 `.gitmodules` 声明了 submodule 条目时,门禁会要求本次 change 存在该文件且覆盖所有 submodule path(否则 `aiws validate .` / `aiws change validate --strict` 阻断)。
|
|
113
|
-
- 约定:为本次 change 落盘一个“交付目标分支映射”文件,并在后续 `$ws-dev`/`$ws-deliver`/`$ws-finish` 优先使用它:
|
|
114
|
-
- 文件:`.aiws/changes/<change-id>/submodules.targets`
|
|
115
|
-
- 格式:每行一个 submodule(忽略空行与 `#` 注释),字段用空白分隔(推荐 `TAB`):
|
|
116
|
-
- 第 1 列:submodule path(例如 `vendor/foo`)
|
|
117
|
-
- 第 2 列:target branch(例如 `release/channel-a`)
|
|
118
|
-
- 第 3 列(可选):remote 名(默认 `origin`)
|
|
119
|
-
- 生成模板(建议在确认 `Change_ID` 后执行;如文件已存在先备份再覆盖):
|
|
120
|
-
```bash
|
|
121
|
-
change_id="<change-id>"
|
|
122
|
-
targets="changes/${change_id}/submodules.targets"
|
|
123
|
-
mkdir -p "changes/${change_id}"
|
|
124
|
-
if [[ -f "${targets}" ]]; then
|
|
125
|
-
bak="${targets}.bak.$(date -u +%Y%m%d-%H%M%SZ)"
|
|
126
|
-
cp "${targets}" "${bak}"
|
|
127
|
-
echo "info: backup: ${bak}"
|
|
128
|
-
fi
|
|
129
|
-
: > "${targets}"
|
|
130
|
-
echo "# path<TAB>target_branch<TAB>remote(optional, default=origin)" >> "${targets}"
|
|
131
|
-
while read -r key sub_path; do
|
|
132
|
-
name="${key#submodule.}"; name="${name%.path}"
|
|
133
|
-
b="$(git config --file .gitmodules --get "submodule.${name}.branch" 2>/dev/null || true)"
|
|
134
|
-
[[ "${b:-}" == "." ]] && b="$(git branch --show-current)" # '.' means "follow superproject branch"
|
|
135
|
-
printf "%s\t%s\t%s\n" "${sub_path}" "${b:-<fill-me>}" "origin" >> "${targets}"
|
|
136
|
-
done < <(git config --file .gitmodules --get-regexp '^submodule\\..*\\.path$' 2>/dev/null || true)
|
|
137
|
-
echo "ok: wrote ${targets}"
|
|
138
|
-
```
|
|
139
|
-
- 计划里必须写清:本次交付选择的 `targets` 内容,以及后续在 `$ws-dev` 进入编码前会把 submodules 挂到 `aiws/pin/<target_branch>`(必要时先 `fetch`)。
|
|
140
|
-
|
|
141
|
-
输出要求:
|
|
142
|
-
- `Plan file:` <实际写入的路径>
|
|
143
|
-
- `Change context:` <当前 change 分支或 worktree 路径;若新建了 worktree 需明确写出>
|
|
144
|
-
- `Next:` 推荐下一步(先 `$ws-plan-verify`,通过后再 `$ws-dev`;或 `aiws change start <change-id> --hooks`,superproject + submodule 可用 `--worktree`)
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ws-plan-verify
|
|
3
|
-
description: `aiws plan-verify` 的薄包装入口
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# ws-plan-verify
|
|
7
|
-
|
|
8
|
-
`aiws plan-verify` 的薄包装入口。
|
|
9
|
-
|
|
10
|
-
```bash
|
|
11
|
-
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
12
|
-
./node_modules/.bin/aiws plan-verify
|
|
13
|
-
elif command -v aiws >/dev/null 2>&1; then
|
|
14
|
-
aiws plan-verify
|
|
15
|
-
else
|
|
16
|
-
npx @aipper/aiws plan-verify
|
|
17
|
-
fi
|
|
18
|
-
```
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ws-preflight
|
|
3
|
-
description: 预检(提交前快速检查与建议)
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
7
|
-
|
|
8
|
-
目标:在开始任何“写代码/改配置/落盘文件”之前,对齐工作区真值文件,避免规则漂移。
|
|
9
|
-
|
|
10
|
-
阶段定位:
|
|
11
|
-
- workflow 入口阶段;负责判断当前仓库是否具备继续执行其它 `ws-*` 阶段的前置条件。
|
|
12
|
-
|
|
13
|
-
必需输入:
|
|
14
|
-
- 当前项目根目录候选路径
|
|
15
|
-
- `AI_PROJECT.md`
|
|
16
|
-
- `REQUIREMENTS.md`
|
|
17
|
-
- `AI_WORKSPACE.md`
|
|
18
|
-
|
|
19
|
-
必需输出:
|
|
20
|
-
- `Root:` 当前项目根
|
|
21
|
-
- `Found:` 实际读取到的真值文件
|
|
22
|
-
- `Missing:` 缺失项
|
|
23
|
-
- `Key rules:` 3-8 条约束摘要
|
|
24
|
-
- `Next:` 若真值齐全,建议进入 `$ws-plan` 或 `$ws-dev`;若缺失,建议先 `aiws init .`
|
|
25
|
-
|
|
26
|
-
阻断条件:
|
|
27
|
-
- 无法确定项目根目录
|
|
28
|
-
- 缺失任一真值文件
|
|
29
|
-
|
|
30
|
-
完成判定:
|
|
31
|
-
- 使用者已经知道当前仓库能否继续进入后续阶段,以及必须遵守的约束与下一步入口。
|
|
32
|
-
|
|
33
|
-
执行步骤(强制):
|
|
34
|
-
1) 定位项目根目录(submodule 感知):
|
|
35
|
-
- 优先:`git rev-parse --show-superproject-working-tree`(若当前在 submodule 内则返回 superproject 根)
|
|
36
|
-
- 若为空(不在 submodule 内):`git rev-parse --show-toplevel`
|
|
37
|
-
- 若两者都失败:停止并让用户确认当前目录是否为项目根(不要猜测)。
|
|
38
|
-
2) 在项目根目录读取以下文件(存在则必须读取;缺失则明确报告缺失项,不要臆测内容):
|
|
39
|
-
- `AI_PROJECT.md`
|
|
40
|
-
- `REQUIREMENTS.md`
|
|
41
|
-
- `AI_WORKSPACE.md`
|
|
42
|
-
3) 若缺失任意真值文件:不要继续“写代码/改配置/落盘文件”。先输出缺失项,并给出下一步建议:
|
|
43
|
-
- `npx @aipper/aiws init .`(或 `aiws init .`)初始化真值文件
|
|
44
|
-
- 然后重新执行 `$ws-preflight`
|
|
45
|
-
4) 输出:
|
|
46
|
-
- `Root:` <项目根路径>
|
|
47
|
-
- `Found:` <实际读取到的文件列表>
|
|
48
|
-
- `Missing:` <缺失文件列表>
|
|
49
|
-
- `Key rules:` 3–8 条 bullet(范围/禁止项/必须产物/必须验证命令)
|
|
50
|
-
5) 若存在 `.gitmodules`:
|
|
51
|
-
- 输出 submodule 列表:`git config --file .gitmodules --get-regexp '^submodule\\..*\\.path$'`
|
|
52
|
-
- 检查每个 submodule 是否配置 `submodule.<name>.branch`(缺失则提示先运行 `$ws-submodule-setup`;否则 `aiws validate .` 会失败)
|
|
53
|
-
|
|
54
|
-
安全:
|
|
55
|
-
- 不打印 secrets;遇到疑似敏感值只提示“存在风险”但不要复述原文。
|
|
56
|
-
- 不执行破坏性命令。
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ws-pull
|
|
3
|
-
description: `aiws pull` 的薄包装入口
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# ws-pull
|
|
7
|
-
|
|
8
|
-
`aiws pull` 的薄包装入口。
|
|
9
|
-
|
|
10
|
-
```bash
|
|
11
|
-
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
12
|
-
./node_modules/.bin/aiws pull
|
|
13
|
-
elif command -v aiws >/dev/null 2>&1; then
|
|
14
|
-
aiws pull
|
|
15
|
-
else
|
|
16
|
-
npx @aipper/aiws pull
|
|
17
|
-
fi
|
|
18
|
-
```
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ws-push
|
|
3
|
-
description: `aiws push` 的薄包装入口
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# ws-push
|
|
7
|
-
|
|
8
|
-
`aiws push` 的薄包装入口。
|
|
9
|
-
|
|
10
|
-
```bash
|
|
11
|
-
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
12
|
-
./node_modules/.bin/aiws push
|
|
13
|
-
elif command -v aiws >/dev/null 2>&1; then
|
|
14
|
-
aiws push
|
|
15
|
-
else
|
|
16
|
-
npx @aipper/aiws push
|
|
17
|
-
fi
|
|
18
|
-
```
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ws-quality-review
|
|
3
|
-
description: 质量审查(行为回归 / 测试覆盖 / 实现质量)
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
7
|
-
|
|
8
|
-
目标:
|
|
9
|
-
- 审查当前改动的行为正确性、边界条件、测试覆盖和实现质量
|
|
10
|
-
- 把“代码/行为层 findings”优先落盘到 `.aiws/changes/<change-id>/review/quality-review.md`
|
|
11
|
-
|
|
12
|
-
阶段定位:
|
|
13
|
-
- review 子 gate;负责实现质量、行为回归与验证覆盖审查。
|
|
14
|
-
|
|
15
|
-
必需输入:
|
|
16
|
-
- 当前 `git diff`
|
|
17
|
-
- 已执行的验证结果
|
|
18
|
-
- 相关代码 / 配置 / 测试文件
|
|
19
|
-
- 若存在:`.aiws/changes/<change-id>/analysis/`、`patches/`、已有 review 文件
|
|
20
|
-
|
|
21
|
-
必需输出:
|
|
22
|
-
- `证据(Evidence):` `.aiws/changes/<change-id>/review/quality-review.md` 或回退 `.aiws/tmp/review/quality-review.md`
|
|
23
|
-
- `主要发现(Findings):` 高到低排序的问题 / 风险 / 缺失测试
|
|
24
|
-
- `下一步(Next):` 最小修复项与回归命令
|
|
25
|
-
|
|
26
|
-
阻断条件:
|
|
27
|
-
- 没有可审改动
|
|
28
|
-
- 没有任何验证上下文
|
|
29
|
-
- 无法写 review 证据
|
|
30
|
-
|
|
31
|
-
完成判定:
|
|
32
|
-
- 已落盘 quality review 证据,且 findings / 测试缺口 / next 明确。
|
|
33
|
-
|
|
34
|
-
步骤(建议):
|
|
35
|
-
1) 先读取 `git diff`、验证结果与相关代码。
|
|
36
|
-
2) 检查:
|
|
37
|
-
- 行为是否可能回归
|
|
38
|
-
- 边界条件 / 失败路径是否覆盖
|
|
39
|
-
- 测试是否足以支撑改动
|
|
40
|
-
- 是否存在明显复杂度、耦合、可维护性或性能问题
|
|
41
|
-
3) 将结论落盘到:
|
|
42
|
-
- 默认:`.aiws/changes/<change-id>/review/quality-review.md`
|
|
43
|
-
- 回退:`.aiws/tmp/review/quality-review.md`
|
|
44
|
-
4) 输出:
|
|
45
|
-
- `证据(Evidence):`
|
|
46
|
-
- `主要发现(Findings):`
|
|
47
|
-
- `测试缺口(Gaps):`
|
|
48
|
-
- `下一步(Next):`
|
|
49
|
-
|
|
50
|
-
重点:
|
|
51
|
-
- 这是质量 / 回归 review,不替代 requirements / gate review。
|
|
52
|
-
- 若发现流程、归因、evidence 缺口,转交给 `$ws-spec-review`。
|
|
53
|
-
|
|
54
|
-
安全:
|
|
55
|
-
- 不打印 secrets。
|
|
56
|
-
- 不执行破坏性命令。
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ws-req-change
|
|
3
|
-
description: 需求变更(更新 REQUIREMENTS 并同步执行合同)
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
7
|
-
|
|
8
|
-
目标:记录需求变更(更新 `REQUIREMENTS.md` + 追加 `requirements/CHANGELOG.md`),并同步/校验执行合同 `requirements/requirements-issues.csv`。
|
|
9
|
-
|
|
10
|
-
步骤(必须按顺序):
|
|
11
|
-
1) 读取:`AI_PROJECT.md`、`REQUIREMENTS.md`、`AI_WORKSPACE.md`、`requirements/CHANGELOG.md`(缺失则创建目录与文件)。
|
|
12
|
-
2) 先产出“拟变更方案”(不要立刻写文件):
|
|
13
|
-
- 变更摘要(1–5 条)
|
|
14
|
-
- 影响范围(API/鉴权/字段/状态码/测试边界)
|
|
15
|
-
- 回滚思路(1–2 条)
|
|
16
|
-
3) 对比与冲突检查(强制,不写文件):
|
|
17
|
-
- 对比“变更前 vs 拟变更后”的差异清单(新增/删除/语义变化)
|
|
18
|
-
- 整理潜在冲突/不确定点(只列“最可能影响验收/实现”的,避免噪音)
|
|
19
|
-
4) 逐条澄清(强制,避免一次问完):
|
|
20
|
-
- 若存在潜在冲突/不确定点:**本轮只问 1 个**最高优先级问题(给出 2–4 个可选答案或二选一),然后停止,等待用户回复;不要继续问下一题,也不要写文件。
|
|
21
|
-
- 收到用户回复后:更新“拟变更方案”,回到步骤 3) 重新对比,直至没有未决问题。
|
|
22
|
-
5) 强制停下来让用户确认:是否继续落盘?(Y/N)
|
|
23
|
-
6) 用户确认 Y 后再写入:
|
|
24
|
-
- 更新 `REQUIREMENTS.md`(只保留当前有效版本,不在此堆历史)
|
|
25
|
-
- 追加 `requirements/CHANGELOG.md`
|
|
26
|
-
7) 同步/补齐需求执行合同(强制,自动处理 FlowSpec 有/无两种情况):
|
|
27
|
-
- `python3 tools/requirements_contract_sync.py --workspace .`
|
|
28
|
-
- 说明:若 `REQUIREMENTS.md` 中不存在 FlowSpec(或 flows 为空),该命令只会确保 `requirements/requirements-issues.csv` 表头存在并给出 WARN(这是预期行为,不要当成失败)。
|
|
29
|
-
8) 校验需求执行合同(强制):`python3 tools/requirements_contract.py validate`
|
|
30
|
-
9) 同步场景合同(可选,但若存在 FlowSpec 则强烈建议自动执行):
|
|
31
|
-
- 若 `REQUIREMENTS.md` 同时包含 `<!-- FLOW_SPEC_BEGIN -->` 与 `<!-- FLOW_SPEC_END -->`:运行 `$ws-req-flow-sync`
|
|
32
|
-
- 否则:跳过,并提示用户“可以先不维护 FlowSpec;后续需要场景回归时再补”
|
|
33
|
-
|
|
34
|
-
输出必须包含:
|
|
35
|
-
- 本次更新的文件清单(路径)
|
|
36
|
-
- 回滚方案(如何撤销本次需求变更)
|
|
37
|
-
- 下一步建议命令
|
|
38
|
-
|
|
39
|
-
安全:
|
|
40
|
-
- 不打印 `secrets/test-accounts.json`
|
|
41
|
-
- 不引入任何 token/密钥到仓库
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ws-req-contract-sync
|
|
3
|
-
description: 合同同步(requirements contract sync)
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
7
|
-
|
|
8
|
-
用途:从 `REQUIREMENTS.md` 的 FlowSpec 补齐 `requirements/requirements-issues.csv`(只生成骨架,不猜测完成状态)。
|
|
9
|
-
|
|
10
|
-
执行(在 workspace 根目录):
|
|
11
|
-
- `python3 tools/requirements_contract_sync.py --workspace .`
|
|
12
|
-
|
|
13
|
-
输出要求:
|
|
14
|
-
- 说明新增/更新了多少条
|
|
15
|
-
- 明确下一步:手工补齐 CRUD/Inputs/Outputs/Business_Logic/Tests,并将可开工条目标为 `Spec_Status=READY`
|
|
16
|
-
|
|
17
|
-
下一步建议:`$ws-req-contract-validate`
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ws-req-contract-validate
|
|
3
|
-
description: 合同校验(requirements contract validate)
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
7
|
-
|
|
8
|
-
执行(失败则修正 CSV 后重试):
|
|
9
|
-
- `python3 tools/requirements_contract.py validate`
|
|
10
|
-
|
|
11
|
-
输出要求:
|
|
12
|
-
- 若失败:列出前 20 条缺失字段(Req_ID + field),并给出最小补齐建议
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ws-req-flow-sync
|
|
3
|
-
description: Flow 同步(生成 api-flow 与场景执行合同)
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
用中文输出;命令与路径保持原样不翻译。
|
|
7
|
-
|
|
8
|
-
目标:基于 `REQUIREMENTS.md` 的 FlowSpec 生成:
|
|
9
|
-
- `docs/api-flow.mmd`(简短逻辑图,Mermaid)
|
|
10
|
-
- `issues/server-scenario-issues.csv`(场景执行合同:TODO/DONE/BLOCKED)
|
|
11
|
-
|
|
12
|
-
执行(在 workspace 根目录):
|
|
13
|
-
`python3 tools/requirements_flow_gen.py --workspace .`
|
|
14
|
-
|
|
15
|
-
若缺少工具 `tools/requirements_flow_gen.py`:提示用户先运行 `$aiws-init`(默认会安装 optional tools),或执行:
|
|
16
|
-
```bash
|
|
17
|
-
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
18
|
-
./node_modules/.bin/aiws init .
|
|
19
|
-
elif command -v aiws >/dev/null 2>&1; then
|
|
20
|
-
aiws init .
|
|
21
|
-
else
|
|
22
|
-
npx @aipper/aiws init .
|
|
23
|
-
fi
|
|
24
|
-
```
|
|
25
|
-
|
|
26
|
-
输出要求:只打印生成的文件路径与下一步命令:
|
|
27
|
-
- 查看逻辑图:`cat docs/api-flow.mmd`
|
|
28
|
-
- 查看场景合同:`cat issues/server-scenario-issues.csv`
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ws-req-review
|
|
3
|
-
description: 需求评审(对齐真值与验收)
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
7
|
-
|
|
8
|
-
目标:在不修改任何文件的前提下,对 `REQUIREMENTS.md` 做一次整体 QA,输出缺口/冲突/风险,减少实现漂移。
|
|
9
|
-
|
|
10
|
-
执行步骤(强制):
|
|
11
|
-
1) 定位项目根目录:先尝试 `git rev-parse --show-superproject-working-tree`(submodule 感知上溯到 superproject 根);若为空再用 `git rev-parse --show-toplevel`。都失败则停止并让用户确认根目录。
|
|
12
|
-
2) 读取(存在则必须读取;缺失则明确列出,不要臆测):
|
|
13
|
-
- `AI_PROJECT.md`
|
|
14
|
-
- `REQUIREMENTS.md`
|
|
15
|
-
- `AI_WORKSPACE.md`
|
|
16
|
-
- `requirements/CHANGELOG.md`(若存在)
|
|
17
|
-
- `requirements/requirements-issues.csv`(若存在)
|
|
18
|
-
3) 输出固定结构的报告:
|
|
19
|
-
|
|
20
|
-
## Requirements QA
|
|
21
|
-
- 结论:是否可进入实现(是/否/有条件)
|
|
22
|
-
- 漂移风险:最容易导致不一致的点
|
|
23
|
-
- 可验收性缺口:缺少输入/输出/错误码/边界/示例的条目
|
|
24
|
-
- 完整性:Non-goals/兼容性/鉴权/重试/并发/观测性/性能
|
|
25
|
-
- 一致性:与 `AI_PROJECT.md` 约束冲突点
|
|
26
|
-
- 可测试性与证据:最小验证命令 + 期望结果 + 证据路径
|
|
27
|
-
- 风险清单:3–8 条
|
|
28
|
-
- 需要澄清的问题:5–12 个(按优先级)
|
|
29
|
-
|
|
30
|
-
4) 最后询问用户:是否进入需求落盘流程 `$ws-req-change`?(Y/N)
|
|
31
|
-
|
|
32
|
-
安全:不打印 `secrets/test-accounts.json`。
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: ws-research
|
|
3
|
-
description: 使用时机:需要技术调研、定位影响面、收集实现信息但不直接改代码时。触发词:调研、研究、research、分析依赖、影响面、技术方案。注意:产物只落盘 changes/<id>/analysis/,不修改业务文件。
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
7
|
-
|
|
8
|
-
目标:在正式实现前,对不明确的技术问题做只读调研,并把结论落盘为可追溯的分析产物。
|
|
9
|
-
|
|
10
|
-
定位:
|
|
11
|
-
- ws-dev / ws-plan 的辅助入口,不是独立 workflow stage。
|
|
12
|
-
- 只读探索代码库、外部文档或依赖关系,不直接修改业务文件。
|
|
13
|
-
- 若分析过程中发现需要改代码,必须退出本 Skill 并回到 ws-dev 或 ws-plan。
|
|
14
|
-
|
|
15
|
-
必需输入:
|
|
16
|
-
- 真值文件:`AI_PROJECT.md` / `REQUIREMENTS.md` / `AI_WORKSPACE.md`
|
|
17
|
-
- 当前绑定到 `Req_ID` 或 `Problem_ID` 的 change 上下文
|
|
18
|
-
- 明确的调研问题清单
|
|
19
|
-
|
|
20
|
-
必需输出:
|
|
21
|
-
- 分析报告落盘:`changes/<id>/analysis/<timestamp>-research.md`
|
|
22
|
-
- 报告中必须包含:
|
|
23
|
-
- 调研问题与结论
|
|
24
|
-
- 信息来源(文件路径/外部文档链接)
|
|
25
|
-
- 不确定项与风险标记
|
|
26
|
-
- 对后续实现的建议或阻断项
|
|
27
|
-
- `Next:` 指向 ws-dev、ws-plan 或 ws-review
|
|
28
|
-
|
|
29
|
-
阻断条件:
|
|
30
|
-
- 没有明确的调研问题
|
|
31
|
-
- 当前不在 change 上下文中
|
|
32
|
-
- 调研过程中发现需要写代码(应回到 ws-dev)
|
|
33
|
-
- 调研深度超出本次 change scope(应记录原因并回到 ws-plan 更新范围)
|
|
34
|
-
|
|
35
|
-
完成判定:
|
|
36
|
-
- 分析报告已落盘到 `changes/<id>/analysis/`
|
|
37
|
-
- 报告中问题与结论一一对应
|
|
38
|
-
- `Next` 已给出明确路由
|
|
39
|
-
|
|
40
|
-
步骤(建议):
|
|
41
|
-
1) 先读取真值文件,确认 change 上下文与调研问题
|
|
42
|
-
2) 只读探索相关代码库区域:
|
|
43
|
-
- 用搜索工具定位关键文件/模块
|
|
44
|
-
- 阅读相关代码片段
|
|
45
|
-
- 必要时查阅外部文档
|
|
46
|
-
3) 汇总发现,标注不确定项:
|
|
47
|
-
- 对每个问题给出结论或待确认标记
|
|
48
|
-
- 标明信息来源(文件路径/行号/外部链接)
|
|
49
|
-
4) 落盘分析报告到 `changes/<id>/analysis/<timestamp>-research.md`
|
|
50
|
-
5) 回到主流程:`$ws-dev` 或 `$ws-plan`
|
|
51
|
-
|
|
52
|
-
安全:
|
|
53
|
-
- 不修改任何业务文件
|
|
54
|
-
- 不写入 secrets
|
|
55
|
-
- 不执行破坏性命令
|
|
56
|
-
- 不确定的结论必须显式标注
|