@aipper/aiws-spec 0.0.26 → 0.0.28

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 (27) hide show
  1. package/docs/cli-interface.md +4 -2
  2. package/docs/workflow-governance-rules.json +15 -1
  3. package/docs/workflow-governance-rules.md +5 -3
  4. package/docs/workflow-router-rules.json +28 -5
  5. package/docs/workflow-router-rules.md +8 -3
  6. package/docs/workflow-stage-contracts.json +14 -5
  7. package/docs/workflow-stage-contracts.md +5 -4
  8. package/package.json +1 -1
  9. package/templates/workspace/.agents/skills/using-aiws/SKILL.md +16 -4
  10. package/templates/workspace/.agents/skills/ws-finish/SKILL.md +12 -4
  11. package/templates/workspace/.agents/skills/ws-intake/SKILL.md +87 -0
  12. package/templates/workspace/.agents/skills/ws-plan/SKILL.md +15 -9
  13. package/templates/workspace/.agents/skills/ws-plan-verify/SKILL.md +11 -2
  14. package/templates/workspace/.claude/commands/ws-finish.md +8 -4
  15. package/templates/workspace/.claude/commands/ws-intake.md +19 -0
  16. package/templates/workspace/.claude/skills/ws-finish/SKILL.md +12 -4
  17. package/templates/workspace/.claude/skills/ws-intake/SKILL.md +31 -0
  18. package/templates/workspace/.opencode/command/ws-finish.md +8 -4
  19. package/templates/workspace/.opencode/command/ws-intake.md +22 -0
  20. package/templates/workspace/.opencode/commands/ws-finish.md +8 -4
  21. package/templates/workspace/.opencode/commands/ws-intake.md +22 -0
  22. package/templates/workspace/.opencode/skills/ws-finish/SKILL.md +12 -4
  23. package/templates/workspace/.opencode/skills/ws-intake/SKILL.md +31 -0
  24. package/templates/workspace/AGENTS.md +7 -3
  25. package/templates/workspace/changes/README.md +2 -1
  26. package/templates/workspace/manifest.json +16 -0
  27. package/templates/workspace/tools/ws_change_check.py +224 -7
@@ -9,7 +9,9 @@
9
9
  前置(必须):
10
10
  - 工作区干净:`git status --porcelain` 无输出(否则先 commit 或 stash)
11
11
  - change 分支存在(`change/<change-id>`;也支持 `changes/`、`ws/`、`ws-change/`)
12
- - 若存在 `.gitmodules`:必须为每个 submodule 配置 `submodule.<name>.branch`(否则先运行 `/ws-submodule-setup` 并提交 `.gitmodules`)
12
+ - 普通 finish `validate/evidence/state` 应先在 `change/<change-id>` worktree 完成;真正执行 `aiws change finish` 时再切到目标分支所在 worktree
13
+ - 若 `aiws change status <change-id>` 输出 `governance_rule: finish_resume_required`:说明 merge 已发生,只需继续 push / archive / cleanup closeout;直接在提示的 worktree 运行 `aiws change finish <change-id> --push`
14
+ - 若存在 `.gitmodules`:必须为每个 submodule 配置 `submodule.<name>.branch`(否则先运行 `/ws-submodule-setup` 并提交 `.gitmodules`)
13
15
 
14
16
  步骤(建议):
15
17
  0) 若存在 `.gitmodules`,先检查 submodule branch 配置是否齐全(缺失则停止并提示 setup):
@@ -31,9 +33,11 @@ if [[ -f .gitmodules ]]; then
31
33
  fi
32
34
  ```
33
35
  1) 先运行 `/ws-preflight`(确保真值文件齐全)。
34
- 2) (推荐)门禁校验并落盘证据:`aiws validate . --stamp`(未安装全局 aiws 时可用 `npx @aipper/aiws validate . --stamp`)。
35
- 2.1) (强烈建议)收敛持久证据并回填 `Evidence_Path`:`aiws change evidence <change-id>`(未安装全局 aiws 时可用 `npx @aipper/aiws change evidence <change-id>`)。
36
- 2.2) (可选)生成状态快照(建议):`aiws change state <change-id> --write`。
36
+ 2) 先运行 `aiws change status <change-id>`,优先看稳定字段 `governance_rule:`。
37
+ - 若为 `finish_resume_required`:直接跳到步骤 3 执行 `aiws change finish <change-id> --push`
38
+ - 若不是该值:按普通 finish 继续;不要依赖自然语言提示句做分支判断
39
+ 2.1) 普通 finish 时,`aiws validate . --stamp` / `aiws change evidence <change-id>` / `aiws change state <change-id> --write` 应在 `change/<change-id>` worktree 完成。
40
+ - 如果已经在目标分支 worktree,且 `governance_rule` 不是 `finish_resume_required`,不要在这里跑 `aiws validate . --stamp`;先回 `change/<change-id>` worktree,或先跑 `/ws-verify-before-complete`
37
41
  3) 若不存在 `.gitmodules`,或 submodules 已按顺序处理完成,优先直接执行最小收尾闭环:
38
42
  - `aiws change finish <change-id> --push`
39
43
  - 若当前就在 `change/<change-id>` 分支上,也可省略 `<change-id>`
@@ -0,0 +1,19 @@
1
+ <!-- AIWS_MANAGED_BEGIN:claude:ws-intake -->
2
+ # ws intake
3
+
4
+ 用中文输出(命令/路径/代码标识符保持原样不翻译)。
5
+
6
+ 目标:
7
+ - 在正式 `/ws-plan` 前,先把需求里的待确认问题逐条澄清并冻结。
8
+
9
+ 执行建议:
10
+ 1) 先读取 `AI_PROJECT.md` / `REQUIREMENTS.md` / `AI_WORKSPACE.md`。
11
+ 2) 若存在最新 `plan/*.intake.md`,先续写;否则创建新的 intake 草案。
12
+ 3) 把问题写成 `Open Questions`,状态只允许 `open / in_discussion / frozen / deferred`。
13
+ 4) 每次只推进 1 条 `Current question`,允许围绕这 1 条问题多轮沟通。
14
+ 5) 当前问题未标记为 `frozen` 或 `deferred` 前,不进入下一题。
15
+ 6) 每轮都要把结论落到 `plan/<timestamp>-<slug>.intake.md`,并输出 `Ready for ws-plan: yes/no`。
16
+ 7) 只有关键问题已冻结时,`Next` 才能进入 `/ws-plan`;否则继续 `/ws-intake`。
17
+ <!-- AIWS_MANAGED_END:claude:ws-intake -->
18
+
19
+ 可在下方追加本项目对 Claude Code 的额外说明(托管块外内容会被保留)。
@@ -14,7 +14,8 @@ description: 收尾(门禁 + 安全合并 + submodule→主仓库顺序 push
14
14
  前置(必须):
15
15
  - 工作区是干净的:`git status --porcelain` 无输出(若有未提交改动:先 commit 或 stash)
16
16
  - change 分支已存在:`change/<change-id>`(也支持 `changes/`、`ws/`、`ws-change/`)
17
- - 若使用 worktree:在目标分支所在 worktree 执行(`aiws change finish` 会提示正确的 worktree)
17
+ - 若使用 worktree:普通 finish 的 `validate/evidence/state` 先在 `change/<change-id>` worktree 完成;真正执行 `aiws change finish` 时再切到目标分支所在 worktree(命令会提示正确的 worktree
18
+ - 若 `aiws change status <change-id>` 输出 `governance_rule: finish_resume_required`:说明 merge 已发生,只剩 push / archive / cleanup closeout;直接在该 worktree 运行 `aiws change finish <change-id> --push`,不要先跑 `aiws validate . --stamp`
18
19
  - 若存在 `.gitmodules`:必须为每个 submodule 配置 `submodule.<name>.branch`(否则无法确定性减少 detached;先运行 `$ws-submodule-setup` 并提交 `.gitmodules`)
19
20
 
20
21
  阶段定位:
@@ -60,7 +61,11 @@ if [[ -f .gitmodules ]]; then
60
61
  fi
61
62
  fi
62
63
  ```
63
- 1) (推荐)先跑一次门禁并落盘证据:
64
+ 0.5) 先运行 `aiws change status <change-id>`,优先看稳定字段 `governance_rule:`:
65
+ - 若为 `finish_resume_required`:直接跳到步骤 2 执行 `aiws change finish <change-id> --push`
66
+ - 若不是该值:按普通 finish 继续;不要依赖自然语言提示句做分支判断
67
+
68
+ 1) (推荐,仅适用于普通 finish,且应在 `change/<change-id>` worktree 执行)先跑一次门禁并落盘证据:
64
69
  ```bash
65
70
  if [[ -x "./node_modules/.bin/aiws" ]]; then
66
71
  ./node_modules/.bin/aiws validate . --stamp
@@ -70,7 +75,10 @@ else
70
75
  npx @aipper/aiws validate . --stamp
71
76
  fi
72
77
  ```
73
- 1.1) (强烈建议)收敛持久证据并回填 `Evidence_Path`:
78
+ 若你已经位于目标分支 worktree,且 `governance_rule` 不是 `finish_resume_required`:
79
+ - 不要在这里跑 `aiws validate . --stamp`
80
+ - 先回 `change/<change-id>` worktree 补齐 finish gate,或先跑 `$ws-verify-before-complete`
81
+ 1.1) (强烈建议,仅适用于普通 finish)收敛持久证据并回填 `Evidence_Path`:
74
82
  ```bash
75
83
  change_id="<change-id>"
76
84
  if [[ -x "./node_modules/.bin/aiws" ]]; then
@@ -81,7 +89,7 @@ else
81
89
  npx @aipper/aiws change evidence "${change_id}"
82
90
  fi
83
91
  ```
84
- 1.2) (可选)生成状态快照(建议):
92
+ 1.2) (可选,仅适用于普通 finish)生成状态快照(建议):
85
93
  ```bash
86
94
  aiws change state "${change_id}" --write
87
95
  ```
@@ -0,0 +1,31 @@
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
+ 1) 先读 `AI_PROJECT.md` / `REQUIREMENTS.md` / `AI_WORKSPACE.md`,必要时先 `/ws-preflight`。
15
+ 2) 若存在最新 `plan/*.intake.md`,先续写它;否则新建一份 intake 草案。
16
+ 3) 把当前任务拆成 `Open Questions`,状态只允许 `open / in_discussion / frozen / deferred`。
17
+ 4) 每次只推进 1 个当前问题,并显式输出:
18
+ - `Current question:`
19
+ - `Why it matters:`
20
+ - `Current options / current understanding:`
21
+ - `Exit condition:`
22
+ 5) 当前问题在没有被标记成 `frozen` 或 `deferred` 前,不进入下一题。
23
+ 6) 每轮都要把 intake 草案写盘,至少包含:
24
+ - `Context`
25
+ - `Open Questions`
26
+ - `Resolved Questions`
27
+ - `Frozen Decisions`
28
+ - `Draft Scope`
29
+ - `Draft Verify`
30
+ - `Ready for ws-plan: yes/no`
31
+ 7) 若关键问题已冻结:`Next` 指向 `/ws-plan`;否则继续 `/ws-intake`。
@@ -12,7 +12,9 @@ description: 收尾:fast-forward 合并并把 submodule 并回目标分支后
12
12
  前置(必须):
13
13
  - 工作区干净:`git status --porcelain` 无输出(否则先 commit 或 stash)
14
14
  - change 分支存在(`change/<change-id>`;也支持 `changes/`、`ws/`、`ws-change/`)
15
- - 若存在 `.gitmodules`:必须为每个 submodule 配置 `submodule.<name>.branch`(否则先运行 `/ws-submodule-setup` 并提交 `.gitmodules`)
15
+ - 普通 finish `validate/evidence/state` 应先在 `change/<change-id>` worktree 完成;真正执行 `aiws change finish` 时再切到目标分支所在 worktree
16
+ - 若 `aiws change status <change-id>` 输出 `governance_rule: finish_resume_required`:说明 merge 已发生,只需继续 push / archive / cleanup closeout;直接在提示的 worktree 运行 `aiws change finish <change-id> --push`
17
+ - 若存在 `.gitmodules`:必须为每个 submodule 配置 `submodule.<name>.branch`(否则先运行 `/ws-submodule-setup` 并提交 `.gitmodules`)
16
18
 
17
19
  步骤(建议):
18
20
  0) 若存在 `.gitmodules`,先检查 submodule branch 配置是否齐全(缺失则停止并提示 setup):
@@ -34,9 +36,11 @@ if [[ -f .gitmodules ]]; then
34
36
  fi
35
37
  ```
36
38
  1) 先运行 `/ws-preflight`(确保真值文件齐全)。
37
- 2) (推荐)门禁校验并落盘证据:`aiws validate . --stamp`(未安装全局 aiws 时可用 `npx @aipper/aiws validate . --stamp`)。
38
- 2.1) (强烈建议)收敛持久证据并回填 `Evidence_Path`:`aiws change evidence <change-id>`(未安装全局 aiws 时可用 `npx @aipper/aiws change evidence <change-id>`)。
39
- 2.2) (可选)生成状态快照(建议):`aiws change state <change-id> --write`。
39
+ 2) 先运行 `aiws change status <change-id>`,优先看稳定字段 `governance_rule:`。
40
+ - 若为 `finish_resume_required`:直接跳到步骤 3 执行 `aiws change finish <change-id> --push`
41
+ - 若不是该值:按普通 finish 继续;不要依赖自然语言提示句做分支判断
42
+ 2.1) 普通 finish 时,`aiws validate . --stamp` / `aiws change evidence <change-id>` / `aiws change state <change-id> --write` 应在 `change/<change-id>` worktree 完成。
43
+ - 如果已经在目标分支 worktree,且 `governance_rule` 不是 `finish_resume_required`,不要在这里跑 `aiws validate . --stamp`;先回 `change/<change-id>` worktree,或先跑 `/ws-verify-before-complete`
40
44
  3) 若不存在 `.gitmodules`,或 submodules 已按顺序处理完成,优先直接执行最小收尾闭环:
41
45
  - `aiws change finish <change-id> --push`
42
46
  - 若当前就在 `change/<change-id>` 分支上,也可省略 `<change-id>`
@@ -0,0 +1,22 @@
1
+ ---
2
+ description: 计划前置澄清:逐条冻结问题并写入 intake 草案,再交给 ws-plan
3
+ ---
4
+ <!-- AIWS_MANAGED_BEGIN:opencode:ws-intake -->
5
+ # ws intake
6
+
7
+ 用中文输出(命令/路径/代码标识符保持原样不翻译)。
8
+
9
+ 目标:
10
+ - 在正式 `/ws-plan` 前,先把需求里的待确认问题逐条澄清并冻结。
11
+
12
+ 执行建议:
13
+ 1) 先读取 `AI_PROJECT.md` / `REQUIREMENTS.md` / `AI_WORKSPACE.md`。
14
+ 2) 若存在最新 `plan/*.intake.md`,先续写;否则创建新的 intake 草案。
15
+ 3) 把问题写成 `Open Questions`,状态只允许 `open / in_discussion / frozen / deferred`。
16
+ 4) 每次只推进 1 条 `Current question`,允许围绕这 1 条问题多轮沟通。
17
+ 5) 当前问题未标记为 `frozen` 或 `deferred` 前,不进入下一题。
18
+ 6) 每轮都要把结论落到 `plan/<timestamp>-<slug>.intake.md`,并输出 `Ready for ws-plan: yes/no`。
19
+ 7) 只有关键问题已冻结时,`Next` 才能进入 `/ws-plan`;否则继续 `/ws-intake`。
20
+ <!-- AIWS_MANAGED_END:opencode:ws-intake -->
21
+
22
+ 可在下方追加本项目对 OpenCode 的额外说明(托管块外内容会被保留)。
@@ -12,7 +12,9 @@ description: 收尾:fast-forward 合并并把 submodule 并回目标分支后
12
12
  前置(必须):
13
13
  - 工作区干净:`git status --porcelain` 无输出(否则先 commit 或 stash)
14
14
  - change 分支存在(`change/<change-id>`;也支持 `changes/`、`ws/`、`ws-change/`)
15
- - 若存在 `.gitmodules`:必须为每个 submodule 配置 `submodule.<name>.branch`(否则先运行 `/ws-submodule-setup` 并提交 `.gitmodules`)
15
+ - 普通 finish `validate/evidence/state` 应先在 `change/<change-id>` worktree 完成;真正执行 `aiws change finish` 时再切到目标分支所在 worktree
16
+ - 若 `aiws change status <change-id>` 输出 `governance_rule: finish_resume_required`:说明 merge 已发生,只需继续 push / archive / cleanup closeout;直接在提示的 worktree 运行 `aiws change finish <change-id> --push`
17
+ - 若存在 `.gitmodules`:必须为每个 submodule 配置 `submodule.<name>.branch`(否则先运行 `/ws-submodule-setup` 并提交 `.gitmodules`)
16
18
 
17
19
  步骤(建议):
18
20
  0) 若存在 `.gitmodules`,先检查 submodule branch 配置是否齐全(缺失则停止并提示 setup):
@@ -34,9 +36,11 @@ if [[ -f .gitmodules ]]; then
34
36
  fi
35
37
  ```
36
38
  1) 先运行 `/ws-preflight`(确保真值文件齐全)。
37
- 2) (推荐)门禁校验并落盘证据:`aiws validate . --stamp`(未安装全局 aiws 时可用 `npx @aipper/aiws validate . --stamp`)。
38
- 2.1) (强烈建议)收敛持久证据并回填 `Evidence_Path`:`aiws change evidence <change-id>`(未安装全局 aiws 时可用 `npx @aipper/aiws change evidence <change-id>`)。
39
- 2.2) (可选)生成状态快照(建议):`aiws change state <change-id> --write`。
39
+ 2) 先运行 `aiws change status <change-id>`,优先看稳定字段 `governance_rule:`。
40
+ - 若为 `finish_resume_required`:直接跳到步骤 3 执行 `aiws change finish <change-id> --push`
41
+ - 若不是该值:按普通 finish 继续;不要依赖自然语言提示句做分支判断
42
+ 2.1) 普通 finish 时,`aiws validate . --stamp` / `aiws change evidence <change-id>` / `aiws change state <change-id> --write` 应在 `change/<change-id>` worktree 完成。
43
+ - 如果已经在目标分支 worktree,且 `governance_rule` 不是 `finish_resume_required`,不要在这里跑 `aiws validate . --stamp`;先回 `change/<change-id>` worktree,或先跑 `/ws-verify-before-complete`
40
44
  3) 若不存在 `.gitmodules`,或 submodules 已按顺序处理完成,优先直接执行最小收尾闭环:
41
45
  - `aiws change finish <change-id> --push`
42
46
  - 若当前就在 `change/<change-id>` 分支上,也可省略 `<change-id>`
@@ -0,0 +1,22 @@
1
+ ---
2
+ description: 计划前置澄清:逐条冻结问题并写入 intake 草案,再交给 ws-plan
3
+ ---
4
+ <!-- AIWS_MANAGED_BEGIN:opencode:ws-intake -->
5
+ # ws intake
6
+
7
+ 用中文输出(命令/路径/代码标识符保持原样不翻译)。
8
+
9
+ 目标:
10
+ - 在正式 `/ws-plan` 前,先把需求里的待确认问题逐条澄清并冻结。
11
+
12
+ 执行建议:
13
+ 1) 先读取 `AI_PROJECT.md` / `REQUIREMENTS.md` / `AI_WORKSPACE.md`。
14
+ 2) 若存在最新 `plan/*.intake.md`,先续写;否则创建新的 intake 草案。
15
+ 3) 把问题写成 `Open Questions`,状态只允许 `open / in_discussion / frozen / deferred`。
16
+ 4) 每次只推进 1 条 `Current question`,允许围绕这 1 条问题多轮沟通。
17
+ 5) 当前问题未标记为 `frozen` 或 `deferred` 前,不进入下一题。
18
+ 6) 每轮都要把结论落到 `plan/<timestamp>-<slug>.intake.md`,并输出 `Ready for ws-plan: yes/no`。
19
+ 7) 只有关键问题已冻结时,`Next` 才能进入 `/ws-plan`;否则继续 `/ws-intake`。
20
+ <!-- AIWS_MANAGED_END:opencode:ws-intake -->
21
+
22
+ 可在下方追加本项目对 OpenCode 的额外说明(托管块外内容会被保留)。
@@ -14,7 +14,8 @@ description: 收尾(门禁 + 安全合并 + submodule→主仓库顺序 push
14
14
  前置(必须):
15
15
  - 工作区是干净的:`git status --porcelain` 无输出(若有未提交改动:先 commit 或 stash)
16
16
  - change 分支已存在:`change/<change-id>`(也支持 `changes/`、`ws/`、`ws-change/`)
17
- - 若使用 worktree:在目标分支所在 worktree 执行(`aiws change finish` 会提示正确的 worktree)
17
+ - 若使用 worktree:普通 finish 的 `validate/evidence/state` 先在 `change/<change-id>` worktree 完成;真正执行 `aiws change finish` 时再切到目标分支所在 worktree(命令会提示正确的 worktree
18
+ - 若 `aiws change status <change-id>` 输出 `governance_rule: finish_resume_required`:说明 merge 已发生,只剩 push / archive / cleanup closeout;直接在该 worktree 运行 `aiws change finish <change-id> --push`,不要先跑 `aiws validate . --stamp`
18
19
  - 若存在 `.gitmodules`:必须为每个 submodule 配置 `submodule.<name>.branch`(否则无法确定性减少 detached;先运行 `$ws-submodule-setup` 并提交 `.gitmodules`)
19
20
 
20
21
  阶段定位:
@@ -60,7 +61,11 @@ if [[ -f .gitmodules ]]; then
60
61
  fi
61
62
  fi
62
63
  ```
63
- 1) (推荐)先跑一次门禁并落盘证据:
64
+ 0.5) 先运行 `aiws change status <change-id>`,优先看稳定字段 `governance_rule:`:
65
+ - 若为 `finish_resume_required`:直接跳到步骤 2 执行 `aiws change finish <change-id> --push`
66
+ - 若不是该值:按普通 finish 继续;不要依赖自然语言提示句做分支判断
67
+
68
+ 1) (推荐,仅适用于普通 finish,且应在 `change/<change-id>` worktree 执行)先跑一次门禁并落盘证据:
64
69
  ```bash
65
70
  if [[ -x "./node_modules/.bin/aiws" ]]; then
66
71
  ./node_modules/.bin/aiws validate . --stamp
@@ -70,7 +75,10 @@ else
70
75
  npx @aipper/aiws validate . --stamp
71
76
  fi
72
77
  ```
73
- 1.1) (强烈建议)收敛持久证据并回填 `Evidence_Path`:
78
+ 若你已经位于目标分支 worktree,且 `governance_rule` 不是 `finish_resume_required`:
79
+ - 不要在这里跑 `aiws validate . --stamp`
80
+ - 先回 `change/<change-id>` worktree 补齐 finish gate,或先跑 `$ws-verify-before-complete`
81
+ 1.1) (强烈建议,仅适用于普通 finish)收敛持久证据并回填 `Evidence_Path`:
74
82
  ```bash
75
83
  change_id="<change-id>"
76
84
  if [[ -x "./node_modules/.bin/aiws" ]]; then
@@ -81,7 +89,7 @@ else
81
89
  npx @aipper/aiws change evidence "${change_id}"
82
90
  fi
83
91
  ```
84
- 1.2) (可选)生成状态快照(建议):
92
+ 1.2) (可选,仅适用于普通 finish)生成状态快照(建议):
85
93
  ```bash
86
94
  aiws change state "${change_id}" --write
87
95
  ```
@@ -0,0 +1,31 @@
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
+ 1) 先读 `AI_PROJECT.md` / `REQUIREMENTS.md` / `AI_WORKSPACE.md`,必要时先 `/ws-preflight`。
15
+ 2) 若存在最新 `plan/*.intake.md`,先续写它;否则新建一份 intake 草案。
16
+ 3) 把当前任务拆成 `Open Questions`,状态只允许 `open / in_discussion / frozen / deferred`。
17
+ 4) 每次只推进 1 个当前问题,并显式输出:
18
+ - `Current question:`
19
+ - `Why it matters:`
20
+ - `Current options / current understanding:`
21
+ - `Exit condition:`
22
+ 5) 当前问题在没有被标记成 `frozen` 或 `deferred` 前,不进入下一题。
23
+ 6) 每轮都要把 intake 草案写盘,至少包含:
24
+ - `Context`
25
+ - `Open Questions`
26
+ - `Resolved Questions`
27
+ - `Frozen Decisions`
28
+ - `Draft Scope`
29
+ - `Draft Verify`
30
+ - `Ready for ws-plan: yes/no`
31
+ 7) 若关键问题已冻结:`Next` 指向 `/ws-plan`;否则继续 `/ws-intake`。
@@ -16,8 +16,9 @@
16
16
  标准链路(建议默认):
17
17
  - `using-aiws`:默认 bootstrap/router;先读真值,先判 workflow,再进入具体阶段;意图不明确时先澄清。
18
18
  - `ws-preflight`:读取真值文件,输出约束摘要;若真值缺失,先停止,不直接开工。
19
+ - `ws-intake`:计划前置澄清;适用于新需求或中大型变更,按“一题一线程”逐条冻结问题,产出 `plan/*.intake.md` 轻量草案。
19
20
  - `ws-plan`:建立 `change/<change-id>` 绑定,落盘 `plan/...`,明确 Verify / Risks / Evidence。
20
- - `ws-plan-verify`:在编码前做计划质检;不过门禁就先修 plan,不跳步进实现。
21
+ - `ws-plan-verify`:在编码前做计划质检 + 多视角方案审查;不过门禁就先修 plan,不跳步进实现。
21
22
  - `ws-dev`:只做可归因、可验证的小步实现;输出 Changed / Verify / Evidence。
22
23
  - `ws-dev-lite`:`ws-dev` 的轻量入口;适用于 simple/local 单点修复,默认不建 `plan/...`、不跑 `ws-plan-verify`,治理归属仍收敛到 `ws-dev`。
23
24
  - `ws-delegate`:仅在任务已绑定且 scope 可控时,使用原生多 agent / sub-agent;否则明确降级为单 agent + 协同工件模式。
@@ -30,6 +31,7 @@
30
31
  - `ws-handoff`:查看/补充归档后的 handoff,给下一次会话或下一位协作者接力。
31
32
 
32
33
  阶段产物(最少):
34
+ - intake:`plan/*.intake.md`
33
35
  - planning:`plan/...`、`changes/<change-id>/proposal.md`、`tasks.md`
34
36
  - implementation:代码 / 配置改动 + Verify 命令记录
35
37
  - collaboration:`changes/<change-id>/analysis/...`、`patches/...`、`review/...`
@@ -43,8 +45,9 @@ OpenCode(如果你主要用 OpenCode,优先):
43
45
  - 若你想按项目固定这组 agent,可参考 `.opencode/oh-my-opencode.json.example`;它只覆盖 `agents`,不接管 hooks/MCP/LSP
44
46
  - 常用手动入口继续保留在 `.opencode/commands/`(migration window 内 `.opencode/command/` 也会保留);直接使用 `/ws-*`
45
47
  - 若你不确定当前任务该先 plan、dev、review 还是 finish:先用 `/using-aiws`
48
+ - 需求还没冻结、想逐条把问题聊清楚:先用 `/ws-intake`
46
49
  - `/ws-preflight`:读取真值文件并输出约束摘要
47
- - `/ws-plan` / `/ws-plan-verify`:先生成计划,再做执行前质检
50
+ - `/ws-plan` / `/ws-plan-verify`:先生成计划,再做执行前质检与多视角方案审查
48
51
  - `/ws-dev`:常规实现/改配置/改测试
49
52
  - `/ws-dev-lite`:小问题直修;若复杂度升高,立刻回到 `/ws-dev` 或 `/ws-plan`
50
53
  - `/ws-delegate`:按 AIWS 委托合同拆分子任务,并优先借用 oMo agent
@@ -60,13 +63,14 @@ Claude Code(如果你主要用 Claude Code):
60
63
  - native skills 在 `.claude/skills/`;command-style 兼容入口保留在 `.claude/commands/`
61
64
  - 常用链路可按 `ws-*` / `p-aiws-*` 理解;native skills 与 compatibility commands 指向同一套 AIWS workflow
62
65
  - 若你不确定当前任务该走哪个阶段:先用 `/using-aiws`
66
+ - 需求还没冻结、想逐条把问题聊清楚:先用 `/ws-intake`
63
67
  - 高风险改动或准备 finish 时,建议额外跑 `/ws-spec-review`、`/ws-quality-review`、`/ws-verify-before-complete`
64
68
 
65
69
  Codex(对应入口,可选):
66
70
  - 若你不想先记住阶段,先用 `$using-aiws` 让 router 判定下一步
67
71
  - 对应入口在 `.agents/skills/`;显式调用时使用 `$ws-*`
68
72
  - `$using-aiws`
69
- - `$ws-preflight` / `$ws-plan` / `$ws-plan-verify` / `$ws-dev` / `$ws-dev-lite` / `$ws-delegate` / `$ws-frontend-design`
73
+ - `$ws-preflight` / `$ws-intake` / `$ws-plan` / `$ws-plan-verify` / `$ws-dev` / `$ws-dev-lite` / `$ws-delegate` / `$ws-frontend-design`
70
74
  - `$ws-review` / `$ws-spec-review` / `$ws-quality-review` / `$ws-commit`
71
75
  - `$ws-verify-before-complete` / `$ws-finish` / `$ws-deliver`
72
76
  - `$ws-pull` / `$ws-push` / `$ws-submodule-setup`
@@ -34,12 +34,13 @@ changes/
34
34
  常用命令(推荐使用 `aiws`;不依赖 dotfiles):
35
35
  - `aiws change start <change-id>`(默认:切到 `change/<change-id>` 并初始化工件目录;若检测到 `.gitmodules` 则默认优先使用 worktree,失败则回退为不切分支,避免 submodule 状态混乱)
36
36
  - `aiws change start <change-id> --no-switch`(superproject + submodule 场景:不切分支,仅准备 `change/<change-id>` 分支与工件目录)
37
- - `aiws change start <change-id> --switch`(显式允许切换 superproject 分支;仅在存在 `.gitmodules` 时有意义)
37
+ - `aiws change start <change-id> --switch`(显式允许切换 superproject 分支;仅切 superproject,不递归切换 submodule;仅在存在 `.gitmodules` 时有意义)
38
38
  - `aiws change start <change-id> --worktree`(推荐用于 superproject + submodule:创建独立 worktree;当前目录分支保持不变)
39
39
  - 可选:`--worktree-dir <path>` 覆盖 worktree 目录
40
40
  - 可选:`--submodules` 在 worktree 内执行 `git submodule update --init --recursive`
41
41
  - `aiws change finish <change-id>`(安全合并:fast-forward 合并回目标分支;在 `change/<change-id>` 分支上执行时会尝试使用 `.ws-change.json` 的 `base_branch` 作为目标分支)
42
42
  - `aiws change finish <change-id> --push [--remote <name>]`(最小收尾闭环:若存在 `.gitmodules` 则先按 `changes/<id>/submodules.targets` 顺序 push submodule,再 push 目标分支;默认优先遵循 upstream 配置;若 `change/<change-id>` 位于独立 worktree,且该 worktree 干净,则在 push 成功后自动执行 worktree cleanup,并把 `changes/<id>/` 自动归档到 `changes/archive/...`,同时生成 `handoff.md` 与 archive commit)
43
+ - 已 archive 的 `change/<change-id>` 才算真正终态;若只是“已 finish 但仍有 active `changes/<id>/` 未归档”,默认应重跑 `aiws change finish <change-id> --push` 续完收尾,而不是继续开发或复用旧 branch 做新需求。
43
44
  - `aiws change new <change-id>`
44
45
  - `aiws change list`
45
46
  - `aiws change status <change-id>`
@@ -32,6 +32,7 @@
32
32
  ".claude/commands/p-aiws-validate.md",
33
33
  ".claude/commands/p-aiws-rollback.md",
34
34
  ".claude/commands/ws-preflight.md",
35
+ ".claude/commands/ws-intake.md",
35
36
  ".claude/commands/ws-migrate.md",
36
37
  ".claude/commands/ws-dev.md",
37
38
  ".claude/commands/ws-dev-lite.md",
@@ -54,6 +55,7 @@
54
55
  ".opencode/command/p-aiws-validate.md",
55
56
  ".opencode/command/p-aiws-rollback.md",
56
57
  ".opencode/command/ws-preflight.md",
58
+ ".opencode/command/ws-intake.md",
57
59
  ".opencode/command/ws-migrate.md",
58
60
  ".opencode/command/ws-dev.md",
59
61
  ".opencode/command/ws-dev-lite.md",
@@ -263,6 +265,7 @@
263
265
  ".agents/skills/ws-analyze/SKILL.md",
264
266
  ".agents/skills/ws-bugfix/SKILL.md",
265
267
  ".agents/skills/ws-commit/SKILL.md",
268
+ ".agents/skills/ws-intake/SKILL.md",
266
269
  ".agents/skills/ws-dev/SKILL.md",
267
270
  ".agents/skills/ws-dev-lite/SKILL.md",
268
271
  ".agents/skills/ws-delegate/SKILL.md",
@@ -303,6 +306,7 @@
303
306
  ".claude/commands/p-aiws-hooks-install.md",
304
307
  ".claude/commands/p-aiws-hooks-status.md",
305
308
  ".claude/commands/using-aiws.md",
309
+ ".claude/commands/ws-intake.md",
306
310
  ".claude/commands/ws-plan.md",
307
311
  ".claude/commands/ws-plan-verify.md",
308
312
  ".claude/commands/ws-bugfix.md",
@@ -323,6 +327,7 @@
323
327
  ".opencode/command/p-aiws-hooks-install.md",
324
328
  ".opencode/command/p-aiws-hooks-status.md",
325
329
  ".opencode/command/using-aiws.md",
330
+ ".opencode/command/ws-intake.md",
326
331
  ".opencode/command/ws-plan.md",
327
332
  ".opencode/command/ws-delegate.md",
328
333
  ".opencode/command/ws-plan-verify.md",
@@ -373,6 +378,8 @@
373
378
  ".opencode/skills/ws-bugfix/SKILL.md",
374
379
  ".claude/skills/ws-commit/SKILL.md",
375
380
  ".opencode/skills/ws-commit/SKILL.md",
381
+ ".claude/skills/ws-intake/SKILL.md",
382
+ ".opencode/skills/ws-intake/SKILL.md",
376
383
  ".claude/skills/ws-deliver/SKILL.md",
377
384
  ".opencode/skills/ws-deliver/SKILL.md",
378
385
  ".claude/skills/ws-dev/SKILL.md",
@@ -615,6 +622,9 @@
615
622
  ".claude/commands/using-aiws.md": [
616
623
  "claude:using-aiws"
617
624
  ],
625
+ ".claude/commands/ws-intake.md": [
626
+ "claude:ws-intake"
627
+ ],
618
628
  ".claude/commands/ws-plan.md": [
619
629
  "claude:ws-plan"
620
630
  ],
@@ -678,6 +688,9 @@
678
688
  ".opencode/command/using-aiws.md": [
679
689
  "opencode:using-aiws"
680
690
  ],
691
+ ".opencode/command/ws-intake.md": [
692
+ "opencode:ws-intake"
693
+ ],
681
694
  ".opencode/command/ws-plan.md": [
682
695
  "opencode:ws-plan"
683
696
  ],
@@ -777,6 +790,9 @@
777
790
  ".opencode/commands/ws-handoff.md": [
778
791
  "opencode:ws-handoff"
779
792
  ],
793
+ ".opencode/commands/ws-intake.md": [
794
+ "opencode:ws-intake"
795
+ ],
780
796
  ".opencode/commands/ws-spec-review.md": [
781
797
  "opencode:ws-spec-review"
782
798
  ],