ai-spec-tool 0.1.2 → 0.1.4

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.
@@ -1,249 +0,0 @@
1
- # Architecture File Generator (Spec) — 精简强化版(修订|Modules 版)
2
-
3
- ## 0) 生成目标(不可变)
4
-
5
- * 输出文件:`./docs/global/architecture.md`
6
- * 格式:Markdown
7
- * 语言:中文
8
- * 核心目的:
9
- **强约束 AI 的代码生成行为,使其严格遵守模块划分、依赖方向与代码落点规则**
10
- * 禁止讨论:
11
-
12
- * 具体框架
13
- * 具体库
14
- * 具体实现代码
15
- * 允许讨论:
16
-
17
- * 架构形态
18
- * 模块职责
19
- * 依赖边界
20
- * 文件与目录落点规则
21
-
22
- ---
23
-
24
- ## 0.1 前置依赖(强制)
25
-
26
- * `docs/global/vision.md`
27
-
28
- ### 流程(不可跳过)
29
-
30
- 1. 读取并理解 `vision.md`
31
- 2. 若缺失 → **只允许输出以下内容**:
32
-
33
- ```
34
- 缺少依赖 [docs/global/vision.md]
35
- 回复「Y」开始创建依赖。
36
- ```
37
-
38
- 3. 若存在 → 继续后续流程
39
-
40
- ---
41
-
42
- ## 1) 启动语(固定,不可修改)
43
-
44
- > 现在开始创建项目架构(Architecture)。
45
- > 我会一步一步问你问题,你只需要按问题回答即可。
46
- > 在开始前,我会先读取并提炼 vision.md 作为上下文依据。
47
-
48
- ---
49
-
50
- ## Q1. 技术栈选择(Framework Set)
51
-
52
- > ⚠️ 本题用于确定本项目的**框架组合**,以约束 AI 后续产出一致性。
53
- > 允许选择 **1–3 个框架** 组成组合(例如「前端 + 后端」),
54
- > **每个条目必须是单一框架**,禁止在同一条目中拼接多个框架(例如「X + Y」)。
55
-
56
- ### 系统建议(一次性给出)
57
-
58
- 基于 `vision.md` 判定交付形态后,系统给出 1–2 组框架组合备选,并对每个备选用 **2–4 句**说明:
59
-
60
- * 适合点(为什么匹配目标 / 迭代速度 / 风险)
61
- * 代价点(会带来什么约束或复杂度)
62
- * 适用边界(本项目哪些范围用它)
63
-
64
- 输出格式(固定):
65
-
66
- **方案 A:框架组合**
67
-
68
- * 前端:<框架名>(目录:`/projects/<frontend>`)
69
- * 后端:<框架名>(目录:`/projects/<backend>`)
70
- * 其他(可选):<框架名>(目录:`/projects/<other>`)
71
- * 互通方式:<高层次说明,例如:契约驱动 / API 约定 / 共享协议文件>
72
-
73
- * 优点:…
74
- * 缺点:…
75
- * 适用边界:…
76
-
77
- **方案 B:框架组合(可选)**
78
-
79
- * 前端:<框架名>(目录:`/projects/<frontend>`)
80
- * 后端:<框架名>(目录:`/projects/<backend>`)
81
- * 其他(可选):<框架名>(目录:`/projects/<other>`)
82
- * 互通方式:<高层次说明,例如:契约驱动 / API 约定 / 共享协议文件>
83
-
84
- * 优点:…
85
- * 缺点:…
86
- * 适用边界:…
87
-
88
- ### 用户选择(只需回答一个字母)
89
-
90
- > 请选择框架组合:A / B
91
- > 或:C) 我自行指定(写:交付形态 + 框架组合 + 各自目录)
92
-
93
- ---
94
-
95
- ## Q2. 分层与职责(Layered Model)— 建议结构(核心参考)
96
-
97
- > ⚠️ 本题用于为本项目建立**推荐的模块类型划分**,
98
- > 作为后续依赖规则与代码落点的基础参考。
99
-
100
- ### Step 1:系统生成模块建议(必须)
101
-
102
- 系统需基于以下依据动态生成模块模型:
103
-
104
- * Q1 选择的框架组合(按各框架分别给出模块类型建议)
105
- * `vision.md` 描述的产品目标与复杂度
106
- * 当前阶段对可维护性与演进速度的需求
107
-
108
- 系统将给出一组**推荐的分层类型**,用于说明各层职责边界与协作关系。
109
-
110
- **以下为一组示例模块类型(仅作为范例):**
111
-
112
- * Adapter:负责对接并隔离外部系统,作为内部调用的统一入口
113
- * Core:提供与业务无关的基础能力或通用功能
114
- * Service:承载主要业务流程与状态规则
115
- * ComponentLogic:负责组件级逻辑与状态组织,不涉及展示
116
- * ComponentView:负责组件的展示结构与交互呈现
117
- * Component:组合逻辑模块与视图模块,形成可复用的组件单元
118
-
119
- > 实际模块名称、数量与职责可根据项目需求进行调整,但应保持职责单一、边界清晰、依赖方向明确。
120
-
121
- ---
122
-
123
- ### Step 2:用户确认
124
-
125
- > 对这份「分层与职责建议」:
126
- > A) 接受作为当前项目的模块划分参考
127
- > B) 调整(可修改模块名称、职责描述或合并 / 拆分模块)
128
-
129
- ---
130
-
131
- ## Q3. 依赖规则(Dependency Rules)— 结构化强制规则
132
-
133
- ### Step 1:系统生成依赖规则(必须)
134
-
135
- 系统必须输出**结构化依赖规则**(YAML),并覆盖所有层级:
136
-
137
- * 使用字段:`from / allow / forbid / notes`
138
- * `allow/forbid` 只接受分层名称(Adapter/Core/Service/ComponentLogic/ComponentView/Component)
139
- * `allow` 与 `forbid` 必须互斥且穷尽
140
- * 必须覆盖所有层级,保证可被 AI 直接解析
141
-
142
- ---
143
-
144
- ### Step 2:用户确认
145
-
146
- > 对这份「依赖规则(结构化)」:
147
- > A) 接受
148
- > B) 修改(请直接改文字)
149
-
150
- ---
151
-
152
- ## Q4. 目录与落点规则(Project Layout Rules)
153
-
154
- > ⚠️ 本题必须结合:
155
- >
156
- > * 当前专案实际目录结构
157
- > * Q1 选定的技术栈方向
158
- > * Q2 模块模型
159
- > * Q3 模块依赖规则
160
-
161
- ### Step 1:系统生成草案(必须)
162
-
163
- 系统需提供:
164
-
165
- 1. **目录与落点清单**(每条目录只负责一种职责)
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) 修改(请直接改)
190
-
191
- ---
192
-
193
- ### Step 2:用户确认
194
-
195
- > 对这份「目录与模块落点规则」:
196
- > A) 接受
197
- > B) 修改(请直接改)
198
-
199
- ---
200
-
201
- ## Q5. 禁止事项(Extra Forbids)
202
-
203
- > ⚠️ 本题用于补充 **不属于依赖矩阵** 的特殊禁令,
204
- > 例如业务裁决位置、状态机归属、SSOT 写入边界等。
205
-
206
- ### Step 1:系统生成草案(必须)
207
-
208
- 系统需提供 **3–6 条**「特殊禁令」,要求:
209
-
210
- * 不重复 `layer_rules` 已覆盖的依赖方向限制
211
- * 禁令必须是可判定的行为约束(可被 executor 核对)
212
- * 语气必须为「禁止」或「不得」
213
-
214
- ### Step 2:用户确认
215
-
216
- > 对这份「禁止事项」:
217
- > A) 接受
218
- > B) 修改(请直接改)
219
-
220
- ---
221
-
222
- ## 最终输出结构(固定)
223
-
224
- ```md
225
- # 项目架构(Architecture)
226
-
227
- ## 架构形态
228
- ## 技术栈选择
229
- ## 分层与职责
230
- ## 依赖规则(结构化定义,供 AI 使用)
231
- ```yaml
232
- layer_rules: ...
233
- ```
234
- ## 目录与落点规则
235
- ## 跨项目互通规则
236
- ## 禁止事项
237
- ```
238
-
239
- ---
240
-
241
- ## 输出后续动作(强制)
242
-
243
- 在完成 `architecture.md` 生成后:
244
-
245
- 1. 判断「技术栈选择」是否**包含前端技术栈**
246
- 2. 若是前端:
247
- - 必须询问用户是否要继续执行 `ui-architecture-gen.md`
248
- - 若用户同意:继续进入 UI 规范生成流程
249
- 3. 若非前端:直接结束
@@ -1,77 +0,0 @@
1
- # Naming Rule File Generator (Spec)
2
-
3
- ## 0) 生成目标(不可变,不询问用户)
4
- - 输出文件:./docs/global/naming-rule.md
5
- - 输出格式:Markdown
6
- - 语言:中文为主
7
-
8
- ---
9
-
10
- ## 1) 交互入口(优先确认默认方案)
11
-
12
- ### 1.0 默认方案确认(必须最先执行)
13
-
14
- 在开始任何详细询问前,**先询问用户一句话**:
15
-
16
- > 现在开始创建命名规范\n是否使用默认方案?
17
-
18
- 并同时简要展示默认方案内容:
19
-
20
- - 文件 / 目录:kebab-case
21
- - 变量 / 函数:camelCase
22
- - 类 / 构造类型:PascalCase
23
- - 缩写策略:允许常见缩写(API / URL / DB / ID)
24
-
25
- 回答「Y」或「N」
26
-
27
- #### 用户响应处理规则
28
- - 若用户回答「Y/y/是 / 使用默认 / OK」:
29
- - 直接使用默认推荐值
30
- - 跳过所有后续询问
31
- - 进入生成流程(第 3 节)
32
- - 若用户回答「N/n/否 / 自定义 / 调整」:
33
- - 进入第 1.1 节,逐项询问
34
-
35
- ---
36
-
37
- ## 1.1 必问项(仅在用户拒绝默认方案时执行)
38
-
39
- 请依次询问以下问题,用户只需回复选项编号或关键字:
40
-
41
- **Q1. 文件 / 目录命名风格**
42
- - A) kebab-case(推荐)
43
- - B) snake_case
44
- - C) camelCase(不推荐)
45
- - D) PascalCase(不推荐)
46
-
47
- **Q2. 变量 / 函数命名风格**
48
- - A) camelCase(推荐)
49
- - B) snake_case
50
- - C) kebab-case(不推荐)
51
-
52
- **Q3. 类 / 构造类型命名风格**
53
- - A) PascalCase(推荐)
54
- - B) camelCase
55
- - C) snake_case
56
-
57
- **Q4. 缩写策略(防止风格漂移)**
58
- - A) 不允许随意缩写(必须写全)
59
- - B) 允许常见缩写(API / URL / DB / ID)
60
-
61
- ---
62
-
63
- ## 1.2 用户回答不足时的处理
64
- - 若只回答部分问题:继续追问未回答项
65
- - 若回答“随便 / 你定”:使用默认推荐值,并在生成结果中说明
66
- - 避免开放式问题,始终优先使用选项
67
-
68
- ---
69
-
70
- ## 2) 默认推荐值(与 1.0 展示内容保持一致)
71
- - 文件 / 目录:kebab-case
72
- - 变量 / 函数:camelCase
73
- - 类 / 构造类型:PascalCase
74
- - 缩写策略:允许常见缩写(API / URL / DB / ID)
75
- - 测试文件:*.test.ts / *.spec.ts
76
- - React 组件:PascalCase.tsx
77
- - Hook:useXxx
@@ -1,332 +0,0 @@
1
- # UI 规范生成器(适合非 UI 专业)
2
-
3
- ## 1) 开场说明(固定)
4
-
5
- > 我们要建立一套 UI 规范,让后续设计与开发都一致。
6
- > 我会一步步提问,你按自己的想法回答即可。
7
-
8
- ---
9
-
10
- ## Q1. 你想要什么风格(我会整理成具体设定)
11
-
12
- <输出以下内容>
13
- > 你可以用以下方式告诉我风格方向:
14
- > A) 描述想要的 UI 风格(关键词)
15
- > B) 提供想参考的网站链接
16
- > C) 提供参考截图
17
- <输出以上内容>
18
-
19
- 说明:
20
- - 若提供网站,仅作为风格参考,不复制具体内容
21
- - 若提供截图,仅作为风格参考,不复刻具体布局
22
- - 若仅提供关键词,需补充:氛围、情绪、密度(紧凑/舒展)
23
- - 若有不想要的风格或气质,请列出 1–3 条 (非必要)
24
-
25
- ### 系统整理(你确认后才会继续)
26
-
27
- 系统必须基于用户线索整理出以下资讯,并请用户确认:
28
- - 主色与辅助色倾向(如:冷色/暖色、饱和/低饱和)
29
- - 明暗基调(浅色为主 / 深色为主 / 双模式)
30
- - 字体风格倾向(严谨 / 中性 / 活泼 / 极简)
31
- - 圆角偏好(小/中/大)
32
- - 阴影倾向(无/轻/中/强)
33
- - 动效倾向(无/少量/明显)
34
-
35
- 确认方式:
36
- > A) 接受
37
- > B) 修改(请直接改)
38
-
39
- ---
40
-
41
- ## Q2. 需要哪些「文字/背景/状态」层级
42
-
43
- > 这一步是为了避免后续样式缺漏,请确认模板是否适用。
44
-
45
- 我会根据 Q1 的风格线索给出一份 **排版建议**,包含:
46
-
47
- - 文字层级:标题 / 副标题 / 正文 / 辅助 / 禁用
48
- - 背景层级:画布 / 表面 / 强调
49
- - 交互状态:默认 / 悬停 / 按下 / 禁用 / 焦点
50
- - 反馈语义:成功 / 警告 / 错误 / 信息
51
-
52
- 确认方式:
53
- > A) 接受
54
- > B) 调整(请直接改)
55
-
56
- ---
57
-
58
- ## Q3. 页面排版方向(我会给建议)
59
-
60
- 我会根据 Q1 的风格线索给出一份 **排版建议**,包含:
61
-
62
- - 页面类型倾向(营销/内容/应用型/混合/...)
63
- - 页面内容整体会偏「紧凑」还是「留白多」?(紧凑/中等/舒展/...)
64
- - 页面内容想怎么分成几块并排?(例如:整页一列、左右两列、更多栏位...)
65
- - 内容区域通常最大到多宽?(例如 1200/1440/不限制...)
66
- - 主要的内容会以哪种形式排列?(例如:单列往下、两列并排、卡片一块块、混合...)
67
-
68
- 确认方式:
69
- > A) 接受
70
- > B) 调整(请直接改)
71
-
72
- ---
73
-
74
- ## Q4. 不同屏幕怎么显示(我会给建议)
75
-
76
- 我会根据 Q1 的风格线索给出一份 **多屏幕建议**,包含:
77
-
78
- - 需要区分几种屏幕尺寸(建议 4–6)
79
- - 优先照顾手机还是电脑(小屏优先 / 桌面优先)
80
- - 小屏时导航要怎么出现?(比如:收起来点一下再展开 / 从侧边滑出来 / 底部按钮列)
81
- - 小屏时内容要怎么挪动或收起来?(比如:改成一列、折叠起来、必要时隐藏)
82
- - 小屏必须保留哪些内容、哪些可隐藏
83
-
84
- 确认方式:
85
- > A) 接受
86
- > B) 调整(请直接改)
87
-
88
- ---
89
-
90
- ## Q5. 需要覆盖哪些页面与交互(我会给建议)
91
-
92
- 我会根据 Q1 的风格线索给出一份 **覆盖建议**,包含:
93
-
94
- - 页面类型(首页/列表/详情/表单/空状态/错误页等)
95
- - 常见操作方式会有哪些?(例如:导航、筛选、搜索、翻页、主要行动按钮)
96
- - 主要行动按钮通常放在哪里?(例如:页面顶部、右上角、底部、固定在画面上)
97
- - 主要组件组合方式(卡片/区块/分栏/时间线)
98
-
99
- 确认方式:
100
- > A) 接受
101
- > B) 调整(请直接改)
102
-
103
- ---
104
-
105
- ## Q6. 无障碍基础规范(可选)
106
-
107
- > 是否要建立无障碍基础规范?
108
- > A) 是(立即生成)
109
- > B) 否(未来再补齐)
110
-
111
- 说明:
112
- - 若选择 A:生成固定内容的 `./docs/global/ui/accessibility.md`
113
- - 若选择 B:跳过本文件
114
-
115
- ---
116
-
117
- ## 2) 颜色/字体/间距等基础规范(Design Tokens)
118
-
119
- 你**必须**生成符合以下结构的 `design-tokens.md`:
120
-
121
- ```md
122
- # Design Tokens
123
-
124
- ## 基础 Tokens
125
-
126
- ### 颜色(Base Colors)
127
- - color.base.<name>.<scale>
128
-
129
- ### 字体(Typography)
130
- - font.family.primary
131
- - font.size.<scale>
132
- - font.weight.<scale>
133
- - line.height.<scale>
134
-
135
- ### 间距(Spacing)
136
- - space.<scale>
137
-
138
- ### 圆角(Radius)
139
- - radius.<scale>
140
-
141
- ### 阴影(Shadow)
142
- - shadow.<scale>
143
-
144
- ### 动效(Motion)
145
- - motion.duration.<scale>
146
- - motion.easing.<name>
147
-
148
- ---
149
-
150
- ## 语义 Tokens
151
-
152
- ### 文字
153
- - color.text.primary
154
- - color.text.secondary
155
- - color.text.muted
156
- - color.text.disabled
157
-
158
- ### 背景
159
- - color.bg.canvas
160
- - color.bg.surface
161
- - color.bg.elevated
162
- - color.bg.accent
163
-
164
- ### 边框
165
- - color.border.default
166
- - color.border.subtle
167
- - color.border.focus
168
-
169
- ### 交互
170
- - color.interactive.default
171
- - color.interactive.hover
172
- - color.interactive.active
173
- - color.interactive.disabled
174
-
175
- ### 反馈
176
- - color.feedback.success
177
- - color.feedback.warning
178
- - color.feedback.error
179
- - color.feedback.info
180
- ```
181
-
182
- ---
183
-
184
- ## 3) 生成规则(硬规则)
185
-
186
- * 基础 Tokens 以“中性可复用”为核心
187
- * 语义 Tokens 必须映射到基础 Tokens
188
- * 颜色需提供 5–9 个刻度(如 50–900)
189
- * 字体、间距、圆角、阴影、动效需提供 4–8 个刻度
190
- * 若用户提供参考网站,需总结其风格特征并转化为 tokens
191
- * 所有 tokens **必须使用统一命名规范**
192
- * Layout / 不同屏幕规则里的间距与字号 **必须引用 design-tokens 的命名**,不得出现未定义的新数值
193
-
194
- ---
195
-
196
- ## 4) 输出要求(固定)
197
-
198
- * 必须生成并保存 `./docs/global/ui/design-tokens.md`
199
- * 不得将文件内容直接输出在对话中
200
- * 对话中只允许输出:
201
-
202
- > 已完成 Design Tokens 文件的生成:
203
- > `<文件名>`(需为可点击超链接)
204
-
205
- ---
206
-
207
- ## 5) 页面排版与不同屏幕规范(Layout + Responsive)
208
-
209
- 你**必须**生成并保存 `./docs/global/ui/layout-and-responsive.md`,结构如下:
210
-
211
- ```md
212
- # Layout + Responsive 规范
213
-
214
- ## 布局策略
215
- ## 栅格系统
216
- ## 容器与内容宽度
217
- ## 间距与对齐
218
- ## 典型布局结构
219
- ## 断点定义
220
- ## 侧重手机或电脑
221
- ## 导航在小屏的处理
222
- ## 关键区块的重排规则
223
- ## 字体与间距缩放规则
224
- ```
225
-
226
- ---
227
-
228
- ## 6) 常见页面与交互规则(Patterns)
229
-
230
- 你**必须**生成并保存 `./docs/global/ui/patterns.md`,结构如下:
231
-
232
- ```md
233
- # UI Patterns
234
-
235
- ## 页面模式
236
- ## 交互模式
237
- ## 组件组合规则
238
- ## 空状态与错误态
239
- ```
240
-
241
- ---
242
-
243
- ## 7) 无障碍基础规范(固定内容模板)
244
-
245
- 若用户选择建立,必须使用以下固定结构与内容生成:
246
-
247
- ```md
248
- # Accessibility Baseline
249
-
250
- ## 目标
251
- - 保证核心内容可被键盘与屏幕阅读器访问
252
- - 保证文本与背景对比度满足基础可读性
253
-
254
- ## 键盘可用性
255
- - 所有可交互元素必须可聚焦
256
- - 焦点顺序需符合视觉阅读顺序
257
- - 必须提供可见的焦点样式
258
-
259
- ## 语义与标注
260
- - 交互控件必须使用语义化元素或等效标注
261
- - 图片必须提供替代文本
262
- - 表单元素必须有可识别的标签
263
-
264
- ## 颜色与对比
265
- - 文字与背景对比度需至少达到 4.5:1(大字号可适当放宽)
266
- - 不得仅以颜色传达关键信息
267
-
268
- ## 动效与可控性
269
- - 动效应可被降低或关闭
270
- - 不得使用强闪烁或易引发不适的效果
271
-
272
- ## 反馈与错误提示
273
- - 错误信息必须可被读取与理解
274
- - 错误状态需提供明确的恢复路径
275
- ```
276
-
277
- ## 8) 最终输出要求(固定)
278
-
279
- 1.文件输出
280
- * 必须生成并保存以下文件:
281
- - `./docs/global/ui/design-tokens.md`
282
- - `./docs/global/ui/layout-and-responsive.md`
283
- - `./docs/global/ui/patterns.md`
284
- - `./docs/global/ui/module-ui-types.md`
285
- * 若用户选择建立 Accessibility Baseline,还需生成:
286
- - `./docs/global/ui/accessibility.md`
287
- * 不得将文件内容直接输出在对话中
288
- * 格式:Markdown
289
- * 语言:中文
290
-
291
- 2.对话输出
292
- * 对话中只允许输出:
293
- > 已完成 UI 规范文件的生成:
294
- > 1.`design-tokens.md`
295
- > 2.`layout-and-responsive.md`
296
- > 3.`patterns.md`
297
- > 4.`module-ui-types.md`
298
- > 5.`accessibility.md`(若有建立)
299
- * 禁止输出:
300
- * 具体组件实现
301
- * 具体框架代码
302
- * 具体 CSS 选择器与样式规则
303
-
304
- ---
305
-
306
- ## 9) UI Module Types 标记(强制)
307
-
308
- 在生成 UI 规范时,必须读取 `./docs/global/architecture.md` 的分层/模块分类,
309
- 并输出一份 **UI 显示组件类型清单**,用于后续生成 Component Rules。
310
-
311
- 文件:`./docs/global/ui/module-ui-types.md`,结构如下:
312
-
313
- ```md
314
- # UI Module Types
315
-
316
- ## 说明
317
- - 本文件用于标记哪些 module type 属于「UI 显示组件」
318
- - plan-executor 将据此判断哪些模块需要生成 Component Rules
319
-
320
- ## UI 显示组件类型
321
- - <ModuleTypeA>
322
- - <ModuleTypeB>
323
- ```
324
-
325
- ---
326
-
327
- ## 10) 后续询问(固定)
328
-
329
- 在完成以上所有 UI 规范与输出后,**必须询问用户是否执行 `ui-template-gen`**:
330
- > 是否执行范例界面生成(ui-template-gen)?
331
- > A) 是(继续执行)
332
- > B) 否(结束)