@aipper/aiws-spec 0.0.28 → 0.0.30
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/cli-interface.md +10 -12
- package/docs/opencode-autonomous-swarm.md +178 -0
- package/docs/opencode-omo-adapter.md +123 -4
- package/docs/opencode-omo-validation-checklist.md +47 -0
- package/docs/opencode-subagent-first.md +187 -0
- package/docs/workflow-delegation-context-injection.md +217 -0
- package/docs/workflow-delegation-contracts.json +108 -2
- package/docs/workflow-delegation-contracts.md +13 -0
- package/docs/workflow-delegation-contracts.schema.json +152 -0
- package/docs/workflow-governance-rules.json +47 -6
- package/docs/workflow-governance-rules.md +8 -7
- package/docs/workflow-governance-rules.schema.json +39 -1
- package/docs/workflow-review-gates.json +6 -0
- package/docs/workflow-review-gates.md +14 -5
- package/docs/workflow-review-gates.schema.json +4 -0
- package/docs/workflow-router-rules.json +72 -8
- package/docs/workflow-router-rules.md +21 -14
- package/docs/workflow-router-rules.schema.json +4 -0
- package/docs/workflow-stage-contracts.json +24 -5
- package/docs/workflow-stage-contracts.md +16 -15
- package/docs/workflow-stage-contracts.schema.json +12 -1
- package/package.json +1 -1
- package/templates/workspace/.agents/skills/using-aiws/SKILL.md +16 -10
- package/templates/workspace/.agents/skills/ws-commit/SKILL.md +6 -118
- package/templates/workspace/.agents/skills/ws-deliver/SKILL.md +6 -218
- package/templates/workspace/.agents/skills/ws-dev/SKILL.md +82 -141
- package/templates/workspace/.agents/skills/ws-finish/SKILL.md +9 -204
- package/templates/workspace/.agents/skills/ws-handoff/SKILL.md +10 -44
- package/templates/workspace/.agents/skills/ws-migrate/SKILL.md +6 -42
- package/templates/workspace/.agents/skills/ws-plan-verify/SKILL.md +6 -58
- package/templates/workspace/.agents/skills/ws-pull/SKILL.md +8 -109
- package/templates/workspace/.agents/skills/ws-push/SKILL.md +8 -100
- package/templates/workspace/.agents/skills/ws-review/SKILL.md +6 -1
- package/templates/workspace/.agents/skills/ws-submodule-setup/SKILL.md +10 -57
- package/templates/workspace/.agents/skills/ws-verify-before-complete/SKILL.md +12 -53
- package/templates/workspace/{changes → .aiws/changes}/README.md +20 -23
- package/templates/workspace/{changes → .aiws/changes}/templates/proposal.md +12 -12
- package/templates/workspace/{changes → .aiws/changes}/templates/tasks.md +8 -8
- package/templates/workspace/{issues → .aiws/issues}/problem-issues.csv +1 -1
- package/templates/workspace/.aiws/journal/.gitkeep +1 -0
- package/templates/workspace/{requirements → .aiws/requirements}/requirements-issues.csv +1 -1
- package/templates/workspace/.aiws/tmp/.gitkeep +0 -0
- package/templates/workspace/{tools → .aiws/tools}/requirements_contract.py +2 -2
- package/templates/workspace/{tools → .aiws/tools}/requirements_contract_sync.py +2 -2
- package/templates/workspace/{tools → .aiws/tools}/requirements_flow_gen.py +1 -1
- package/templates/workspace/{tools → .aiws/tools}/server_test_runner.py +10 -10
- package/templates/workspace/{tools → .aiws/tools}/ws_change_check.py +23 -23
- package/templates/workspace/{tools → .aiws/tools}/ws_resolve_sub_target.sh +2 -2
- package/templates/workspace/{tools → .aiws/tools}/ws_tasks_plan.py +3 -3
- package/templates/workspace/.claude/commands/ws-review.md +5 -1
- package/templates/workspace/.claude/settings.json.example +26 -0
- package/templates/workspace/.claude/skills/ws-commit/SKILL.md +6 -118
- package/templates/workspace/.claude/skills/ws-deliver/SKILL.md +6 -218
- package/templates/workspace/.claude/skills/ws-dev/SKILL.md +52 -141
- package/templates/workspace/.claude/skills/ws-finish/SKILL.md +9 -204
- package/templates/workspace/.claude/skills/ws-handoff/SKILL.md +10 -44
- package/templates/workspace/.claude/skills/ws-migrate/SKILL.md +6 -42
- package/templates/workspace/.claude/skills/ws-plan-verify/SKILL.md +6 -49
- package/templates/workspace/.claude/skills/ws-pull/SKILL.md +8 -109
- package/templates/workspace/.claude/skills/ws-push/SKILL.md +8 -100
- package/templates/workspace/.claude/skills/ws-review/SKILL.md +6 -1
- package/templates/workspace/.claude/skills/ws-submodule-setup/SKILL.md +10 -57
- package/templates/workspace/.claude/skills/ws-verify-before-complete/SKILL.md +12 -53
- package/templates/workspace/.githooks/pre-commit +13 -0
- package/templates/workspace/.githooks/pre-push +7 -0
- package/templates/workspace/.opencode/command/ws-auto.md +33 -0
- package/templates/workspace/.opencode/command/ws-autonomy.md +25 -0
- package/templates/workspace/.opencode/command/ws-review.md +5 -1
- package/templates/workspace/.opencode/commands/ws-auto.md +33 -0
- package/templates/workspace/.opencode/commands/ws-autonomy.md +25 -0
- package/templates/workspace/.opencode/commands/ws-commit.md +4 -56
- package/templates/workspace/.opencode/commands/ws-deliver.md +10 -50
- package/templates/workspace/.opencode/commands/ws-finish.md +11 -3
- package/templates/workspace/.opencode/commands/ws-handoff.md +9 -17
- package/templates/workspace/.opencode/commands/ws-migrate.md +10 -17
- package/templates/workspace/.opencode/commands/ws-plan-verify.md +5 -15
- package/templates/workspace/.opencode/commands/ws-pull.md +6 -75
- package/templates/workspace/.opencode/commands/ws-push.md +7 -82
- package/templates/workspace/.opencode/commands/ws-review.md +5 -1
- package/templates/workspace/.opencode/commands/ws-submodule-setup.md +8 -47
- package/templates/workspace/.opencode/commands/ws-verify-before-complete.md +10 -19
- package/templates/workspace/.opencode/helpers/approval-whitelist-check.sh +148 -0
- package/templates/workspace/.opencode/helpers/approval-whitelist-run.sh +82 -0
- package/templates/workspace/.opencode/helpers/approval-whitelist-watchdog.sh +144 -0
- package/templates/workspace/.opencode/helpers/tmux-swarm-rescue.sh +56 -0
- package/templates/workspace/.opencode/helpers/tmux-swarm-scan.sh +46 -0
- package/templates/workspace/.opencode/lib/aiws-context.js +953 -0
- package/templates/workspace/.opencode/oh-my-opencode.json.example +64 -4
- package/templates/workspace/.opencode/plugins/aiws-inject-context.js +201 -0
- package/templates/workspace/.opencode/plugins/aiws-session-start.js +86 -0
- package/templates/workspace/.opencode/plugins/aiws-workflow-state.js +116 -0
- package/templates/workspace/.opencode/scripts/ws-plan-gen-submodule-targets.sh +27 -0
- package/templates/workspace/.opencode/scripts/ws-plan-setup-worktree.sh +31 -0
- package/templates/workspace/.opencode/skills/using-aiws/SKILL.md +130 -77
- package/templates/workspace/.opencode/skills/ws-analyze/SKILL.md +1 -1
- package/templates/workspace/.opencode/skills/ws-auto/SKILL.md +46 -0
- package/templates/workspace/.opencode/skills/ws-autonomy/SKILL.md +62 -0
- package/templates/workspace/.opencode/skills/ws-bugfix/SKILL.md +1 -1
- package/templates/workspace/.opencode/skills/ws-commit/SKILL.md +6 -118
- package/templates/workspace/.opencode/skills/ws-delegate/SKILL.md +115 -40
- package/templates/workspace/.opencode/skills/ws-deliver/SKILL.md +6 -218
- package/templates/workspace/.opencode/skills/ws-dev/SKILL.md +105 -146
- package/templates/workspace/.opencode/skills/ws-dev-lite/SKILL.md +23 -7
- package/templates/workspace/.opencode/skills/ws-finish/SKILL.md +9 -204
- package/templates/workspace/.opencode/skills/ws-frontend-design/SKILL.md +1 -1
- package/templates/workspace/.opencode/skills/ws-handoff/SKILL.md +10 -44
- package/templates/workspace/.opencode/skills/ws-intake/SKILL.md +43 -4
- package/templates/workspace/.opencode/skills/ws-migrate/SKILL.md +6 -42
- package/templates/workspace/.opencode/skills/ws-plan/SKILL.md +15 -55
- package/templates/workspace/.opencode/skills/ws-plan-verify/SKILL.md +6 -49
- package/templates/workspace/.opencode/skills/ws-preflight/SKILL.md +1 -1
- package/templates/workspace/.opencode/skills/ws-pull/SKILL.md +8 -109
- package/templates/workspace/.opencode/skills/ws-push/SKILL.md +8 -100
- package/templates/workspace/.opencode/skills/ws-quality-review/SKILL.md +7 -2
- package/templates/workspace/.opencode/skills/ws-req-change/SKILL.md +1 -1
- package/templates/workspace/.opencode/skills/ws-req-contract-sync/SKILL.md +1 -1
- package/templates/workspace/.opencode/skills/ws-req-contract-validate/SKILL.md +1 -1
- package/templates/workspace/.opencode/skills/ws-req-flow-sync/SKILL.md +1 -1
- package/templates/workspace/.opencode/skills/ws-req-review/SKILL.md +1 -1
- package/templates/workspace/.opencode/skills/ws-review/SKILL.md +35 -4
- package/templates/workspace/.opencode/skills/ws-rule/SKILL.md +1 -1
- package/templates/workspace/.opencode/skills/ws-spec-review/SKILL.md +1 -1
- package/templates/workspace/.opencode/skills/ws-submodule-setup/SKILL.md +10 -57
- package/templates/workspace/.opencode/skills/ws-verify-before-complete/SKILL.md +45 -55
- package/templates/workspace/AGENTS.md +32 -84
- package/templates/workspace/AI_PROJECT.md +5 -5
- package/templates/workspace/AI_WORKSPACE.md +1 -1
- package/templates/workspace/REQUIREMENTS.md +1 -1
- package/templates/workspace/gitignore +1 -1
- package/templates/workspace/manifest.json +215 -395
- /package/templates/workspace/{changes → .aiws/changes}/templates/design.md +0 -0
- /package/templates/workspace/{memory-bank → .aiws/memory-bank}/README.md +0 -0
- /package/templates/workspace/{memory-bank → .aiws/memory-bank}/architecture.md +0 -0
- /package/templates/workspace/{memory-bank → .aiws/memory-bank}/implementation-plan.md +0 -0
- /package/templates/workspace/{memory-bank → .aiws/memory-bank}/progress.md +0 -0
- /package/templates/workspace/{memory-bank → .aiws/memory-bank}/tech-stack.md +0 -0
- /package/templates/workspace/{requirements → .aiws/requirements}/CHANGELOG.md +0 -0
- /package/templates/workspace/{secrets → .aiws/secrets}/test-accounts.example.json +0 -0
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ws-review
|
|
3
|
-
description:
|
|
3
|
+
description: 使用时机:需要审计当前改动、查找风险时。触发词:审计、评审、review、风险检查、回归检查。注意:高风险变更应补 ws-spec-review + ws-quality-review。
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
+
## 双审查边界
|
|
7
|
+
|
|
8
|
+
- `ws-review` 是通用评审入口
|
|
9
|
+
- **高风险或准备 finish 的变更**:必须拆为 `ws-spec-review`(流程/归因/真值完整性)+ `ws-quality-review`(行为回归/边界条件/测试覆盖),两份独立证据
|
|
10
|
+
- 单份 review 文件同时覆盖 spec 和 quality 不计为双审查
|
|
11
|
+
|
|
6
12
|
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
7
13
|
|
|
8
14
|
目标:在提交/交付前审计当前改动,对照真值文件检查是否越界,并把审计证据优先落盘到 `changes/<change-id>/review/`(若无法确定 `change-id` 再回退 `.agentdocs/tmp/review/`)。
|
|
15
|
+
若当前语境已经明确是“准备交付/finish”,则本入口不应只停留在通用 review:应继续同时补齐 `$ws-spec-review` 与 `$ws-quality-review`,把 dual review gate 一次性收敛完。
|
|
9
16
|
|
|
10
17
|
OpenCode + oMo 优先策略:
|
|
11
18
|
- 若检测到 `.opencode/oh-my-opencode.json`,或当前会话明确可用 `oracle` / `explore` / `librarian`,优先借用这些 agent 做 review。
|
|
@@ -14,6 +21,7 @@ OpenCode + oMo 优先策略:
|
|
|
14
21
|
|
|
15
22
|
阶段定位:
|
|
16
23
|
- review 阶段;负责对当前改动做规范、风险和验证完整性的审计。
|
|
24
|
+
- 双审查边界:ws-spec-review 查流程/真值归因,ws-quality-review 查行为/回归/测试。高风险或准备 finish 的任务必须同时完成两者。
|
|
17
25
|
|
|
18
26
|
必需输入:
|
|
19
27
|
- 当前 `git status` / `git diff`
|
|
@@ -37,16 +45,39 @@ OpenCode + oMo 优先策略:
|
|
|
37
45
|
步骤(建议):
|
|
38
46
|
1) 先做 preflight:定位项目根目录,读取 `AI_PROJECT.md` / `REQUIREMENTS.md` / `AI_WORKSPACE.md`,输出约束摘要。
|
|
39
47
|
- 若检测到 oMo:优先让 `@oracle` 做独立审查;必要时再让 `@explore` / `@librarian` 补上下文。
|
|
40
|
-
|
|
48
|
+
1.5) **Triage**:preflight 后立即判断本 change 是否需要双审查:
|
|
49
|
+
- 需要双审查的条件:改动涉及 REQUIREMENTS 真值、跨 3+ 文件、涉及安全/数据一致性、或准备 finish
|
|
50
|
+
- 若需要双审查:在步骤 3 开始时即标注 "dual-review: required",并规划 spec-review + quality-review 两条并行路径
|
|
51
|
+
- 若不需要双审查:继续通用 review 流程,标注 "dual-review: not-required"
|
|
52
|
+
- **不得等到 step 6 才决定是否需要双审查**——风险判定必须前置
|
|
53
|
+
- **Triage 输出格式**:
|
|
54
|
+
```
|
|
55
|
+
Triage: dual-review: required | not-required
|
|
56
|
+
Rationale: <one reason>
|
|
57
|
+
Spec review scope: <what to check> (if required)
|
|
58
|
+
Quality review scope: <what to check> (if required)
|
|
59
|
+
```
|
|
60
|
+
- Findings 格式要求:每个 finding 必须有 [Critical/Warning/Info] 级别标签 + 归因到 SPEC/QUALITY/REGRESSION 类别
|
|
61
|
+
3) 基于 `git status` / `git diff`(以及你实际运行过的测试结果),对照 `AI_PROJECT.md` 与 `REQUIREMENTS.md` 检查:
|
|
41
62
|
- 是否存在越界目录改动/危险操作
|
|
42
63
|
- 是否有可复现验证命令与证据
|
|
43
64
|
- 是否维护了 `changes/<change-id>/` 或相关 `issues/*.csv`
|
|
44
65
|
- 若存在 `analysis/` / `patches/`:审查这些委托工件是否已被主 agent 理解、是否需要采用/拒绝,并把结论写入 review 文件
|
|
45
|
-
|
|
66
|
+
4) Workflow State Suffix 审计(检查 4 种后缀使用是否一致):
|
|
67
|
+
- `session` 后缀:只由 ws-dev-lite / ws-intake 写入,标记会话级进度(如 `[workflow-state:session:in_progress]`)
|
|
68
|
+
- `gate` 后缀:由 ws-dev / ws-plan-verify 写入,标记计划/实现门禁结果(如 `[workflow-state:gate:plan_passed]`)
|
|
69
|
+
- `plan` 后缀:由 ws-plan 写入,标记计划阶段状态(如 `[workflow-state:plan:in_progress]`)
|
|
70
|
+
- `gateway` 后缀:由 ws-finish / ws-deliver 写入,标记交付门禁结果(如 `[workflow-state:gateway:finish_gate_ok]`)
|
|
71
|
+
- 检查当前 change 中使用的后缀类型是否正确对应所在阶段;若出现混用(如 session 与 gate 在同一文件),在审计报告中标记异常并说明应该修正的方向。
|
|
72
|
+
5) 将审计落盘到(目录不存在则创建):
|
|
46
73
|
- 默认:`changes/<change-id>/review/codex-review.md`
|
|
47
74
|
- 回退:`.agentdocs/tmp/review/codex-review.md`(仅在无法确定 `change-id` 时使用)
|
|
48
75
|
- 若已有其它 reviewer 文件:不要覆盖它们;当前 reviewer 应写自己的文件或更新自己的汇总文件
|
|
49
|
-
|
|
76
|
+
6) 若 triage 标记为 `dual_review_required`,继续补齐 dual review gate:
|
|
77
|
+
- 运行/收敛 `$ws-spec-review`,落盘 `changes/<change-id>/review/spec-review.md`(或回退 `.agentdocs/tmp/review/spec-review.md`)
|
|
78
|
+
- 运行/收敛 `$ws-quality-review`,落盘 `changes/<change-id>/review/quality-review.md`(或回退 `.agentdocs/tmp/review/quality-review.md`)
|
|
79
|
+
- 不要把单个 `codex-review.md` 误当成 finish gate 已完成
|
|
80
|
+
7) 回复中输出:
|
|
50
81
|
- `证据(Evidence):` 证据文件路径
|
|
51
82
|
- `主要风险(Top risks):` 3–8 条(高→低)
|
|
52
83
|
- `下一步(Next):` 最小修复清单 + 最小验证命令
|
|
@@ -1,65 +1,18 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ws-submodule-setup
|
|
3
|
-
description:
|
|
3
|
+
description: Thin wrapper for `aiws submodule-setup`
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
# ws-submodule-setup
|
|
7
7
|
|
|
8
|
-
|
|
9
|
-
- 为每个 submodule 写入 `.gitmodules` 的 `submodule.<name>.branch`,让 `ws-pull` / `ws-finish` 能确定性地“挂回分支/fast-forward push”,避免 origin 多分支时靠猜导致偏差。
|
|
10
|
-
- 该变更是 **superproject 的团队真值**:需要提交 `.gitmodules`。
|
|
8
|
+
Thin skill wrapper. Delegates to `aiws submodule-setup`. See `aiws submodule-setup --help` for details.
|
|
11
9
|
|
|
12
|
-
安全约束(强制):
|
|
13
|
-
- 不自动提交、不自动 push(必须先输出 diff 并让用户确认)
|
|
14
|
-
- 不在 submodule 中做破坏性操作(不 `reset --hard` / 不改动远端)
|
|
15
|
-
|
|
16
|
-
步骤(建议):
|
|
17
|
-
1) 确认工作区干净(否则停止):
|
|
18
|
-
```bash
|
|
19
|
-
git status --porcelain
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
2) 列出 submodules(没有则停止并说明无需配置):
|
|
23
|
-
```bash
|
|
24
|
-
test -f .gitmodules || { echo "no .gitmodules"; exit 0; }
|
|
25
|
-
git config --file .gitmodules --get-regexp '^submodule\\..*\\.path$'
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
3) 对每个 submodule,输出当前配置与建议分支(让用户确认每个 submodule 的 branch):
|
|
29
|
-
```bash
|
|
30
|
-
while read -r key sub_path; do
|
|
31
|
-
name="${key#submodule.}"; name="${name%.path}"
|
|
32
|
-
echo "== submodule: ${name} path=${sub_path} =="
|
|
33
|
-
echo "[current] branch=$(git config --file .gitmodules --get submodule.${name}.branch || true)"
|
|
34
|
-
echo "[origin] HEAD=$(git -C \"${sub_path}\" symbolic-ref --short refs/remotes/origin/HEAD 2>/dev/null || true)"
|
|
35
|
-
git -C "${sub_path}" branch -r --list "origin/*" | sed -n '1,30p' || true
|
|
36
|
-
echo "[choose] set one of:"
|
|
37
|
-
echo " - a concrete branch, e.g. main / master / release/x.y"
|
|
38
|
-
echo " - '.' to follow superproject current branch name (only if your team uses matching branch names)"
|
|
39
|
-
done < <(git config --file .gitmodules --get-regexp '^submodule\\..*\\.path$')
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
4) 逐个写入分支配置(每次写完都回显,避免误配):
|
|
43
10
|
```bash
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
11
|
+
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
12
|
+
./node_modules/.bin/aiws submodule-setup
|
|
13
|
+
elif command -v aiws >/dev/null 2>&1; then
|
|
14
|
+
aiws submodule-setup
|
|
15
|
+
else
|
|
16
|
+
npx @aipper/aiws submodule-setup
|
|
17
|
+
fi
|
|
47
18
|
```
|
|
48
|
-
|
|
49
|
-
5) 输出变更并让用户确认是否提交:
|
|
50
|
-
```bash
|
|
51
|
-
git diff -- .gitmodules
|
|
52
|
-
git status --porcelain
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
6) 若用户确认要提交:
|
|
56
|
-
```bash
|
|
57
|
-
git add .gitmodules
|
|
58
|
-
git commit -m "chore(submodule): set tracking branches"
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
输出要求:
|
|
62
|
-
- `Submodules:` name/path + 选择的 branch(每个都列出)
|
|
63
|
-
- `Diff:` `.gitmodules` 的 diff(或至少 `git diff -- .gitmodules` 的摘要)
|
|
64
|
-
- `Next:` 提示后续用 `$ws-pull` 拉取可自动减少 detached;`aiws validate` 会检查该配置是否齐全
|
|
65
|
-
|
|
@@ -1,59 +1,49 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ws-verify-before-complete
|
|
3
|
-
description:
|
|
3
|
+
description: Thin wrapper for `aiws verify-bc`
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
2
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
- `缺失项(Missing):`
|
|
51
|
-
- `下一步(Next):`
|
|
52
|
-
|
|
53
|
-
重点:
|
|
54
|
-
- 这个 gate 不替代 `$ws-finish`;它只判断“是否具备进入 finish / handoff 的前置条件”。
|
|
55
|
-
- 若 fail,必须明确回退到哪个 gate:`$ws-spec-review`、`$ws-quality-review`、`aiws validate . --stamp` 或 `aiws change evidence <change-id>`。
|
|
56
|
-
|
|
57
|
-
安全:
|
|
58
|
-
- 不打印 secrets。
|
|
59
|
-
- 不执行破坏性命令。
|
|
6
|
+
# ws-verify-before-complete
|
|
7
|
+
|
|
8
|
+
## 完成前验证 Gate
|
|
9
|
+
|
|
10
|
+
进入 `ws-finish` / `ws-handoff` 前必须确认:
|
|
11
|
+
|
|
12
|
+
- [ ] `ws-spec-review` 已完成:`test -f changes/<id>/review/spec-review.md` (→ PASS/FAIL)
|
|
13
|
+
- [ ] `ws-quality-review` 已完成:`test -f changes/<id>/review/quality-review.md` (→ PASS/FAIL)
|
|
14
|
+
- [ ] `aiws validate .` stamp 存在:`ls .agentdocs/tmp/aiws-validate/*.json 2>/dev/null` (→ PASS/FAIL)
|
|
15
|
+
- [ ] 无未关闭 Critical blocker:`grep -c 'Critical' changes/<id>/review/*.md` = 0 或已标记 resolved (→ PASS/FAIL)
|
|
16
|
+
- [ ] 评审-返工循环 handoff 记录:`test -f changes/<id>/handoff-evidence.md` 且含 rework round 记录 (→ PASS/FAIL)
|
|
17
|
+
|
|
18
|
+
## Gate Result(结构化输出)
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
Gate: PASS / FAIL
|
|
22
|
+
Items:
|
|
23
|
+
1. spec-review: PASS
|
|
24
|
+
2. quality-review: PASS
|
|
25
|
+
3. validate-stamp: PASS
|
|
26
|
+
4. no-critical-blocker: PASS
|
|
27
|
+
5. rework-handoff: N/A (未经过返工循环)
|
|
28
|
+
Summary: <一句话总结>
|
|
29
|
+
Action: → ws-finish / → 需补齐: <缺失项>
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
任一项 FAIL 即阻断 finish;输出中必须给出具体缺失项与补救路径。
|
|
33
|
+
|
|
34
|
+
Thin skill wrapper. Delegates to `aiws verify-bc`. See `aiws verify-bc --help` for details.
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
38
|
+
./node_modules/.bin/aiws verify-bc
|
|
39
|
+
elif command -v aiws >/dev/null 2>&1; then
|
|
40
|
+
aiws verify-bc
|
|
41
|
+
else
|
|
42
|
+
npx @aipper/aiws verify-bc
|
|
43
|
+
fi
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## 执行要求
|
|
47
|
+
|
|
48
|
+
- 按 Gate Result 结构化输出逐项验证;任一项 FAIL 即阻断 finish。
|
|
49
|
+
- finish 前门禁证据:须确认存在 spec-review.md + quality-review.md(双审查)+ 有效 validate stamp + 已关闭所有 blocker;缺任一项即阻断 finish。
|
|
@@ -1,88 +1,36 @@
|
|
|
1
1
|
<!-- AIWS_MANAGED_BEGIN:agents -->
|
|
2
|
-
本仓库启用 AIWS(AI Workspace
|
|
3
|
-
1) `AI_PROJECT.md
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
-
|
|
18
|
-
- `
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
- intake:`plan/*.intake.md`
|
|
35
|
-
- planning:`plan/...`、`changes/<change-id>/proposal.md`、`tasks.md`
|
|
36
|
-
- implementation:代码 / 配置改动 + Verify 命令记录
|
|
37
|
-
- collaboration:`changes/<change-id>/analysis/...`、`patches/...`、`review/...`
|
|
38
|
-
- review:`changes/<change-id>/review/...` 或回退 `.agentdocs/tmp/review/...`
|
|
39
|
-
- validate:`.agentdocs/tmp/aiws-validate/*.json`
|
|
40
|
-
- handoff / archive:`changes/<change-id>/evidence/...`、`changes/archive/.../handoff.md`
|
|
41
|
-
|
|
42
|
-
OpenCode(如果你主要用 OpenCode,优先):
|
|
43
|
-
- native skills 在 `.opencode/skills/`;native commands 在 `.opencode/commands/`
|
|
44
|
-
- 若项目启用了 `.opencode/oh-my-opencode.json`:`ws-plan` / `ws-review` / `ws-spec-review` / `ws-quality-review` / `ws-delegate` 会优先借用 oMo 的 `planner-sisyphus` / `explore` / `librarian` / `oracle`
|
|
45
|
-
- 若你想按项目固定这组 agent,可参考 `.opencode/oh-my-opencode.json.example`;它只覆盖 `agents`,不接管 hooks/MCP/LSP
|
|
46
|
-
- 常用手动入口继续保留在 `.opencode/commands/`(migration window 内 `.opencode/command/` 也会保留);直接使用 `/ws-*`
|
|
47
|
-
- 若你不确定当前任务该先 plan、dev、review 还是 finish:先用 `/using-aiws`
|
|
48
|
-
- 需求还没冻结、想逐条把问题聊清楚:先用 `/ws-intake`
|
|
49
|
-
- `/ws-preflight`:读取真值文件并输出约束摘要
|
|
50
|
-
- `/ws-plan` / `/ws-plan-verify`:先生成计划,再做执行前质检与多视角方案审查
|
|
51
|
-
- `/ws-dev`:常规实现/改配置/改测试
|
|
52
|
-
- `/ws-dev-lite`:小问题直修;若复杂度升高,立刻回到 `/ws-dev` 或 `/ws-plan`
|
|
53
|
-
- `/ws-delegate`:按 AIWS 委托合同拆分子任务,并优先借用 oMo agent
|
|
54
|
-
- `/ws-bugfix`:缺陷修复 + 证据落盘 + CSV 汇总
|
|
55
|
-
- `/ws-review` / `/ws-commit`:提交前审计、门禁与 commit
|
|
56
|
-
- `/ws-spec-review` / `/ws-quality-review`:高风险改动建议显式拆成流程审查 + 质量审查
|
|
57
|
-
- `/ws-verify-before-complete`:finish / handoff 前检查双审查和 validate/evidence
|
|
58
|
-
- `/ws-finish` / `/ws-deliver`:交付收尾(fast-forward / submodule 感知)
|
|
59
|
-
- `/ws-pull` / `/ws-push` / `/ws-submodule-setup`:submodule 场景辅助
|
|
60
|
-
- `/p-aiws-*` 为底层原子入口;模板会同时写入 `.opencode/commands/` 与 `.opencode/command/`,一般不需要直接调用
|
|
61
|
-
|
|
62
|
-
Claude Code(如果你主要用 Claude Code):
|
|
63
|
-
- native skills 在 `.claude/skills/`;command-style 兼容入口保留在 `.claude/commands/`
|
|
64
|
-
- 常用链路可按 `ws-*` / `p-aiws-*` 理解;native skills 与 compatibility commands 指向同一套 AIWS workflow
|
|
65
|
-
- 若你不确定当前任务该走哪个阶段:先用 `/using-aiws`
|
|
66
|
-
- 需求还没冻结、想逐条把问题聊清楚:先用 `/ws-intake`
|
|
67
|
-
- 高风险改动或准备 finish 时,建议额外跑 `/ws-spec-review`、`/ws-quality-review`、`/ws-verify-before-complete`
|
|
68
|
-
|
|
69
|
-
Codex(对应入口,可选):
|
|
70
|
-
- 若你不想先记住阶段,先用 `$using-aiws` 让 router 判定下一步
|
|
71
|
-
- 对应入口在 `.agents/skills/`;显式调用时使用 `$ws-*`
|
|
72
|
-
- `$using-aiws`
|
|
73
|
-
- `$ws-preflight` / `$ws-intake` / `$ws-plan` / `$ws-plan-verify` / `$ws-dev` / `$ws-dev-lite` / `$ws-delegate` / `$ws-frontend-design`
|
|
74
|
-
- `$ws-review` / `$ws-spec-review` / `$ws-quality-review` / `$ws-commit`
|
|
75
|
-
- `$ws-verify-before-complete` / `$ws-finish` / `$ws-deliver`
|
|
76
|
-
- `$ws-pull` / `$ws-push` / `$ws-submodule-setup`
|
|
77
|
-
- 其它入口见 `.agents/skills/`:`ws-*` 为常用链路;`p-*` 为底层原子入口,一般不需要直接调用
|
|
78
|
-
|
|
79
|
-
Codex 全局入口(可选):
|
|
80
|
-
- `npx @aipper/aiws codex install-skills`(推荐;安装全局 skills)
|
|
81
|
-
- `npx @aipper/aiws codex install-prompts`(遗留兼容;prompts 已 deprecated)
|
|
82
|
-
|
|
83
|
-
缺文件或模板漂移时:
|
|
84
|
-
- `npx @aipper/aiws init`(初始化)
|
|
85
|
-
- `npx @aipper/aiws update`(按模板更新托管内容)
|
|
2
|
+
本仓库启用 AIWS(AI Workspace)约定。真值文件(按优先读取):
|
|
3
|
+
1) `AI_PROJECT.md`(规则/边界)→ 2) `REQUIREMENTS.md`(需求与验收真值)→ 3) `AI_WORKSPACE.md`(运行/测试入口真值)
|
|
4
|
+
|
|
5
|
+
快速分流:
|
|
6
|
+
- 小修(≤3 文件,≤100 行)→ `/ws-dev-lite`
|
|
7
|
+
- 常规实现 → `/ws-plan` → `ws-dev`
|
|
8
|
+
- 高风险变更 → 加 `ws-spec-review` + `ws-quality-review` 双审查
|
|
9
|
+
- 不确定 → `/using-aiws`(先读真值,再路由)
|
|
10
|
+
|
|
11
|
+
协作约束:
|
|
12
|
+
- 变更绑定 `change/<id>`,走 plan→verify→dev→review→commit→finish
|
|
13
|
+
- review 完成 → `ws-verify-before-complete` 确认验证通过 → 再 finish
|
|
14
|
+
- review 三方(spec/quality/verify)需 triage 确定是否有 HIGH blocker
|
|
15
|
+
- 主 session 编排收敛,不直接写业务代码;实现与验证由 subagent 产出
|
|
16
|
+
- 提交前 `aiws validate .`;敏感信息不入 git
|
|
17
|
+
- 缺真值文件先 stop,不直接开工
|
|
18
|
+
- handoff 产出 `handoff-evidence.md` 供后续 session 恢复
|
|
19
|
+
|
|
20
|
+
Red Flags(这些想法都是错的):
|
|
21
|
+
| 你想的 | 实际 |
|
|
22
|
+
|--------|------|
|
|
23
|
+
| "看着简单直接改" | 简单→ws-dev-lite,不确定→先 /using-aiws |
|
|
24
|
+
| "先动手再说" | 评估先于行动,分流在实现之前 |
|
|
25
|
+
| "跳过 review" | review 是门禁,不是建议 |
|
|
26
|
+
| "主 session 自己写代码" | 编排收敛,subagent 实现 |
|
|
27
|
+
| "不想走流程直接改" | escape-hatch: 可走 ws-dev-lite,但须遵守最小约束(降级需标明) |
|
|
28
|
+
|
|
29
|
+
阶段产物(最少):intake=`.aiws/plan/*.intake.md` | planning=`.aiws/plan/...`+`proposal.md`+`tasks.md` | dev=代码+Verify | review=`review/...` | validate=`aiws-validate/*.json` | archive=`evidence/...`+`handoff.md`
|
|
30
|
+
|
|
31
|
+
平台前缀:OpenCode/Claude=`/` Codex=`$` | 例:`/ws-dev` 或 `$ws-dev`
|
|
32
|
+
Codex 全局安装:`npx @aipper/aiws codex install-skills`
|
|
33
|
+
缺文件/漂移时:`npx @aipper/aiws init` / `npx @aipper/aiws update`
|
|
86
34
|
<!-- AIWS_MANAGED_END:agents -->
|
|
87
35
|
|
|
88
36
|
你可以在本段下方追加项目自定义说明;`aiws update` 不会改动托管块以外内容。
|
|
@@ -29,16 +29,16 @@
|
|
|
29
29
|
## 3) 产物与证据(强制)
|
|
30
30
|
|
|
31
31
|
每轮迭代必须落盘至少一个“可追溯产物”(三选一即可):
|
|
32
|
-
- 证据:`.
|
|
32
|
+
- 证据:`.aiws/tmp/...`(report/log/resp)
|
|
33
33
|
- 合同:`issues/*.csv`(状态变化:TODO/DOING/DONE/BLOCKED/SKIP)
|
|
34
|
-
-
|
|
34
|
+
- 变更工件:`.aiws/changes/<change-id>/`(proposal/tasks/design;详见 `.aiws/changes/README.md`)
|
|
35
35
|
|
|
36
36
|
不得只在对话里口头描述“已验证/已修复”。
|
|
37
37
|
|
|
38
38
|
推荐(防规则/范围漂移):
|
|
39
|
-
- 创建工件:补齐
|
|
39
|
+
- 创建工件:补齐 `.aiws/changes/<change-id>/proposal.md`、`tasks.md`(可选 `design.md`)
|
|
40
40
|
- 声明 active change(团队共享):切到分支 `change/<change-id>`(也支持 `changes/`、`ws/`、`ws-change/`)
|
|
41
|
-
- 若仓库存在 `.gitmodules
|
|
41
|
+
- 若仓库存在 `.gitmodules`:使用 `aiws change start <change-id> --switch`;不要在当前 superproject 里直接手工切分支。
|
|
42
42
|
- 若 submodule 因 gitlink checkout 处于 detached HEAD:只允许挂到 `aiws/pin/<target-branch>`;不要直接切 `change/<change-id>` / `main` / `master` 等业务分支来“解 detached”。
|
|
43
43
|
- 严格校验:`aiws validate .`(包含:漂移检测 + `ws_change_check` + `requirements_contract`)
|
|
44
44
|
- 启用 hooks(本地生效):`git config core.hooksPath .githooks`(提交/推送时自动跑 `aiws validate .`)
|
|
@@ -74,7 +74,7 @@
|
|
|
74
74
|
|
|
75
75
|
- `X-Request-Id`:自动化测试请求必须携带;服务端必须回传同名响应头;日志应包含 `request_id=<id>` 以便按单次请求定位问题。
|
|
76
76
|
- 接口清单真值:优先使用 `docs/openapi.json`。若缺失,先补齐导出方式并生成到该路径,再做全量覆盖测试(避免“覆盖范围不可复现”)。
|
|
77
|
-
- 证据落盘:每轮至少更新一次 `.
|
|
77
|
+
- 证据落盘:每轮至少更新一次 `.aiws/tmp/...` 或 `issues/*.csv`(禁止只在对话里口头宣称“已验证/已修复”)。
|
|
78
78
|
|
|
79
79
|
<!-- AIWS_MANAGED_END:ai-project:core -->
|
|
80
80
|
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
- `issues/server-api-issues.csv`:每个 endpoint 的验收字段与状态机(TODO/DOING/DONE/BLOCKED/SKIP)
|
|
72
72
|
- `issues/server-fix-issues.csv`:当出现 BLOCKED 时自动生成的“下一步修复清单”(用于持续闭环;包含 Failure_Category/Failure_Analysis/Suggestion)
|
|
73
73
|
- `issues/server-triage-issues.csv`:当 runner 无法稳定归因/需要人工判断时生成的“人工介入清单”(避免把噪声混进 fix issues)
|
|
74
|
-
- `.
|
|
74
|
+
- `.aiws/tmp/server-test/`:响应与日志片段(不入库)
|
|
75
75
|
|
|
76
76
|
当出现 BLOCKED:
|
|
77
77
|
- 若属于业务/需求不清:先补齐本文件对应接口的期望,再改代码
|