ai-spec-tool 0.1.0 → 0.1.2

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 CHANGED
@@ -33,3 +33,15 @@ The CLI looks for the block below and replaces its content if present. If not fo
33
33
  ## Requirements
34
34
 
35
35
  - Node.js 18+
36
+
37
+ ## Release workflow
38
+
39
+ 1. Update assets under `assets/` if needed.
40
+ 2. Bump version and update changelog (requires clean git status):
41
+ - `npm run version:patch`
42
+ - `npm run version:minor`
43
+ - `npm run version:major`
44
+ - The changelog auto-includes recent git commit subjects (last tag or last 20 commits).
45
+ - The script commits and tags the release as `vX.Y.Z`.
46
+ 3. Publish:
47
+ - `npm publish --access public`
@@ -23,25 +23,38 @@ description: 用户明确需要一个新的系统、模块或功能体系,或
23
23
 
24
24
  ## 1) 框架存在性检查(强制)
25
25
 
26
- 在进入需求澄清前,必须确认当前项目是否已建立 `docs/global/architecture.md` 中「技术栈选择」指定的主框架。
27
- 默认项目根目录为 `./project`(若不存在则视为尚未建立框架)。
26
+ 在进入需求澄清前,必须确认当前项目是否已建立 `docs/global/architecture.md` 中「技术栈选择」指定的框架组合。
27
+ 默认项目根目录为 `./projects`(若不存在则视为尚未建立任何框架)。
28
28
 
29
29
  执行规则:
30
30
  - 先读取 `docs/global/architecture.md` 的「技术栈选择」
31
- - 判断 `./project` 内是否已具备该框架的标准结构/配置
32
- - 若尚未建立:
33
- - 必须先询问用户是否需要你建立框架
34
- - 若用户同意:**只能使用该框架的主流标准初始化指令**(例如官方 CLI/脚手架),且必须初始化在 `./project`
31
+ - 根据「技术栈选择」列出的每个框架,判断 `./projects/<框架目录>` 内是否已具备该框架的标准结构/配置
32
+ - 若任一框架尚未建立:
33
+ - 必须先询问用户是否需要你建立这些缺失框架(可逐个确认)
34
+ - 若用户同意:**只能使用该框架的主流标准初始化指令**(例如官方 CLI/脚手架),且必须初始化在 `./projects/<框架目录>`
35
35
  - **禁止在 `./` 根目录初始化**,也禁止手动逐文件创建
36
36
  - 若用户拒绝:停止并等待用户自行处理
37
- - 若已建立框架:
38
- - 检查 `.vscode/launch.json` 是否存在
39
- - 若不存在:询问用户是否需要你建立**符合该技术框架**的快速启动方案
40
- - **专案根目录为 `./project/`,但`launch.json`是在`.vscode/launch.json` 而不是`.vscode/project/launch.json`
37
+ - 若已建立框架:
38
+ - 检查 `.vscode/launch.json` 是否存在
39
+ - 若不存在:询问用户是否需要你建立**符合该技术框架组合**的快速启动方案
40
+ - **各框架工程根目录为 `./projects/<框架目录>`,但 `launch.json` 在 `.vscode/launch.json` 而不是 `.vscode/projects/launch.json`**
41
41
 
42
42
  ---
43
43
 
44
- ## 2) 需求澄清阶段(强制)
44
+ ## 2) UI 规范参照(强制,条件触发)
45
+
46
+ 当 `docs/global/architecture.md` 的技术栈选择**包含前端技术栈**时,生成 plan 之前必须:
47
+ - 读取并理解:
48
+ - `docs/global/ui/design-tokens.md`
49
+ - `docs/global/ui/layout-and-responsive.md`
50
+ - `docs/global/ui/patterns.md`
51
+ - 若任一文件缺失 / 为空:**停止并要求补齐**(下一次 run 使用 `rules-creator` 走 UI 规范生成)
52
+ - 在 plan 的 `rules.hard` 或相关 UI module 的 `constraints.must` 中**明确写入**:
53
+ - “所有 UI 交互必须遵守 `docs/global/ui/patterns.md` 的交互模式”
54
+
55
+ ---
56
+
57
+ ## 3) 需求澄清阶段(强制)
45
58
 
46
59
  ### 2.1 澄清目的(不可偏离)
47
60
 
@@ -36,7 +36,19 @@ description: 当用户想要执行某个plan
36
36
 
37
37
  ---
38
38
 
39
- ### 1.1 组件使用规范(Component Rules)生成条件(强制)
39
+ ### 1.1 UI 规范文件读取(强制)
40
+
41
+ 在执行任何生成之前,若 plan 中存在 UI 显示组件类型模块(见 `./docs/global/ui/module-ui-types.md`),必须先读取并理解:
42
+ - `docs/global/ui/design-tokens.md`
43
+ - `docs/global/ui/layout-and-responsive.md`
44
+ - `docs/global/ui/patterns.md`
45
+
46
+ 规则:
47
+ - 若任一文件缺失 / 为空:**停止并要求补齐**(下一次 run 使用 `rules-creator` 走 UI 规范生成)
48
+
49
+ ---
50
+
51
+ ### 1.2 组件使用规范(Component Rules)生成条件(强制)
40
52
 
41
53
  在执行任何生成之前,必须先检查:
42
54
  `./docs/global/ui/module-ui-types.md` 是否存在且包含「UI 显示组件类型」清单
@@ -50,7 +62,7 @@ description: 当用户想要执行某个plan
50
62
 
51
63
  ---
52
64
 
53
- ### 1.2 争议咨询(强制)
65
+ ### 1.3 争议咨询(强制)
54
66
 
55
67
  在生成任何 Module spec **之前**,你必须先完整阅读 plan,并执行以下流程:
56
68
 
@@ -47,14 +47,15 @@
47
47
 
48
48
  ---
49
49
 
50
- ## Q1. 技术栈选择(Primary Framework
50
+ ## Q1. 技术栈选择(Framework Set
51
51
 
52
- > ⚠️ 本题用于确定本项目的**主框架**,以约束 AI 后续产出一致性。
53
- > 只允许给出 **1–2 个「单一主框架」**备选;**禁止组合方案**(例如「X + Y」)。
52
+ > ⚠️ 本题用于确定本项目的**框架组合**,以约束 AI 后续产出一致性。
53
+ > 允许选择 **1–3 个框架** 组成组合(例如「前端 + 后端」),
54
+ > **每个条目必须是单一框架**,禁止在同一条目中拼接多个框架(例如「X + Y」)。
54
55
 
55
56
  ### 系统建议(一次性给出)
56
57
 
57
- 基于 `vision.md` 判定交付形态后,系统给出 1–2 个主框架备选,并对每个备选用 **2–4 句**说明:
58
+ 基于 `vision.md` 判定交付形态后,系统给出 1–2 组框架组合备选,并对每个备选用 **2–4 句**说明:
58
59
 
59
60
  * 适合点(为什么匹配目标 / 迭代速度 / 风险)
60
61
  * 代价点(会带来什么约束或复杂度)
@@ -62,13 +63,23 @@
62
63
 
63
64
  输出格式(固定):
64
65
 
65
- **方案 A:主框架 = <框架名>**
66
+ **方案 A:框架组合**
67
+
68
+ * 前端:<框架名>(目录:`/projects/<frontend>`)
69
+ * 后端:<框架名>(目录:`/projects/<backend>`)
70
+ * 其他(可选):<框架名>(目录:`/projects/<other>`)
71
+ * 互通方式:<高层次说明,例如:契约驱动 / API 约定 / 共享协议文件>
66
72
 
67
73
  * 优点:…
68
74
  * 缺点:…
69
75
  * 适用边界:…
70
76
 
71
- **方案 B:主框架 = <框架名>(可选)**
77
+ **方案 B:框架组合(可选)**
78
+
79
+ * 前端:<框架名>(目录:`/projects/<frontend>`)
80
+ * 后端:<框架名>(目录:`/projects/<backend>`)
81
+ * 其他(可选):<框架名>(目录:`/projects/<other>`)
82
+ * 互通方式:<高层次说明,例如:契约驱动 / API 约定 / 共享协议文件>
72
83
 
73
84
  * 优点:…
74
85
  * 缺点:…
@@ -76,8 +87,8 @@
76
87
 
77
88
  ### 用户选择(只需回答一个字母)
78
89
 
79
- > 请选择主框架:A / B
80
- > 或:C) 我自行指定(写:交付形态 + 框架名)
90
+ > 请选择框架组合:A / B
91
+ > 或:C) 我自行指定(写:交付形态 + 框架组合 + 各自目录)
81
92
 
82
93
  ---
83
94
 
@@ -90,7 +101,7 @@
90
101
 
91
102
  系统需基于以下依据动态生成模块模型:
92
103
 
93
- * Q1 选择的主技术框架
104
+ * Q1 选择的框架组合(按各框架分别给出模块类型建议)
94
105
  * `vision.md` 描述的产品目标与复杂度
95
106
  * 当前阶段对可维护性与演进速度的需求
96
107
 
@@ -153,6 +164,29 @@
153
164
 
154
165
  1. **目录与落点清单**(每条目录只负责一种职责)
155
166
  2. **一句总规则**:所有模块必须落在对应目录,不得跨目录落点
167
+ 3. **跨框架互通落点规则**:明确契约/接口/共享协议的落点位置与修改边界
168
+
169
+ ---
170
+
171
+ ## Q4.1 跨项目互通规则(Inter-Project Rules)
172
+
173
+ > ⚠️ 本题用于明确 `/projects` 下多个工程之间的协作边界与互通方式,
174
+ > 以避免实现时出现重复定义、协议不一致或跨工程越界修改。
175
+
176
+ ### Step 1:系统生成草案(必须)
177
+
178
+ 系统需提供:
179
+
180
+ 1. **互通方式清单**:每一组 project 之间如何互通(API / 契约 / 共享协议等)
181
+ 2. **契约落点位置**:协议或接口定义文件放在哪里(例如 `/projects/<frontend>/...` 或 `/projects/<backend>/...` 或共享目录)
182
+ 3. **修改边界**:哪些工程可修改、哪些只能读取
183
+ 4. **版本与兼容**(若适用):协议变更时的兼容策略
184
+
185
+ ### Step 2:用户确认
186
+
187
+ > 对这份「跨项目互通规则」:
188
+ > A) 接受
189
+ > B) 修改(请直接改)
156
190
 
157
191
  ---
158
192
 
@@ -198,6 +232,7 @@
198
232
  layer_rules: ...
199
233
  ```
200
234
  ## 目录与落点规则
235
+ ## 跨项目互通规则
201
236
  ## 禁止事项
202
237
  ```
203
238
 
@@ -207,7 +242,7 @@ layer_rules: ...
207
242
 
208
243
  在完成 `architecture.md` 生成后:
209
244
 
210
- 1. 判断「技术栈选择」是否为**前端技术栈**
245
+ 1. 判断「技术栈选择」是否**包含前端技术栈**
211
246
  2. 若是前端:
212
247
  - 必须询问用户是否要继续执行 `ui-architecture-gen.md`
213
248
  - 若用户同意:继续进入 UI 规范生成流程
@@ -10,10 +10,10 @@
10
10
  ## 2) 执行前置条件(强制)
11
11
 
12
12
  执行前**必须确认**:
13
- * `/project` 目录存在
14
- * `./docs/global/architecture.md` 已明确技术框架且已完成基础工程初始化
13
+ * `/projects` 目录存在
14
+ * `./docs/global/architecture.md` 已明确前端技术框架与对应目录,且已完成基础工程初始化
15
15
  * 已基于 `./docs/global/ui/` 生成可被页面直接使用的视觉定义
16
- - 固定输出:`./src/styles/ui-tokens.css`(CSS 变量)
16
+ - 固定输出:`/projects/<frontend>/src/styles/ui-tokens.css`(CSS 变量)
17
17
 
18
18
  若任一条件不满足:**停止并要求补齐**。
19
19
 
@@ -31,21 +31,21 @@
31
31
  ## 4) 可渲染界面输出(强制)
32
32
 
33
33
  若 `architecture.md` 指定为网页前端框架(如 Next.js),**必须额外生成一个可直接渲染的范例界面页面**:
34
- * 使用当前技术框架的默认页面结构与目录(例如 Next.js App Router:`./src/app/example-screen/page.tsx`)
34
+ * 使用当前技术框架的默认页面结构与目录(例如 Next.js App Router:`/projects/<frontend>/src/app/example-screen/page.tsx`)
35
35
  * 页面内容与样式必须严格引用 UI 规范(design-tokens / layout-and-responsive / patterns)
36
36
  * 仅展示范例界面,不引入业务逻辑
37
37
  * **单文件产出**:不得拆分或创建任何额外的组件文件(如 `src/components`)
38
38
  * 除 UI 规范定义文件外,不得依赖任何外部组件或资源
39
- * **必须显式引入并使用** `./src/styles/ui-tokens.css`
39
+ * **必须显式引入并使用** `/projects/<frontend>/src/styles/ui-tokens.css`
40
40
  * 页面中所有颜色/字体/间距/圆角/阴影/动效 **必须使用 tokens 变量**,不得出现未定义的硬编码值
41
41
  * 必须在页面中体现响应式断点变化(至少覆盖 XS/S 与 L/XL 的差异)
42
42
  * 必须展示交互状态的可视差异(hover / active / disabled / focus),且在页面中可直接观察
43
43
  * **禁止使用内联样式**(如 `style={{ ... }}`),必须通过类名与样式规则实现
44
- * `./src/styles/ui-tokens.css` 必须采用 **两层结构**:
44
+ * `/projects/<frontend>/src/styles/ui-tokens.css` 必须采用 **两层结构**:
45
45
  - Base Tokens:仅定义原子数值(颜色刻度/字号/间距/圆角/阴影/动效)
46
46
  - Semantic Tokens:将 Base Tokens 映射到语义(文字/背景/边框/交互/反馈)
47
47
  * 页面样式**优先使用语义层 tokens**,仅在必要时使用 Base Tokens
48
- * `./src/styles/ui-tokens.css` 必须使用 `:root {}` 包裹,并按以下分区注释顺序输出:
48
+ * `/projects/<frontend>/src/styles/ui-tokens.css` 必须使用 `:root {}` 包裹,并按以下分区注释顺序输出:
49
49
  - `/* Base Tokens - Colors */`
50
50
  - `/* Base Tokens - Typography */`
51
51
  - `/* Base Tokens - Spacing */`
@@ -57,7 +57,7 @@
57
57
  - `/* Semantic Tokens - Border */`
58
58
  - `/* Semantic Tokens - Interactive */`
59
59
  - `/* Semantic Tokens - Feedback */`
60
- * 若框架尚未初始化或目录不存在:**停止并要求先完成工程初始化**
60
+ * 若框架尚未初始化或前端目录不存在:**停止并要求先完成工程初始化**
61
61
  * 范例界面页面内需包含以下说明区块(可以是页面中的说明模块):
62
62
  - 页面定位(页面类型、主要场景)
63
63
  - 整体结构(Header / Main / Footer 与 Main 分区)
@@ -97,13 +97,13 @@
97
97
  * 页面文件不得包含:
98
98
  - 内联样式(`style=`)
99
99
  - 任何 `rgba(...)` / `rgb(...)` / 十六进制颜色(`#fff` 等)
100
- * 除 `./src/styles/ui-tokens.css` 外,其它样式文件不得包含硬编码颜色值
100
+ * 除 `/projects/<frontend>/src/styles/ui-tokens.css` 外,其它样式文件不得包含硬编码颜色值
101
101
  * 页面文件所有颜色/字体/间距/圆角/阴影/动效必须来自 tokens(`var(--*)` 或对应语义类)
102
102
 
103
103
  建议检查命令(可直接使用 `rg`):
104
- * `rg -n "style=" ./src/app/example-screen/page.tsx`
105
- * `rg -n "rgba\\(|rgb\\(|#[0-9a-fA-F]{3,8}" ./src/app/example-screen/page.tsx`
106
- * `rg -n "rgba\\(|rgb\\(|#[0-9a-fA-F]{3,8}" ./src/app -g \"*.css\" -g \"!ui-tokens.css\"`
104
+ * `rg -n "style=" /projects/<frontend>/src/app/example-screen/page.tsx`
105
+ * `rg -n "rgba\\(|rgb\\(|#[0-9a-fA-F]{3,8}" /projects/<frontend>/src/app/example-screen/page.tsx`
106
+ * `rg -n "rgba\\(|rgb\\(|#[0-9a-fA-F]{3,8}" /projects/<frontend>/src/app -g \"*.css\" -g \"!ui-tokens.css\"`
107
107
 
108
108
  ---
109
109
 
@@ -112,9 +112,9 @@
112
112
  在生成范例界面后,**必须基于当前环境给出查看方式**,并进入调整阶段:
113
113
 
114
114
  1. 告知用户如何启动与访问页面(必须给出具体命令与访问地址)
115
- - 以当前工程为准:`/project` 为 Next.js 项目
115
+ - 以当前工程为准:`/projects/<frontend>` 为前端项目
116
116
  - 示例指令:
117
- - `cd /project`
117
+ - `cd /projects/<frontend>`
118
118
  - `npm run dev`
119
119
  - 示例地址:`http://localhost:3000/example-screen`
120
120
 
@@ -82,6 +82,8 @@ description: 执行已进入 processing 状态的 plan,按 execution_steps 读
82
82
  - 必须遵守 `docs/global/ui/design-tokens.md`、`layout-and-responsive.md`、`patterns.md` 的约束
83
83
  - 若缺失任一 UI 规范文件:**停止并要求补齐**
84
84
  - 若存在 `docs/global/ui/accessibility.md`:**应遵守其约束**(可选)
85
+ - **必须逐条对照 `docs/global/ui/patterns.md` 的「交互模式」并落实到实现**
86
+ - 若 Component Rules 未覆盖或与 patterns 冲突:**停止并要求先补齐 Component Rules / patterns**
85
87
  4. 每完成一个 module 的代码改动:
86
88
  - 将该 module spec 文件从
87
89
  `<module-name>.update.md` → `<module-name>.md`
package/package.json CHANGED
@@ -1,10 +1,15 @@
1
1
  {
2
2
  "name": "ai-spec-tool",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Installable agents + rules for AI spec workflows",
5
5
  "bin": {
6
6
  "ai-spec-tool": "bin/ai-spec-tool.js"
7
7
  },
8
+ "scripts": {
9
+ "version:patch": "node ./scripts/release.js patch",
10
+ "version:minor": "node ./scripts/release.js minor",
11
+ "version:major": "node ./scripts/release.js major"
12
+ },
8
13
  "files": [
9
14
  "bin",
10
15
  "assets",