@aipper/aiws-spec 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/README.md +12 -0
  2. package/docs/cli-interface.md +288 -0
  3. package/docs/spec-contract.md +183 -0
  4. package/package.json +18 -0
  5. package/templates/workspace/.agents/skills/aiws-change-archive/SKILL.md +23 -0
  6. package/templates/workspace/.agents/skills/aiws-change-list/SKILL.md +18 -0
  7. package/templates/workspace/.agents/skills/aiws-change-new/SKILL.md +26 -0
  8. package/templates/workspace/.agents/skills/aiws-change-next/SKILL.md +19 -0
  9. package/templates/workspace/.agents/skills/aiws-change-start/SKILL.md +27 -0
  10. package/templates/workspace/.agents/skills/aiws-change-status/SKILL.md +19 -0
  11. package/templates/workspace/.agents/skills/aiws-change-sync/SKILL.md +19 -0
  12. package/templates/workspace/.agents/skills/aiws-change-templates-init/SKILL.md +18 -0
  13. package/templates/workspace/.agents/skills/aiws-change-templates-which/SKILL.md +18 -0
  14. package/templates/workspace/.agents/skills/aiws-change-validate/SKILL.md +23 -0
  15. package/templates/workspace/.agents/skills/aiws-hooks-install/SKILL.md +30 -0
  16. package/templates/workspace/.agents/skills/aiws-hooks-status/SKILL.md +18 -0
  17. package/templates/workspace/.agents/skills/aiws-init/SKILL.md +27 -0
  18. package/templates/workspace/.agents/skills/aiws-rollback/SKILL.md +18 -0
  19. package/templates/workspace/.agents/skills/aiws-update/SKILL.md +26 -0
  20. package/templates/workspace/.agents/skills/aiws-validate/SKILL.md +22 -0
  21. package/templates/workspace/.agents/skills/ws-analyze/SKILL.md +26 -0
  22. package/templates/workspace/.agents/skills/ws-commit/SKILL.md +50 -0
  23. package/templates/workspace/.agents/skills/ws-dev/SKILL.md +34 -0
  24. package/templates/workspace/.agents/skills/ws-migrate/SKILL.md +54 -0
  25. package/templates/workspace/.agents/skills/ws-plan/SKILL.md +39 -0
  26. package/templates/workspace/.agents/skills/ws-preflight/SKILL.md +29 -0
  27. package/templates/workspace/.agents/skills/ws-req-change/SKILL.md +33 -0
  28. package/templates/workspace/.agents/skills/ws-req-contract-sync/SKILL.md +17 -0
  29. package/templates/workspace/.agents/skills/ws-req-contract-validate/SKILL.md +12 -0
  30. package/templates/workspace/.agents/skills/ws-req-flow-sync/SKILL.md +28 -0
  31. package/templates/workspace/.agents/skills/ws-req-review/SKILL.md +32 -0
  32. package/templates/workspace/.agents/skills/ws-review/SKILL.md +24 -0
  33. package/templates/workspace/.agents/skills/ws-rule/SKILL.md +23 -0
  34. package/templates/workspace/.aiws/manifest.json +36 -0
  35. package/templates/workspace/.claude/commands/aiws-init.md +19 -0
  36. package/templates/workspace/.claude/commands/aiws-rollback.md +12 -0
  37. package/templates/workspace/.claude/commands/aiws-update.md +18 -0
  38. package/templates/workspace/.claude/commands/aiws-validate.md +13 -0
  39. package/templates/workspace/.claude/commands/ws-analyze.md +27 -0
  40. package/templates/workspace/.claude/commands/ws-dev.md +24 -0
  41. package/templates/workspace/.claude/commands/ws-migrate.md +22 -0
  42. package/templates/workspace/.claude/commands/ws-preflight.md +27 -0
  43. package/templates/workspace/.claude/commands/ws-req-change.md +34 -0
  44. package/templates/workspace/.claude/commands/ws-req-contract-sync.md +18 -0
  45. package/templates/workspace/.claude/commands/ws-req-contract-validate.md +13 -0
  46. package/templates/workspace/.claude/commands/ws-req-flow-sync.md +20 -0
  47. package/templates/workspace/.claude/commands/ws-req-review.md +33 -0
  48. package/templates/workspace/.claude/commands/ws-review.md +25 -0
  49. package/templates/workspace/.claude/commands/ws-rule.md +24 -0
  50. package/templates/workspace/.codex/prompts/aiws-init.md +23 -0
  51. package/templates/workspace/.codex/prompts/aiws-rollback.md +16 -0
  52. package/templates/workspace/.codex/prompts/aiws-update.md +22 -0
  53. package/templates/workspace/.codex/prompts/aiws-validate.md +17 -0
  54. package/templates/workspace/.codex/prompts/ws-analyze.md +32 -0
  55. package/templates/workspace/.codex/prompts/ws-dev.md +29 -0
  56. package/templates/workspace/.codex/prompts/ws-migrate.md +27 -0
  57. package/templates/workspace/.codex/prompts/ws-preflight.md +32 -0
  58. package/templates/workspace/.codex/prompts/ws-req-change.md +39 -0
  59. package/templates/workspace/.codex/prompts/ws-req-contract-sync.md +23 -0
  60. package/templates/workspace/.codex/prompts/ws-req-contract-validate.md +18 -0
  61. package/templates/workspace/.codex/prompts/ws-req-flow-sync.md +25 -0
  62. package/templates/workspace/.codex/prompts/ws-req-review.md +38 -0
  63. package/templates/workspace/.codex/prompts/ws-review.md +30 -0
  64. package/templates/workspace/.codex/prompts/ws-rule.md +29 -0
  65. package/templates/workspace/.githooks/pre-commit +32 -0
  66. package/templates/workspace/.githooks/pre-push +32 -0
  67. package/templates/workspace/.iflow/agents/feature-reviewer.md +27 -0
  68. package/templates/workspace/.iflow/agents/requirements-analyst.md +24 -0
  69. package/templates/workspace/.iflow/agents/server-commit-manager.md +28 -0
  70. package/templates/workspace/.iflow/agents/server-fix-implementer.md +31 -0
  71. package/templates/workspace/.iflow/agents/server-test-planner.md +28 -0
  72. package/templates/workspace/.iflow/agents/server-test-triager.md +30 -0
  73. package/templates/workspace/.iflow/commands/aiws-init.toml +24 -0
  74. package/templates/workspace/.iflow/commands/aiws-rollback.toml +18 -0
  75. package/templates/workspace/.iflow/commands/aiws-update.toml +23 -0
  76. package/templates/workspace/.iflow/commands/aiws-validate.toml +18 -0
  77. package/templates/workspace/.iflow/commands/server-commit.toml +27 -0
  78. package/templates/workspace/.iflow/commands/server-drain.toml +99 -0
  79. package/templates/workspace/.iflow/commands/server-fix-and-commit.toml +27 -0
  80. package/templates/workspace/.iflow/commands/server-fix.toml +65 -0
  81. package/templates/workspace/.iflow/commands/server-test-plan.toml +62 -0
  82. package/templates/workspace/.iflow/commands/server-test.toml +58 -0
  83. package/templates/workspace/.iflow/commands/server-triage.toml +38 -0
  84. package/templates/workspace/.iflow/commands/server_test-plan.toml +12 -0
  85. package/templates/workspace/.iflow/commands/server_test.toml +12 -0
  86. package/templates/workspace/.iflow/commands/ws-analyze.toml +33 -0
  87. package/templates/workspace/.iflow/commands/ws-contract-check.toml +69 -0
  88. package/templates/workspace/.iflow/commands/ws-dev.toml +34 -0
  89. package/templates/workspace/.iflow/commands/ws-doctor.toml +141 -0
  90. package/templates/workspace/.iflow/commands/ws-env-doctor.toml +74 -0
  91. package/templates/workspace/.iflow/commands/ws-feature-deliver.toml +44 -0
  92. package/templates/workspace/.iflow/commands/ws-feature-plan.toml +47 -0
  93. package/templates/workspace/.iflow/commands/ws-init.toml +53 -0
  94. package/templates/workspace/.iflow/commands/ws-memory-bank-init.toml +100 -0
  95. package/templates/workspace/.iflow/commands/ws-migrate.toml +59 -0
  96. package/templates/workspace/.iflow/commands/ws-preflight.toml +30 -0
  97. package/templates/workspace/.iflow/commands/ws-req-change.toml +52 -0
  98. package/templates/workspace/.iflow/commands/ws-req-contract-sync.toml +25 -0
  99. package/templates/workspace/.iflow/commands/ws-req-contract-validate.toml +16 -0
  100. package/templates/workspace/.iflow/commands/ws-req-flow-sync.toml +36 -0
  101. package/templates/workspace/.iflow/commands/ws-req-review.toml +56 -0
  102. package/templates/workspace/.iflow/commands/ws-review.toml +32 -0
  103. package/templates/workspace/.iflow/commands/ws-rule.toml +43 -0
  104. package/templates/workspace/.opencode/command/aiws-init.md +19 -0
  105. package/templates/workspace/.opencode/command/aiws-rollback.md +12 -0
  106. package/templates/workspace/.opencode/command/aiws-update.md +18 -0
  107. package/templates/workspace/.opencode/command/aiws-validate.md +13 -0
  108. package/templates/workspace/.opencode/command/ws-analyze.md +27 -0
  109. package/templates/workspace/.opencode/command/ws-dev.md +24 -0
  110. package/templates/workspace/.opencode/command/ws-migrate.md +22 -0
  111. package/templates/workspace/.opencode/command/ws-preflight.md +27 -0
  112. package/templates/workspace/.opencode/command/ws-req-change.md +34 -0
  113. package/templates/workspace/.opencode/command/ws-req-contract-sync.md +18 -0
  114. package/templates/workspace/.opencode/command/ws-req-contract-validate.md +13 -0
  115. package/templates/workspace/.opencode/command/ws-req-flow-sync.md +20 -0
  116. package/templates/workspace/.opencode/command/ws-req-review.md +33 -0
  117. package/templates/workspace/.opencode/command/ws-review.md +25 -0
  118. package/templates/workspace/.opencode/command/ws-rule.md +24 -0
  119. package/templates/workspace/AGENTS.md +22 -0
  120. package/templates/workspace/AI_PROJECT.md +86 -0
  121. package/templates/workspace/AI_WORKSPACE.md +167 -0
  122. package/templates/workspace/REQUIREMENTS.md +94 -0
  123. package/templates/workspace/changes/README.md +55 -0
  124. package/templates/workspace/changes/templates/design.md +29 -0
  125. package/templates/workspace/changes/templates/proposal.md +59 -0
  126. package/templates/workspace/changes/templates/tasks.md +33 -0
  127. package/templates/workspace/issues/problem-issues.csv +2 -0
  128. package/templates/workspace/manifest.json +205 -0
  129. package/templates/workspace/memory-bank/README.md +14 -0
  130. package/templates/workspace/memory-bank/architecture.md +9 -0
  131. package/templates/workspace/memory-bank/implementation-plan.md +11 -0
  132. package/templates/workspace/memory-bank/progress.md +10 -0
  133. package/templates/workspace/memory-bank/tech-stack.md +11 -0
  134. package/templates/workspace/requirements/CHANGELOG.md +13 -0
  135. package/templates/workspace/requirements/requirements-issues.csv +2 -0
  136. package/templates/workspace/secrets/test-accounts.example.json +32 -0
  137. package/templates/workspace/tools/iflow_watchdog.sh +138 -0
  138. package/templates/workspace/tools/install_iflow_watchdog_systemd_user.sh +118 -0
  139. package/templates/workspace/tools/requirements_contract.py +285 -0
  140. package/templates/workspace/tools/requirements_contract_sync.py +290 -0
  141. package/templates/workspace/tools/requirements_flow_gen.py +250 -0
  142. package/templates/workspace/tools/server_test_runner.py +1902 -0
  143. package/templates/workspace/tools/systemd/iflow-watchdog@.service +16 -0
  144. package/templates/workspace/tools/systemd/iflow-watchdog@.timer +11 -0
  145. package/templates/workspace/tools/ws_change_check.py +323 -0
@@ -0,0 +1,47 @@
1
+ # Command: ws:feature-plan
2
+ # Description: 规划跨子项目的交付(需求 -> 代码 -> 测试 -> Review -> 提交)
3
+ # Category: workspace
4
+ # Version: 1
5
+
6
+ description = "规划跨子项目的交付(需求 -> 代码 -> 测试 -> Review -> 提交)"
7
+
8
+ prompt = """
9
+ 用中文输出(命令/路径/代码标识符保持原样不翻译)。
10
+
11
+ 目标:在“目录A工作区”(可能包含 server/web/app 等多个 submodule 目录)为本次需求变更产出一个可执行计划,并把计划落到可追踪的执行合同里。
12
+
13
+ 输入(按优先级读取):
14
+ - REQUIREMENTS.md:需求与验收标准(唯一真值来源)
15
+ - AI_WORKSPACE.md:工作区结构、目录发现、policy(environment/base_url_allowlist 等)、启动/测试覆盖方式
16
+ - docs/openapi.json(若涉及服务端 API)
17
+
18
+ 进行中项目(必须先做,不允许“从零假设”):
19
+ 1) 代码现状盘点:扫描当前工作区(server/web/app)已有实现与现有接口(OpenAPI/路由/关键模块)。
20
+ 2) 需求对比:将 REQUIREMENTS.md 的目标逐项映射到“已有/缺失/部分完成”,并给证据(文件路径/接口路径)。
21
+ 3) 只为“缺失/部分完成”的项创建 issues;已有项要么标 DONE(需有证据),要么标 SKIP(说明理由)。
22
+
23
+ 输出必须包含:
24
+ 1) GOALS / NON-GOALS(必须与 REQUIREMENTS.md 一致)
25
+ 2) 影响范围(按 subproject 列出:server/web/app;给出候选目录与识别依据)
26
+ 3) 执行合同(写入/维护这些文件):
27
+ - issues/feature-issues.csv:任务分解(TODO/DOING/DONE/BLOCKED/SKIP)
28
+ - (如涉及 API)issues/server-api-issues.csv:接口验收合同(由 runner 维护)
29
+ 4) 测试策略(按 subproject):
30
+ - server:优先 runner(uv),并遵守 AI_WORKSPACE.md policy(base_url_allowlist/allow_mutations)
31
+ - web/app:优先使用 AI_WORKSPACE.md 指定的 *_test_cmd;若缺失则基于常见标记提出建议但不臆测结果
32
+ - 工具链准备:如果 AI_WORKSPACE.md 定义了 toolchain_bootstrap_cmd / node_use_cmd / java_use_cmd,必须在 build/test 前执行
33
+ 5) 风险/边界:
34
+ - 不改需求语义;需求不清先补 REQUIREMENTS.md(只补可验收字段)
35
+ - 需求变更必须通过 `/ws-req-change` 处理,并写入 `requirements/CHANGELOG.md`,再同步 issues 执行合同
36
+ - 不触发破坏性数据操作(除非 environment=test 且 allow_mutations=true 且 REQUIREMENTS 明确允许)
37
+ 6) 回滚方案(按 submodule/根仓库分别写)
38
+ 7) 完成条件:满足 REQUIREMENTS.md 的验收 + 所有相关测试通过 + 无未解释错误日志
39
+
40
+ 执行合同 CSV(必须创建或更新):
41
+ - 文件:issues/feature-issues.csv
42
+ - 列(固定):Issue_ID, Subproject, Title, Files, Tests, Status, Notes
43
+ - Status:TODO | DOING | DONE | BLOCKED | SKIP
44
+
45
+ 最后给出下一步命令(建议):
46
+ - 运行交付闭环:`/ws-feature-deliver`
47
+ """
@@ -0,0 +1,53 @@
1
+ # Command: ws:init
2
+ # Description: 初始化当前目录为 workspace-A(AI_WORKSPACE/REQUIREMENTS/tools/secrets 示例)
3
+ # Category: workspace
4
+ # Version: 1
5
+
6
+ description = "初始化当前目录为 workspace-A(AI_WORKSPACE/REQUIREMENTS/tools/secrets 示例)"
7
+
8
+ prompt = """
9
+ 用中文输出;命令与路径保持原样不翻译。
10
+
11
+ 目标:把“当前目录”初始化为 aiws `workspace` 模板(真值文件 + 门禁 + tool-native commands)。
12
+
13
+ 约束:
14
+ - 不创建/不打印真实 secrets;只生成 `secrets/test-accounts.example.json` 示例文件。
15
+ - 默认不做破坏性操作。
16
+
17
+ 执行:
18
+ !{bash -lc '
19
+ set -euo pipefail
20
+
21
+ root="$(pwd)"
22
+
23
+ run_aiws() {
24
+ local subcmd="$1"
25
+ shift
26
+
27
+ if [[ -x "$root/node_modules/.bin/aiws" ]]; then
28
+ "$root/node_modules/.bin/aiws" "$subcmd" "$@"
29
+ return 0
30
+ fi
31
+ if command -v aiws >/dev/null 2>&1; then
32
+ aiws "$subcmd" "$@"
33
+ return 0
34
+ fi
35
+ if command -v npx >/dev/null 2>&1; then
36
+ npx -y @aipper/aiws "$subcmd" "$@"
37
+ return 0
38
+ fi
39
+
40
+ echo "error: aiws not found (install @aipper/aiws or ensure npx is available)" >&2
41
+ exit 2
42
+ }
43
+
44
+ run_aiws init .
45
+ run_aiws validate .
46
+
47
+ echo "下一步:"
48
+ echo " - 启用本机 hooks:git config core.hooksPath .githooks"
49
+ echo " - 如启用了 iFlow pre_tool_guard:执行 /ws-contract-check(写入 stamp)"
50
+ echo " - 创建 secrets:cp -n secrets/test-accounts.example.json secrets/test-accounts.json"
51
+ echo " - 重新运行门禁:aiws validate ."
52
+ '}
53
+ """
@@ -0,0 +1,100 @@
1
+ # Command: ws:memory-bank-init
2
+ # Description: 初始化 memory-bank/(用于固定上下文,避免会话跑偏)
3
+ # Category: workspace
4
+ # Version: 1
5
+
6
+ description = "初始化 memory-bank/(用于固定上下文,避免会话跑偏)"
7
+
8
+ prompt = """
9
+ 用中文输出(命令/路径/代码标识符保持原样不翻译)。
10
+
11
+ 目标:在当前 git workspace 根目录创建/更新 `memory-bank/` 的模板文件(非需求真值),用于固定工程上下文。
12
+
13
+ 执行:
14
+ !{bash -lc '
15
+ set -euo pipefail
16
+
17
+ ws_root="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
18
+ cd "$ws_root"
19
+
20
+ mkdir -p memory-bank
21
+
22
+ write_if_missing() {
23
+ local p="$1"
24
+ shift
25
+ if [[ -f "$p" ]]; then
26
+ echo "OK: exists: $p"
27
+ return 0
28
+ fi
29
+ mkdir -p "$(dirname "$p")"
30
+ cat >"$p" <<EOF
31
+ $*
32
+ EOF
33
+ echo "OK: created: $p"
34
+ }
35
+
36
+ write_if_missing "memory-bank/README.md" "# Memory Bank(工作区上下文)
37
+
38
+ 目的:给 iFlow/Codex/Claude 一个“固定且可持续更新”的上下文集合,避免每次会话重新讲一遍导致跑偏。
39
+
40
+ 在你的工作区中:
41
+ - \`REQUIREMENTS.md\` 仍是**需求真值**(不要复制到这里)。
42
+ - \`AI_PROJECT.md\` / \`AI_WORKSPACE.md\` 是**边界与运行真值**。
43
+ - 本目录补齐的是“实现过程中的稳定上下文”(更偏工程视角)。
44
+
45
+ 建议规则:
46
+ - 改代码前:先看 \`REQUIREMENTS.md\` + \`AI_PROJECT.md\` + \`AI_WORKSPACE.md\`,再结合本目录的 \`architecture.md\`/\`progress.md\`。
47
+ - 每次完成一个可验证的小步:更新 \`progress.md\`(写清:做了什么、证据路径、下一步)。
48
+ - 发生重大结构变化:更新 \`architecture.md\`(只写高层关系,不要堆细节)。
49
+ "
50
+
51
+ write_if_missing "memory-bank/tech-stack.md" "# Tech Stack
52
+
53
+ 填写原则:只写“确实在用且影响决策”的信息,避免长篇大论。
54
+
55
+ 建议包含:
56
+ - 语言/运行时版本(例如 Java/Node/Python)
57
+ - 构建工具链(Gradle/Maven、pnpm、uv 等)
58
+ - 关键框架与约束(Spring Boot、Ktor、Vue、React 等)
59
+ - 数据层(DB/Redis/MQ)与迁移方式
60
+ - 本地/测试环境切换方式(引用 \`AI_WORKSPACE.md\` 的命令即可)
61
+ "
62
+
63
+ write_if_missing "memory-bank/architecture.md" "# Architecture
64
+
65
+ 目标:记录“模块关系与关键边界”,让新的会话可以快速对齐代码布局。
66
+
67
+ 建议包含:
68
+ - 目录/模块分层(例如 server/web/app)
69
+ - 核心数据流(请求入口 → service → repo → DB)
70
+ - 关键约束(鉴权、request-id、幂等、事务)
71
+ "
72
+
73
+ write_if_missing "memory-bank/implementation-plan.md" "# Implementation Plan
74
+
75
+ 目标:把需求拆成可验证的小步(每步都有验证命令与期望结果)。
76
+
77
+ 模板(示例字段):
78
+ - Step 1: …
79
+ - Scope:
80
+ - Files:
81
+ - Verify: \`...\`
82
+ - Expected:
83
+ "
84
+
85
+ write_if_missing "memory-bank/progress.md" "# Progress
86
+
87
+ 每次完成一个可验证小步就追加一条:
88
+
89
+ - YYYY-MM-DD HH:MM: 做了什么(关联 Issue_ID/验收项)
90
+ - Changed: \`path/to/file\`
91
+ - Verify: \`command\`
92
+ - Evidence: \`path/to/log_or_report\`
93
+ - Next:
94
+ "
95
+ '}
96
+
97
+ 说明:
98
+ - `REQUIREMENTS.md` 仍是需求真值;不要把需求复制进 memory-bank。
99
+ - 建议完成后立刻执行:`/ws-contract-check`(让 pre_tool_guard 放行写入类工具)。
100
+ """
@@ -0,0 +1,59 @@
1
+ # Command: ws:migrate
2
+ # Description: 将当前目录迁移到最新的 workspace-A 约定(安全,默认不覆盖)
3
+ # Category: workspace
4
+ # Version: 1
5
+
6
+ description = "迁移当前目录为 workspace-A 约定(补齐 AI_PROJECT.md 与 .gitignore managed block,默认不覆盖)"
7
+
8
+ prompt = """
9
+ 用中文输出;命令与路径保持原样不翻译。
10
+
11
+ 目标:将“当前目录”迁移/补齐为最新的 aiws `workspace` 约定(以 `.aiws/manifest.json` 与模板托管面为准)。
12
+
13
+ 安全规则:
14
+ - 不要打印 secrets;不要创建真实 secrets。
15
+ - 只通过 `aiws init/update/validate` 更新托管面(replace_file + managed blocks)。
16
+
17
+ 迁移完成后建议运行 `/ws-doctor` 并手工检查 `AI_PROJECT.md` 的“项目特有规则”段是否符合本项目约束。
18
+
19
+ Execute:
20
+ !{bash -lc '
21
+ set -euo pipefail
22
+
23
+ root="$(pwd)"
24
+
25
+ run_aiws() {
26
+ local subcmd="$1"
27
+ shift
28
+
29
+ if [[ -x "$root/node_modules/.bin/aiws" ]]; then
30
+ "$root/node_modules/.bin/aiws" "$subcmd" "$@"
31
+ return 0
32
+ fi
33
+ if command -v aiws >/dev/null 2>&1; then
34
+ aiws "$subcmd" "$@"
35
+ return 0
36
+ fi
37
+ if command -v npx >/dev/null 2>&1; then
38
+ npx -y @aipper/aiws "$subcmd" "$@"
39
+ return 0
40
+ fi
41
+
42
+ echo "error: aiws not found (install @aipper/aiws or ensure npx is available)" >&2
43
+ exit 2
44
+ }
45
+
46
+ if [[ -f ".aiws/manifest.json" ]]; then
47
+ run_aiws update .
48
+ else
49
+ run_aiws init .
50
+ fi
51
+ run_aiws validate .
52
+
53
+ echo
54
+ echo "下一步:"
55
+ echo " - 运行: /ws-doctor"
56
+ echo " - 手工检查: AI_PROJECT.md(把本项目的特殊约束补齐进去)"
57
+ echo " - 如启用了 iFlow pre_tool_guard:执行 /ws-contract-check(写入 stamp)"
58
+ '}
59
+ """
@@ -0,0 +1,30 @@
1
+ # Command: ws:preflight
2
+ # Description: AI Workspace 预检:读 AI_PROJECT/REQUIREMENTS/AI_WORKSPACE 并输出约束摘要
3
+ # Category: workspace
4
+ # Version: 1
5
+
6
+ description = "AI Workspace 预检:读 AI_PROJECT/REQUIREMENTS/AI_WORKSPACE 并输出约束摘要"
7
+
8
+ prompt = """
9
+ 用中文输出(命令/路径/代码标识符保持原样不翻译)。
10
+
11
+ 目标:在开始“写代码/改配置/给补丁”之前,先把工作区真值文件读全并对齐,避免规则漂移。
12
+
13
+ 执行步骤(强制):
14
+ 1) 定位项目根目录:
15
+ - 优先:`git rev-parse --show-toplevel`
16
+ - 若失败:说明无法判断项目根;请用户确认当前目录是否为项目根(不要猜测)。
17
+ 2) 在项目根目录读取以下文件(存在则必须读取;缺失则明确报告缺失项,不要臆测内容):
18
+ - `AI_PROJECT.md`
19
+ - `REQUIREMENTS.md`
20
+ - `AI_WORKSPACE.md`
21
+ 3) 输出:
22
+ - `Root:` <项目根路径>
23
+ - `Found:` 列出实际读取到的文件列表
24
+ - `Missing:` 列出缺失文件(若缺失 `AI_PROJECT.md`,建议用户先运行 `/ws-migrate` 或 `/aiws-init` 补齐)
25
+ - `Key rules:` 用 3–8 条 bullet 摘要关键约束(范围/禁止项/必须产物/必须验证命令)
26
+
27
+ 安全规则:
28
+ - 不打印 secrets;遇到疑似敏感值仅提示并建议迁移到本地私密文件(不要复述原文)。
29
+ - 不执行破坏性命令。
30
+ """
@@ -0,0 +1,52 @@
1
+ # Command: ws:req-change
2
+ # Description: 记录需求变更到 requirements/CHANGELOG.md 并更新 REQUIREMENTS.md
3
+ # Category: requirements
4
+ # Version: 1
5
+
6
+ description = "记录需求变更到 requirements/CHANGELOG.md 并更新 REQUIREMENTS.md"
7
+
8
+ prompt = """
9
+ 用中文输出(命令/路径/代码标识符保持原样不翻译)。
10
+
11
+ 目标:处理“进行中的需求变更”,并把变更记录到独立的变更文件中,避免 REQUIREMENTS.md 的历史被覆盖。
12
+
13
+ 约定:
14
+ - `REQUIREMENTS.md`:当前有效需求(唯一真值)
15
+ - `requirements/CHANGELOG.md`:需求变更历史(追加记录,不改旧记录)
16
+ - `requirements/requirements-issues.csv`:需求拆解执行合同(机器可读;用于审核/回放/状态机)
17
+
18
+ 步骤(必须按顺序):
19
+ 1) 读取 `REQUIREMENTS.md` 与 `requirements/CHANGELOG.md`(若不存在则创建 changelog 文件与目录)
20
+ 2) 明确本次变更的类型:
21
+ - Clarify:补充不清晰的验收字段(不改变语义)
22
+ - Change:修改/新增/删除需求(改变语义)
23
+ 3) 产出“变更摘要”(1-5 条)并在执行前确认边界:
24
+ - 是否影响 API(OpenAPI/状态码/鉴权/字段)
25
+ - 是否影响自动化测试边界(allow_mutations/dangerous_disabled/base_url_allowlist)
26
+ 4) 更新 `REQUIREMENTS.md`(只留下当前有效版本;不要在文件中堆历史表格)
27
+ 5) 追加一条 changelog 记录到 `requirements/CHANGELOG.md`(必须包含:日期、变更内容、原因、影响范围、关联 issues/PR、记录人)
28
+ 6) 需求拆解到 CSV 执行合同(强制):
29
+ - 确保存在 `requirements/requirements-issues.csv`(若无则初始化):
30
+ - `python3 tools/requirements_contract.py init`
31
+ - 为本次变更新增/更新 1..N 条 Req 行,并拆到“可实现、可测试”的粒度:
32
+ - 每条至少写清:CRUD、Scenario、Inputs、Outputs、Business_Logic、Tests
33
+ - 状态机:
34
+ - `Spec_Status`: DRAFT(未完善)/READY(已完善可开工)
35
+ - `Impl_Status`: TODO/DOING/DONE/BLOCKED/SKIP
36
+ - 完成后必须跑一次校验(READY/DONE 的必填字段会被检查):
37
+ - `python3 tools/requirements_contract.py validate`
38
+ 7) 同步执行合同(至少做到其中之一):
39
+ - 更新 `issues/feature-issues.csv`(新增/调整对应任务,并关联 Req_ID)
40
+ - 若涉及 API:运行/更新 runner 产物并修正 `issues/server-api-issues.csv` 的验收字段
41
+ 8) 生成简短逻辑图与场景执行合同(强烈建议,每次变更后都做):
42
+ - 运行 `/ws-req-flow-sync` 生成/更新 `docs/api-flow.mmd` 与 `issues/server-scenario-issues.csv`
43
+
44
+ 输出必须包含:
45
+ - 本次更新的文件清单(路径)
46
+ - 回滚方案(如何撤销本次需求变更)
47
+ - 下一步建议命令(至少包含:`/ws-req-flow-sync`;以及 `/server-fix` 或 runner 命令)
48
+
49
+ 安全规则:
50
+ - 不打印 secrets/test-accounts.json
51
+ - 不引入任何 token/密钥到仓库
52
+ """
@@ -0,0 +1,25 @@
1
+ # Command: ws:req-contract-sync
2
+ # Description: 从 REQUIREMENTS.md 的 FlowSpec 补齐 requirements/requirements-issues.csv(半自动)
3
+ # Category: requirements
4
+ # Version: 1
5
+
6
+ description = "从 REQUIREMENTS.md 的 FlowSpec 补齐 requirements/requirements-issues.csv(半自动)"
7
+
8
+ prompt = """
9
+ 用中文输出(命令/路径/代码标识符保持原样不翻译)。
10
+
11
+ 用途:当项目已经做了一部分,但 `requirements/requirements-issues.csv` 还没建立/没补齐时,用本命令从 `REQUIREMENTS.md` 的 FlowSpec(机器可读)生成/补齐需求条目骨架。
12
+
13
+ 说明:
14
+ - 本命令只做“补齐骨架”:把每条 Flow 变成一条 Req(默认 `Spec_Status=DRAFT`、`Impl_Status=TODO`),不会猜测你已完成哪些。
15
+ - 生成后请手工补齐 CRUD/Inputs/Outputs/Business_Logic/Tests,并把可开工的条目标为 `Spec_Status=READY`。
16
+
17
+ 执行:
18
+ !{bash -lc '
19
+ set -euo pipefail
20
+ python3 tools/requirements_contract_sync.py --workspace .
21
+ '}
22
+
23
+ 下一步:
24
+ - 运行:`/ws-req-contract-validate`
25
+ """
@@ -0,0 +1,16 @@
1
+ # Command: ws:req-contract-validate
2
+ # Description: 校验 requirements/requirements-issues.csv(READY/DONE 必填字段)
3
+ # Category: requirements
4
+ # Version: 1
5
+
6
+ description = "校验 requirements/requirements-issues.csv(READY/DONE 必填字段)"
7
+
8
+ prompt = """
9
+ 用中文输出(命令/路径/代码标识符保持原样不翻译)。
10
+
11
+ 执行(失败则修正 CSV 再重试):
12
+ !{bash -lc '
13
+ set -euo pipefail
14
+ python3 tools/requirements_contract.py validate
15
+ '}
16
+ """
@@ -0,0 +1,36 @@
1
+ # Command: ws:req-flow-sync
2
+ # Description: 从 REQUIREMENTS.md FlowSpec 生成流程图与场景 CSV
3
+ # Category: requirements
4
+ # Version: 1
5
+
6
+ description = "从 REQUIREMENTS.md FlowSpec 生成流程图与场景 CSV"
7
+
8
+ prompt = """
9
+ 用中文输出;命令与路径保持原样不翻译。
10
+
11
+ 目标:在工作区根目录基于 `REQUIREMENTS.md` 内的 FlowSpec(FLOW_SPEC_BEGIN/END 标记)生成:
12
+ - `docs/api-flow.mmd`(简短逻辑图,Mermaid)
13
+ - `issues/server-scenario-issues.csv`(场景执行合同:TODO/DONE/BLOCKED)
14
+
15
+ 要求:
16
+ - 不读取/不打印 secrets
17
+ - 输出要短:只打印生成的文件路径与下一步命令
18
+
19
+ Execute:
20
+ !{bash -lc '
21
+ set -euo pipefail
22
+
23
+ [[ -f REQUIREMENTS.md ]] || { echo "缺少 REQUIREMENTS.md(请先 /aiws-init 或补齐需求文件)" >&2; exit 2; }
24
+
25
+ if [[ -f tools/requirements_flow_gen.py ]]; then
26
+ python3 tools/requirements_flow_gen.py --workspace .
27
+ echo ""
28
+ echo "下一步:"
29
+ echo " - 查看逻辑图: cat docs/api-flow.mmd"
30
+ echo " - 查看场景合同: cat issues/server-scenario-issues.csv"
31
+ else
32
+ echo "缺少工具: tools/requirements_flow_gen.py(建议运行 /aiws-init 或从模板复制)" >&2
33
+ exit 2
34
+ fi
35
+ '}
36
+ """
@@ -0,0 +1,56 @@
1
+ # Command: ws:req-review
2
+ # Description: 需求整体评估(不落盘):对 REQUIREMENTS.md 做 QA,输出缺口/冲突/风险,减少漂移
3
+ # Category: requirements
4
+ # Version: 1
5
+
6
+ description = "需求整体评估(不落盘):对 REQUIREMENTS.md 做 QA,输出缺口/冲突/风险,减少漂移"
7
+
8
+ prompt = """
9
+ 用中文输出(命令/路径/代码标识符保持原样不翻译)。
10
+
11
+ 目标:在不修改任何文件的前提下,对“当前整体需求”做一次质量评估(Requirements QA),提前发现不清晰/不可验收/与项目约束冲突的点,减少后续实现漂移。
12
+
13
+ 执行步骤(必须按顺序):
14
+ 1) 定位项目根目录(优先 `git rev-parse --show-toplevel`;失败则停止并让用户确认根目录)。
15
+ 2) 在项目根目录读取(存在则必须读取;缺失则明确报告缺失项,不要臆测内容):
16
+ - `AI_PROJECT.md`
17
+ - `REQUIREMENTS.md`
18
+ - `AI_WORKSPACE.md`
19
+ - `requirements/CHANGELOG.md`(若存在)
20
+ - `requirements/requirements-issues.csv`(若存在)
21
+ 3) 输出一个固定结构的评估报告(Markdown):
22
+
23
+ ## Requirements QA
24
+
25
+ ### 1) 结论(1–3 行)
26
+ - 当前需求是否“可进入实现阶段”?(是/否/有条件)
27
+
28
+ ### 2) 漂移风险(必须列出)
29
+ - 哪些点最容易导致实现与需求不一致?为什么?
30
+
31
+ ### 3) 可验收性(必须列出)
32
+ - 列出“缺少明确验收标准”的条目(输入/输出/错误码/边界条件/示例)。
33
+
34
+ ### 4) 完整性(必须列出)
35
+ - 是否缺少:Non-goals、兼容性/迁移、鉴权/权限、失败重试、并发/幂等、观测性(日志/trace/request-id)、性能预算。
36
+
37
+ ### 5) 一致性(必须列出)
38
+ - 与 `AI_PROJECT.md`(禁止项/产物要求/验证要求/边界)是否冲突?逐条列冲突与建议。
39
+
40
+ ### 6) 可测试性与证据(必须列出)
41
+ - 给出最小验证路径(命令 + 期望结果 + 证据落盘路径建议,例如 `.agentdocs/tmp/...`)。
42
+
43
+ ### 7) 风险清单(3–8 条)
44
+ - 风险 → 影响面 → 缓解建议(尽量可操作)。
45
+
46
+ ### 8) 需要澄清的问题(优先级排序)
47
+ - 用 5–12 个问题把不确定点一次问清(每题说明“为什么要问/影响什么验收”)。
48
+
49
+ 4) **强制停下来询问用户确认**:
50
+ - 问用户:**“是否基于上述评估进入需求落盘/变更流程 `/ws-req-change`?(Y/N)”**
51
+ - 若 N:停止,等待用户补充信息或调整需求文本。
52
+
53
+ 边界:
54
+ - 不打印任何 secrets(尤其是 `secrets/test-accounts.json`)。
55
+ - 不执行破坏性命令。
56
+ """
@@ -0,0 +1,32 @@
1
+ # Command: ws:review
2
+ # Description: AI Workspace 交叉审计交付(Claude + Codex + Gemini),证据落盘到 .agentdocs/tmp/review/
3
+ # Category: workspace
4
+ # Version: 1
5
+
6
+ description = "AI Workspace 交叉审计交付(Claude + Codex + Gemini),证据落盘到 .agentdocs/tmp/review/"
7
+
8
+ prompt = """
9
+ 用中文输出(命令/路径/代码标识符保持原样不翻译)。
10
+
11
+ 目标:在实现/提交前,对当前工作区改动进行交叉审计,并把审计结论落盘到 `.agentdocs/tmp/review/`,便于回放与追责。
12
+
13
+ 强制步骤:
14
+ 1) 读取真值文件:`AI_PROJECT.md`、`REQUIREMENTS.md`、`AI_WORKSPACE.md`。
15
+ 2) 若 iFlow 拦截写入:先执行 `/ws-contract-check`,再继续。
16
+ 3) 审计输入(按优先级):
17
+ - `git diff`(或变更工件 `changes/<change-id>/`)
18
+ - `issues/*.csv`(状态机是否存在 TODO/DOING/BLOCKED)
19
+ - 最近一次门禁输出(如 `aiws validate .`)
20
+ 4) 输出(必须):
21
+ - Findings:问题清单(按严重性排序,引用具体文件路径)
22
+ - Risks:3–8 条
23
+ - Next:最小修复清单 + 最小验证命令
24
+ 5) 证据落盘(必须):
25
+ - 在 `.agentdocs/tmp/review/` 写入一份 `review.<timestamp>.md`
26
+ 6) 如果目标是提交前门禁:
27
+ - 建议运行:`aiws validate .`(或 `npx @aipper/aiws validate .`)
28
+
29
+ 边界:
30
+ - 不打印任何 secrets(尤其是 `secrets/test-accounts.json`)。
31
+ - 不执行破坏性命令。
32
+ """
@@ -0,0 +1,43 @@
1
+ # Command: ws:rule
2
+ # Description: 整理项目规则写入 AI_PROJECT.md 的 managed block
3
+ # Category: workspace
4
+ # Version: 1
5
+
6
+ description = "整理项目规则写入 AI_PROJECT.md 的 managed block"
7
+
8
+ prompt = """
9
+ 用中文输出(命令/路径/代码标识符保持原样不翻译)。
10
+
11
+ 目标:当用户提出“项目规则/约束/边界”时,将其整理为结构化条款,并写入工作区根目录的 `AI_PROJECT.md`。
12
+
13
+ 约定真值:
14
+ - `AI_PROJECT.md`:项目约束真值(本命令只维护其中的 managed block)
15
+ - `REQUIREMENTS.md`:需求真值(本命令不改需求)
16
+ - `AI_WORKSPACE.md`:运行/测试真值(本命令不改运行方式)
17
+
18
+ 安全规则(强制):
19
+ - 不打印 secrets;不把 token/密钥/内网地址写入 `AI_PROJECT.md`。
20
+ - 不进行破坏性命令。
21
+ - 写入前必须创建备份:`.aiws/backups/manual/AI_PROJECT.md.bak.<timestamp>`
22
+
23
+ 写入位置(强制):
24
+ - 仅修改 `AI_PROJECT.md` 中 `<!-- AI_PROJECT_RULES_BEGIN -->` 与 `<!-- AI_PROJECT_RULES_END -->` 之间的内容。
25
+ - 若文件/标记不存在:先运行 `/aiws-init`(或 `aiws init .`)补齐模板,再继续。
26
+
27
+ 工作流:
28
+ 1) 读取(或创建)`AI_PROJECT.md`,并定位 managed block。
29
+ 2) 如果用户还没给出明确的规则文本:最多问 3 个澄清问题(例如:允许改动目录白名单/必须跑哪些测试/是否允许有副作用接口/是否允许自动提交)。
30
+ 3) 将用户输入整理为短而硬的条款(建议按以下结构):
31
+ - 范围/目录白名单
32
+ - 必须执行的验证命令(含期望结果)
33
+ - 禁止项(危险操作/敏感文件/越界访问)
34
+ - 交付产物(必须更新哪些文件:issues/证据/文档)
35
+ 4) 更新 managed block:合并去重(同义合并)、保持条款可执行;避免重写文件其它部分。
36
+ 4.1) 写入前必须复述“将写入的规则清单”,并要求用户回复 `CONFIRM` 后再落盘(避免误写/误删)。
37
+ 5) 输出必须包含:
38
+ - 更新了哪些文件(路径)
39
+ - 回滚方式(恢复备份文件)
40
+ - 下一步建议(例如运行 `/ws-doctor`)
41
+
42
+ 提示:用户的“规则”可能零散,优先把它们变成可检查的条款(能落到命令/文件/目录)。
43
+ """
@@ -0,0 +1,19 @@
1
+ <!-- AIWS_MANAGED_BEGIN:opencode:aiws-init -->
2
+ # aiws init
3
+
4
+ 目标:
5
+ - 生成/补齐真值文件与门禁文件(以 `AI_PROJECT.md` / `REQUIREMENTS.md` / `AI_WORKSPACE.md` 为准)
6
+ - 写入/更新 `.gitignore` 的 aiws 托管块
7
+ - 生成/更新 `.aiws/manifest.json`(用于漂移检测)
8
+
9
+ 建议执行:
10
+ 1) `npx @aipper/aiws init`
11
+ 2) `npx @aipper/aiws validate`
12
+
13
+ 约束:
14
+ - 不写入任何 secrets
15
+ - 只允许更新托管块(`AIWS_MANAGED_BEGIN/END`)或 spec 指定的 `replace_file` 文件
16
+ <!-- AIWS_MANAGED_END:opencode:aiws-init -->
17
+
18
+ 可在下方追加本项目对 OpenCode 的额外说明(托管块外内容会被保留)。
19
+
@@ -0,0 +1,12 @@
1
+ <!-- AIWS_MANAGED_BEGIN:opencode:aiws-rollback -->
2
+ # aiws rollback
3
+
4
+ 目标:
5
+ - 从 `.aiws/backups/` 恢复到某次备份快照
6
+
7
+ 建议执行:
8
+ - `npx @aipper/aiws rollback latest`
9
+ <!-- AIWS_MANAGED_END:opencode:aiws-rollback -->
10
+
11
+ 可在下方追加本项目对 OpenCode 的额外说明(托管块外内容会被保留)。
12
+
@@ -0,0 +1,18 @@
1
+ <!-- AIWS_MANAGED_BEGIN:opencode:aiws-update -->
2
+ # aiws update
3
+
4
+ 目标:
5
+ - 基于当前 `@aipper/aiws-spec` 刷新模板与 tool-native 文件
6
+ - 更新前备份到 `.aiws/backups/<timestamp>/`
7
+
8
+ 建议执行:
9
+ 1) `npx @aipper/aiws update`
10
+ 2) `npx @aipper/aiws validate`
11
+
12
+ 约束:
13
+ - 不写入任何 secrets
14
+ - 只更新托管块或 spec 指定的 `replace_file` 文件
15
+ <!-- AIWS_MANAGED_END:opencode:aiws-update -->
16
+
17
+ 可在下方追加本项目对 OpenCode 的额外说明(托管块外内容会被保留)。
18
+
@@ -0,0 +1,13 @@
1
+ <!-- AIWS_MANAGED_BEGIN:opencode:aiws-validate -->
2
+ # aiws validate
3
+
4
+ 目标:
5
+ - 作为 CI/本地门禁:校验 required 文件结构、托管块、`.aiws/manifest.json` 漂移
6
+ - 强门禁:缺 `python3`/缺 required 脚本也应失败
7
+
8
+ 建议执行:
9
+ - `npx @aipper/aiws validate`
10
+ <!-- AIWS_MANAGED_END:opencode:aiws-validate -->
11
+
12
+ 可在下方追加本项目对 OpenCode 的额外说明(托管块外内容会被保留)。
13
+
@@ -0,0 +1,27 @@
1
+ <!-- AIWS_MANAGED_BEGIN:opencode:ws-analyze -->
2
+ # ws analyze
3
+
4
+ 用中文输出(命令/路径/代码标识符保持原样不翻译)。
5
+
6
+ 目标:在开始实现/修复前做一次技术分析,产出可执行的最小行动清单,并把证据落盘到 `.agentdocs/tmp/analyze/`。
7
+
8
+ 输入:
9
+ - 主题/需求:`$ARGUMENTS`(若为空,先问用户一句“本次分析主题是什么?”)
10
+
11
+ 步骤(建议):
12
+ 1) 先运行 `/ws-preflight`。
13
+ 2) 基于真值文件与当前代码现状,输出:
14
+ - 目标 / 非目标
15
+ - 现状证据(文件路径/接口路径)
16
+ - 推荐方案(1 个)+ 备选(可选)
17
+ - 风险与回滚(3–8 条)
18
+ - 最小验证命令(可复现)
19
+ 3) 将分析落盘到:`.agentdocs/tmp/analyze/opencode-analysis.md`(目录不存在则创建)。
20
+ 4) 回复中必须包含:`Evidence:` 证据文件路径。
21
+
22
+ 安全:
23
+ - 不打印 secrets(尤其 `secrets/test-accounts.json`)。
24
+ - 不执行破坏性命令。
25
+ <!-- AIWS_MANAGED_END:opencode:ws-analyze -->
26
+
27
+ 可在下方追加本项目对 OpenCode 的额外说明(托管块外内容会被保留)。