architext 0.0.5 → 0.0.6

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 (78) hide show
  1. package/CHANGELOG.md +29 -1
  2. package/README.md +18 -16
  3. package/README.zh-CN.md +15 -14
  4. package/dist/index.js +43 -29
  5. package/dist/templates/en/briefs/_base.md +13 -6
  6. package/dist/templates/en/briefs/_modules.md +2 -2
  7. package/dist/templates/en/docs/global/error_memory.json +40 -0
  8. package/dist/templates/en/docs/global/map.json +46 -90
  9. package/dist/templates/en/{rules/04_cli_tools.md → docs/global/references/cli_reference.md} +6 -13
  10. package/dist/templates/en/{rules/02_tech_stack.md → docs/global/tech_stack.md} +7 -18
  11. package/dist/templates/en/docs/global/vision.md +1 -1
  12. package/dist/templates/en/docs/prompts/audit.md +5 -5
  13. package/dist/templates/en/docs/prompts/code.md +23 -11
  14. package/dist/templates/en/docs/prompts/edit.md +21 -7
  15. package/dist/templates/en/docs/prompts/fix.md +11 -2
  16. package/dist/templates/en/docs/prompts/inherit.md +18 -13
  17. package/dist/templates/en/docs/prompts/map.md +4 -3
  18. package/dist/templates/en/docs/prompts/plan.md +11 -5
  19. package/dist/templates/en/docs/prompts/remove.md +13 -8
  20. package/dist/templates/en/docs/prompts/revise.md +10 -2
  21. package/dist/templates/en/docs/prompts/scope.md +4 -3
  22. package/dist/templates/en/docs/prompts/script.md +102 -0
  23. package/dist/templates/en/docs/prompts/start.md +20 -14
  24. package/dist/templates/en/docs/prompts/ui.md +113 -0
  25. package/dist/templates/en/docs/shared/ui-redlines.md +7 -0
  26. package/dist/templates/en/docs/templates/spec.template.md +1 -1
  27. package/dist/templates/en/docs/templates/ui.template.md +8 -8
  28. package/dist/templates/en/rules/00_system.md +245 -51
  29. package/dist/templates/en/rules/90_custom_rules.md +3 -1
  30. package/dist/templates/en/skills/archi-data-sync/SKILL.md +26 -12
  31. package/dist/templates/en/skills/archi-decompose-roadmap/SKILL.md +137 -208
  32. package/dist/templates/en/skills/archi-design-patterns/SKILL.md +6 -2
  33. package/dist/templates/en/skills/archi-feature-relations/SKILL.md +6 -2
  34. package/dist/templates/en/skills/archi-interview-protocol/SKILL.md +1 -2
  35. package/dist/templates/en/skills/archi-plan-options/SKILL.md +77 -302
  36. package/dist/templates/en/skills/archi-silent-audit/SKILL.md +4 -5
  37. package/dist/templates/en/skills/archi-ui-wireframe/SKILL.md +131 -306
  38. package/dist/templates/icon.svg +16 -0
  39. package/dist/templates/zh/briefs/_base.md +17 -10
  40. package/dist/templates/zh/briefs/_modules.md +2 -2
  41. package/dist/templates/zh/docs/global/error_memory.json +40 -0
  42. package/dist/templates/zh/docs/global/map.json +39 -109
  43. package/dist/templates/zh/{rules/04_cli_tools.md → docs/global/references/cli_reference.md} +0 -7
  44. package/dist/templates/zh/{rules/02_tech_stack.md → docs/global/tech_stack.md} +9 -20
  45. package/dist/templates/zh/docs/global/vision.md +1 -1
  46. package/dist/templates/zh/docs/prompts/audit.md +5 -5
  47. package/dist/templates/zh/docs/prompts/code.md +22 -10
  48. package/dist/templates/zh/docs/prompts/edit.md +20 -6
  49. package/dist/templates/zh/docs/prompts/fix.md +10 -1
  50. package/dist/templates/zh/docs/prompts/inherit.md +18 -13
  51. package/dist/templates/zh/docs/prompts/map.md +5 -4
  52. package/dist/templates/zh/docs/prompts/plan.md +11 -5
  53. package/dist/templates/zh/docs/prompts/remove.md +13 -8
  54. package/dist/templates/zh/docs/prompts/revise.md +12 -4
  55. package/dist/templates/zh/docs/prompts/scope.md +4 -3
  56. package/dist/templates/zh/docs/prompts/script.md +102 -0
  57. package/dist/templates/zh/docs/prompts/start.md +19 -15
  58. package/dist/templates/zh/docs/prompts/ui.md +113 -0
  59. package/dist/templates/zh/docs/shared/ui-redlines.md +7 -0
  60. package/dist/templates/zh/docs/templates/spec.template.md +1 -1
  61. package/dist/templates/zh/docs/templates/ui.template.md +8 -8
  62. package/dist/templates/zh/rules/00_system.md +243 -49
  63. package/dist/templates/zh/rules/90_custom_rules.md +2 -1
  64. package/dist/templates/zh/skills/archi-data-sync/SKILL.md +27 -13
  65. package/dist/templates/zh/skills/archi-decompose-roadmap/SKILL.md +133 -204
  66. package/dist/templates/zh/skills/archi-design-patterns/SKILL.md +6 -2
  67. package/dist/templates/zh/skills/archi-feature-relations/SKILL.md +6 -2
  68. package/dist/templates/zh/skills/archi-interview-protocol/SKILL.md +1 -2
  69. package/dist/templates/zh/skills/archi-plan-options/SKILL.md +77 -302
  70. package/dist/templates/zh/skills/archi-silent-audit/SKILL.md +4 -5
  71. package/dist/templates/zh/skills/archi-ui-wireframe/SKILL.md +131 -306
  72. package/package.json +3 -1
  73. package/dist/templates/en/rules/01_workflow.md +0 -95
  74. package/dist/templates/en/rules/03_data_governance.md +0 -106
  75. package/dist/templates/en/rules/99_context_glue.md +0 -53
  76. package/dist/templates/zh/rules/01_workflow.md +0 -95
  77. package/dist/templates/zh/rules/03_data_governance.md +0 -106
  78. package/dist/templates/zh/rules/99_context_glue.md +0 -53
@@ -1,7 +1,6 @@
1
1
  ---
2
2
  name: archi-ui-wireframe
3
- type: subagent
4
- description: UI 概念设计专家。生成高保真 ui_concept.html:tokens 充足时直接输出彩色高保真设计,tokens 不足时引导用户完善后生成。支持 adopt 模式从已有代码逆向捕获 UI 状态。产物是整个项目 UI 的单一视觉真相源,所有 Task 级 ui.md 均引用此文件定位屏幕范围。
3
+ description: Generate UI concept designs and wireframes as multi-file screens/ directory. Do not auto-trigger.
5
4
  ---
6
5
 
7
6
  # UI 概念设计
@@ -9,42 +8,23 @@ description: UI 概念设计专家。生成高保真 ui_concept.html:tokens
9
8
  ## 系统流程定位
10
9
 
11
10
  ```
12
- /archi.startroadmap.json + design_tokens.json
13
-
14
- [本 Skill] archi-ui-wireframe
15
- 读: vision.md + roadmap.json + design_tokens.json + 02_tech_stack.md
16
- 写: [[__DOCS_DIR__]]/global/ui_concept.html
17
-
18
- /archi.inherit → 代码分析 + design_tokens.json
19
-
20
- [本 Skill] archi-ui-wireframe (adopt 模式)
21
- 读: 代码路由/组件/布局 + design_tokens.json
22
- 写: [[__DOCS_DIR__]]/global/ui_concept.html
23
-
24
- /archi.plan <ID>
25
- 读: ui_concept.html (定位本任务涉及的屏幕/组件范围)
26
- 写: ui.md (仅声明组件范围,不重复描述整体布局)
27
-
28
- /archi.code → 读 spec.md + ui.md + ui_concept.html → 写代码
11
+ /archi.ui[本 Skill] → screens/ (多文件目录) → /archi.plan ui.md (单任务范围)
12
+ /archi.ui (adopt模式) → [本 Skill] → screens/ (从代码逆向)
29
13
  ```
30
14
 
31
- > **Skill 的职责边界**:
32
- > - 负责:整个应用所有用户可见屏幕的视觉概念(信息架构、布局、状态、过渡)
33
- > - 不负责:Task 级接口契约(spec.md 管)、任务步骤(plan.json 管)、业务代码
15
+ > **产出物**:`screens/` 目录(`index.html` 导航枢纽 + `S-XX.html` 独立屏幕 + `_shared.css` 共享样式)+ `ui_context.md`(AI 索引)
34
16
 
35
17
  ---
36
18
 
37
19
  ## 调用模式
38
20
 
39
- | 模式 | 触发来源 | 操作范围 |
21
+ | 模式 | 触发 | 范围 |
40
22
  |:---|:---|:---|
41
- | 初次生成 | `/archi.start` 完成后 | 全量生成,覆盖所有屏幕 |
42
- | 逆向采用 | `/archi.inherit` 完成后 | 从代码路由/组件逆向生成全部屏幕 |
43
- | 重新生成 | 用户手动调用 | 全量重写(全局 UI 重设计时) |
44
- | 追加屏幕 | `/archi.scope` 追加新任务后 | 仅新增页面,不改已有页面 |
45
- | Plan 细化 | `/archi.plan` 发现 UI 偏差后 | 仅更新对应屏幕(新增状态/子屏幕/布局修正)|
46
- | 修改屏幕 | `/archi.edit` 任务变更后 | 仅修改受影响的屏幕,其余不动 |
47
- | 删除屏幕 | `/archi.remove` 任务下线后 | 移除对应屏幕及控制栏入口 |
23
+ | 初次生成 | `/archi.ui` | 全量,所有屏幕 |
24
+ | 逆向采用 | `/archi.ui`(代码已存在时自动检测) | 从代码路由/组件逆向生成 |
25
+ | 重新生成 | 用户手动 | 全量重写(全局重设计) |
26
+ | 追加/修改 | `/archi.scope/edit` `/archi.ui`(增量模式) | 仅新增/修改指定屏幕 |
27
+ | 局部更新 | `/archi.plan` 发现偏差 | 仅更新对应屏幕 |
48
28
 
49
29
  ---
50
30
 
@@ -52,336 +32,181 @@ description: UI 概念设计专家。生成高保真 ui_concept.html:tokens
52
32
 
53
33
  ### Step 1 — 读取上下文
54
34
 
55
- **Action**:
56
- - `vision.md` → 提取:目标平台、用户角色、北极星指标
57
- - `roadmap.json` → 提取:所有含 UI 的任务,映射为屏幕/状态列表
58
- - `design_tokens.json` → 提取:`mode.default`、`illustration.iconLibrary`、审美方向
59
- - 规则文件 `02_tech_stack` → 提取:目标平台(Web/Mobile/Desktop)、导航框架
35
+ **Load**: vision.md(平台/用户/北极星)、roadmap.json(UI 任务 → 屏幕映射)、
36
+ design_tokens.json(审美/品牌色)、tech_stack.md(平台/导航框架)。
60
37
 
61
38
  ### Step 2 — 规划屏幕清单
62
39
 
63
- (内部步骤,不输出给用户):
40
+ 分配屏幕 ID(S-01, S-02...),映射到 Roadmap 任务。ID 永久不变。
64
41
 
65
- | 屏幕 ID | 屏幕名 | 对应 Roadmap 任务 | 状态列表 |
42
+ | 屏幕 ID | 屏幕名 | 对应任务 | 状态列表 |
66
43
  |:---|:---|:---|:---|
67
- | S-01 | [屏幕名] | [任务 ID] | default, loading, empty, error |
68
- | ... | | | |
44
+ | S-01 | [] | [任务ID] | default, loading, empty, error |
69
45
 
70
- > **屏幕 ID 稳定性规则** (CRITICAL): 屏幕 ID 一经分配永久不变。删除屏幕后其 ID 作废,后续新增屏幕须使用新 ID(如 S-08 → S-09),禁重用或重新编号已有 ID。所有 `ui.md` 均以 ID 引用屏幕,ID 变动将导致引用断裂。
46
+ ### Step 3 Tokens 检查 + 引导
71
47
 
72
- ### Step 3 — 选定 HTML 骨架规格
48
+ check `design_tokens.json`:
49
+ - `aestheticDirection.preset` 为空 → 引导选择(saas-dark/saas-light/dashboard/marketing/mobile-app/editorial/brutalist)
50
+ - `primitivePalette.brand` 为空 → 引导填入 Hex
51
+ - 其他空值 → AI 推断,非阻塞
73
52
 
74
- (根据目标平台自动适配):
53
+ ### Step 4 — 生成多文件 HTML
75
54
 
76
- | 平台 | 视口尺寸 | 顶栏形态 | 导航形态 |
77
- |:---|:---|:---|:---|
78
- | Web / Desktop SaaS | 1280×800px | 固定顶栏 | 左侧边栏 |
79
- | Web / Marketing | 1440×900px | 透明→固定顶栏 | 顶部水平导航 |
80
- | Mobile Web / 小程序 | 390×844px | 状态栏+导航栏 | 底部 TabBar |
81
- | Tablet / Dashboard | 1024×768px | 固定顶栏 | 可折叠侧边栏 |
82
-
83
- > 平台来自 `02_tech_stack` 或 vision.md 目标用户设备描述;无法推断时默认 Web / Desktop SaaS。
55
+ **输出目录**:`[[__DOCS_DIR__]]/global/screens/`
84
56
 
85
- ### Step 4 — Tokens 前置检查 + 引导
57
+ #### 4.1 `_shared.css` 共享样式
86
58
 
87
- 读取 `design_tokens.json`,检查关键字段完整性:
59
+ `design_tokens.json` 提取 CSS 变量 + 基础布局 + 底部控制面板样式。所有 `S-XX.html` 通过 `<link href="_shared.css">` 引用。
88
60
 
89
- | 字段路径 | 通过条件 | 不足时处理 |
90
- |:---|:---|:---|
91
- | `aestheticDirection.preset` | 非空 | 纳入引导 Q1 |
92
- | `primitivePalette.brand` | 至少含 1 个非空颜色值 | 纳入引导 Q2 |
93
- | `semanticTokens.colors` | 至少含 `bg`/`surface`/`text` 语义映射 | 纳入引导 Q2 |
94
- | `semanticTokens.typography` | 至少含 1 个字体族声明 | AI 基于审美方向选择(非阻塞) |
95
- | `motion.preference` | 非空 | 默认 `subtle`(非阻塞) |
96
- | `illustration.iconLibrary` | 非空 | 降级到自绘内联 SVG(非阻塞);禁用 emoji 替代 |
61
+ **底部控制面板**:fixed 定位底部,浮动长条按钮(60×16px,位于面板顶部中央),▲/▼ 切换符号。三列布局:← 索引跳转 | 页面说明 | 状态按钮。收起时内容区 display:none,按钮保持可见。
97
62
 
98
- **tokens 充足** 直接进入 Step 5 高保真生成。
63
+ #### 4.2 `S-XX.html` 独立屏幕文件
99
64
 
100
- **tokens 不足** → 输出结构化引导问题(最多 3 题),用户回答后 AI 自动填充 tokens 再继续:
65
+ 每个屏幕一个自包含 HTML 文件,结构:
101
66
 
67
+ ```html
68
+ <body>
69
+ <header class="wf-topbar">...</header>
70
+ <main class="wf-content">...状态切换 div...</main>
71
+
72
+ <!-- 底部控制面板 -->
73
+ <aside class="wf-panel" id="wfPanel">
74
+ <button class="wf-panel-toggle" id="toggleBtn" onclick="togglePanel()">▼</button>
75
+ <div class="wf-panel-content">
76
+ <span>跳转</span> <a href="index.html">← 索引</a>
77
+ <span>页面</span> <span>[说明]</span>
78
+ <span>状态</span> <div class="wf-states">...</div>
79
+ </div>
80
+ </aside>
81
+
82
+ <script>
83
+ function togglePanel() {
84
+ var panel = document.getElementById('wfPanel');
85
+ var btn = document.getElementById('toggleBtn');
86
+ panel.classList.toggle('collapsed');
87
+ btn.textContent = panel.classList.contains('collapsed') ? '▲' : '▼';
88
+ }
89
+ </script>
90
+ </body>
102
91
  ```
103
- ### 视觉风格确认
104
92
 
105
- **[Q1] 审美方向**
106
- | ID | 选项 | 参考产品 |
107
- |:---|:---|:---|
108
- | A | saas-dark | Linear, Vercel |
109
- | B | saas-light [推荐] | Notion, Stripe |
110
- | C | dashboard | Grafana, Datadog |
111
- | D | 其他 | (请描述) |
112
-
113
- **[Q2] 品牌主色**
114
- > 填入 Hex 值(如 #4F46E5),或回复"无偏好"由 AI 基于审美方向生成
115
-
116
- **[Q3] 信息密度**
117
- | ID | 选项 |
118
- |:---|:---|
119
- | A | 大留白/沉浸式 |
120
- | B | 适中 [推荐] |
121
- | C | 信息密集/仪表盘风格 |
122
-
123
- **INPUT**: `Q1答案 | Q2答案 | Q3答案`
124
- ```
93
+ #### 4.3 `index.html` — 导航枢纽
94
+
95
+ 列出所有屏幕,每项链接到对应 `S-XX.html`:
125
96
 
126
- AI 根据回答填充 `design_tokens.json`(写入文件),然后继续生成。已从代码提取到 CSS 变量/theme 的字段保留不覆盖。
97
+ ```html
98
+ <!DOCTYPE html>
99
+ <html lang="zh">
100
+ <head>
101
+ <meta charset="UTF-8">
102
+ <title>[项目名] — UI 概念设计</title>
103
+ <link rel="stylesheet" href="_shared.css">
104
+ </head>
105
+ <body>
106
+ <header class="wf-topbar">
107
+ <span>[项目名] — UI 概念设计索引</span>
108
+ </header>
109
+ <main class="wf-index">
110
+ <div class="wf-screen-card">
111
+ <a href="S-01.html">S-01 · [屏幕名]</a>
112
+ <p>[一句话描述]</p>
113
+ </div>
114
+ <!-- 更多屏幕卡片 -->
115
+ </main>
116
+ </body>
117
+ </html>
118
+ ```
127
119
 
128
- ### Step 5 — 生成高保真 HTML
120
+ **交互展示原则**(视觉反馈,非业务逻辑):
121
+ - 按钮/链接/输入框画出,绑点击事件
122
+ - 点击触发**视觉反馈**(弹窗显隐、面板展开、状态切换),不触发**真实业务逻辑**
123
+ - **跨屏幕导航**:侧边栏、Tab、面包屑、卡片点击 → 链接到对应 `S-XX.html`
124
+ - **弹窗表单**:可聚焦、可点击,提交后不真处理数据
125
+ - **目标**:完整展示交互流程和各状态下的界面外观
129
126
 
130
- 写入 `[[__DOCS_DIR__]]/global/ui_concept.html`:
127
+ **内置验证与自修复循环**(生成后自检,AI 修复直到全过):
131
128
 
132
- **HTML 结构规范**:
129
+ | 检查项 | 通过标准 | 失败修复动作 |
130
+ |:---|:---|:---|
131
+ | **可点击性** | 所有带 `onclick` 的元素必须有 `cursor: pointer` | 添加 CSS `cursor: pointer` |
132
+ | **data-el 完整性** | 所有可交互元素必须有 `data-el` | 补充 `data-el` 描述 |
133
+ | **状态覆盖** | 每个屏幕必须包含 default/loading/empty(如适用)| 补充缺失的状态 div |
134
+ | **跨文件链接有效性** | `index.html` 链接指向存在的 `S-XX.html`;每个 `S-XX.html` 含返回索引链接 | 修复链接路径 |
135
+ | **反模式红线** | 无紫色渐变、无 emoji、非纯黑白 | 替换为符合审美方向的配色 |
136
+ | **间距一致性** | 使用 CSS 变量,无硬编码魔法数字 | 替换为 `var(--space-*)` |
137
+
138
+ **修复循环**(内部执行):
133
139
  ```
134
- <html>
135
- <head>
136
- <!-- 内联 CSS:高保真视觉风格,基于 design_tokens.json -->
137
- </head>
138
- <body style="margin:0; display:flex; flex-direction:column; height:100vh; overflow:hidden;">
139
- <!-- 顶栏: 项目名 + 当前屏幕路径 (固定,不随内容滚动) -->
140
- <header class="wf-topbar">...</header>
141
-
142
- <!-- 内容区: 可滚动,渲染当前激活屏幕 -->
143
- <main class="wf-content" style="flex:1; overflow:auto;">
144
- <!-- 每个屏幕一个 <section class="wf-screen" id="S-XX" data-states="default,loading,empty,error"> -->
145
- <!-- 每个状态一个 <div class="wf-state" data-state="default"> -->
146
- </main>
147
-
148
- <!-- 控制栏: 左=状态切换,中=文件标识,右=页面切换 (固定底部,线框图风格) -->
149
- <footer class="wf-ctrl-bar">
150
- <div class="ctrl-group">
151
- <span class="ctrl-lbl">STATE</span>
152
- <!-- 当前屏幕的状态 pills,由 JS 动态渲染 -->
153
- </div>
154
- <div class="wf-file-label">UI Concept · [项目名]</div>
155
- <div class="ctrl-group">
156
- <span class="ctrl-lbl">PAGE</span>
157
- <!-- 所有屏幕的页面 pills,由 JS 渲染 -->
158
- </div>
159
- </footer>
160
- </body>
161
- </html>
140
+ 生成 HTML → 运行检查 → 有失败项?
141
+ ├── 是 → 修复 → 重新生成 → 再次检查
142
+ └── 通过
162
143
  ```
163
144
 
164
- **元素标注规范** (`data-el` 属性):
165
- - 每个可交互元素或语义区块须加 `data-el="[用户语言描述]"` 属性
166
- - 标注语言 = Brief 的主语言(中文项目用中文标注,英文项目用英文)
167
- - 标注在鼠标悬停时通过 CSS `::before` 显示,默认隐藏
168
- - 父元素悬停时,子元素的标注通过 `:has([data-el]:hover)::before { opacity:0 }` 自动隐藏
169
-
170
- **交互规范** (纯 CSS + 少量 JS,无外部依赖):
171
- - 页面切换: 点击 PAGE pills → 切换 `.wf-screen` 的 `display`;JS 同步更新 STATE pills
172
- - 状态切换: 点击 STATE pills → 在当前屏幕内切换 `.wf-state` 的 `display`
173
- - 激活样式: `.pill.on-page` / `.pill.on-state` → `background:#444; color:#fff`
174
- - 控制栏须为线框图风格(灰度、uppercase label、dashed border-top),禁用彩色
175
-
176
- **UI 质量标准** (CRITICAL):
177
-
178
- | 维度 | 要求 |
179
- |:---|:---|
180
- | 定位 | 高保真界面,精致到可直接交付开发,不是线框图 |
181
- | 卡片层级 | 用柔和投影区分层级,不用硬边框代替阴影 |
182
- | 主色使用 | 仅用于 CTA 和关键状态反馈,面积不超整体 10% |
183
- | 全局一致性 | 圆角、图标尺寸、间距全局统一 |
184
- | 排版 | 充足留白、清晰字号层级(至少 3 级对比) |
185
- | 交互状态 | 所有可交互元素须有 hover / focus / disabled 样式 |
186
- | 内容填充 | 用真实感内容,禁 Lorem ipsum / "标题" 等占位文字 |
187
-
188
- **内容规范**:
189
-
190
- | 元素类型 | 规范 |
191
- |:---|:---|
192
- | 标题/导航文字 | 用真实业务名称(来自 roadmap task title),如"工作台""项目列表""设置" |
193
- | 按钮 | 写具体操作文字,如"创建项目""立即登录""保存更改",禁写"[按钮]" |
194
- | 输入框 | 写 placeholder 文字,如"搜索项目名称…""输入邮箱地址" |
195
- | 列表/表格 | 至少生成 3-4 行示例数据(用项目领域的真实感假数据,如用户名、项目名、日期) |
196
- | 图表/图片区域 | 用带标注的矩形,但标注写实际图表类型,如"折线图:过去 7 天访问量"而非"[图表]" |
197
- | 空状态 | 写具体的空状态文案,如"还没有项目,点击「创建项目」开始" |
198
- | 错误状态 | 写具体错误文案,如"网络连接失败,请检查后重试" |
199
-
200
- **审美方向 → 设计参数映射**:
201
-
202
- 根据 `aestheticDirection.preset` 确定设计参数基准值(Token 有显式值时 Token 优先,Token 为空时用此基准):
203
-
204
- | 预设 | 背景基调 | 圆角 | 阴影 | 字体策略 | 布局特征 | 参照产品 |
205
- |:---|:---|:---|:---|:---|:---|:---|
206
- | `saas-dark` | 深色 (#0a-#15 范围) | sm:4px md:8px | 几乎无阴影,用边框分层 | 无衬线,紧凑 | 高对比、锐利边缘、紧凑间距 | Linear, Vercel, Raycast |
207
- | `saas-light` | 白底 (#fafafa-#fff) | sm:6px md:12px | 轻柔 (0 1px 3px rgba(0,0,0,0.08)) | 系统字体或 sans-serif | 呼吸感、细边框、留白 | Notion, Stripe, GitHub |
208
- | `dashboard` | 深灰/深蓝底 | sm:8px md:12px | 卡片浮层 (0 2px 8px) | 等宽数字 + sans-serif | 卡片网格、信息密集、紧凑表格 | Grafana, Datadog |
209
- | `marketing` | 渐变/大色块 | lg:16px+ | 戏剧性 (0 8px 32px) | 大号展示字体 + 精致正文字体 | 大标题、全宽 section、视觉叙事 | Loom, Framer |
210
- | `mobile-app` | 柔和底色 | lg:16px xl:24px | 柔和扩散 (0 4px 16px) | 系统字体 -apple-system | 大触控目标、宽间距、卡片式 | Telegram, Bear |
211
- | `editorial` | 暖白/米色 | 几乎无圆角 0-4px | 无或极淡 | 衬线展示 + 无衬线正文 | 窄栏、大行高、排版驱动 | Medium, Substack |
212
- | `brutalist` | 纯白或纯黑 | 0px | 无 | 等宽或系统字体 | 无装饰、密集、功能优先 | Craigslist, HN |
213
-
214
- > `custom`: 读取 `aestheticDirection.customDescription`,从描述中提取关键词映射到最近的预设,然后叠加自定义调整。
215
-
216
- **反 AI 审美黑名单** (CRITICAL — 生成时禁触犯):
217
-
218
- | 类别 | 禁止 | 替代 |
219
- |:---|:---|:---|
220
- | 字体 | Inter, Roboto, Arial 作为标题字体 | 选择有辨识度的字体:展示字体用 characterful font(如 Cal Sans, General Sans, Satoshi, Outfit),正文可用系统字体 |
221
- | 配色 | 紫色渐变白底(AI 默认审美的标志) | 从 `aestheticDirection` 推导;配色须有主次——一个主色 + 锐利强调色 > 均匀分布的温吞色板 |
222
- | 布局 | 所有屏幕同一种居中卡片布局 | 不同屏幕须有布局差异:列表页 vs 详情页 vs 表单页各有特征 |
223
- | 圆角 | 所有元素统一 rounded-lg | 圆角须有层级:容器大、按钮中、Badge 小(或按审美方向统一为 0/sm) |
224
- | 阴影 | 千篇一律的 shadow-md | 阴影须匹配审美方向:dark 主题几乎不用阴影;light 主题分层使用 |
225
- | 动效 | 到处撒 transition-all | 聚焦高影响力时刻:页面加载编排(交错淡入)> 散布的微交互 |
226
- | Emoji | 用 emoji 代替图标(🔔📁⚙️✅ 等)→ 跨平台渲染不一致、与整体设计语言格格不入 | 使用 `illustration.iconLibrary` 声明的图标库,或用带 `data-el` 标注的纯文字/符号替代 |
227
- | 整体 | 每次生成都趋同 | 每个项目的设计必须因审美方向而异——打开两个不同项目的 ui_concept.html,必须一眼看出区别 |
228
-
229
- **着色规则** (在审美方向基准 + 黑名单约束下执行):
230
-
231
- | 着色维度 | 规则 |
232
- |:---|:---|
233
- | 颜色 | 用 `semanticTokens.colors` 语义 Token 映射;品牌色来自 `primitivePalette.brand`;Token 空值按审美方向基准填充 |
234
- | 字体 | `semanticTokens.typography` 有值时引入声明字体;空值时按审美方向策略选择(Google Fonts CDN),禁选黑名单字体 |
235
- | 圆角/阴影 | 按 `layout.radius` / `layout.shadow`;空值时按审美方向基准填充 |
236
- | 动效 | 按 `motion.patterns` 添加 CSS transition/animation;优先编排页面加载交错淡入(staggered reveal via animation-delay) |
237
- | 图示 | 有 `illustration.iconLibrary` → 引入对应 CDN;未指定或 style=none → 自绘内联 SVG(见下方规范);**禁用 emoji 替代图标** |
238
- | 模式 | 若 `mode.support` 含 dark,添加 CSS `@media (prefers-color-scheme: dark)` + 切换按钮 |
239
- | 禁用 | 遵循 vision.md Visual Reference 中的「禁用风格」描述 |
240
- | 空间 | 创造有呼吸感或有密度的排版(取决于审美方向),不做机械均匀间距 |
241
- | 背景 | 禁纯色大面积平铺——按审美方向添加微妙纹理/渐变网格/噪点/几何图案 |
242
-
243
- **自绘 SVG 规范**(仅当无 `illustration.iconLibrary` 时使用):
145
+ **检查方式**:扫描各 HTML 文件元素,核对检查项,输出到注释(`<!-- Check: 6/6 passed -->`),失败则修复。
244
146
 
245
- ```html
246
- <!-- 描边风格(saas-dark/saas-light/dashboard) -->
247
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none"
248
- stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"
249
- style="width:1em;height:1em;vertical-align:-0.125em">…</svg>
250
-
251
- <!-- 填充风格(mobile-app/marketing) -->
252
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"
253
- fill="currentColor" style="width:1em;height:1em;vertical-align:-0.125em">…</svg>
254
- ```
147
+ [[INCLUDE: shared/ui-redlines.md]]
255
148
 
256
- 规则:① 颜色 100% 用 `currentColor`,通过父元素 CSS `color` 控制;② 尺寸跟随字号(`1em`),不硬编码 px;③ stroke-width: saas-dark/brutalist → `2`,其余 → `1.5`;④ 复杂图标画不出来时,用最简几何形状代替,禁用 emoji 凑数。
149
+ **内容填充**:
150
+ - 用真实业务名(来自 roadmap),禁 "标题" 占位
151
+ - 按钮写具体操作,禁 "[按钮]"
152
+ - 列表/表格至少 3-4 行真实感假数据
153
+ - 空状态写具体文案,禁 "暂无数据"
257
154
 
258
- ### Step 6 — 生成 AI 索引
155
+ **自绘 SVG**(无图标库时):stroke="currentColor",stroke-width 1.5-2,fill="currentColor",width="1em" height="1em"
259
156
 
260
- 写入 `[[__DOCS_DIR__]]/global/ui_context.md`:
157
+ ### Step 5 — 生成 AI 索引
158
+
159
+ **输出**:`[[__DOCS_DIR__]]/global/ui_context.md`
261
160
 
262
161
  ```markdown
263
162
  # UI Context
264
- > 平台: [平台类型] | archi-ui-wireframe Skill 生成
265
- > 更新: YYYY-MM-DD | 禁手动修改
163
+ > 平台: [类型] | 生成: YYYY-MM-DD
266
164
 
267
165
  ## 屏幕索引
268
- | ID | 名称 | 路由 | 状态 |
269
- |:---|:---|:---|:---|
270
- | S-01 | [名称] | [路由] | default, loading, ... |
166
+ | ID | 名称 | 路由 | 文件 | 状态 |
167
+ |:---|:---|:---|:---|:---|
168
+ | S-01 | [] | [路由] | screens/S-01.html | default, loading, empty, error |
271
169
 
272
170
  ## 导航关系
273
- S-XX →([触发条件])→ S-YY
274
-
275
- ## 全局共享组件
276
- | 组件 | 出现屏幕 |
277
- |:---|:---|
278
- | [组件名] | S-XX, S-YY |
171
+ S-XX →(触发条件)→ S-YY
279
172
 
280
173
  ## 屏幕结构摘要
281
- > 由 ui_concept.html data-el 提取。写 ui.md Section 2 须与本节对齐,禁脱离已确认布局自创结构。
282
-
283
174
  ### S-XX · [屏幕名]
284
- **布局**: ["居中单列 max-w-400px"或"左侧边栏 240px + 右内容区"]
285
- **状态**: default([核心操作入口])| loading(骨架屏)| empty / error(如有)
286
- **关键区域**: [data-el 提取的语义区块+可交互元素,如:顶部导航栏、主表单区、提交按钮、错误提示区]
175
+ **布局**: [描述,如"左侧边栏 240px + 右内容区"]
176
+ **文件**: screens/S-XX.html
177
+ **状态**: default(核心操作)| loading(骨架屏)| empty | error
178
+ **关键区域**: [data-el 提取:顶部导航栏、主表单区、提交按钮、错误提示区]
287
179
  ```
288
180
 
289
- > `ui_context.md` 是所有 AI 命令读取 UI 结构信息的唯一入口;`ui_concept.html` 仅供人类浏览器预览。
181
+ ### Step 6 Output Gate
290
182
 
291
- ### Step 7 — 验证清单
183
+ 输出摘要:审美方向及参照产品、屏幕覆盖清单(共 N 个)、视觉规格、导航结构描述。
292
184
 
293
- - [ ] 所有屏幕颜色来自 semanticTokens 或审美方向基准,无随意硬编码 Hex
294
- - [ ] 所有动效时长来自 `motion.duration.*`,无魔法数字
295
- - [ ] 页面/状态切换控制栏保持线框图灰度风格(不着色,保持调试工具属性)
296
- - [ ] `data-el` 标注完整保留
297
- - [ ] 每个屏幕的所有状态(default/loading/empty/error)均已视觉化
298
- - [ ] **图标检查**: 有图标库时使用 CDN;无图标库时使用自绘 SVG;**零 emoji**
299
- - [ ] **反 AI 审美检查**: 未使用黑名单字体、无紫色渐变白底、布局有差异性、圆角有层级
300
- - [ ] **辨识度检查**: 打开 HTML,能一眼判断这是哪个审美方向,而非通用模板
301
- - [ ] **UI 质量标准检查**: 文字非纯黑、背景有层次、卡片有柔和投影、主色面积≤10%、交互状态完整、内容为真实感填充
185
+ **用户确认**:回复 **OK** 完成;非 OK 进入 Refinement。
302
186
 
303
- ### Step 8 — Output Gate
187
+ ## 输出验证
304
188
 
305
- 输出覆盖摘要:
306
-
307
- ```
308
- ### ui_concept.html 已生成
309
- ### ui_context.md 已同步生成(AI 屏幕索引)
310
-
311
- **审美方向**: [preset 值] — [参照产品]
312
- **屏幕覆盖** (共 N 个屏幕):
313
- | 屏幕 | 名称 | 状态数 |
314
- |:---|:---|:---|
315
- | S-01 | [屏幕名] | N |
316
- | ... | | |
317
-
318
- **应用的视觉规格**:
319
- - 主色: [Primary Token 值]
320
- - 字体: [展示字体 + 正文字体]
321
- - 圆角: [sm/md/lg 值]
322
- - 动效: [preference 值]
323
- - 主题: [default + support 列表]
324
-
325
- **导航结构**: [描述,如"左侧边栏 + 顶部面包屑"]
326
- **平台适配**: [Web Desktop 1280px / Mobile 390px / ...]
327
-
328
- > 在浏览器打开 `[[__DOCS_DIR__]]/global/ui_concept.html` 确认布局和视觉效果。
329
- > 回复 **OK** 确认;或描述需要调整的屏幕/布局/视觉。
330
- ```
331
-
332
- **Gate**: 用户回复 **OK** 后完成;未确认可进入 Refinement。
189
+ □ `global/screens/index.html` 已生成且列出所有屏幕链接
190
+ □ `global/screens/_shared.css` 已生成且含 design_tokens CSS 变量
191
+ □ `global/screens/S-XX.html` 每个屏幕独立文件已生成
192
+ `global/ui_context.md` 已生成且屏幕索引含 `screens/S-XX.html` 路径
333
193
 
334
194
  ---
335
195
 
336
- ### Refinement — 精炼循环 (可选)
196
+ ## Refinement(用户反馈调整)
337
197
 
338
- **Trigger**: 用户回复非 OK,含布局调整、屏幕增减、导航改动、视觉修改。
339
- **Action**: 融入反馈,局部更新 `ui_concept.html`(仅改动用户指出的部分),同步更新 `ui_context.md`(屏幕索引与 `ui_concept.html` 保持一致),重新展示摘要,等待确认。禁全量重写。
198
+ 用户回复含布局/视觉调整 局部更新对应 `screens/S-XX.html` + 同步 `ui_context.md` → 重新展示摘要等待确认。
340
199
 
341
200
  ---
342
201
 
343
- ### Incremental Update — 局部更新
202
+ ## Incremental Update(局部更新)
344
203
 
345
- **Trigger**: 某屏幕因 Plan 细化 / Edit / Revise 发生更新,需将新增内容按当前视觉规格更新。
204
+ 输入屏幕 ID 列表 仅处理指定屏幕:保留已有文件,按当前视觉规格生成新增/更新的 `S-XX.html`;如有新状态,同步更新 `ui_context.md`。更新 `index.html` 导航列表。
346
205
 
347
- **Action**:
348
-
349
- 1. 从调用方获取需更新的屏幕 ID 列表(如 `S-03`, `S-07`)。
350
- 2. 仅处理指定屏幕:
351
- - 保留其 `.wf-screen#S-XX` 内的已有内容
352
- - 按当前视觉规格(`semanticTokens` / `motion` / `illustration`)对新增部分生成
353
- - 其余屏幕内容不动
354
- 3. 如新增了状态 → 同步更新 `ui_context.md` 对应屏幕的状态列。
355
- 4. 输出变更摘要:
356
- - `MODIFIED: ui_concept.html S-XX(局部更新,新增 [N] 个状态/区域)`
357
- - `MODIFIED: ui_context.md S-XX(更新状态列表)`(仅当有新状态时)
358
-
359
- > **禁止**: 局部更新时禁全量重写,禁改动未指定屏幕的任何内容。
206
+ 输出:`MODIFIED: screens/S-XX.html`(逐文件标注)
360
207
 
361
208
  ---
362
209
 
363
- ### Adopt — 逆向采用(Legacy UI 逆向捕获)
364
-
365
- **Trigger**: `/archi.inherit` 完成后,对 UI 项目调用。
366
- **Input**: 已有代码(路由定义、页面组件、布局文件)+ design_tokens.json(可能不完整)
367
-
368
- **Action**:
369
-
370
- 1. **扫描 UI 结构**:
371
- - 从路由定义提取页面清单(React Router / Vue Router / Next.js pages / SvelteKit routes 等)
372
- - 从布局组件识别导航结构(sidebar / navbar / tabbar)
373
- - 从页面组件识别核心区域和状态
374
-
375
- 2. **规划屏幕清单**: 同标准流程 Step 2(分配 S-XX ID,映射到 LEG-xx 任务)
376
-
377
- 3. **Tokens 检查 + 引导**: 同标准流程 Step 4
378
- - 已有代码中的 CSS 变量/Tailwind config/theme 文件优先提取
379
- - 不足部分走引导问题流程
380
-
381
- 4. **生成 HTML**: 同标准流程 Step 5(高保真质量标准)
382
- - 已有代码的 UI 结构作为布局参考(不是凭空设计,而是还原已有)
383
- - 细节和状态可以补全(如原代码缺少 empty/error 状态)
384
-
385
- 5. **生成 ui_context.md**: 同标准流程 Step 6
210
+ ## Adopt(逆向采用)
386
211
 
387
- 6. **Output**: 同标准流程 Step 8
212
+ 输入已有代码 + design_tokens.json 提取:路由 屏幕清单,布局组件 → 导航结构,页面组件 → 核心区域和状态 → 按标准流程生成 `screens/` 目录 + ui_context.md。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "architext",
3
- "version": "0.0.5",
3
+ "version": "0.0.6",
4
4
  "description": "The DDAD (Document-Driven AI Development) protocol and prompt scaffolder for AI-native engineering.",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -59,6 +59,7 @@
59
59
  "@eslint/js": "^9.39.2",
60
60
  "@types/fs-extra": "^11.0.4",
61
61
  "@types/node": "^25.2.1",
62
+ "@types/node-notifier": "^8.0.5",
62
63
  "@vitest/coverage-v8": "^4.0.18",
63
64
  "@vitest/ui": "^4.0.18",
64
65
  "eslint": "^9.39.2",
@@ -79,6 +80,7 @@
79
80
  "cac": "^6.7.14",
80
81
  "chalk": "^5.6.2",
81
82
  "fs-extra": "^11.3.3",
83
+ "node-notifier": "^10.0.1",
82
84
  "picocolors": "^1.1.1",
83
85
  "zod": "^4.3.6"
84
86
  }
@@ -1,95 +0,0 @@
1
- ---
2
- description: Command Dispatcher & Workflow Controller. Handles /archi.* routing and mode transitions.
3
- globs: **/*
4
- applyTo: **/*
5
- alwaysApply: true
6
- ---
7
-
8
- # Workflow Dispatcher
9
-
10
- > **Role**: Mode Switcher. Default to "General Architect" mode, only load specific protocol when explicit command is detected.
11
-
12
- > ⛔ **STOP CHECK** — Self-check before each response:
13
- > | Violation | Correct Action |
14
- > |:---|:---|
15
- > | Received `/archi.*` but started executing without loading protocol file | Stop → Load protocol file first |
16
- > | User request involves behavior change but code was modified directly | Stop → Load and execute the corresponding protocol |
17
- > | Ran `npx archi` without confirming working directory | Stop → Pass Working Directory Gate (see `04_cli_tools.md`) |
18
-
19
- ## 1. Explicit Command Routing
20
-
21
- **Trigger**: When user input starts with `/archi.`, immediately load the corresponding protocol.
22
-
23
- | Command | Target Template |
24
- |:---|:---|
25
- | `/archi.start` | `[[__PROMPTS_PATH__]]/archi.start.md` |
26
- | `/archi.inherit` | `[[__PROMPTS_PATH__]]/archi.inherit.md` |
27
- | `/archi.scope` | `[[__PROMPTS_PATH__]]/archi.scope.md` |
28
- | `/archi.plan` | `[[__PROMPTS_PATH__]]/archi.plan.md` |
29
- | `/archi.edit` | `[[__PROMPTS_PATH__]]/archi.edit.md` |
30
- | `/archi.revise` | `[[__PROMPTS_PATH__]]/archi.revise.md` |
31
- | `/archi.code` | `[[__PROMPTS_PATH__]]/archi.code.md` |
32
- | `/archi.audit` | `[[__PROMPTS_PATH__]]/archi.audit.md` |
33
- | `/archi.fix` | `[[__PROMPTS_PATH__]]/archi.fix.md` |
34
- | `/archi.map` | `[[__PROMPTS_PATH__]]/archi.map.md` |
35
- | `/archi.remove` | `[[__PROMPTS_PATH__]]/archi.remove.md` |
36
- | `/archi.ref` | `[[__PROMPTS_PATH__]]/archi.ref.md` |
37
- | `/archi.recover` | `[[__PROMPTS_PATH__]]/archi.recover.md` |
38
- | `/archi.help` | `[[__PROMPTS_PATH__]]/archi.help.md` |
39
-
40
- > **Protocol Load Gate** (forbidden to skip, complete in order):
41
- > 1. **Read** target `.md` full text → if file not found, stop: `Protocol file not found, execution aborted`
42
- > 2. **Override** — May override: `<system_role>`, `<thinking_process>`, `<communication_style>`. Cannot override: `<core_philosophy>`, `<critical_protocols>`.
43
- > 3. **Execute** `<step_1>` — forbidden to execute any protocol content before step 1 is complete
44
-
45
- ---
46
-
47
- ## 2. Natural Language Dispatch
48
-
49
- **Trigger**: User input is not an `/archi.` command and involves business changes.
50
-
51
- ### §2.0 Non-protocol scenarios (answer directly)
52
-
53
- | Intent Type | Action |
54
- |:---|:---|
55
- | Pure conversation / code reading / architecture discussion | ✅ Answer directly |
56
- | Trivial edits (typo/comments/formatting/log messages) | ✅ Execute directly |
57
-
58
- ### §2.1 Pre-flight (triggered when business changes are involved)
59
-
60
- 1. Scan `roadmap.json` + `tasks/<ID>_*/` directory to match user intent to tasks.
61
- 2. Determine protocol to load per the table below:
62
-
63
- | Check Result | Load Protocol | Confirmation |
64
- |:---|:---|:---|
65
- | No matching task in roadmap | `scope.md` | Inform "Let me help you scope this" then start |
66
- | Has task · no spec.md | `plan.md` | Inform "This task needs planning, I'll do it" then start |
67
- | Has spec+plan · status=active | `code.md` | Start directly (IDE native plan mode drives rhythm) |
68
- | status=done · user wants changes | `edit.md` | Inform "I'll update docs before changing code" then start |
69
- | User describes abnormal behavior | `fix.md` | Start diagnosis directly |
70
- | Affects >1 task or global assets | `revise.md` | Output impact assessment first, await confirmation |
71
-
72
- 3. After loading protocol, follow §1 **Protocol Load Gate** (read full text → override → step_1).
73
-
74
- ### §2.2 Chain Continuation
75
-
76
- Each protocol's Signoff Next Steps already points to the next protocol. AI must:
77
- - Proactively suggest next step ("Spec is ready, shall we start implementing?")
78
- - After user confirms, load next protocol and continue
79
-
80
- | Transition | Chaining Rule |
81
- |:---|:---|
82
- | scope → plan | May chain (after scope, ask "Want to plan the first task?") |
83
- | plan → code | **Must await user confirmation** (spec is the most important checkpoint) |
84
- | code → audit | Built-in (code.md step_5 already has silent audit) |
85
-
86
- > ⛔ **Prohibited**: Auto-chaining from plan to code without user confirmation.
87
-
88
- ### §2.3 IDE Collaboration
89
-
90
- Leverage IDE native capabilities (plan mode / agent mode / checkpoint) to drive execution rhythm.
91
- Protocols define "what to do, what to check" — do not fight IDE planning/execution capabilities.
92
-
93
- ### §2.4 Unmanaged Code
94
-
95
- Target not registered in `map.json` and has no Task → **STOP & ASK**, prompt user to adopt via `/archi.inherit` or `/archi.scope`.