@aipper/aiws-spec 0.0.51 → 0.0.53
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/pi-plugins-manifest.json +10 -9
- package/docs/pi-plugins-manifest.md +6 -6
- package/docs/skill-manifest.json +18 -0
- package/package.json +1 -1
- package/templates/workspace/.opencode/README.md +49 -0
- package/templates/workspace/.opencode/command/ws-frontend-design.md +17 -0
- package/templates/workspace/.opencode/commands/using-aiws.md +18 -7
- package/templates/workspace/.opencode/plugins/memory-autoload.js +185 -0
- package/templates/workspace/.opencode/skills/codebase-design/SKILL.md +114 -0
- package/templates/workspace/.opencode/skills/domain-modeling/SKILL.md +74 -0
- package/templates/workspace/.opencode/skills/grill-with-docs/SKILL.md +7 -0
- package/templates/workspace/.opencode/skills/tdd/SKILL.md +36 -0
- package/templates/workspace/.opencode/skills/using-aiws/SKILL.md +2 -1
- package/templates/workspace/.opencode/skills/ws-dev/SKILL.md +24 -3
- package/templates/workspace/.opencode/skills/ws-plan/SKILL.md +15 -1
- package/templates/workspace/.opencode/skills/ws-review/SKILL.md +22 -0
- package/templates/workspace/AGENTS.md +13 -0
- package/templates/workspace/manifest.json +9 -121
- package/templates/workspace/.opencode/command/p-aiws-change-archive.md +0 -27
- package/templates/workspace/.opencode/command/p-aiws-change-finish.md +0 -27
- package/templates/workspace/.opencode/command/p-aiws-change-list.md +0 -26
- package/templates/workspace/.opencode/command/p-aiws-change-new.md +0 -27
- package/templates/workspace/.opencode/command/p-aiws-change-next.md +0 -27
- package/templates/workspace/.opencode/command/p-aiws-change-start.md +0 -27
- package/templates/workspace/.opencode/command/p-aiws-change-status.md +0 -27
- package/templates/workspace/.opencode/command/p-aiws-change-sync.md +0 -27
- package/templates/workspace/.opencode/command/p-aiws-change-templates-init.md +0 -26
- package/templates/workspace/.opencode/command/p-aiws-change-templates-which.md +0 -26
- package/templates/workspace/.opencode/command/p-aiws-change-validate.md +0 -27
- package/templates/workspace/.opencode/command/p-aiws-hooks-install.md +0 -26
- package/templates/workspace/.opencode/command/p-aiws-hooks-status.md +0 -26
- package/templates/workspace/.opencode/command/p-aiws-init.md +0 -23
- package/templates/workspace/.opencode/command/p-aiws-rollback.md +0 -16
- package/templates/workspace/.opencode/command/p-aiws-update.md +0 -22
- package/templates/workspace/.opencode/command/p-aiws-validate.md +0 -17
- package/templates/workspace/.opencode/command/ws-analyze.md +0 -30
- package/templates/workspace/.opencode/command/ws-auto.md +0 -33
- package/templates/workspace/.opencode/command/ws-autonomy.md +0 -25
- package/templates/workspace/.opencode/command/ws-bugfix.md +0 -35
- package/templates/workspace/.opencode/command/ws-commit.md +0 -87
- package/templates/workspace/.opencode/command/ws-delegate.md +0 -33
- package/templates/workspace/.opencode/command/ws-deliver.md +0 -75
- package/templates/workspace/.opencode/command/ws-handoff.md +0 -43
- package/templates/workspace/.opencode/command/ws-intake.md +0 -22
- package/templates/workspace/.opencode/command/ws-migrate.md +0 -25
- package/templates/workspace/.opencode/command/ws-plan-verify.md +0 -28
- package/templates/workspace/.opencode/command/ws-preflight.md +0 -35
- package/templates/workspace/.opencode/command/ws-pull.md +0 -87
- package/templates/workspace/.opencode/command/ws-push.md +0 -93
- package/templates/workspace/.opencode/command/ws-quality-review.md +0 -30
- package/templates/workspace/.opencode/command/ws-req-change.md +0 -45
- package/templates/workspace/.opencode/command/ws-req-contract-sync.md +0 -21
- package/templates/workspace/.opencode/command/ws-req-contract-validate.md +0 -16
- package/templates/workspace/.opencode/command/ws-req-flow-sync.md +0 -23
- package/templates/workspace/.opencode/command/ws-req-review.md +0 -36
- package/templates/workspace/.opencode/command/ws-rule.md +0 -27
- package/templates/workspace/.opencode/command/ws-spec-review.md +0 -30
- package/templates/workspace/.opencode/command/ws-submodule-setup.md +0 -57
- package/templates/workspace/.opencode/command/ws-verify-before-complete.md +0 -27
- package/templates/workspace/.opencode/commands/p-aiws-change-archive.md +0 -27
- package/templates/workspace/.opencode/commands/p-aiws-change-finish.md +0 -27
- package/templates/workspace/.opencode/commands/p-aiws-change-list.md +0 -26
- package/templates/workspace/.opencode/commands/p-aiws-change-new.md +0 -27
- package/templates/workspace/.opencode/commands/p-aiws-change-next.md +0 -27
- package/templates/workspace/.opencode/commands/p-aiws-change-start.md +0 -27
- package/templates/workspace/.opencode/commands/p-aiws-change-status.md +0 -27
- package/templates/workspace/.opencode/commands/p-aiws-change-sync.md +0 -27
- package/templates/workspace/.opencode/commands/p-aiws-change-templates-init.md +0 -26
- package/templates/workspace/.opencode/commands/p-aiws-change-templates-which.md +0 -26
- package/templates/workspace/.opencode/commands/p-aiws-change-validate.md +0 -27
- package/templates/workspace/.opencode/commands/p-aiws-hooks-install.md +0 -26
- package/templates/workspace/.opencode/commands/p-aiws-hooks-status.md +0 -26
- package/templates/workspace/.opencode/commands/p-aiws-init.md +0 -23
- package/templates/workspace/.opencode/commands/p-aiws-rollback.md +0 -16
- package/templates/workspace/.opencode/commands/p-aiws-update.md +0 -22
- package/templates/workspace/.opencode/commands/p-aiws-validate.md +0 -17
- package/templates/workspace/.opencode/commands/ws-analyze.md +0 -30
- package/templates/workspace/.opencode/commands/ws-auto.md +0 -33
- package/templates/workspace/.opencode/commands/ws-autonomy.md +0 -25
- package/templates/workspace/.opencode/commands/ws-bugfix.md +0 -35
- package/templates/workspace/.opencode/commands/ws-commit.md +0 -18
- package/templates/workspace/.opencode/commands/ws-delegate.md +0 -33
- package/templates/workspace/.opencode/commands/ws-deliver.md +0 -18
- package/templates/workspace/.opencode/commands/ws-handoff.md +0 -18
- package/templates/workspace/.opencode/commands/ws-intake.md +0 -22
- package/templates/workspace/.opencode/commands/ws-migrate.md +0 -18
- package/templates/workspace/.opencode/commands/ws-plan-verify.md +0 -18
- package/templates/workspace/.opencode/commands/ws-preflight.md +0 -35
- package/templates/workspace/.opencode/commands/ws-pull.md +0 -18
- package/templates/workspace/.opencode/commands/ws-push.md +0 -18
- package/templates/workspace/.opencode/commands/ws-quality-review.md +0 -30
- package/templates/workspace/.opencode/commands/ws-req-change.md +0 -45
- package/templates/workspace/.opencode/commands/ws-req-contract-sync.md +0 -21
- package/templates/workspace/.opencode/commands/ws-req-contract-validate.md +0 -16
- package/templates/workspace/.opencode/commands/ws-req-flow-sync.md +0 -23
- package/templates/workspace/.opencode/commands/ws-req-review.md +0 -36
- package/templates/workspace/.opencode/commands/ws-rule.md +0 -27
- package/templates/workspace/.opencode/commands/ws-spec-review.md +0 -30
- package/templates/workspace/.opencode/commands/ws-submodule-setup.md +0 -18
- package/templates/workspace/.opencode/commands/ws-verify-before-complete.md +0 -18
- package/templates/workspace/.opencode/skills/ws-handoff/SKILL.md +0 -18
- package/templates/workspace/.opencode/skills/ws-intake/SKILL.md +0 -80
|
@@ -28,9 +28,30 @@ description: 使用时机:需要修改代码、配置、测试时。触发词
|
|
|
28
28
|
|
|
29
29
|
## TDD 约束(强制)
|
|
30
30
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
新代码/业务逻辑改动必须走 TDD 循环。以下参考自 `tdd` skill(已作为模板 skill 安装)。
|
|
32
|
+
|
|
33
|
+
### 好测试的定义
|
|
34
|
+
|
|
35
|
+
测试通过**公开接口**验证行为,而非实现细节。好的测试读起来像规范——"用户可以带着有效购物车结账"精确描述了功能——并且在重构后依然存活,因为它不关心内部结构。
|
|
36
|
+
|
|
37
|
+
### Seams — 测试在哪写
|
|
38
|
+
|
|
39
|
+
**Seam** 是你测试的公开边界:在不深入内部的前提下观察行为的接口。测试只写在 seam 处,绝不针对内部实现。
|
|
40
|
+
|
|
41
|
+
**只在预先约定的 seam 处测试。** 写任何测试前,先写下测试的 seam 并与用户确认。没有测试写在未确认的 seam 上。事前约定 seams 让测试精力落在关键路径和复杂逻辑上,而不是每个边缘情况。
|
|
42
|
+
|
|
43
|
+
### 反模式
|
|
44
|
+
|
|
45
|
+
- **实现耦合** — mock 内部协作者、测试私有方法、或通过侧通道验证(查询数据库而非使用接口)。识别信号:重构时测试断裂但行为不变。
|
|
46
|
+
- **同义反复** — 断言用代码本身的方法重算了预期值(`expect(add(a, b)).toBe(a + b)`),所以测试通过构造必然通过,永远不可能与代码矛盾。预期值必须来自独立真值源——已知正确的字面量、演算示例、spec。
|
|
47
|
+
- **水平切片** — 先写完所有测试,再实现所有代码。批量测试验证的是"想象中"的行为。按**垂直切片**工作——一个测试 → 一段实现 → 重复,每个测试都是一颗响应当前学习成果的**示踪弹**。
|
|
48
|
+
|
|
49
|
+
### 循环规则
|
|
50
|
+
|
|
51
|
+
1. **RED**:先写失败测试 → 2. **GREEN**:仅实现足够通过的代码 → 3. **REFACTOR**:保持绿
|
|
52
|
+
- 一次一个切片。一个 seam、一个测试、一次最小实现。
|
|
53
|
+
- **重构不是循环的一部分。** 重构属于 review 阶段(见 `code-review` skill),不属于 RED→GREEN 实现循环。
|
|
54
|
+
- 禁止先实现后补测 / 跳过测试提交。改后自检:`lint → typecheck → test`(无脚本则跳过)。
|
|
34
55
|
|
|
35
56
|
## 完成判定
|
|
36
57
|
|
|
@@ -74,7 +74,21 @@ OpenCode + oMo 优先策略:
|
|
|
74
74
|
7) 若存在 change proposal:回填并对齐 `proposal.md` 的 `Plan_File`(必要时同步 `Contract_Row` / `Evidence_Path`),保证 plan/proposal 一致。
|
|
75
75
|
8) 运行 `$ws-plan-verify` 作为执行前质量门(计划不过长、不跑偏、验证可复现)。
|
|
76
76
|
- 通过后:标记 `[workflow-state:plan:DONE]` 或 `[workflow-state:gate:plan_passed]`,表示 plan 阶段已收敛。
|
|
77
|
-
8a) **
|
|
77
|
+
8a) **Optional Spec Phase**:若用户需要正式 spec 文档(PRD),在 plan 文件生成后追加一份 `docs/spec/<feature>.md`,模板如下(来自 to-spec skill):
|
|
78
|
+
```markdown
|
|
79
|
+
## Problem Statement
|
|
80
|
+
用户视角的问题描述。
|
|
81
|
+
## User Stories
|
|
82
|
+
As an <actor>, I want a <feature>, so that <benefit>(编号列表,全面覆盖)
|
|
83
|
+
## Implementation Decisions
|
|
84
|
+
模块/接口/架构/API 合同(不含具体文件路径,避免过期)
|
|
85
|
+
## Testing Decisions
|
|
86
|
+
好测试的定义(仅测试外部行为,非实现细节)+ 需要测试的模块 + 代码库中同类测试的先例
|
|
87
|
+
## Out of Scope
|
|
88
|
+
明确不做的范围
|
|
89
|
+
```
|
|
90
|
+
可选流程:sketch seams(代码库中已有的 seam 优先于新 seam)→ 与用户确认 seam 匹配 → 写 spec → 落盘。
|
|
91
|
+
8b) **Task Granularity Gate(T3)**:在 plan→dev 交接前,逐条验证计划中每步 ≤3 个原子操作(read/edit/write/run):
|
|
78
92
|
- 若 any 步超限:拆细后再重新通过 ws-plan-verify,**不** 允许带着粗粒度任务进入 ws-dev
|
|
79
93
|
- 仅当全部通过后才可标记 plan 完成并进入 ws-dev
|
|
80
94
|
- 此门禁同样适用于 goal pipeline 的 Granularity Gate(c-i)—— ws-plan 的产出必须能通过下游检查
|
|
@@ -62,6 +62,28 @@ OpenCode + oMo 优先策略:
|
|
|
62
62
|
Quality review scope: <what to check> (if required)
|
|
63
63
|
```
|
|
64
64
|
- Findings 格式要求:每个 finding 必须有 [Critical/Warning/Info] 级别标签 + 归因到 SPEC/QUALITY/REGRESSION 类别
|
|
65
|
+
3a) **Two-Axis Review Methodology**(可选深化)。对于需要深入审查的变更,拆为两个正交维度并行审查(参考自 `code-review` skill):
|
|
66
|
+
- **Standards** — 代码是否符合代码库的编码标准?携带下面的 smell baseline 作为默认基准。
|
|
67
|
+
- **Spec** — 代码是否忠实地实现了源需求/spec?
|
|
68
|
+
- 两轴并行运行,避免一个轴掩盖另一个。"符合所有标准但实现了错误需求" → Standards pass, Spec fail;"需求实现了但破坏了项目规范" → Spec pass, Standards fail。
|
|
69
|
+
|
|
70
|
+
3b) **Code Smell Baseline**。Standards 轴在项目自有标准之外,始终携带以下 Fowler 代码坏味作为默认基准(项目标准高于基线)。每个坏味是启发式标签,不是硬性违规——跳过已由工具强制的内容。
|
|
71
|
+
|
|
72
|
+
| Smell | 识别信号 | 修复方向 |
|
|
73
|
+
|---|---|---|
|
|
74
|
+
| Mysterious Name | 名称不揭示作用 | 重命名;若找不到诚实名称,设计有问题 |
|
|
75
|
+
| Duplicated Code | 相同逻辑形状出现在多处 | 提取共享形状 |
|
|
76
|
+
| Feature Envy | 方法存取其他对象数据多于自身 | 把方法移到它嫉妒的数据上 |
|
|
77
|
+
| Data Clumps | 相同字段/参数反复出现 | 打包为一个类型 |
|
|
78
|
+
| Primitive Obsession | 原始类型代替领域概念 | 给概念自己的类型 |
|
|
79
|
+
| Repeated Switches | 对同类型的 switch/if 级联重复 | 多态或共享 map |
|
|
80
|
+
| Shotgun Surgery | 一个逻辑变更导致多处分散修改 | 聚合到一个模块 |
|
|
81
|
+
| Divergent Change | 一个文件因多个不相关原因被改 | 拆分,每个模块只为一个原因变 |
|
|
82
|
+
| Speculative Generality | 加了 spec 不需要的抽象 | 删除,直到真有需求 |
|
|
83
|
+
| Message Chains | 长链式导航 | 隐藏在第一个对象的方法后 |
|
|
84
|
+
| Middle Man | 类/函数主要只是委托转发 | 直接调用真正的目标 |
|
|
85
|
+
| Refused Bequest | 子类忽略大部分继承内容 | 组合替代继承 |
|
|
86
|
+
|
|
65
87
|
4) 基于 `git status` / `git diff`(以及你实际运行过的测试结果),对照 `AI_PROJECT.md` 与 `REQUIREMENTS.md` 检查:
|
|
66
88
|
- 是否存在越界目录改动/危险操作
|
|
67
89
|
- 是否有可复现验证命令与证据
|
|
@@ -32,3 +32,16 @@ Red Flags(这些想法都是错的):
|
|
|
32
32
|
<!-- AIWS_MANAGED_END:agents -->
|
|
33
33
|
|
|
34
34
|
你可以在本段下方追加项目自定义说明;`aiws update` 不会改动托管块以外内容。
|
|
35
|
+
|
|
36
|
+
## Memory Protocol
|
|
37
|
+
|
|
38
|
+
本仓库使用 `aiws memory` 系统持久化跨会话知识。automation 协议:
|
|
39
|
+
|
|
40
|
+
1. **自动注入(插件)** — `.opencode/plugins/memory-autoload.js` 在会话首次消息时读取活跃目标、近期决策、项目概览并注入 `<memory-context>`。需依赖:`MEMORY_AUTOLOAD_DISABLE=1` 可关闭
|
|
41
|
+
2. **会话启动时** — 自动读取 `.aiws/memory-bank/.index.yaml` 获取记忆索引,了解已记录的知识领域
|
|
42
|
+
3. **回答前** — 若问题涉及已记忆的领域,先用 `aiws memory search <keywords>` 检索相关记录
|
|
43
|
+
4. **获取新知识后** — 对重要决策、根因分析、架构约定等跨会话有价值的信息,使用 `aiws memory write <domain>://<path>` 写入永久记忆(写入会自动更新索引)。标记 `--disclosure boot` 可让记忆出现在下次插件注入中
|
|
44
|
+
5. **记忆关联** — 对相关记忆使用 `aiws memory link add` 建立关系
|
|
45
|
+
6. **nocturne_memory MCP** — 仓库预配了远程 MCP 服务器(nocturne_memory),作为全局知识层自动可用,两者互补而非替代。当前未集成到 OpenCode 配置中
|
|
46
|
+
|
|
47
|
+
目标:把关键认知固化到 git-tracked 文件,实现跨机器/跨会话的知识连续性。
|
|
@@ -13,57 +13,18 @@
|
|
|
13
13
|
".githooks/pre-commit",
|
|
14
14
|
".githooks/pre-push",
|
|
15
15
|
".gitignore",
|
|
16
|
-
".opencode/command/p-aiws-change-archive.md",
|
|
17
|
-
".opencode/command/p-aiws-change-finish.md",
|
|
18
|
-
".opencode/command/p-aiws-change-list.md",
|
|
19
|
-
".opencode/command/p-aiws-change-new.md",
|
|
20
|
-
".opencode/command/p-aiws-change-next.md",
|
|
21
|
-
".opencode/command/p-aiws-change-start.md",
|
|
22
|
-
".opencode/command/p-aiws-change-status.md",
|
|
23
|
-
".opencode/command/p-aiws-change-sync.md",
|
|
24
|
-
".opencode/command/p-aiws-change-templates-init.md",
|
|
25
|
-
".opencode/command/p-aiws-change-templates-which.md",
|
|
26
|
-
".opencode/command/p-aiws-change-validate.md",
|
|
27
|
-
".opencode/command/p-aiws-hooks-install.md",
|
|
28
|
-
".opencode/command/p-aiws-hooks-status.md",
|
|
29
|
-
".opencode/command/p-aiws-init.md",
|
|
30
|
-
".opencode/command/p-aiws-rollback.md",
|
|
31
|
-
".opencode/command/p-aiws-update.md",
|
|
32
|
-
".opencode/command/p-aiws-validate.md",
|
|
33
16
|
".opencode/command/using-aiws.md",
|
|
34
|
-
".opencode/command/ws-analyze.md",
|
|
35
|
-
".opencode/command/ws-auto.md",
|
|
36
|
-
".opencode/command/ws-autonomy.md",
|
|
37
|
-
".opencode/command/ws-bugfix.md",
|
|
38
|
-
".opencode/command/ws-commit.md",
|
|
39
|
-
".opencode/command/ws-delegate.md",
|
|
40
|
-
".opencode/command/ws-deliver.md",
|
|
41
17
|
".opencode/command/ws-dev-lite.md",
|
|
42
18
|
".opencode/command/ws-dev.md",
|
|
43
19
|
".opencode/command/ws-finish.md",
|
|
20
|
+
".opencode/command/ws-frontend-design.md",
|
|
44
21
|
".opencode/command/ws-goal.md",
|
|
45
|
-
".opencode/command/ws-handoff.md",
|
|
46
|
-
".opencode/command/ws-intake.md",
|
|
47
22
|
".opencode/command/ws-plan.md",
|
|
48
|
-
".opencode/command/ws-plan-verify.md",
|
|
49
|
-
".opencode/command/ws-spec-review.md",
|
|
50
|
-
".opencode/command/ws-quality-review.md",
|
|
51
|
-
".opencode/command/ws-migrate.md",
|
|
52
|
-
".opencode/command/ws-preflight.md",
|
|
53
|
-
".opencode/command/ws-pull.md",
|
|
54
|
-
".opencode/command/ws-push.md",
|
|
55
|
-
".opencode/command/ws-req-change.md",
|
|
56
|
-
".opencode/command/ws-req-contract-sync.md",
|
|
57
|
-
".opencode/command/ws-req-contract-validate.md",
|
|
58
|
-
".opencode/command/ws-req-flow-sync.md",
|
|
59
|
-
".opencode/command/ws-req-review.md",
|
|
60
23
|
".opencode/command/ws-review.md",
|
|
61
|
-
".opencode/command/ws-rule.md",
|
|
62
|
-
".opencode/command/ws-submodule-setup.md",
|
|
63
|
-
".opencode/command/ws-verify-before-complete.md",
|
|
64
24
|
".opencode/plugins/aiws-inject-context.js",
|
|
65
25
|
".opencode/plugins/aiws-session-start.js",
|
|
66
26
|
".opencode/plugins/aiws-workflow-state.js",
|
|
27
|
+
".opencode/plugins/memory-autoload.js",
|
|
67
28
|
".opencode/lib/aiws-context.js",
|
|
68
29
|
".opencode/commands/**",
|
|
69
30
|
".opencode/skills/**",
|
|
@@ -253,33 +214,15 @@
|
|
|
253
214
|
".aiws/tools/requirements_contract.py",
|
|
254
215
|
".aiws/tools/ws_tasks_plan.py",
|
|
255
216
|
".aiws/tools/ws_resolve_sub_target.sh",
|
|
256
|
-
|
|
217
|
+
|
|
257
218
|
".opencode/plugins/aiws-inject-context.js",
|
|
258
219
|
".opencode/plugins/aiws-session-start.js",
|
|
259
220
|
".opencode/plugins/aiws-workflow-state.js",
|
|
221
|
+
".opencode/plugins/memory-autoload.js",
|
|
260
222
|
".opencode/lib/aiws-context.js",
|
|
261
|
-
".opencode/command/p-aiws-change-archive.md",
|
|
262
|
-
".opencode/command/p-aiws-change-finish.md",
|
|
263
|
-
".opencode/command/p-aiws-change-list.md",
|
|
264
|
-
".opencode/command/p-aiws-change-new.md",
|
|
265
|
-
".opencode/command/p-aiws-change-next.md",
|
|
266
|
-
".opencode/command/p-aiws-change-start.md",
|
|
267
|
-
".opencode/command/p-aiws-change-status.md",
|
|
268
|
-
".opencode/command/p-aiws-change-sync.md",
|
|
269
|
-
".opencode/command/p-aiws-change-templates-init.md",
|
|
270
|
-
".opencode/command/p-aiws-change-templates-which.md",
|
|
271
|
-
".opencode/command/p-aiws-change-validate.md",
|
|
272
|
-
".opencode/command/p-aiws-hooks-install.md",
|
|
273
|
-
".opencode/command/p-aiws-hooks-status.md",
|
|
274
223
|
".opencode/command/using-aiws.md",
|
|
275
|
-
".opencode/command/ws-intake.md",
|
|
276
224
|
".opencode/command/ws-plan.md",
|
|
277
|
-
".opencode/command/ws-
|
|
278
|
-
".opencode/command/ws-bugfix.md",
|
|
279
|
-
".opencode/command/ws-spec-review.md",
|
|
280
|
-
".opencode/command/ws-quality-review.md",
|
|
281
|
-
".opencode/command/ws-verify-before-complete.md",
|
|
282
|
-
".opencode/command/ws-goal.md",
|
|
225
|
+
".opencode/command/ws-review.md",
|
|
283
226
|
".opencode/skills/p-aiws-change-archive/SKILL.md",
|
|
284
227
|
".opencode/skills/p-aiws-change-finish/SKILL.md",
|
|
285
228
|
".opencode/skills/p-aiws-change-list/SKILL.md",
|
|
@@ -302,9 +245,7 @@
|
|
|
302
245
|
".opencode/skills/ws-analyze/SKILL.md",
|
|
303
246
|
".opencode/scripts/ws-plan-setup-worktree.sh",
|
|
304
247
|
".opencode/scripts/ws-plan-gen-submodule-targets.sh",
|
|
305
|
-
".opencode/skills/ws-bugfix/SKILL.md",
|
|
306
248
|
".opencode/skills/ws-commit/SKILL.md",
|
|
307
|
-
".opencode/skills/ws-intake/SKILL.md",
|
|
308
249
|
".opencode/skills/ws-deliver/SKILL.md",
|
|
309
250
|
".opencode/skills/ws-dev/SKILL.md",
|
|
310
251
|
".opencode/skills/ws-dev-lite/SKILL.md",
|
|
@@ -320,7 +261,6 @@
|
|
|
320
261
|
".opencode/skills/ws-finish/SKILL.md",
|
|
321
262
|
".opencode/skills/ws-frontend-design/SKILL.md",
|
|
322
263
|
".opencode/skills/ws-goal/SKILL.md",
|
|
323
|
-
".opencode/skills/ws-handoff/SKILL.md",
|
|
324
264
|
".opencode/skills/ws-migrate/SKILL.md",
|
|
325
265
|
".opencode/skills/ws-plan/SKILL.md",
|
|
326
266
|
".opencode/skills/ws-plan-verify/SKILL.md",
|
|
@@ -338,18 +278,7 @@
|
|
|
338
278
|
".opencode/skills/ws-verify-before-complete/SKILL.md",
|
|
339
279
|
".opencode/skills/ws-rule/SKILL.md",
|
|
340
280
|
".opencode/skills/ws-submodule-setup/SKILL.md",
|
|
341
|
-
".opencode/command/ws-
|
|
342
|
-
".opencode/command/ws-preflight.md",
|
|
343
|
-
".opencode/command/ws-pull.md",
|
|
344
|
-
".opencode/command/ws-push.md",
|
|
345
|
-
".opencode/command/ws-req-change.md",
|
|
346
|
-
".opencode/command/ws-req-contract-sync.md",
|
|
347
|
-
".opencode/command/ws-req-contract-validate.md",
|
|
348
|
-
".opencode/command/ws-req-flow-sync.md",
|
|
349
|
-
".opencode/command/ws-req-review.md",
|
|
350
|
-
".opencode/command/ws-review.md",
|
|
351
|
-
".opencode/command/ws-rule.md",
|
|
352
|
-
".opencode/command/ws-submodule-setup.md"
|
|
281
|
+
".opencode/command/ws-review.md"
|
|
353
282
|
],
|
|
354
283
|
"managed_blocks": {
|
|
355
284
|
"AGENTS.md": ["agents"],
|
|
@@ -357,54 +286,13 @@
|
|
|
357
286
|
"AI_WORKSPACE.md": ["ai-workspace:core"],
|
|
358
287
|
"REQUIREMENTS.md": ["requirements:contract"],
|
|
359
288
|
".gitignore": ["gitignore"],
|
|
360
|
-
".opencode/command/
|
|
361
|
-
".opencode/command/p-aiws-update.md": ["opencode:aiws-update"],
|
|
362
|
-
".opencode/command/p-aiws-validate.md": ["opencode:aiws-validate"],
|
|
363
|
-
".opencode/command/p-aiws-rollback.md": ["opencode:aiws-rollback"],
|
|
364
|
-
".opencode/command/ws-preflight.md": ["opencode:ws-preflight"],
|
|
365
|
-
".opencode/command/ws-migrate.md": ["opencode:ws-migrate"],
|
|
289
|
+
".opencode/command/using-aiws.md": ["opencode:using-aiws"],
|
|
366
290
|
".opencode/command/ws-dev.md": ["opencode:ws-dev"],
|
|
367
291
|
".opencode/command/ws-dev-lite.md": ["opencode:ws-dev-lite"],
|
|
368
|
-
".opencode/command/ws-deliver.md": ["opencode:ws-deliver"],
|
|
369
|
-
".opencode/command/ws-analyze.md": ["opencode:ws-analyze"],
|
|
370
|
-
".opencode/command/ws-bugfix.md": ["opencode:ws-bugfix"],
|
|
371
|
-
".opencode/command/ws-pull.md": ["opencode:ws-pull"],
|
|
372
|
-
".opencode/command/ws-push.md": ["opencode:ws-push"],
|
|
373
292
|
".opencode/command/ws-finish.md": ["opencode:ws-finish"],
|
|
374
|
-
".opencode/command/ws-submodule-setup.md": ["opencode:ws-submodule-setup"],
|
|
375
|
-
".opencode/command/ws-review.md": ["opencode:ws-review"],
|
|
376
|
-
".opencode/command/ws-commit.md": ["opencode:ws-commit"],
|
|
377
|
-
".opencode/command/ws-rule.md": ["opencode:ws-rule"],
|
|
378
|
-
".opencode/command/ws-req-review.md": ["opencode:ws-req-review"],
|
|
379
|
-
".opencode/command/ws-req-change.md": ["opencode:ws-req-change"],
|
|
380
|
-
".opencode/command/ws-req-contract-sync.md": ["opencode:ws-req-contract-sync"],
|
|
381
|
-
".opencode/command/ws-req-contract-validate.md": ["opencode:ws-req-contract-validate"],
|
|
382
|
-
".opencode/command/ws-req-flow-sync.md": ["opencode:ws-req-flow-sync"],
|
|
383
|
-
".opencode/command/p-aiws-change-archive.md": ["opencode:aiws-change-archive"],
|
|
384
|
-
".opencode/command/p-aiws-change-finish.md": ["opencode:aiws-change-finish"],
|
|
385
|
-
".opencode/command/p-aiws-change-list.md": ["opencode:aiws-change-list"],
|
|
386
|
-
".opencode/command/p-aiws-change-new.md": ["opencode:aiws-change-new"],
|
|
387
|
-
".opencode/command/p-aiws-change-next.md": ["opencode:aiws-change-next"],
|
|
388
|
-
".opencode/command/p-aiws-change-start.md": ["opencode:aiws-change-start"],
|
|
389
|
-
".opencode/command/p-aiws-change-status.md": ["opencode:aiws-change-status"],
|
|
390
|
-
".opencode/command/p-aiws-change-sync.md": ["opencode:aiws-change-sync"],
|
|
391
|
-
".opencode/command/p-aiws-change-templates-init.md": ["opencode:aiws-change-templates-init"],
|
|
392
|
-
".opencode/command/p-aiws-change-templates-which.md": ["opencode:aiws-change-templates-which"],
|
|
393
|
-
".opencode/command/p-aiws-change-validate.md": ["opencode:aiws-change-validate"],
|
|
394
|
-
".opencode/command/p-aiws-hooks-install.md": ["opencode:aiws-hooks-install"],
|
|
395
|
-
".opencode/command/p-aiws-hooks-status.md": ["opencode:aiws-hooks-status"],
|
|
396
|
-
".opencode/command/using-aiws.md": ["opencode:using-aiws"],
|
|
397
|
-
".opencode/command/ws-intake.md": ["opencode:ws-intake"],
|
|
398
|
-
".opencode/command/ws-plan.md": ["opencode:ws-plan"],
|
|
399
|
-
".opencode/command/ws-delegate.md": ["opencode:ws-delegate"],
|
|
400
|
-
".opencode/command/ws-autonomy.md": ["opencode:ws-autonomy"],
|
|
401
|
-
".opencode/command/ws-auto.md": ["opencode:ws-auto"],
|
|
402
|
-
".opencode/command/ws-plan-verify.md": ["opencode:ws-plan-verify"],
|
|
403
293
|
".opencode/command/ws-goal.md": ["opencode:ws-goal"],
|
|
404
|
-
".opencode/command/ws-
|
|
405
|
-
".opencode/command/ws-
|
|
406
|
-
".opencode/command/ws-quality-review.md": ["opencode:ws-quality-review"],
|
|
407
|
-
".opencode/command/ws-verify-before-complete.md": ["opencode:ws-verify-before-complete"]
|
|
294
|
+
".opencode/command/ws-plan.md": ["opencode:ws-plan"],
|
|
295
|
+
".opencode/command/ws-review.md": ["opencode:ws-review"]
|
|
408
296
|
}
|
|
409
297
|
}
|
|
410
298
|
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: 私有:变更归档:归档已完成的 change 工件并生成 handoff.md
|
|
3
|
-
---
|
|
4
|
-
<!-- AIWS_MANAGED_BEGIN:opencode:aiws-change-archive -->
|
|
5
|
-
# aiws change archive
|
|
6
|
-
|
|
7
|
-
(私有原子入口;日常优先用 ws-* 链路。)
|
|
8
|
-
|
|
9
|
-
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
10
|
-
|
|
11
|
-
目标:
|
|
12
|
-
- 归档已完成 change 工件,并生成交接文档:`changes/archive/.../handoff.md`
|
|
13
|
-
|
|
14
|
-
执行(在仓库根目录):
|
|
15
|
-
```bash
|
|
16
|
-
change_id="<change-id>"
|
|
17
|
-
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
18
|
-
./node_modules/.bin/aiws change archive "${change_id}"
|
|
19
|
-
elif command -v aiws >/dev/null 2>&1; then
|
|
20
|
-
aiws change archive "${change_id}"
|
|
21
|
-
else
|
|
22
|
-
npx @aipper/aiws change archive "${change_id}"
|
|
23
|
-
fi
|
|
24
|
-
```
|
|
25
|
-
<!-- AIWS_MANAGED_END:opencode:aiws-change-archive -->
|
|
26
|
-
|
|
27
|
-
可在下方追加本项目对 OpenCode 的额外说明(托管块外内容会被保留)。
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: 私有:变更收尾:安全合并 change 分支回目标分支
|
|
3
|
-
---
|
|
4
|
-
<!-- AIWS_MANAGED_BEGIN:opencode:aiws-change-finish -->
|
|
5
|
-
# aiws change finish
|
|
6
|
-
|
|
7
|
-
(私有原子入口;日常优先用 ws-* 链路。)
|
|
8
|
-
|
|
9
|
-
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
10
|
-
|
|
11
|
-
目标:
|
|
12
|
-
- 将 change/<change-id> 安全 fast-forward 合并回目标分支
|
|
13
|
-
|
|
14
|
-
执行(在仓库根目录):
|
|
15
|
-
```bash
|
|
16
|
-
change_id="<change-id>" # 可留空(若当前分支可推断)
|
|
17
|
-
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
18
|
-
./node_modules/.bin/aiws change finish "${change_id}"
|
|
19
|
-
elif command -v aiws >/dev/null 2>&1; then
|
|
20
|
-
aiws change finish "${change_id}"
|
|
21
|
-
else
|
|
22
|
-
npx @aipper/aiws change finish "${change_id}"
|
|
23
|
-
fi
|
|
24
|
-
```
|
|
25
|
-
<!-- AIWS_MANAGED_END:opencode:aiws-change-finish -->
|
|
26
|
-
|
|
27
|
-
可在下方追加本项目对 OpenCode 的额外说明(托管块外内容会被保留)。
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: 私有:变更列表:列出当前仓库 change 工件
|
|
3
|
-
---
|
|
4
|
-
<!-- AIWS_MANAGED_BEGIN:opencode:aiws-change-list -->
|
|
5
|
-
# aiws change list
|
|
6
|
-
|
|
7
|
-
(私有原子入口;日常优先用 ws-* 链路。)
|
|
8
|
-
|
|
9
|
-
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
10
|
-
|
|
11
|
-
目标:
|
|
12
|
-
- 列出当前仓库 change 工件
|
|
13
|
-
|
|
14
|
-
执行(在仓库根目录):
|
|
15
|
-
```bash
|
|
16
|
-
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
17
|
-
./node_modules/.bin/aiws change list
|
|
18
|
-
elif command -v aiws >/dev/null 2>&1; then
|
|
19
|
-
aiws change list
|
|
20
|
-
else
|
|
21
|
-
npx @aipper/aiws change list
|
|
22
|
-
fi
|
|
23
|
-
```
|
|
24
|
-
<!-- AIWS_MANAGED_END:opencode:aiws-change-list -->
|
|
25
|
-
|
|
26
|
-
可在下方追加本项目对 OpenCode 的额外说明(托管块外内容会被保留)。
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: 私有:变更新建:创建 changes/<change-id> 工件
|
|
3
|
-
---
|
|
4
|
-
<!-- AIWS_MANAGED_BEGIN:opencode:aiws-change-new -->
|
|
5
|
-
# aiws change new
|
|
6
|
-
|
|
7
|
-
(私有原子入口;日常优先用 ws-* 链路。)
|
|
8
|
-
|
|
9
|
-
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
10
|
-
|
|
11
|
-
目标:
|
|
12
|
-
- 创建 changes/<change-id> 工件目录与基础文件
|
|
13
|
-
|
|
14
|
-
执行(在仓库根目录):
|
|
15
|
-
```bash
|
|
16
|
-
change_id="<change-id>"
|
|
17
|
-
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
18
|
-
./node_modules/.bin/aiws change new "${change_id}"
|
|
19
|
-
elif command -v aiws >/dev/null 2>&1; then
|
|
20
|
-
aiws change new "${change_id}"
|
|
21
|
-
else
|
|
22
|
-
npx @aipper/aiws change new "${change_id}"
|
|
23
|
-
fi
|
|
24
|
-
```
|
|
25
|
-
<!-- AIWS_MANAGED_END:opencode:aiws-change-new -->
|
|
26
|
-
|
|
27
|
-
可在下方追加本项目对 OpenCode 的额外说明(托管块外内容会被保留)。
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: 私有:变更下一步:输出当前 change 的建议动作
|
|
3
|
-
---
|
|
4
|
-
<!-- AIWS_MANAGED_BEGIN:opencode:aiws-change-next -->
|
|
5
|
-
# aiws change next
|
|
6
|
-
|
|
7
|
-
(私有原子入口;日常优先用 ws-* 链路。)
|
|
8
|
-
|
|
9
|
-
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
10
|
-
|
|
11
|
-
目标:
|
|
12
|
-
- 输出 change 下一步建议动作
|
|
13
|
-
|
|
14
|
-
执行(在仓库根目录):
|
|
15
|
-
```bash
|
|
16
|
-
change_id="<change-id>" # 可留空(若当前分支可推断)
|
|
17
|
-
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
18
|
-
./node_modules/.bin/aiws change next "${change_id}"
|
|
19
|
-
elif command -v aiws >/dev/null 2>&1; then
|
|
20
|
-
aiws change next "${change_id}"
|
|
21
|
-
else
|
|
22
|
-
npx @aipper/aiws change next "${change_id}"
|
|
23
|
-
fi
|
|
24
|
-
```
|
|
25
|
-
<!-- AIWS_MANAGED_END:opencode:aiws-change-next -->
|
|
26
|
-
|
|
27
|
-
可在下方追加本项目对 OpenCode 的额外说明(托管块外内容会被保留)。
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: 私有:变更开始:切到 change/<change-id> 并初始化工件
|
|
3
|
-
---
|
|
4
|
-
<!-- AIWS_MANAGED_BEGIN:opencode:aiws-change-start -->
|
|
5
|
-
# aiws change start
|
|
6
|
-
|
|
7
|
-
(私有原子入口;日常优先用 ws-* 链路。)
|
|
8
|
-
|
|
9
|
-
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
10
|
-
|
|
11
|
-
目标:
|
|
12
|
-
- 切到 change/<change-id> 并初始化变更工件
|
|
13
|
-
|
|
14
|
-
执行(在仓库根目录):
|
|
15
|
-
```bash
|
|
16
|
-
change_id="<change-id>"
|
|
17
|
-
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
18
|
-
./node_modules/.bin/aiws change start "${change_id}"
|
|
19
|
-
elif command -v aiws >/dev/null 2>&1; then
|
|
20
|
-
aiws change start "${change_id}"
|
|
21
|
-
else
|
|
22
|
-
npx @aipper/aiws change start "${change_id}"
|
|
23
|
-
fi
|
|
24
|
-
```
|
|
25
|
-
<!-- AIWS_MANAGED_END:opencode:aiws-change-start -->
|
|
26
|
-
|
|
27
|
-
可在下方追加本项目对 OpenCode 的额外说明(托管块外内容会被保留)。
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: 私有:变更状态:查看 change 状态与阻断项
|
|
3
|
-
---
|
|
4
|
-
<!-- AIWS_MANAGED_BEGIN:opencode:aiws-change-status -->
|
|
5
|
-
# aiws change status
|
|
6
|
-
|
|
7
|
-
(私有原子入口;日常优先用 ws-* 链路。)
|
|
8
|
-
|
|
9
|
-
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
10
|
-
|
|
11
|
-
目标:
|
|
12
|
-
- 查看 change 当前状态与阻断项
|
|
13
|
-
|
|
14
|
-
执行(在仓库根目录):
|
|
15
|
-
```bash
|
|
16
|
-
change_id="<change-id>" # 可留空(若当前分支可推断)
|
|
17
|
-
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
18
|
-
./node_modules/.bin/aiws change status "${change_id}"
|
|
19
|
-
elif command -v aiws >/dev/null 2>&1; then
|
|
20
|
-
aiws change status "${change_id}"
|
|
21
|
-
else
|
|
22
|
-
npx @aipper/aiws change status "${change_id}"
|
|
23
|
-
fi
|
|
24
|
-
```
|
|
25
|
-
<!-- AIWS_MANAGED_END:opencode:aiws-change-status -->
|
|
26
|
-
|
|
27
|
-
可在下方追加本项目对 OpenCode 的额外说明(托管块外内容会被保留)。
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: 私有:变更同步:同步 change 与真值基线
|
|
3
|
-
---
|
|
4
|
-
<!-- AIWS_MANAGED_BEGIN:opencode:aiws-change-sync -->
|
|
5
|
-
# aiws change sync
|
|
6
|
-
|
|
7
|
-
(私有原子入口;日常优先用 ws-* 链路。)
|
|
8
|
-
|
|
9
|
-
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
10
|
-
|
|
11
|
-
目标:
|
|
12
|
-
- 同步当前 change 与真值文件基线
|
|
13
|
-
|
|
14
|
-
执行(在仓库根目录):
|
|
15
|
-
```bash
|
|
16
|
-
change_id="<change-id>"
|
|
17
|
-
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
18
|
-
./node_modules/.bin/aiws change sync "${change_id}"
|
|
19
|
-
elif command -v aiws >/dev/null 2>&1; then
|
|
20
|
-
aiws change sync "${change_id}"
|
|
21
|
-
else
|
|
22
|
-
npx @aipper/aiws change sync "${change_id}"
|
|
23
|
-
fi
|
|
24
|
-
```
|
|
25
|
-
<!-- AIWS_MANAGED_END:opencode:aiws-change-sync -->
|
|
26
|
-
|
|
27
|
-
可在下方追加本项目对 OpenCode 的额外说明(托管块外内容会被保留)。
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: 私有:模板初始化:初始化 changes/templates 覆盖模板
|
|
3
|
-
---
|
|
4
|
-
<!-- AIWS_MANAGED_BEGIN:opencode:aiws-change-templates-init -->
|
|
5
|
-
# aiws change templates init
|
|
6
|
-
|
|
7
|
-
(私有原子入口;日常优先用 ws-* 链路。)
|
|
8
|
-
|
|
9
|
-
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
10
|
-
|
|
11
|
-
目标:
|
|
12
|
-
- 初始化 changes/templates 覆盖模板
|
|
13
|
-
|
|
14
|
-
执行(在仓库根目录):
|
|
15
|
-
```bash
|
|
16
|
-
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
17
|
-
./node_modules/.bin/aiws change templates init
|
|
18
|
-
elif command -v aiws >/dev/null 2>&1; then
|
|
19
|
-
aiws change templates init
|
|
20
|
-
else
|
|
21
|
-
npx @aipper/aiws change templates init
|
|
22
|
-
fi
|
|
23
|
-
```
|
|
24
|
-
<!-- AIWS_MANAGED_END:opencode:aiws-change-templates-init -->
|
|
25
|
-
|
|
26
|
-
可在下方追加本项目对 OpenCode 的额外说明(托管块外内容会被保留)。
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: 私有:模板来源:查看 change templates 来源
|
|
3
|
-
---
|
|
4
|
-
<!-- AIWS_MANAGED_BEGIN:opencode:aiws-change-templates-which -->
|
|
5
|
-
# aiws change templates which
|
|
6
|
-
|
|
7
|
-
(私有原子入口;日常优先用 ws-* 链路。)
|
|
8
|
-
|
|
9
|
-
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
10
|
-
|
|
11
|
-
目标:
|
|
12
|
-
- 查看 change 模板来源
|
|
13
|
-
|
|
14
|
-
执行(在仓库根目录):
|
|
15
|
-
```bash
|
|
16
|
-
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
17
|
-
./node_modules/.bin/aiws change templates which
|
|
18
|
-
elif command -v aiws >/dev/null 2>&1; then
|
|
19
|
-
aiws change templates which
|
|
20
|
-
else
|
|
21
|
-
npx @aipper/aiws change templates which
|
|
22
|
-
fi
|
|
23
|
-
```
|
|
24
|
-
<!-- AIWS_MANAGED_END:opencode:aiws-change-templates-which -->
|
|
25
|
-
|
|
26
|
-
可在下方追加本项目对 OpenCode 的额外说明(托管块外内容会被保留)。
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: 私有:变更校验:按 strict 校验变更工件与绑定
|
|
3
|
-
---
|
|
4
|
-
<!-- AIWS_MANAGED_BEGIN:opencode:aiws-change-validate -->
|
|
5
|
-
# aiws change validate
|
|
6
|
-
|
|
7
|
-
(私有原子入口;日常优先用 ws-* 链路。)
|
|
8
|
-
|
|
9
|
-
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
10
|
-
|
|
11
|
-
目标:
|
|
12
|
-
- 按严格模式校验变更工件与绑定关系
|
|
13
|
-
|
|
14
|
-
执行(在仓库根目录):
|
|
15
|
-
```bash
|
|
16
|
-
change_id="<change-id>"
|
|
17
|
-
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
18
|
-
./node_modules/.bin/aiws change validate "${change_id}"
|
|
19
|
-
elif command -v aiws >/dev/null 2>&1; then
|
|
20
|
-
aiws change validate "${change_id}"
|
|
21
|
-
else
|
|
22
|
-
npx @aipper/aiws change validate "${change_id}"
|
|
23
|
-
fi
|
|
24
|
-
```
|
|
25
|
-
<!-- AIWS_MANAGED_END:opencode:aiws-change-validate -->
|
|
26
|
-
|
|
27
|
-
可在下方追加本项目对 OpenCode 的额外说明(托管块外内容会被保留)。
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: 私有:Hooks 启用:启用 git hooks 门禁
|
|
3
|
-
---
|
|
4
|
-
<!-- AIWS_MANAGED_BEGIN:opencode:aiws-hooks-install -->
|
|
5
|
-
# aiws hooks install
|
|
6
|
-
|
|
7
|
-
(私有原子入口;日常优先用 ws-* 链路。)
|
|
8
|
-
|
|
9
|
-
用中文输出(命令/路径/代码标识符保持原样不翻译)。
|
|
10
|
-
|
|
11
|
-
目标:
|
|
12
|
-
- 启用 git hooks 门禁(core.hooksPath=.githooks)
|
|
13
|
-
|
|
14
|
-
执行(在仓库根目录):
|
|
15
|
-
```bash
|
|
16
|
-
if [[ -x "./node_modules/.bin/aiws" ]]; then
|
|
17
|
-
./node_modules/.bin/aiws hooks install .
|
|
18
|
-
elif command -v aiws >/dev/null 2>&1; then
|
|
19
|
-
aiws hooks install .
|
|
20
|
-
else
|
|
21
|
-
npx @aipper/aiws hooks install .
|
|
22
|
-
fi
|
|
23
|
-
```
|
|
24
|
-
<!-- AIWS_MANAGED_END:opencode:aiws-hooks-install -->
|
|
25
|
-
|
|
26
|
-
可在下方追加本项目对 OpenCode 的额外说明(托管块外内容会被保留)。
|