@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.
- package/README.md +12 -0
- package/docs/cli-interface.md +288 -0
- package/docs/spec-contract.md +183 -0
- package/package.json +18 -0
- package/templates/workspace/.agents/skills/aiws-change-archive/SKILL.md +23 -0
- package/templates/workspace/.agents/skills/aiws-change-list/SKILL.md +18 -0
- package/templates/workspace/.agents/skills/aiws-change-new/SKILL.md +26 -0
- package/templates/workspace/.agents/skills/aiws-change-next/SKILL.md +19 -0
- package/templates/workspace/.agents/skills/aiws-change-start/SKILL.md +27 -0
- package/templates/workspace/.agents/skills/aiws-change-status/SKILL.md +19 -0
- package/templates/workspace/.agents/skills/aiws-change-sync/SKILL.md +19 -0
- package/templates/workspace/.agents/skills/aiws-change-templates-init/SKILL.md +18 -0
- package/templates/workspace/.agents/skills/aiws-change-templates-which/SKILL.md +18 -0
- package/templates/workspace/.agents/skills/aiws-change-validate/SKILL.md +23 -0
- package/templates/workspace/.agents/skills/aiws-hooks-install/SKILL.md +30 -0
- package/templates/workspace/.agents/skills/aiws-hooks-status/SKILL.md +18 -0
- package/templates/workspace/.agents/skills/aiws-init/SKILL.md +27 -0
- package/templates/workspace/.agents/skills/aiws-rollback/SKILL.md +18 -0
- package/templates/workspace/.agents/skills/aiws-update/SKILL.md +26 -0
- package/templates/workspace/.agents/skills/aiws-validate/SKILL.md +22 -0
- package/templates/workspace/.agents/skills/ws-analyze/SKILL.md +26 -0
- package/templates/workspace/.agents/skills/ws-commit/SKILL.md +50 -0
- package/templates/workspace/.agents/skills/ws-dev/SKILL.md +34 -0
- package/templates/workspace/.agents/skills/ws-migrate/SKILL.md +54 -0
- package/templates/workspace/.agents/skills/ws-plan/SKILL.md +39 -0
- package/templates/workspace/.agents/skills/ws-preflight/SKILL.md +29 -0
- package/templates/workspace/.agents/skills/ws-req-change/SKILL.md +33 -0
- package/templates/workspace/.agents/skills/ws-req-contract-sync/SKILL.md +17 -0
- package/templates/workspace/.agents/skills/ws-req-contract-validate/SKILL.md +12 -0
- package/templates/workspace/.agents/skills/ws-req-flow-sync/SKILL.md +28 -0
- package/templates/workspace/.agents/skills/ws-req-review/SKILL.md +32 -0
- package/templates/workspace/.agents/skills/ws-review/SKILL.md +24 -0
- package/templates/workspace/.agents/skills/ws-rule/SKILL.md +23 -0
- package/templates/workspace/.aiws/manifest.json +36 -0
- package/templates/workspace/.claude/commands/aiws-init.md +19 -0
- package/templates/workspace/.claude/commands/aiws-rollback.md +12 -0
- package/templates/workspace/.claude/commands/aiws-update.md +18 -0
- package/templates/workspace/.claude/commands/aiws-validate.md +13 -0
- package/templates/workspace/.claude/commands/ws-analyze.md +27 -0
- package/templates/workspace/.claude/commands/ws-dev.md +24 -0
- package/templates/workspace/.claude/commands/ws-migrate.md +22 -0
- package/templates/workspace/.claude/commands/ws-preflight.md +27 -0
- package/templates/workspace/.claude/commands/ws-req-change.md +34 -0
- package/templates/workspace/.claude/commands/ws-req-contract-sync.md +18 -0
- package/templates/workspace/.claude/commands/ws-req-contract-validate.md +13 -0
- package/templates/workspace/.claude/commands/ws-req-flow-sync.md +20 -0
- package/templates/workspace/.claude/commands/ws-req-review.md +33 -0
- package/templates/workspace/.claude/commands/ws-review.md +25 -0
- package/templates/workspace/.claude/commands/ws-rule.md +24 -0
- package/templates/workspace/.codex/prompts/aiws-init.md +23 -0
- package/templates/workspace/.codex/prompts/aiws-rollback.md +16 -0
- package/templates/workspace/.codex/prompts/aiws-update.md +22 -0
- package/templates/workspace/.codex/prompts/aiws-validate.md +17 -0
- package/templates/workspace/.codex/prompts/ws-analyze.md +32 -0
- package/templates/workspace/.codex/prompts/ws-dev.md +29 -0
- package/templates/workspace/.codex/prompts/ws-migrate.md +27 -0
- package/templates/workspace/.codex/prompts/ws-preflight.md +32 -0
- package/templates/workspace/.codex/prompts/ws-req-change.md +39 -0
- package/templates/workspace/.codex/prompts/ws-req-contract-sync.md +23 -0
- package/templates/workspace/.codex/prompts/ws-req-contract-validate.md +18 -0
- package/templates/workspace/.codex/prompts/ws-req-flow-sync.md +25 -0
- package/templates/workspace/.codex/prompts/ws-req-review.md +38 -0
- package/templates/workspace/.codex/prompts/ws-review.md +30 -0
- package/templates/workspace/.codex/prompts/ws-rule.md +29 -0
- package/templates/workspace/.githooks/pre-commit +32 -0
- package/templates/workspace/.githooks/pre-push +32 -0
- package/templates/workspace/.iflow/agents/feature-reviewer.md +27 -0
- package/templates/workspace/.iflow/agents/requirements-analyst.md +24 -0
- package/templates/workspace/.iflow/agents/server-commit-manager.md +28 -0
- package/templates/workspace/.iflow/agents/server-fix-implementer.md +31 -0
- package/templates/workspace/.iflow/agents/server-test-planner.md +28 -0
- package/templates/workspace/.iflow/agents/server-test-triager.md +30 -0
- package/templates/workspace/.iflow/commands/aiws-init.toml +24 -0
- package/templates/workspace/.iflow/commands/aiws-rollback.toml +18 -0
- package/templates/workspace/.iflow/commands/aiws-update.toml +23 -0
- package/templates/workspace/.iflow/commands/aiws-validate.toml +18 -0
- package/templates/workspace/.iflow/commands/server-commit.toml +27 -0
- package/templates/workspace/.iflow/commands/server-drain.toml +99 -0
- package/templates/workspace/.iflow/commands/server-fix-and-commit.toml +27 -0
- package/templates/workspace/.iflow/commands/server-fix.toml +65 -0
- package/templates/workspace/.iflow/commands/server-test-plan.toml +62 -0
- package/templates/workspace/.iflow/commands/server-test.toml +58 -0
- package/templates/workspace/.iflow/commands/server-triage.toml +38 -0
- package/templates/workspace/.iflow/commands/server_test-plan.toml +12 -0
- package/templates/workspace/.iflow/commands/server_test.toml +12 -0
- package/templates/workspace/.iflow/commands/ws-analyze.toml +33 -0
- package/templates/workspace/.iflow/commands/ws-contract-check.toml +69 -0
- package/templates/workspace/.iflow/commands/ws-dev.toml +34 -0
- package/templates/workspace/.iflow/commands/ws-doctor.toml +141 -0
- package/templates/workspace/.iflow/commands/ws-env-doctor.toml +74 -0
- package/templates/workspace/.iflow/commands/ws-feature-deliver.toml +44 -0
- package/templates/workspace/.iflow/commands/ws-feature-plan.toml +47 -0
- package/templates/workspace/.iflow/commands/ws-init.toml +53 -0
- package/templates/workspace/.iflow/commands/ws-memory-bank-init.toml +100 -0
- package/templates/workspace/.iflow/commands/ws-migrate.toml +59 -0
- package/templates/workspace/.iflow/commands/ws-preflight.toml +30 -0
- package/templates/workspace/.iflow/commands/ws-req-change.toml +52 -0
- package/templates/workspace/.iflow/commands/ws-req-contract-sync.toml +25 -0
- package/templates/workspace/.iflow/commands/ws-req-contract-validate.toml +16 -0
- package/templates/workspace/.iflow/commands/ws-req-flow-sync.toml +36 -0
- package/templates/workspace/.iflow/commands/ws-req-review.toml +56 -0
- package/templates/workspace/.iflow/commands/ws-review.toml +32 -0
- package/templates/workspace/.iflow/commands/ws-rule.toml +43 -0
- package/templates/workspace/.opencode/command/aiws-init.md +19 -0
- package/templates/workspace/.opencode/command/aiws-rollback.md +12 -0
- package/templates/workspace/.opencode/command/aiws-update.md +18 -0
- package/templates/workspace/.opencode/command/aiws-validate.md +13 -0
- package/templates/workspace/.opencode/command/ws-analyze.md +27 -0
- package/templates/workspace/.opencode/command/ws-dev.md +24 -0
- package/templates/workspace/.opencode/command/ws-migrate.md +22 -0
- package/templates/workspace/.opencode/command/ws-preflight.md +27 -0
- package/templates/workspace/.opencode/command/ws-req-change.md +34 -0
- package/templates/workspace/.opencode/command/ws-req-contract-sync.md +18 -0
- package/templates/workspace/.opencode/command/ws-req-contract-validate.md +13 -0
- package/templates/workspace/.opencode/command/ws-req-flow-sync.md +20 -0
- package/templates/workspace/.opencode/command/ws-req-review.md +33 -0
- package/templates/workspace/.opencode/command/ws-review.md +25 -0
- package/templates/workspace/.opencode/command/ws-rule.md +24 -0
- package/templates/workspace/AGENTS.md +22 -0
- package/templates/workspace/AI_PROJECT.md +86 -0
- package/templates/workspace/AI_WORKSPACE.md +167 -0
- package/templates/workspace/REQUIREMENTS.md +94 -0
- package/templates/workspace/changes/README.md +55 -0
- package/templates/workspace/changes/templates/design.md +29 -0
- package/templates/workspace/changes/templates/proposal.md +59 -0
- package/templates/workspace/changes/templates/tasks.md +33 -0
- package/templates/workspace/issues/problem-issues.csv +2 -0
- package/templates/workspace/manifest.json +205 -0
- package/templates/workspace/memory-bank/README.md +14 -0
- package/templates/workspace/memory-bank/architecture.md +9 -0
- package/templates/workspace/memory-bank/implementation-plan.md +11 -0
- package/templates/workspace/memory-bank/progress.md +10 -0
- package/templates/workspace/memory-bank/tech-stack.md +11 -0
- package/templates/workspace/requirements/CHANGELOG.md +13 -0
- package/templates/workspace/requirements/requirements-issues.csv +2 -0
- package/templates/workspace/secrets/test-accounts.example.json +32 -0
- package/templates/workspace/tools/iflow_watchdog.sh +138 -0
- package/templates/workspace/tools/install_iflow_watchdog_systemd_user.sh +118 -0
- package/templates/workspace/tools/requirements_contract.py +285 -0
- package/templates/workspace/tools/requirements_contract_sync.py +290 -0
- package/templates/workspace/tools/requirements_flow_gen.py +250 -0
- package/templates/workspace/tools/server_test_runner.py +1902 -0
- package/templates/workspace/tools/systemd/iflow-watchdog@.service +16 -0
- package/templates/workspace/tools/systemd/iflow-watchdog@.timer +11 -0
- package/templates/workspace/tools/ws_change_check.py +323 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: aiws-change-templates-init
|
|
3
|
+
description: 在仓库内初始化 change templates(写入 changes/templates)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
目标:
|
|
7
|
+
- 初始化 `changes/templates/`(用于在仓库内自定义 proposal/tasks/design 模板)
|
|
8
|
+
|
|
9
|
+
执行(在仓库根目录):
|
|
10
|
+
```bash
|
|
11
|
+
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
12
|
+
./node_modules/.bin/aiws change templates init
|
|
13
|
+
elif command -v aiws >/dev/null 2>&1; then
|
|
14
|
+
aiws change templates init
|
|
15
|
+
else
|
|
16
|
+
npx @aipper/aiws change templates init
|
|
17
|
+
fi
|
|
18
|
+
```
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: aiws-change-templates-which
|
|
3
|
+
description: 查看当前 change templates 来源(只读)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
目标:
|
|
7
|
+
- 输出当前仓库 change templates 的解析来源与路径(用于排查模板来自哪里)
|
|
8
|
+
|
|
9
|
+
执行(在仓库根目录):
|
|
10
|
+
```bash
|
|
11
|
+
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
12
|
+
./node_modules/.bin/aiws change templates which
|
|
13
|
+
elif command -v aiws >/dev/null 2>&1; then
|
|
14
|
+
aiws change templates which
|
|
15
|
+
else
|
|
16
|
+
npx @aipper/aiws change templates which
|
|
17
|
+
fi
|
|
18
|
+
```
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: aiws-change-validate
|
|
3
|
+
description: 校验 changes 工件(可 strict)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
目标:
|
|
7
|
+
- 校验 `changes/<change-id>/` 工件完整性、归因与 WS:TODO(用于 hooks/CI)
|
|
8
|
+
|
|
9
|
+
执行(在仓库根目录):
|
|
10
|
+
```bash
|
|
11
|
+
change_id="<change-id>"
|
|
12
|
+
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
13
|
+
./node_modules/.bin/aiws change validate "$change_id" --strict
|
|
14
|
+
elif command -v aiws >/dev/null 2>&1; then
|
|
15
|
+
aiws change validate "$change_id" --strict
|
|
16
|
+
else
|
|
17
|
+
npx @aipper/aiws change validate "$change_id" --strict
|
|
18
|
+
fi
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
说明:
|
|
22
|
+
- `--strict` 会把 `WS:TODO`/缺少归因等视为错误(预期在工件未完善前会失败)
|
|
23
|
+
- 紧急情况下可用 `--allow-truth-drift`(不推荐)
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: aiws-hooks-install
|
|
3
|
+
description: 启用 git hooks 门禁(core.hooksPath=.githooks)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
目标:
|
|
7
|
+
- 为当前 git 仓库启用 aiws 门禁 hooks(`git commit`/`git push` 自动跑 `aiws validate .`)
|
|
8
|
+
|
|
9
|
+
执行(在仓库根目录):
|
|
10
|
+
```bash
|
|
11
|
+
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
12
|
+
./node_modules/.bin/aiws hooks install .
|
|
13
|
+
elif command -v aiws >/dev/null 2>&1; then
|
|
14
|
+
aiws hooks install .
|
|
15
|
+
else
|
|
16
|
+
npx @aipper/aiws hooks install .
|
|
17
|
+
fi
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
验证(可选):
|
|
21
|
+
```bash
|
|
22
|
+
git config core.hooksPath
|
|
23
|
+
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
24
|
+
./node_modules/.bin/aiws hooks status .
|
|
25
|
+
elif command -v aiws >/dev/null 2>&1; then
|
|
26
|
+
aiws hooks status .
|
|
27
|
+
else
|
|
28
|
+
npx @aipper/aiws hooks status .
|
|
29
|
+
fi
|
|
30
|
+
```
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: aiws-hooks-status
|
|
3
|
+
description: 查看当前仓库 hooks 状态(只读)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
目标:
|
|
7
|
+
- 输出当前仓库 hooks 状态(不修改文件)
|
|
8
|
+
|
|
9
|
+
执行(在仓库根目录):
|
|
10
|
+
```bash
|
|
11
|
+
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
12
|
+
./node_modules/.bin/aiws hooks status .
|
|
13
|
+
elif command -v aiws >/dev/null 2>&1; then
|
|
14
|
+
aiws hooks status .
|
|
15
|
+
else
|
|
16
|
+
npx @aipper/aiws hooks status .
|
|
17
|
+
fi
|
|
18
|
+
```
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: aiws-init
|
|
3
|
+
description: 初始化工作区(生成真值文件与门禁)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
目标:
|
|
7
|
+
- 生成/补齐真值文件与门禁文件(以 `AI_PROJECT.md` / `REQUIREMENTS.md` / `AI_WORKSPACE.md` 为准)
|
|
8
|
+
- 写入/更新 `.gitignore` 的 aiws 托管块
|
|
9
|
+
- 生成/更新 `.aiws/manifest.json`(用于漂移检测)
|
|
10
|
+
|
|
11
|
+
执行(在仓库根目录):
|
|
12
|
+
```bash
|
|
13
|
+
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
14
|
+
./node_modules/.bin/aiws init .
|
|
15
|
+
./node_modules/.bin/aiws validate .
|
|
16
|
+
elif command -v aiws >/dev/null 2>&1; then
|
|
17
|
+
aiws init .
|
|
18
|
+
aiws validate .
|
|
19
|
+
else
|
|
20
|
+
npx @aipper/aiws init .
|
|
21
|
+
npx @aipper/aiws validate .
|
|
22
|
+
fi
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
约束:
|
|
26
|
+
- 不写入任何 secrets
|
|
27
|
+
- 只允许更新托管块(`AIWS_MANAGED_BEGIN/END`)或 spec 指定的 `replace_file` 文件
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: aiws-rollback
|
|
3
|
+
description: 回滚工作区(从备份恢复)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
目标:
|
|
7
|
+
- 从 `.aiws/backups/` 恢复到某次备份快照
|
|
8
|
+
|
|
9
|
+
执行(在仓库根目录):
|
|
10
|
+
```bash
|
|
11
|
+
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
12
|
+
./node_modules/.bin/aiws rollback . latest
|
|
13
|
+
elif command -v aiws >/dev/null 2>&1; then
|
|
14
|
+
aiws rollback . latest
|
|
15
|
+
else
|
|
16
|
+
npx @aipper/aiws rollback . latest
|
|
17
|
+
fi
|
|
18
|
+
```
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: aiws-update
|
|
3
|
+
description: 更新工作区(刷新模板与托管块)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
目标:
|
|
7
|
+
- 基于当前 `@aipper/aiws-spec` 刷新模板与 tool-native 文件
|
|
8
|
+
- 更新前备份到 `.aiws/backups/<timestamp>/`
|
|
9
|
+
|
|
10
|
+
执行(在仓库根目录):
|
|
11
|
+
```bash
|
|
12
|
+
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
13
|
+
./node_modules/.bin/aiws update .
|
|
14
|
+
./node_modules/.bin/aiws validate .
|
|
15
|
+
elif command -v aiws >/dev/null 2>&1; then
|
|
16
|
+
aiws update .
|
|
17
|
+
aiws validate .
|
|
18
|
+
else
|
|
19
|
+
npx @aipper/aiws update .
|
|
20
|
+
npx @aipper/aiws validate .
|
|
21
|
+
fi
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
约束:
|
|
25
|
+
- 不写入任何 secrets
|
|
26
|
+
- 只更新托管块或 spec 指定的 `replace_file` 文件
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: aiws-validate
|
|
3
|
+
description: 校验工作区(漂移检测 + 门禁)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
目标:
|
|
7
|
+
- 作为 CI/本地门禁:校验 required 文件结构、托管块、`.aiws/manifest.json` 漂移
|
|
8
|
+
- 强门禁:缺 `python3`/缺 required 脚本也应失败
|
|
9
|
+
|
|
10
|
+
执行(在仓库根目录):
|
|
11
|
+
```bash
|
|
12
|
+
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
13
|
+
AIWS_VALIDATE_STAMP=1 ./node_modules/.bin/aiws validate .
|
|
14
|
+
elif command -v aiws >/dev/null 2>&1; then
|
|
15
|
+
AIWS_VALIDATE_STAMP=1 aiws validate .
|
|
16
|
+
else
|
|
17
|
+
AIWS_VALIDATE_STAMP=1 npx @aipper/aiws validate .
|
|
18
|
+
fi
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
证据(可选):
|
|
22
|
+
- stamp:`.agentdocs/tmp/aiws-validate/*.json`(由 `.gitignore` 忽略)
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ws-analyze
|
|
3
|
+
description: 分析(定位问题与收集上下文)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
7
|
+
|
|
8
|
+
目标:在开始实现/修复前做一次技术分析,产出可执行的最小行动清单,并把证据落盘到 `.agentdocs/tmp/analyze/`。
|
|
9
|
+
|
|
10
|
+
输入:
|
|
11
|
+
- 主题/需求:用户在本次消息中提供的主题(若不明确,先问一句“本次分析主题是什么?”)
|
|
12
|
+
|
|
13
|
+
步骤(建议):
|
|
14
|
+
1) 先做 preflight:定位项目根目录,读取 `AI_PROJECT.md` / `REQUIREMENTS.md` / `AI_WORKSPACE.md`,输出约束摘要。
|
|
15
|
+
2) 基于真值文件与当前代码现状,输出:
|
|
16
|
+
- 目标 / 非目标
|
|
17
|
+
- 现状证据(文件路径/接口路径)
|
|
18
|
+
- 推荐方案(1 个)+ 备选(可选)
|
|
19
|
+
- 风险与回滚(3–8 条)
|
|
20
|
+
- 最小验证命令(可复现)
|
|
21
|
+
3) 将分析落盘到:`.agentdocs/tmp/analyze/codex-analysis.md`(目录不存在则创建)。
|
|
22
|
+
4) 回复中必须包含:`Evidence:` 证据文件路径。
|
|
23
|
+
|
|
24
|
+
安全:
|
|
25
|
+
- 不打印 secrets(尤其 `secrets/test-accounts.json`)。
|
|
26
|
+
- 不执行破坏性命令。
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ws-commit
|
|
3
|
+
description: 提交(先审计/门禁并落盘证据,再 git commit)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
7
|
+
|
|
8
|
+
目标:
|
|
9
|
+
- 提交前审计与证据落盘(`$ws-review`)
|
|
10
|
+
- 提交前门禁校验与证据落盘(`aiws validate . --stamp`)
|
|
11
|
+
- 最后执行 `git commit`(commit 前必须让用户确认 message;不使用 `--no-verify` 绕过 hooks)
|
|
12
|
+
|
|
13
|
+
安全约束(强制):
|
|
14
|
+
- 不自动 `git add -A`(避免误提交);只在用户明确指示时才执行 staging 命令
|
|
15
|
+
- 不自动 push
|
|
16
|
+
- 不写入任何 secrets
|
|
17
|
+
|
|
18
|
+
执行步骤(建议):
|
|
19
|
+
1) 运行 `$ws-preflight`(确保真值文件就绪)。
|
|
20
|
+
2) 运行 `$ws-review`(生成审计证据:`.agentdocs/tmp/review/codex-review.md`)。
|
|
21
|
+
3) 运行门禁校验并写 stamp:
|
|
22
|
+
```bash
|
|
23
|
+
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
24
|
+
./node_modules/.bin/aiws validate . --stamp
|
|
25
|
+
elif command -v aiws >/dev/null 2>&1; then
|
|
26
|
+
aiws validate . --stamp
|
|
27
|
+
else
|
|
28
|
+
npx @aipper/aiws validate . --stamp
|
|
29
|
+
fi
|
|
30
|
+
```
|
|
31
|
+
4) 检查当前 staging 状态(必须输出给用户确认):
|
|
32
|
+
```bash
|
|
33
|
+
git status --porcelain
|
|
34
|
+
git diff --staged
|
|
35
|
+
```
|
|
36
|
+
5) 若没有 staged changes:停止并提示用户先明确要提交哪些文件(例如 `git add -p` 或 `git add <path>`)。
|
|
37
|
+
6) 让用户提供 commit message(必须确认后再执行)。
|
|
38
|
+
7) 执行提交(不带 `--no-verify`):
|
|
39
|
+
```bash
|
|
40
|
+
git commit -m "<message>"
|
|
41
|
+
```
|
|
42
|
+
8) 输出提交结果(可选):
|
|
43
|
+
```bash
|
|
44
|
+
git show --stat --oneline -1
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
输出要求:
|
|
48
|
+
- `Evidence:` `.agentdocs/tmp/review/codex-review.md` + `.agentdocs/tmp/aiws-validate/*.json`
|
|
49
|
+
- `Commit:` 最终使用的 commit message(仅当用户确认后)
|
|
50
|
+
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ws-dev
|
|
3
|
+
description: 开发(按需求实现并验证;适用于任何需要修改代码/配置的任务)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
7
|
+
|
|
8
|
+
目标:在 AIWS 约束下完成一个可回放、可验证的小步交付。
|
|
9
|
+
|
|
10
|
+
建议流程:
|
|
11
|
+
1) 先做 preflight:定位项目根目录,读取 `AI_PROJECT.md` / `REQUIREMENTS.md` / `AI_WORKSPACE.md`,输出约束摘要。
|
|
12
|
+
- 若是中大型任务:建议先用 `$ws-plan` 生成 `plan/` 工件,再进入实现(便于可回放与对齐验证入口)。
|
|
13
|
+
2) 建立变更归因(推荐):
|
|
14
|
+
- 推荐一键:`aiws change start <change-id> --hooks`(切分支 + 初始化变更工件 + 启用 hooks)
|
|
15
|
+
- 或手工:`git switch -c change/<change-id>`,并创建 `changes/<change-id>/proposal.md` 与 `changes/<change-id>/tasks.md`(参考 `changes/README.md`)
|
|
16
|
+
3) 如涉及需求调整:先做需求评审(可用 `$ws-req-review`)→ 用户确认后再做需求落盘(可用 `$ws-req-change`)(避免需求漂移)。
|
|
17
|
+
4) 实施最小改动:任何改动都要能归因到 `REQUIREMENTS.md`(验收)或 `issues/problem-issues.csv`(问题)。
|
|
18
|
+
5) 运行 `AI_WORKSPACE.md` 里声明的验证命令;未运行不声称已运行。
|
|
19
|
+
6) 多步任务(≥2 步):使用 `update_plan` 工具跟踪 `pending → in_progress → completed`,每完成一步立即更新(不要事后批量更新)。
|
|
20
|
+
7) 提交前强制门禁(commit/push hooks 也会阻断):
|
|
21
|
+
```bash
|
|
22
|
+
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
23
|
+
./node_modules/.bin/aiws validate .
|
|
24
|
+
elif command -v aiws >/dev/null 2>&1; then
|
|
25
|
+
aiws validate .
|
|
26
|
+
else
|
|
27
|
+
npx @aipper/aiws validate .
|
|
28
|
+
fi
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
输出要求:
|
|
32
|
+
- `Changed:` 文件清单
|
|
33
|
+
- `Verify:` 实际运行的命令 + 期望结果
|
|
34
|
+
- `Evidence:` 证据路径(例如 `plan/...`、`.agentdocs/tmp/aiws-validate/...` 或 `changes/<change-id>/...`)
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ws-migrate
|
|
3
|
+
description: 迁移(补齐/升级 AIWS 工作区文件)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
用中文输出;命令与路径保持原样不翻译。
|
|
7
|
+
|
|
8
|
+
目标:把当前仓库补齐为 aiws workspace 模板,并启用可验证门禁。
|
|
9
|
+
|
|
10
|
+
执行(在项目根目录):
|
|
11
|
+
```bash
|
|
12
|
+
if [[ -f ".aiws/manifest.json" ]]; then
|
|
13
|
+
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
14
|
+
./node_modules/.bin/aiws update .
|
|
15
|
+
elif command -v aiws >/dev/null 2>&1; then
|
|
16
|
+
aiws update .
|
|
17
|
+
else
|
|
18
|
+
npx @aipper/aiws update .
|
|
19
|
+
fi
|
|
20
|
+
else
|
|
21
|
+
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
22
|
+
./node_modules/.bin/aiws init .
|
|
23
|
+
elif command -v aiws >/dev/null 2>&1; then
|
|
24
|
+
aiws init .
|
|
25
|
+
else
|
|
26
|
+
npx @aipper/aiws init .
|
|
27
|
+
fi
|
|
28
|
+
fi
|
|
29
|
+
|
|
30
|
+
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
31
|
+
./node_modules/.bin/aiws validate .
|
|
32
|
+
elif command -v aiws >/dev/null 2>&1; then
|
|
33
|
+
aiws validate .
|
|
34
|
+
else
|
|
35
|
+
npx @aipper/aiws validate .
|
|
36
|
+
fi
|
|
37
|
+
|
|
38
|
+
git config core.hooksPath .githooks
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
回滚(恢复最近一次快照):
|
|
42
|
+
```bash
|
|
43
|
+
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
44
|
+
./node_modules/.bin/aiws rollback . latest
|
|
45
|
+
elif command -v aiws >/dev/null 2>&1; then
|
|
46
|
+
aiws rollback . latest
|
|
47
|
+
else
|
|
48
|
+
npx @aipper/aiws rollback . latest
|
|
49
|
+
fi
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
约束:
|
|
53
|
+
- 不写入任何 secrets。
|
|
54
|
+
- 不执行破坏性命令。
|
|
@@ -0,0 +1,39 @@
|
|
|
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
|
+
- 为当前任务生成一份可追踪的执行计划文件:`plan/<timestamp>-<slug>.md`
|
|
11
|
+
- 计划必须包含可复现验证命令(优先引用 `AI_WORKSPACE.md`)
|
|
12
|
+
|
|
13
|
+
约束:
|
|
14
|
+
- 不写入任何 secrets(token、账号、内网端点等不得进入 git)
|
|
15
|
+
- 本 skill 只负责“想清楚怎么做 + 落盘计划”,不要直接大规模改动代码
|
|
16
|
+
- 未运行不声称已运行;验证命令要写清“预期结果”
|
|
17
|
+
|
|
18
|
+
执行步骤(建议):
|
|
19
|
+
1) 先运行 `$ws-preflight`(读取真值文件并输出约束摘要)。
|
|
20
|
+
2) 若用户任务描述不清:先问 1-3 个关键澄清问题(不要猜)。
|
|
21
|
+
3) 判断复杂度:`simple / medium / complex`(给出一句理由),并估算步骤数。
|
|
22
|
+
4) 生成计划文件:
|
|
23
|
+
- 文件名:`plan/YYYY-MM-DD_HH-MM-SS-<slug>.md`(`<slug>` 用 kebab-case;同一任务调整计划时尽量复用同一文件)
|
|
24
|
+
- 若 `plan/` 不存在先创建
|
|
25
|
+
- 必须实际写入到磁盘(不要只在对话里输出);如因权限/策略无法写盘,必须明确说明原因并输出可复制的完整内容
|
|
26
|
+
5) 计划内容至少包含(不要留空):
|
|
27
|
+
- `Goal`:要达成什么
|
|
28
|
+
- `Non-goals`:明确不做什么(避免 scope creep)
|
|
29
|
+
- `Scope`:将改动的文件/目录清单(不确定就写 `TBD` 并说明如何确定)
|
|
30
|
+
- `Plan`:分步执行(每步尽量落到具体文件/命令;必要时拆 Phase)
|
|
31
|
+
- `Verify`:可复现命令 + 期望结果(优先引用 `AI_WORKSPACE.md` 的入口;必要时补充 e2e)
|
|
32
|
+
- `Risks & Rollback`:风险点 + 回滚方案(例如 git 回滚、`aiws rollback`、恢复备份等)
|
|
33
|
+
- `Evidence`:计划文件路径;若创建了变更工件则附 `changes/<change-id>/...`
|
|
34
|
+
6) 若计划涉及“需求/验收”变更:先用 `$ws-req-review` 评审 → 用户确认后再 `$ws-req-change` 落盘(避免需求漂移)。
|
|
35
|
+
7) 多步任务(≥2 步):后续进入实现时,使用 `update_plan` 工具跟踪 `pending → in_progress → completed`。
|
|
36
|
+
|
|
37
|
+
输出要求:
|
|
38
|
+
- `Plan file:` <实际写入的路径>
|
|
39
|
+
- `Next:` 推荐下一步(通常是 `$ws-dev` 或 `aiws change start <change-id> --hooks`)
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ws-preflight
|
|
3
|
+
description: 预检(提交前快速检查与建议)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
7
|
+
|
|
8
|
+
目标:在开始任何“写代码/改配置/落盘文件”之前,对齐工作区真值文件,避免规则漂移。
|
|
9
|
+
|
|
10
|
+
执行步骤(强制):
|
|
11
|
+
1) 定位项目根目录:
|
|
12
|
+
- 优先:`git rev-parse --show-toplevel`
|
|
13
|
+
- 若失败:停止并让用户确认当前目录是否为项目根(不要猜测)。
|
|
14
|
+
2) 在项目根目录读取以下文件(存在则必须读取;缺失则明确报告缺失项,不要臆测内容):
|
|
15
|
+
- `AI_PROJECT.md`
|
|
16
|
+
- `REQUIREMENTS.md`
|
|
17
|
+
- `AI_WORKSPACE.md`
|
|
18
|
+
3) 若缺失任意真值文件:不要继续“写代码/改配置/落盘文件”。先输出缺失项,并给出下一步建议:
|
|
19
|
+
- `npx @aipper/aiws init .`(或 `aiws init .`)初始化真值文件
|
|
20
|
+
- 然后重新执行 `$ws-preflight`
|
|
21
|
+
4) 输出:
|
|
22
|
+
- `Root:` <项目根路径>
|
|
23
|
+
- `Found:` <实际读取到的文件列表>
|
|
24
|
+
- `Missing:` <缺失文件列表>
|
|
25
|
+
- `Key rules:` 3–8 条 bullet(范围/禁止项/必须产物/必须验证命令)
|
|
26
|
+
|
|
27
|
+
安全:
|
|
28
|
+
- 不打印 secrets;遇到疑似敏感值只提示“存在风险”但不要复述原文。
|
|
29
|
+
- 不执行破坏性命令。
|
|
@@ -0,0 +1,33 @@
|
|
|
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) 强制停下来让用户确认:是否继续落盘?(Y/N)
|
|
17
|
+
4) 用户确认 Y 后再写入:
|
|
18
|
+
- 更新 `REQUIREMENTS.md`(只保留当前有效版本,不在此堆历史)
|
|
19
|
+
- 追加 `requirements/CHANGELOG.md`
|
|
20
|
+
5) 同步/补齐执行合同(至少做其中之一,按仓库现状选择最安全路径):
|
|
21
|
+
- 若你维护了 FlowSpec:`python3 tools/requirements_contract_sync.py --workspace .`
|
|
22
|
+
- 否则:`python3 tools/requirements_contract.py init` 后手工补齐/新增对应 Req 行
|
|
23
|
+
6) 校验(强制):`python3 tools/requirements_contract.py validate`
|
|
24
|
+
7) 建议(如维护 FlowSpec):运行 `$ws-req-flow-sync`
|
|
25
|
+
|
|
26
|
+
输出必须包含:
|
|
27
|
+
- 本次更新的文件清单(路径)
|
|
28
|
+
- 回滚方案(如何撤销本次需求变更)
|
|
29
|
+
- 下一步建议命令
|
|
30
|
+
|
|
31
|
+
安全:
|
|
32
|
+
- 不打印 `secrets/test-accounts.json`
|
|
33
|
+
- 不引入任何 token/密钥到仓库
|
|
@@ -0,0 +1,17 @@
|
|
|
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`
|
|
@@ -0,0 +1,12 @@
|
|
|
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),并给出最小补齐建议
|
|
@@ -0,0 +1,28 @@
|
|
|
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`
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ws-req-review
|
|
3
|
+
description: 需求评审(对齐真值与验收)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
7
|
+
|
|
8
|
+
目标:在不修改任何文件的前提下,对 `REQUIREMENTS.md` 做一次整体 QA,输出缺口/冲突/风险,减少实现漂移。
|
|
9
|
+
|
|
10
|
+
执行步骤(强制):
|
|
11
|
+
1) 定位项目根目录:`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`。
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ws-review
|
|
3
|
+
description: 评审(提交前审计与证据落盘)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
7
|
+
|
|
8
|
+
目标:在提交/交付前审计当前改动,对照真值文件检查是否越界,并把审计证据落盘到 `.agentdocs/tmp/review/`。
|
|
9
|
+
|
|
10
|
+
步骤(建议):
|
|
11
|
+
1) 先做 preflight:定位项目根目录,读取 `AI_PROJECT.md` / `REQUIREMENTS.md` / `AI_WORKSPACE.md`,输出约束摘要。
|
|
12
|
+
2) 基于 `git status` / `git diff`(以及你实际运行过的测试结果),对照 `AI_PROJECT.md` 与 `REQUIREMENTS.md` 检查:
|
|
13
|
+
- 是否存在越界目录改动/危险操作
|
|
14
|
+
- 是否有可复现验证命令与证据
|
|
15
|
+
- 是否维护了 `changes/<change-id>/` 或相关 `issues/*.csv`
|
|
16
|
+
3) 将审计落盘到:`.agentdocs/tmp/review/codex-review.md`(目录不存在则创建)。
|
|
17
|
+
4) 回复中输出:
|
|
18
|
+
- `Evidence:` 证据文件路径
|
|
19
|
+
- `Top risks:` 3–8 条(高→低)
|
|
20
|
+
- `Next:` 最小修复清单 + 最小验证命令
|
|
21
|
+
|
|
22
|
+
安全:
|
|
23
|
+
- 不打印 secrets。
|
|
24
|
+
- 不执行破坏性命令。
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ws-rule
|
|
3
|
+
description: 规则(解释项目规则与边界)
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
7
|
+
|
|
8
|
+
目标:把用户口述的“项目特有规则”整理成可执行条款,并写入 `AI_PROJECT.md` 的 `AI_PROJECT_RULES_BEGIN/END` 段(托管块外内容会被保留)。
|
|
9
|
+
|
|
10
|
+
安全规则(强制):
|
|
11
|
+
- 不打印/不写入 secrets(token、密钥、内网地址、账号密码)。
|
|
12
|
+
- 不执行破坏性命令。
|
|
13
|
+
|
|
14
|
+
工作流:
|
|
15
|
+
1) 先做 preflight;若缺失 `AI_PROJECT.md`:提示用户先 `$ws-migrate`(或 `$aiws-init`)。
|
|
16
|
+
2) 写入前创建备份(必须):
|
|
17
|
+
`ts="$(date +%Y%m%d-%H%M%S)"; mkdir -p .aiws/backups/manual; cp -a AI_PROJECT.md .aiws/backups/manual/AI_PROJECT.md.bak.${ts}`
|
|
18
|
+
3) 先输出“将写入的规则清单”(3–12 条),并要求用户回复 `CONFIRM` 后再落盘。
|
|
19
|
+
4) 用户确认后,**仅更新** BEGIN/END 段内内容(合并去重;写成可检查条款:目录白名单/必须验证命令/禁止项/产物要求)。
|
|
20
|
+
5) 输出必须包含:
|
|
21
|
+
- 更新了哪些文件(路径)
|
|
22
|
+
- 回滚方式(恢复备份文件)
|
|
23
|
+
- 下一步建议:`$aiws-validate`
|