@namewta/speculo 0.8.6 → 0.8.7
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/package.json +1 -1
- package/template/canonical/canonical-specdev-goal-plan.md +14 -14
- package/template/canonical/canonical-specdev-grill-with-docs.md +9 -7
- package/template/canonical/canonical-specdev-spec.md +9 -7
- package/template/canonical/canonical-specdev-tickets.md +13 -13
- package/template/canonical/canonical-specdev-wayfinder.md +7 -7
- package/template/workflows/specdev/I-init-setup/I-init-setup.md +1 -1
- package/template/workflows/specdev/I-init-setup/config-template.json +2 -2
- package/template/workflows/specdev/P-goal-plan/planning-modes.md +1 -1
- package/template/workflows/specdev/P-prototype/P-prototype.md +30 -26
- package/template/workflows/specdev/P-prototype/design-library/INDEX.md +43 -0
- package/template/workflows/specdev/P-prototype/design-library/color-and-theme.md +65 -0
- package/template/workflows/specdev/P-prototype/design-library/foundations.md +66 -0
- package/template/workflows/specdev/P-prototype/design-library/interaction-patterns.md +61 -0
- package/template/workflows/specdev/P-prototype/design-library/product-pattern-index.md +73 -0
- package/template/workflows/specdev/P-prototype/design-library/research-provenance.md +54 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/METHODOLOGY.md +90 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/README.md +31 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/data/extended-projects.json +241 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/data/projects.json +253 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/reference/USAGE.md +40 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/reference/design-tokens.css +145 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/report/OPEN_SOURCE_UI_RESEARCH_2026.md +519 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/research/PROJECT_TEMPLATE.md +29 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/research/README.md +9 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/research/claude-code-modern-clients.md +407 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/research/creative-ai-communication.md +574 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/research/data-dev-tools.md +432 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/research/personal-multiplatform-apps.md +185 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/research/productivity-collaboration.md +398 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/01-dense-ide.html +68 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/02-monochrome-console.html +18 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/03-soft-personal-ai.html +17 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/04-responsive-web.html +14 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/05-mobile-supervisor.html +16 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/06-cross-platform-workspace.html +17 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/07-local-first-content.html +9 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/08-media-first.html +17 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/README.md +49 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/assets/ATTRIBUTION.md +9 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/assets/landscape.jpg +0 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/assets/lucide.js +20494 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/assets/mountain.jpg +0 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/assets/workspace.jpg +0 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/index.html +70 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/package-lock.json +78 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/package.json +12 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/screenshots/index-desktop.png +0 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/scripts/gallery.js +134 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/styles/base.css +795 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/styles/pages.css +533 -0
- package/template/workflows/specdev/P-prototype/design-library/research-snapshot/ui-gallery/tests/gallery.spec.js +56 -0
- package/template/workflows/specdev/P-prototype/design-library/responsive-and-platforms.md +53 -0
- package/template/workflows/specdev/P-prototype/design-library/style-index.md +32 -0
- package/template/workflows/specdev/P-prototype/design-package.schema.json +70 -0
- package/template/workflows/specdev/P-prototype/design-system-template.md +366 -0
- package/template/workflows/specdev/P-prototype/detect-existing-style.md +53 -0
- package/template/workflows/specdev/P-prototype/generate-design-package.md +50 -0
- package/template/workflows/specdev/P-prototype/style-selection-protocol.md +41 -0
- package/template/workflows/specdev/P-prototype/tools/materialize-prototype.mjs +126 -0
- package/template/workflows/specdev/P-prototype/tools/validate-design-package.mjs +155 -0
- package/template/workflows/specdev/README.md +11 -5
- package/template/workflows/specdev/T-triage/T-triage.md +1 -1
- package/template/workflows/specdev/W-wayfinder/W-wayfinder.md +1 -1
- package/template/workflows/specdev/common/README.md +2 -2
- package/template/workflows/specdev/common/rules/artifact-contract.md +3 -1
- package/template/workflows/specdev/common/schemas/config.schema.json +4 -4
- package/template/workflows/specdev/common/skills/dev-worktree/SKILL.md +4 -4
- package/template/workflows/specdev/common/skills/dev-worktree/references/create.md +1 -3
- package/template/workflows/specdev/common/tools/validate-specdev.mjs +88 -29
- package/template/workflows/specdev/P-prototype/logic-prototype.md +0 -24
- package/template/workflows/specdev/P-prototype/prototype-record-template.md +0 -46
- package/template/workflows/specdev/P-prototype/ui-prototype.md +0 -21
- package/template/workflows/specdev/common/schemas/prototype-record.schema.json +0 -24
package/package.json
CHANGED
|
@@ -177,7 +177,7 @@ Goal Plan 不复制 Ticket 的局部施工路线、全部文件预测或逐项
|
|
|
177
177
|
- Tickets Map 与全部 Ticket 存在、Ready、DAG 无环;
|
|
178
178
|
- 每个验收合同被 Ticket 覆盖;
|
|
179
179
|
- writable/shared path 有唯一 owner,Wave 候选无写冲突;
|
|
180
|
-
- config schema v5,`max_implementation_agents` 与 `max_integration_attempts`
|
|
180
|
+
- config schema v5,`max_implementation_agents` 与 `max_integration_attempts` 为正整数;UI 设计候选范围读取 planning 配置;
|
|
181
181
|
- 父分支可定位,implementation commit 与本地 integration 已获授权;
|
|
182
182
|
- Deep Ticket 的迁移、兼容、监控、恢复和不可逆批准点完整。
|
|
183
183
|
- Ticket 与 `specdev/changes/{change}/spec.md`、`specdev/changes/{change}/ADR.md`、`specdev/adr/`、`specdev/context/` 和当前代码事实不存在未处理冲突;
|
|
@@ -558,13 +558,15 @@ SpecDev 通过分层工件避免同一决策被多个模型反复重做。每个
|
|
|
558
558
|
| Goal Plan | `specdev/changes/{change}/goal-plan.md` | 跨 Ticket 调度、Gate、共享所有权、迁移顺序、集成和偏差治理 | 复制 Ticket 全文 |
|
|
559
559
|
| Evidence | `specdev/changes/{change}/evidence/T-NN.md` | 实际修改、命令、结果、验收映射、偏差、风险和提交引用 | 新的产品或架构决策 |
|
|
560
560
|
| 代码审查 | `specdev/changes/{change}/reviews/CR-###.md` | 固定点、标准轴和规范轴 finding | 实施修复或合并两轴排名 |
|
|
561
|
-
|
|
|
561
|
+
| UI 设计包 | `specdev/changes/{change}/prototypes/{design-id}/design-system.md`、`specdev/changes/{change}/prototypes/{design-id}/comparison/` 与 `specdev/changes/{change}/prototypes/{design-id}/final/` | 项目 UI 证据、功能风格候选、逐层用户决定、设计 token、交互合同和可运行 HTML/CSS/JS 投影 | 生产 UI 实现或替用户确认高影响偏好 |
|
|
562
562
|
| Stakeholder 问卷 | `specdev/changes/{change}/questionnaires/{slug}.md` | 第三方原始回答和恢复条件 | 未经转录确认的产品/架构决定 |
|
|
563
563
|
| Wayfinder 地图 | `specdev/changes/{change}/wayfinder-map.md` | 目的地、说明、已关闭决策索引、战争迷雾和范围之外 | 开放 Ticket 正文或答案详情 |
|
|
564
564
|
| Wayfinder Ticket | `specdev/changes/{change}/investigation/{investigation-id}.md` | 一个可精确陈述的问题、类型、阻塞和关闭状态 | 解决方案评论或交付目标 |
|
|
565
565
|
| Wayfinder solution comment | `specdev/changes/{change}/investigation/comments/{investigation-id}/NN-solution.md` | Ticket 的答案、结果事实和资产指针 | 地图索引或产品实现 |
|
|
566
566
|
| 架构审查 | `specdev/changes/{change}/architecture-review.md` 与 `specdev/changes/{change}/architecture-review.html` | 深化候选、证据、可视化、选择和访谈状态 | 未经用户选择的执行契约 |
|
|
567
567
|
|
|
568
|
+
UI 设计包中的 `{design-id}` 由 P-prototype 分配为当前 change 内最小未占用的 `UI-NNN`;设计系统文档是唯一设计权威,comparison 与 final 不建立第二套规则。
|
|
569
|
+
|
|
568
570
|
Change CONTEXT/ADR 是 active change 内的执行权威,不是 workflow 级永久知识。G 和其他设计/执行 Works 只读 `specdev/context/` 与 `specdev/adr/`;只有 A 在 change 完成、实现证据验证、毕业评估和用户确认后才能写入永久 namespace。未毕业内容随归档 change 保留,不能从 change 工件消失。
|
|
569
571
|
|
|
570
572
|
## 2. 权威顺序
|
|
@@ -850,12 +852,12 @@ Owner 原子更新 `specdev/changes/{change}/.status.json` 的 `change_status`
|
|
|
850
852
|
|
|
851
853
|
# Dev Worktree
|
|
852
854
|
|
|
853
|
-
本 Skill 由 T-tickets
|
|
855
|
+
本 Skill 由 T-tickets、P-goal-plan 和 I-implement 复用。仅在 Goal Plan 选择 `required` 时使用完整 source → candidate → parent 状态机;`current` Ticket 不调用本 Skill。
|
|
854
856
|
|
|
855
857
|
## 输入
|
|
856
858
|
|
|
857
859
|
- `operation=create | restore | finalize | remove`;
|
|
858
|
-
- `purpose=ticket
|
|
860
|
+
- `purpose=ticket`;
|
|
859
861
|
- repository、父分支、`base_sha`、branch、portable workspace locator;
|
|
860
862
|
- workspace、implementation 和 integration owner;
|
|
861
863
|
- 允许动作、路径合同、验证合同、调用方状态记录位置。
|
|
@@ -884,7 +886,7 @@ implementation owner 只在来源 worktree 修改授权项目路径,运行 Tic
|
|
|
884
886
|
|
|
885
887
|
## 4. 移除
|
|
886
888
|
|
|
887
|
-
`operation=remove` 先验证 Ticket 已 `integrated
|
|
889
|
+
`operation=remove` 先验证 Ticket 已 `integrated`、目标 worktree clean、checkpoint 可恢复且删除目标精确。只有明确 cleanup 授权时删除来源 branch/worktree;强制删除需要单独确认。删除后重读 `git worktree list` 与 refs,并只把调用方生命周期状态更新为 `removed`;`base_sha`、source checkpoint、candidate/result、验证、E2E 与 Evidence 字段必须原样保留。
|
|
888
890
|
|
|
889
891
|
**完成标准**:只删除精确授权目标;失败保留现场与恢复命令。
|
|
890
892
|
|
|
@@ -910,14 +912,12 @@ implementation owner 只在来源 worktree 修改授权项目路径,运行 Tic
|
|
|
910
912
|
- `specdev-worktree/` 已由 Speculo init 加入项目 `.gitignore`;
|
|
911
913
|
- 目标 branch/worktree 不覆盖现有用户 workspace,路径合同无冲突。
|
|
912
914
|
|
|
913
|
-
Prototype 只要求调用方已记录本次临时 branch/worktree 授权、问题、owner、locator 和清理策略;它不写 Ticket worktree 状态。
|
|
914
|
-
|
|
915
915
|
## 创建 Ticket 来源 worktree
|
|
916
916
|
|
|
917
917
|
1. 重读父分支 HEAD、工作树、现有 worktrees 与 refs;父 HEAD 与计划基线不一致时由 Lead决定更新 `base_sha` 或阻塞;
|
|
918
918
|
2. 固定 branch `speculo/<change>/<ticket-id>` 与 locator `specdev-worktree/<ticket-id>`;
|
|
919
919
|
3. 确认目标 branch/path 不存在,或其实际记录精确匹配当前 Ticket;
|
|
920
|
-
4. 从 `base_sha` 创建 Git worktree,不复用其他 Ticket
|
|
920
|
+
4. 从 `base_sha` 创建 Git worktree,不复用其他 Ticket 目录;
|
|
921
921
|
5. 在来源 worktree 读取项目 Agent 指令、依赖、构建与路径合同;
|
|
922
922
|
6. 安装实际需要的依赖,运行最小非 E2E 基线;
|
|
923
923
|
7. Lead 写入 `specdev/changes/{change}/.status.json`,状态为 `active`。
|
|
@@ -1612,8 +1612,8 @@ node "${ZIP_SCRIPT}" "${RETURN_STAGING}" \
|
|
|
1612
1612
|
"default_depth": "standard",
|
|
1613
1613
|
"require_ready_gate": true,
|
|
1614
1614
|
"require_evidence": true,
|
|
1615
|
-
"
|
|
1616
|
-
"
|
|
1615
|
+
"ui_design_default_candidates": 3,
|
|
1616
|
+
"ui_design_max_candidates": 4
|
|
1617
1617
|
}
|
|
1618
1618
|
}
|
|
1619
1619
|
```
|
|
@@ -1665,19 +1665,19 @@ node "${ZIP_SCRIPT}" "${RETURN_STAGING}" \
|
|
|
1665
1665
|
},
|
|
1666
1666
|
"planning": {
|
|
1667
1667
|
"type": "object",
|
|
1668
|
-
"required": ["default_depth", "require_ready_gate", "require_evidence", "
|
|
1668
|
+
"required": ["default_depth", "require_ready_gate", "require_evidence", "ui_design_default_candidates", "ui_design_max_candidates"],
|
|
1669
1669
|
"properties": {
|
|
1670
1670
|
"default_depth": {"enum": ["lite", "standard", "deep"]},
|
|
1671
1671
|
"require_ready_gate": {"type": "boolean"},
|
|
1672
1672
|
"require_evidence": {"type": "boolean"},
|
|
1673
|
-
"
|
|
1674
|
-
"
|
|
1673
|
+
"ui_design_default_candidates": {"type": "integer", "minimum": 2, "maximum": 4},
|
|
1674
|
+
"ui_design_max_candidates": {"type": "integer", "minimum": 2, "maximum": 4}
|
|
1675
1675
|
},
|
|
1676
1676
|
"additionalProperties": true
|
|
1677
1677
|
}
|
|
1678
1678
|
},
|
|
1679
1679
|
"allOf": [{
|
|
1680
|
-
"$comment": "
|
|
1680
|
+
"$comment": "ui_design_default_candidates <= ui_design_max_candidates is enforced by validate-specdev.mjs because JSON Schema cannot compare sibling numeric values."
|
|
1681
1681
|
}],
|
|
1682
1682
|
"additionalProperties": false
|
|
1683
1683
|
}
|
|
@@ -376,13 +376,15 @@ SpecDev 通过分层工件避免同一决策被多个模型反复重做。每个
|
|
|
376
376
|
| Goal Plan | `specdev/changes/{change}/goal-plan.md` | 跨 Ticket 调度、Gate、共享所有权、迁移顺序、集成和偏差治理 | 复制 Ticket 全文 |
|
|
377
377
|
| Evidence | `specdev/changes/{change}/evidence/T-NN.md` | 实际修改、命令、结果、验收映射、偏差、风险和提交引用 | 新的产品或架构决策 |
|
|
378
378
|
| 代码审查 | `specdev/changes/{change}/reviews/CR-###.md` | 固定点、标准轴和规范轴 finding | 实施修复或合并两轴排名 |
|
|
379
|
-
|
|
|
379
|
+
| UI 设计包 | `specdev/changes/{change}/prototypes/{design-id}/design-system.md`、`specdev/changes/{change}/prototypes/{design-id}/comparison/` 与 `specdev/changes/{change}/prototypes/{design-id}/final/` | 项目 UI 证据、功能风格候选、逐层用户决定、设计 token、交互合同和可运行 HTML/CSS/JS 投影 | 生产 UI 实现或替用户确认高影响偏好 |
|
|
380
380
|
| Stakeholder 问卷 | `specdev/changes/{change}/questionnaires/{slug}.md` | 第三方原始回答和恢复条件 | 未经转录确认的产品/架构决定 |
|
|
381
381
|
| Wayfinder 地图 | `specdev/changes/{change}/wayfinder-map.md` | 目的地、说明、已关闭决策索引、战争迷雾和范围之外 | 开放 Ticket 正文或答案详情 |
|
|
382
382
|
| Wayfinder Ticket | `specdev/changes/{change}/investigation/{investigation-id}.md` | 一个可精确陈述的问题、类型、阻塞和关闭状态 | 解决方案评论或交付目标 |
|
|
383
383
|
| Wayfinder solution comment | `specdev/changes/{change}/investigation/comments/{investigation-id}/NN-solution.md` | Ticket 的答案、结果事实和资产指针 | 地图索引或产品实现 |
|
|
384
384
|
| 架构审查 | `specdev/changes/{change}/architecture-review.md` 与 `specdev/changes/{change}/architecture-review.html` | 深化候选、证据、可视化、选择和访谈状态 | 未经用户选择的执行契约 |
|
|
385
385
|
|
|
386
|
+
UI 设计包中的 `{design-id}` 由 P-prototype 分配为当前 change 内最小未占用的 `UI-NNN`;设计系统文档是唯一设计权威,comparison 与 final 不建立第二套规则。
|
|
387
|
+
|
|
386
388
|
Change CONTEXT/ADR 是 active change 内的执行权威,不是 workflow 级永久知识。G 和其他设计/执行 Works 只读 `specdev/context/` 与 `specdev/adr/`;只有 A 在 change 完成、实现证据验证、毕业评估和用户确认后才能写入永久 namespace。未毕业内容随归档 change 保留,不能从 change 工件消失。
|
|
387
389
|
|
|
388
390
|
## 2. 权威顺序
|
|
@@ -678,8 +680,8 @@ Ticket 只有同时满足以下适用条件才可设置 `ready: true`:
|
|
|
678
680
|
"default_depth": "standard",
|
|
679
681
|
"require_ready_gate": true,
|
|
680
682
|
"require_evidence": true,
|
|
681
|
-
"
|
|
682
|
-
"
|
|
683
|
+
"ui_design_default_candidates": 3,
|
|
684
|
+
"ui_design_max_candidates": 4
|
|
683
685
|
}
|
|
684
686
|
}
|
|
685
687
|
```
|
|
@@ -731,19 +733,19 @@ Ticket 只有同时满足以下适用条件才可设置 `ready: true`:
|
|
|
731
733
|
},
|
|
732
734
|
"planning": {
|
|
733
735
|
"type": "object",
|
|
734
|
-
"required": ["default_depth", "require_ready_gate", "require_evidence", "
|
|
736
|
+
"required": ["default_depth", "require_ready_gate", "require_evidence", "ui_design_default_candidates", "ui_design_max_candidates"],
|
|
735
737
|
"properties": {
|
|
736
738
|
"default_depth": {"enum": ["lite", "standard", "deep"]},
|
|
737
739
|
"require_ready_gate": {"type": "boolean"},
|
|
738
740
|
"require_evidence": {"type": "boolean"},
|
|
739
|
-
"
|
|
740
|
-
"
|
|
741
|
+
"ui_design_default_candidates": {"type": "integer", "minimum": 2, "maximum": 4},
|
|
742
|
+
"ui_design_max_candidates": {"type": "integer", "minimum": 2, "maximum": 4}
|
|
741
743
|
},
|
|
742
744
|
"additionalProperties": true
|
|
743
745
|
}
|
|
744
746
|
},
|
|
745
747
|
"allOf": [{
|
|
746
|
-
"$comment": "
|
|
748
|
+
"$comment": "ui_design_default_candidates <= ui_design_max_candidates is enforced by validate-specdev.mjs because JSON Schema cannot compare sibling numeric values."
|
|
747
749
|
}],
|
|
748
750
|
"additionalProperties": false
|
|
749
751
|
}
|
|
@@ -367,13 +367,15 @@ SpecDev 通过分层工件避免同一决策被多个模型反复重做。每个
|
|
|
367
367
|
| Goal Plan | `specdev/changes/{change}/goal-plan.md` | 跨 Ticket 调度、Gate、共享所有权、迁移顺序、集成和偏差治理 | 复制 Ticket 全文 |
|
|
368
368
|
| Evidence | `specdev/changes/{change}/evidence/T-NN.md` | 实际修改、命令、结果、验收映射、偏差、风险和提交引用 | 新的产品或架构决策 |
|
|
369
369
|
| 代码审查 | `specdev/changes/{change}/reviews/CR-###.md` | 固定点、标准轴和规范轴 finding | 实施修复或合并两轴排名 |
|
|
370
|
-
|
|
|
370
|
+
| UI 设计包 | `specdev/changes/{change}/prototypes/{design-id}/design-system.md`、`specdev/changes/{change}/prototypes/{design-id}/comparison/` 与 `specdev/changes/{change}/prototypes/{design-id}/final/` | 项目 UI 证据、功能风格候选、逐层用户决定、设计 token、交互合同和可运行 HTML/CSS/JS 投影 | 生产 UI 实现或替用户确认高影响偏好 |
|
|
371
371
|
| Stakeholder 问卷 | `specdev/changes/{change}/questionnaires/{slug}.md` | 第三方原始回答和恢复条件 | 未经转录确认的产品/架构决定 |
|
|
372
372
|
| Wayfinder 地图 | `specdev/changes/{change}/wayfinder-map.md` | 目的地、说明、已关闭决策索引、战争迷雾和范围之外 | 开放 Ticket 正文或答案详情 |
|
|
373
373
|
| Wayfinder Ticket | `specdev/changes/{change}/investigation/{investigation-id}.md` | 一个可精确陈述的问题、类型、阻塞和关闭状态 | 解决方案评论或交付目标 |
|
|
374
374
|
| Wayfinder solution comment | `specdev/changes/{change}/investigation/comments/{investigation-id}/NN-solution.md` | Ticket 的答案、结果事实和资产指针 | 地图索引或产品实现 |
|
|
375
375
|
| 架构审查 | `specdev/changes/{change}/architecture-review.md` 与 `specdev/changes/{change}/architecture-review.html` | 深化候选、证据、可视化、选择和访谈状态 | 未经用户选择的执行契约 |
|
|
376
376
|
|
|
377
|
+
UI 设计包中的 `{design-id}` 由 P-prototype 分配为当前 change 内最小未占用的 `UI-NNN`;设计系统文档是唯一设计权威,comparison 与 final 不建立第二套规则。
|
|
378
|
+
|
|
377
379
|
Change CONTEXT/ADR 是 active change 内的执行权威,不是 workflow 级永久知识。G 和其他设计/执行 Works 只读 `specdev/context/` 与 `specdev/adr/`;只有 A 在 change 完成、实现证据验证、毕业评估和用户确认后才能写入永久 namespace。未毕业内容随归档 change 保留,不能从 change 工件消失。
|
|
378
380
|
|
|
379
381
|
## 2. 权威顺序
|
|
@@ -663,8 +665,8 @@ Direct Spec Evidence 至少包含:用户批准与轻量合同、Lead、实施
|
|
|
663
665
|
"default_depth": "standard",
|
|
664
666
|
"require_ready_gate": true,
|
|
665
667
|
"require_evidence": true,
|
|
666
|
-
"
|
|
667
|
-
"
|
|
668
|
+
"ui_design_default_candidates": 3,
|
|
669
|
+
"ui_design_max_candidates": 4
|
|
668
670
|
}
|
|
669
671
|
}
|
|
670
672
|
```
|
|
@@ -716,19 +718,19 @@ Direct Spec Evidence 至少包含:用户批准与轻量合同、Lead、实施
|
|
|
716
718
|
},
|
|
717
719
|
"planning": {
|
|
718
720
|
"type": "object",
|
|
719
|
-
"required": ["default_depth", "require_ready_gate", "require_evidence", "
|
|
721
|
+
"required": ["default_depth", "require_ready_gate", "require_evidence", "ui_design_default_candidates", "ui_design_max_candidates"],
|
|
720
722
|
"properties": {
|
|
721
723
|
"default_depth": {"enum": ["lite", "standard", "deep"]},
|
|
722
724
|
"require_ready_gate": {"type": "boolean"},
|
|
723
725
|
"require_evidence": {"type": "boolean"},
|
|
724
|
-
"
|
|
725
|
-
"
|
|
726
|
+
"ui_design_default_candidates": {"type": "integer", "minimum": 2, "maximum": 4},
|
|
727
|
+
"ui_design_max_candidates": {"type": "integer", "minimum": 2, "maximum": 4}
|
|
726
728
|
},
|
|
727
729
|
"additionalProperties": true
|
|
728
730
|
}
|
|
729
731
|
},
|
|
730
732
|
"allOf": [{
|
|
731
|
-
"$comment": "
|
|
733
|
+
"$comment": "ui_design_default_candidates <= ui_design_max_candidates is enforced by validate-specdev.mjs because JSON Schema cannot compare sibling numeric values."
|
|
732
734
|
}],
|
|
733
735
|
"additionalProperties": false
|
|
734
736
|
}
|
|
@@ -654,13 +654,15 @@ SpecDev 通过分层工件避免同一决策被多个模型反复重做。每个
|
|
|
654
654
|
| Goal Plan | `specdev/changes/{change}/goal-plan.md` | 跨 Ticket 调度、Gate、共享所有权、迁移顺序、集成和偏差治理 | 复制 Ticket 全文 |
|
|
655
655
|
| Evidence | `specdev/changes/{change}/evidence/T-NN.md` | 实际修改、命令、结果、验收映射、偏差、风险和提交引用 | 新的产品或架构决策 |
|
|
656
656
|
| 代码审查 | `specdev/changes/{change}/reviews/CR-###.md` | 固定点、标准轴和规范轴 finding | 实施修复或合并两轴排名 |
|
|
657
|
-
|
|
|
657
|
+
| UI 设计包 | `specdev/changes/{change}/prototypes/{design-id}/design-system.md`、`specdev/changes/{change}/prototypes/{design-id}/comparison/` 与 `specdev/changes/{change}/prototypes/{design-id}/final/` | 项目 UI 证据、功能风格候选、逐层用户决定、设计 token、交互合同和可运行 HTML/CSS/JS 投影 | 生产 UI 实现或替用户确认高影响偏好 |
|
|
658
658
|
| Stakeholder 问卷 | `specdev/changes/{change}/questionnaires/{slug}.md` | 第三方原始回答和恢复条件 | 未经转录确认的产品/架构决定 |
|
|
659
659
|
| Wayfinder 地图 | `specdev/changes/{change}/wayfinder-map.md` | 目的地、说明、已关闭决策索引、战争迷雾和范围之外 | 开放 Ticket 正文或答案详情 |
|
|
660
660
|
| Wayfinder Ticket | `specdev/changes/{change}/investigation/{investigation-id}.md` | 一个可精确陈述的问题、类型、阻塞和关闭状态 | 解决方案评论或交付目标 |
|
|
661
661
|
| Wayfinder solution comment | `specdev/changes/{change}/investigation/comments/{investigation-id}/NN-solution.md` | Ticket 的答案、结果事实和资产指针 | 地图索引或产品实现 |
|
|
662
662
|
| 架构审查 | `specdev/changes/{change}/architecture-review.md` 与 `specdev/changes/{change}/architecture-review.html` | 深化候选、证据、可视化、选择和访谈状态 | 未经用户选择的执行契约 |
|
|
663
663
|
|
|
664
|
+
UI 设计包中的 `{design-id}` 由 P-prototype 分配为当前 change 内最小未占用的 `UI-NNN`;设计系统文档是唯一设计权威,comparison 与 final 不建立第二套规则。
|
|
665
|
+
|
|
664
666
|
Change CONTEXT/ADR 是 active change 内的执行权威,不是 workflow 级永久知识。G 和其他设计/执行 Works 只读 `specdev/context/` 与 `specdev/adr/`;只有 A 在 change 完成、实现证据验证、毕业评估和用户确认后才能写入永久 namespace。未毕业内容随归档 change 保留,不能从 change 工件消失。
|
|
665
667
|
|
|
666
668
|
## 2. 权威顺序
|
|
@@ -966,12 +968,12 @@ Direct Spec Evidence 至少包含:用户批准与轻量合同、Lead、实施
|
|
|
966
968
|
|
|
967
969
|
# Dev Worktree
|
|
968
970
|
|
|
969
|
-
本 Skill 由 T-tickets
|
|
971
|
+
本 Skill 由 T-tickets、P-goal-plan 和 I-implement 复用。仅在 Goal Plan 选择 `required` 时使用完整 source → candidate → parent 状态机;`current` Ticket 不调用本 Skill。
|
|
970
972
|
|
|
971
973
|
## 输入
|
|
972
974
|
|
|
973
975
|
- `operation=create | restore | finalize | remove`;
|
|
974
|
-
- `purpose=ticket
|
|
976
|
+
- `purpose=ticket`;
|
|
975
977
|
- repository、父分支、`base_sha`、branch、portable workspace locator;
|
|
976
978
|
- workspace、implementation 和 integration owner;
|
|
977
979
|
- 允许动作、路径合同、验证合同、调用方状态记录位置。
|
|
@@ -1000,7 +1002,7 @@ implementation owner 只在来源 worktree 修改授权项目路径,运行 Tic
|
|
|
1000
1002
|
|
|
1001
1003
|
## 4. 移除
|
|
1002
1004
|
|
|
1003
|
-
`operation=remove` 先验证 Ticket 已 `integrated
|
|
1005
|
+
`operation=remove` 先验证 Ticket 已 `integrated`、目标 worktree clean、checkpoint 可恢复且删除目标精确。只有明确 cleanup 授权时删除来源 branch/worktree;强制删除需要单独确认。删除后重读 `git worktree list` 与 refs,并只把调用方生命周期状态更新为 `removed`;`base_sha`、source checkpoint、candidate/result、验证、E2E 与 Evidence 字段必须原样保留。
|
|
1004
1006
|
|
|
1005
1007
|
**完成标准**:只删除精确授权目标;失败保留现场与恢复命令。
|
|
1006
1008
|
|
|
@@ -1026,14 +1028,12 @@ implementation owner 只在来源 worktree 修改授权项目路径,运行 Tic
|
|
|
1026
1028
|
- `specdev-worktree/` 已由 Speculo init 加入项目 `.gitignore`;
|
|
1027
1029
|
- 目标 branch/worktree 不覆盖现有用户 workspace,路径合同无冲突。
|
|
1028
1030
|
|
|
1029
|
-
Prototype 只要求调用方已记录本次临时 branch/worktree 授权、问题、owner、locator 和清理策略;它不写 Ticket worktree 状态。
|
|
1030
|
-
|
|
1031
1031
|
## 创建 Ticket 来源 worktree
|
|
1032
1032
|
|
|
1033
1033
|
1. 重读父分支 HEAD、工作树、现有 worktrees 与 refs;父 HEAD 与计划基线不一致时由 Lead决定更新 `base_sha` 或阻塞;
|
|
1034
1034
|
2. 固定 branch `speculo/<change>/<ticket-id>` 与 locator `specdev-worktree/<ticket-id>`;
|
|
1035
1035
|
3. 确认目标 branch/path 不存在,或其实际记录精确匹配当前 Ticket;
|
|
1036
|
-
4. 从 `base_sha` 创建 Git worktree,不复用其他 Ticket
|
|
1036
|
+
4. 从 `base_sha` 创建 Git worktree,不复用其他 Ticket 目录;
|
|
1037
1037
|
5. 在来源 worktree 读取项目 Agent 指令、依赖、构建与路径合同;
|
|
1038
1038
|
6. 安装实际需要的依赖,运行最小非 E2E 基线;
|
|
1039
1039
|
7. Lead 写入 `specdev/changes/{change}/.status.json`,状态为 `active`。
|
|
@@ -1194,8 +1194,8 @@ Prototype 只要求调用方已记录本次临时 branch/worktree 授权、问
|
|
|
1194
1194
|
"default_depth": "standard",
|
|
1195
1195
|
"require_ready_gate": true,
|
|
1196
1196
|
"require_evidence": true,
|
|
1197
|
-
"
|
|
1198
|
-
"
|
|
1197
|
+
"ui_design_default_candidates": 3,
|
|
1198
|
+
"ui_design_max_candidates": 4
|
|
1199
1199
|
}
|
|
1200
1200
|
}
|
|
1201
1201
|
```
|
|
@@ -1247,19 +1247,19 @@ Prototype 只要求调用方已记录本次临时 branch/worktree 授权、问
|
|
|
1247
1247
|
},
|
|
1248
1248
|
"planning": {
|
|
1249
1249
|
"type": "object",
|
|
1250
|
-
"required": ["default_depth", "require_ready_gate", "require_evidence", "
|
|
1250
|
+
"required": ["default_depth", "require_ready_gate", "require_evidence", "ui_design_default_candidates", "ui_design_max_candidates"],
|
|
1251
1251
|
"properties": {
|
|
1252
1252
|
"default_depth": {"enum": ["lite", "standard", "deep"]},
|
|
1253
1253
|
"require_ready_gate": {"type": "boolean"},
|
|
1254
1254
|
"require_evidence": {"type": "boolean"},
|
|
1255
|
-
"
|
|
1256
|
-
"
|
|
1255
|
+
"ui_design_default_candidates": {"type": "integer", "minimum": 2, "maximum": 4},
|
|
1256
|
+
"ui_design_max_candidates": {"type": "integer", "minimum": 2, "maximum": 4}
|
|
1257
1257
|
},
|
|
1258
1258
|
"additionalProperties": true
|
|
1259
1259
|
}
|
|
1260
1260
|
},
|
|
1261
1261
|
"allOf": [{
|
|
1262
|
-
"$comment": "
|
|
1262
|
+
"$comment": "ui_design_default_candidates <= ui_design_max_candidates is enforced by validate-specdev.mjs because JSON Schema cannot compare sibling numeric values."
|
|
1263
1263
|
}],
|
|
1264
1264
|
"additionalProperties": false
|
|
1265
1265
|
}
|
|
@@ -49,7 +49,7 @@ Wayfinder 默认进行**规划**:每个 Ticket 解决一个决策,当地图
|
|
|
49
49
|
每个 Ticket 要么是 **HITL**,与一个代表自己发言的人类一起工作;要么是 **AFK**,由 Agent 独立驱动。HITL Ticket 只能通过实时交流解决,Agent 绝不代替人类一方发言。
|
|
50
50
|
|
|
51
51
|
- **Research(AFK)**:阅读文档、第三方 API 或知识库等资源,揭示某个决策等待的事实。调用 下方 `<research>` 标签。当需要当前工作目录之外的知识时使用。
|
|
52
|
-
- **Prototype(HITL)**:调用 “原型阶段”
|
|
52
|
+
- **Prototype(HITL)**:调用 “原型阶段” 检测项目 UI、比较功能风格候选并逐步确认设计方向,把 `specdev/changes/{change}/prototypes/{design-id}/design-system.md` 与 comparison locator 链接为 solution comment 资产;`{design-id}` 使用 P 返回的 `UI-NNN`,P 不实现目的地。
|
|
53
53
|
- **Grilling(HITL)**:对话。调用 “设计访谈能力” 的 grilling 与 domain-modeling 能力,但本会话只关闭当前 Wayfinder Ticket。
|
|
54
54
|
- **Task(HITL 或 AFK)**:在决策做出前必须完成的手动工作。它通过为决策解除阻塞赢得位置,不以交付目的地为目标。Agent 能独立驱动时使用 AFK,否则给人类精确清单。
|
|
55
55
|
|
|
@@ -346,8 +346,8 @@ resolution: answered
|
|
|
346
346
|
"default_depth": "standard",
|
|
347
347
|
"require_ready_gate": true,
|
|
348
348
|
"require_evidence": true,
|
|
349
|
-
"
|
|
350
|
-
"
|
|
349
|
+
"ui_design_default_candidates": 3,
|
|
350
|
+
"ui_design_max_candidates": 4
|
|
351
351
|
}
|
|
352
352
|
}
|
|
353
353
|
```
|
|
@@ -399,19 +399,19 @@ resolution: answered
|
|
|
399
399
|
},
|
|
400
400
|
"planning": {
|
|
401
401
|
"type": "object",
|
|
402
|
-
"required": ["default_depth", "require_ready_gate", "require_evidence", "
|
|
402
|
+
"required": ["default_depth", "require_ready_gate", "require_evidence", "ui_design_default_candidates", "ui_design_max_candidates"],
|
|
403
403
|
"properties": {
|
|
404
404
|
"default_depth": {"enum": ["lite", "standard", "deep"]},
|
|
405
405
|
"require_ready_gate": {"type": "boolean"},
|
|
406
406
|
"require_evidence": {"type": "boolean"},
|
|
407
|
-
"
|
|
408
|
-
"
|
|
407
|
+
"ui_design_default_candidates": {"type": "integer", "minimum": 2, "maximum": 4},
|
|
408
|
+
"ui_design_max_candidates": {"type": "integer", "minimum": 2, "maximum": 4}
|
|
409
409
|
},
|
|
410
410
|
"additionalProperties": true
|
|
411
411
|
}
|
|
412
412
|
},
|
|
413
413
|
"allOf": [{
|
|
414
|
-
"$comment": "
|
|
414
|
+
"$comment": "ui_design_default_candidates <= ui_design_max_candidates is enforced by validate-specdev.mjs because JSON Schema cannot compare sibling numeric values."
|
|
415
415
|
}],
|
|
416
416
|
"additionalProperties": false
|
|
417
417
|
}
|
|
@@ -55,7 +55,7 @@ keywords: [初始化, 配置, status, tracking, 验证命令]
|
|
|
55
55
|
仅在上下文未提供时询问:
|
|
56
56
|
|
|
57
57
|
- 交互语言与持久化工件语言;
|
|
58
|
-
- implementation subagent
|
|
58
|
+
- implementation subagent、集成尝试次数和 UI 设计候选上限(初始化时写入 config,Lead 不计入);
|
|
59
59
|
- Deep Ticket 的迁移、发布和不可逆操作是否必须人工批准;
|
|
60
60
|
|
|
61
61
|
不询问可由仓库事实回答的文件位置、脚本名或默认分支。
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
- Tickets Map 与全部 Ticket 存在、Ready、DAG 无环;
|
|
11
11
|
- 每个验收合同被 Ticket 覆盖;
|
|
12
12
|
- writable/shared path 有唯一 owner,Wave 候选无写冲突;
|
|
13
|
-
- config schema v5,`max_implementation_agents` 与 `max_integration_attempts`
|
|
13
|
+
- config schema v5,`max_implementation_agents` 与 `max_integration_attempts` 为正整数;UI 设计候选范围读取 planning 配置;
|
|
14
14
|
- 父分支可定位,implementation commit 与本地 integration 已获授权;
|
|
15
15
|
- Deep Ticket 的迁移、兼容、监控、恢复和不可逆批准点完整。
|
|
16
16
|
- Ticket 与 `<Path>{roots.state}/specdev/changes/{change}/spec.md</Path>`、`<Path>{roots.state}/specdev/changes/{change}/ADR.md</Path>`、`<Path>{roots.state}/specdev/adr/</Path>`、`<Path>{roots.state}/specdev/context/</Path>` 和当前代码事实不存在未处理冲突;
|
|
@@ -2,47 +2,51 @@
|
|
|
2
2
|
id: specdev/prototype
|
|
3
3
|
type: workflow-entry
|
|
4
4
|
workflow: specdev
|
|
5
|
-
name:
|
|
6
|
-
description:
|
|
7
|
-
keywords: [prototype, 原型,
|
|
5
|
+
name: UI 设计原型
|
|
6
|
+
description: 检测现有项目的 UI 事实,按产品任务推荐并逐步选择设计风格,生成持久化设计系统文档、多风格 HTML 对照和可运行 HTML/CSS/JS 原型。
|
|
7
|
+
keywords: [prototype, UI 原型, 风格检测, 设计系统, HTML, CSS, 交互, design tokens]
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
-
#
|
|
10
|
+
# UI 设计原型
|
|
11
11
|
|
|
12
12
|
> 激活本 Work 后,先读取 `<Path>{roots.workflows}/specdev/README.md</Path>`,再执行本入口。
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
本 Work 的主导词是**设计定向**:先从项目事实识别现状,再让用户看到基于功能而非流行色推荐的候选,最后把选择固化为既可阅读又可运行的 UI 设计包。P 不修改生产 UI;后续 S、Tickets 和 I 以设计包为视觉与交互权威。
|
|
15
15
|
|
|
16
16
|
## 输入与所有权
|
|
17
17
|
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
18
|
+
- 必需输入:目标项目或新产品设想、核心用户任务,以及当前 SpecDev change。
|
|
19
|
+
- 可选输入:现有代码、页面、截图、设计 token、品牌约束、ADR、Spec、调查和用户明确给出的参考产品。
|
|
20
|
+
- 项目事实权威:依赖清单、样式源码、组件实现、路由、真实页面、测试和可复现截图;仅凭依赖名称不得断言实际风格。
|
|
21
|
+
- 用户决定权威:产品方向、候选风格、密度、色调、字体气质、圆角、交互反馈和跨端优先级。
|
|
21
22
|
|
|
22
|
-
P 拥有 `<Path>{roots.state}/specdev/changes/{change}/prototypes/{
|
|
23
|
+
P 拥有 `<Path>{roots.state}/specdev/changes/{change}/prototypes/{design-id}/</Path>`。其中 `design-id` 使用当前 change 内最小未占用的 `UI-NNN`;目录中的设计系统主文档是唯一设计权威,comparison 和 final 文件均由它或其中已记录的候选决定派生。P 不写永久 research namespace,不创建 branch/worktree,不提交生产代码。
|
|
23
24
|
|
|
24
25
|
## 流程
|
|
25
26
|
|
|
26
|
-
1.
|
|
27
|
-
2.
|
|
28
|
-
3.
|
|
29
|
-
4.
|
|
30
|
-
5.
|
|
31
|
-
6.
|
|
27
|
+
1. **创建或恢复设计包**:读取 change 与 `<Path>{roots.state}/specdev/changes/{change}/prototypes/{design-id}/design-system.md</Path>`。不存在时从 `<Path>{roots.workflows}/specdev/P-prototype/design-system-template.md</Path>` 创建,写入 `status: detecting` 并原子重读;存在时只询问尚未确认的高影响选择。
|
|
28
|
+
2. **检测现有风格**:加载 `<Path>{roots.workflows}/specdev/P-prototype/detect-existing-style.md</Path>`,穷尽技术栈、布局、视觉 token、组件状态、响应式与可访问性证据。新项目明确记录 `project_kind: new`,不伪造检测结果。
|
|
29
|
+
3. **建立功能候选**:读取 `<Path>{roots.workflows}/specdev/P-prototype/design-library/INDEX.md</Path>`,依据产品任务、平台和信息密度从八种风格及六种布局中推荐 2-4 个候选。每个候选写明适合原因、需要保留/调整/替换的现有事实、参考项目和迁移成本。
|
|
30
|
+
4. **逐项选择并持久化**:加载 `<Path>{roots.workflows}/specdev/P-prototype/style-selection-protocol.md</Path>`。每轮只处理一个决策层;每个答案立即写回设计系统主文档并重读。高影响偏好未确认时保持 `status: selecting`,不得自行标记 Ready。
|
|
31
|
+
5. **生成可视对照与最终原型**:加载 `<Path>{roots.workflows}/specdev/P-prototype/generate-design-package.md</Path>`。为每个候选生成独立 comparison variant,再生成 comparison 索引。用户确认或明确组合后,把最终 HTML/CSS/JS 作为具名代码块写入设计系统主文档,再物化到 final 目录。
|
|
32
|
+
6. **验证并封板**:运行 `<Path>{roots.workflows}/specdev/P-prototype/tools/materialize-prototype.mjs</Path> --check` 和 `<Path>{roots.workflows}/specdev/P-prototype/tools/validate-design-package.mjs</Path>`;随后运行 SpecDev `--stage prototype`。全部通过且选择闭合后设置 `status: ready`,更新 `works_run` 并清空 `current_work`。缺少项目事实或用户决定时设置 `blocked` 并保留恢复位置。
|
|
33
|
+
7. **返回路由**:返回设计包、comparison 和 final 的完整路径、验证命令与结果、未决问题和下一 Work。需要补足产品决定时返回 G;需要写外部行为合同返回 S;需要拆实施工作返回 Tickets;已有 Ready Ticket 才返回 I。Wayfinder 调用时只把设计包与 comparison locator 写入对应 solution comment。
|
|
32
34
|
|
|
33
35
|
## 完成标准
|
|
34
36
|
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
41
|
-
-
|
|
37
|
+
- 现有项目的检测结论逐项有项目相对证据;新项目明确没有既有风格。
|
|
38
|
+
- 候选由功能、平台和密度推导,不只更换颜色;用户已看到每个候选的独立 HTML。
|
|
39
|
+
- 设计系统主文档完整包含 UI 结构、CSS token、交互 JS 和最终 HTML 源码,并记录研究出处与拒绝理由。
|
|
40
|
+
- comparison 索引可导航到 2-4 个候选,final HTML 可离线运行;桌面与移动宽度不存在空白、遮挡或无意横向溢出。
|
|
41
|
+
- 字体、间距、圆角、色彩、层级、控件状态、异步反馈、响应式、键盘、focus 和 reduced motion 均有明确合同。
|
|
42
|
+
- Markdown 代码块与 `final/` 文件逐字一致,schema、局部校验和 SpecDev stage 校验全部通过。
|
|
43
|
+
- 设计包不包含机器绝对路径、敏感值、生产数据写入、发布动作或未授权的生产实现。
|
|
42
44
|
|
|
43
45
|
## 子文件引用
|
|
44
46
|
|
|
45
|
-
-
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
-
|
|
47
|
+
- 检测:`<Path>{roots.workflows}/specdev/P-prototype/detect-existing-style.md</Path>`,仅在步骤 2 加载。
|
|
48
|
+
- 选择:`<Path>{roots.workflows}/specdev/P-prototype/style-selection-protocol.md</Path>`,仅在步骤 4 加载。
|
|
49
|
+
- 生成:`<Path>{roots.workflows}/specdev/P-prototype/generate-design-package.md</Path>`,仅在步骤 5 加载。
|
|
50
|
+
- 模板:`<Path>{roots.workflows}/specdev/P-prototype/design-system-template.md</Path>`,创建设计包时加载。
|
|
51
|
+
- 设计库:`<Path>{roots.workflows}/specdev/P-prototype/design-library/INDEX.md</Path>`,建立候选或查具体规则时渐进读取。
|
|
52
|
+
- Schema:`<Path>{roots.workflows}/specdev/P-prototype/design-package.schema.json</Path>`。
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# P-prototype 设计库
|
|
2
|
+
|
|
3
|
+
本目录是 P-prototype 的静态设计参考层。它帮助 UI 原型先按任务、对象、密度和平台选择结构,再选择视觉表达;它不拥有运行时状态,不替代项目现有设计系统,也不授权修改生产代码。
|
|
4
|
+
|
|
5
|
+
研究快照固定在 commit `49b565913c52f4867456e609696625157f19b930`。快照是证据与可运行样板,不在原型过程中原地修改;需要复用时,把所需 HTML/CSS/JS/图片和 attribution 复制到当前 change 的设计包。
|
|
6
|
+
|
|
7
|
+
## 渐进披露入口
|
|
8
|
+
|
|
9
|
+
| 当前问题 | 读取 | 读完应得到 |
|
|
10
|
+
|---|---|---|
|
|
11
|
+
| 先决定信息架构、密度和组件边界 | `<Path>{roots.workflows}/specdev/P-prototype/design-library/foundations.md</Path>` | 一个主布局范式、密度档和设计系统边界 |
|
|
12
|
+
| 在八种可运行风格中选择起点 | `<Path>{roots.workflows}/specdev/P-prototype/design-library/style-index.md</Path>` | 一个主风格、必要时一个受控对照风格 |
|
|
13
|
+
| 寻找相似产品及其真实模式 | `<Path>{roots.workflows}/specdev/P-prototype/design-library/product-pattern-index.md</Path>` | 对应项目、可借鉴模式和一手研究路径 |
|
|
14
|
+
| 定义浅色/深色、语义 token、字号与层级 | `<Path>{roots.workflows}/specdev/P-prototype/design-library/color-and-theme.md</Path>` | 可实现的主题与密度假设 |
|
|
15
|
+
| 设计导航、表格、表单、反馈或危险操作 | `<Path>{roots.workflows}/specdev/P-prototype/design-library/interaction-patterns.md</Path>` | 完整状态和验证动作 |
|
|
16
|
+
| 需要窄屏、触屏、桌面/Web/移动重排 | `<Path>{roots.workflows}/specdev/P-prototype/design-library/responsive-and-platforms.md</Path>` | 每个平台的任务职责和断点行为 |
|
|
17
|
+
| 需要引用、复制资产或判断证据强度/许可 | `<Path>{roots.workflows}/specdev/P-prototype/design-library/research-provenance.md</Path>` | 可追溯来源、复用边界和 attribution |
|
|
18
|
+
|
|
19
|
+
## 使用顺序
|
|
20
|
+
|
|
21
|
+
1. 检测现有项目或明确新产品设想,并列出核心对象、最常见的 3-5 个任务、目标输入设备和最坏数据状态。
|
|
22
|
+
2. 读取 foundations,选择一个主布局范式。不要先按品牌色、圆角或流行风格选择页面。
|
|
23
|
+
3. 读取 style-index,按功能推荐 2-4 个结构不同的候选,并为每个候选生成独立 comparison HTML。
|
|
24
|
+
4. 读取 product-pattern-index,只深入与当前对象、任务或平台相似的项目研究;星标不构成设计质量或许可结论。
|
|
25
|
+
5. 只加载当前问题涉及的 theme、interaction 或 responsive 文件。精确值必须能回到 snapshot 中的 token、CSS 或研究证据。
|
|
26
|
+
6. 复制样板时保留相对目录关系和所需 attribution;把 demo 名称、权限、Git、同步与审批状态替换为原型自己的假数据,不把演示逻辑当作真实业务逻辑。
|
|
27
|
+
7. 用真实极端数据、键盘、目标宽度和浅/深主题验证。选择、拒绝理由和最终源码进入设计系统主文档,设计库本身保持不变。
|
|
28
|
+
|
|
29
|
+
## 快照入口
|
|
30
|
+
|
|
31
|
+
- 总报告:`<Path>{roots.workflows}/specdev/P-prototype/design-library/research-snapshot/report/OPEN_SOURCE_UI_RESEARCH_2026.md</Path>`
|
|
32
|
+
- 八种风格总览:`<Path>{roots.workflows}/specdev/P-prototype/design-library/research-snapshot/ui-gallery/index.html</Path>`
|
|
33
|
+
- 样板使用说明:`<Path>{roots.workflows}/specdev/P-prototype/design-library/research-snapshot/ui-gallery/README.md</Path>`
|
|
34
|
+
- 结构化项目数据:`<Path>{roots.workflows}/specdev/P-prototype/design-library/research-snapshot/data/projects.json</Path>` 与 `<Path>{roots.workflows}/specdev/P-prototype/design-library/research-snapshot/data/extended-projects.json</Path>`
|
|
35
|
+
- 综合 token:`<Path>{roots.workflows}/specdev/P-prototype/design-library/research-snapshot/reference/design-tokens.css</Path>`
|
|
36
|
+
|
|
37
|
+
## 完成门
|
|
38
|
+
|
|
39
|
+
- 选择理由落在任务模型、信息密度、输入设备和状态复杂度,而不是“看起来像”;
|
|
40
|
+
- 一个布局范式和一个主风格已明确,所有新增 token 都有语义角色;
|
|
41
|
+
- loading、empty、no-results、error、offline、read-only、permission 与长文本按适用性逐项处理;
|
|
42
|
+
- 窄屏改变任务流而非压缩桌面多栏;
|
|
43
|
+
- 引用与复制均可回到固定 commit、研究文件和 attribution。
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# 色彩、主题与视觉层级
|
|
2
|
+
|
|
3
|
+
视觉系统先定义角色,再选择色值。固定快照中的 `<Path>{roots.workflows}/specdev/P-prototype/design-library/research-snapshot/reference/design-tokens.css</Path>` 是跨项目综合起点,不是任何单一产品的 token 复制品。
|
|
4
|
+
|
|
5
|
+
## 最小语义集合
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
canvas
|
|
9
|
+
surface-1 / surface-2 / surface-3 / overlay
|
|
10
|
+
text-primary / text-secondary / text-tertiary / text-disabled
|
|
11
|
+
border-subtle / border-default / border-strong
|
|
12
|
+
accent / accent-hover / accent-subtle / accent-contrast
|
|
13
|
+
success / warning / danger / info (+ subtle variants)
|
|
14
|
+
hover / selected / pressed / focus-ring / scrim
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
业务组件消费语义角色,不直接写 `#fff`、`black` 或任意透明度。品牌 accent 只服务主要动作、选中和链接;状态色必须同时配图标、文本或形状。数据可视化色板、Git diff、syntax highlight 和业务状态分别建组,不复用 UI accent 充当所有含义。
|
|
18
|
+
|
|
19
|
+
## 浅色与深色
|
|
20
|
+
|
|
21
|
+
- 两种主题一起设计,不把深色简单反相。深色 overlay 往往比基础表面更亮,边框和语义色需要重新分配明度与对比。
|
|
22
|
+
- 分别检查正文、次要文字、图标、边框、focus ring 和状态,而不只检查按钮。
|
|
23
|
+
- 中性色保持低 chroma,避免所有表面都带强品牌倾向。
|
|
24
|
+
- 用户切换主题时保持布局、选择、输入和面板尺寸;主题改变不应触发内容重排。
|
|
25
|
+
- 高对比需求不能只靠增加饱和度,应重新检查边界、文字与焦点。
|
|
26
|
+
|
|
27
|
+
## 字体和密度
|
|
28
|
+
|
|
29
|
+
| 角色 | 字号/行高起点 |
|
|
30
|
+
|---|---|
|
|
31
|
+
| 坐标、元数据、辅助标签 | 11-12px / 16px;不承载长文本、错误原因或主要操作 |
|
|
32
|
+
| 表格、侧栏、紧凑控件 | 13px / 18-20px |
|
|
33
|
+
| 默认 UI 正文与表单 | 14px / 20px |
|
|
34
|
+
| 内容正文 | 15-16px / 24-26px |
|
|
35
|
+
| 小节/弹窗标题 | 16-18px / 22-26px |
|
|
36
|
+
| 页面标题 | 20-24px / 28-32px |
|
|
37
|
+
|
|
38
|
+
工具界面不使用营销页级大标题。数字表格可启用 tabular numerals,代码/SQL/ID 使用 mono;中英文混排单独验证 CJK 回退和行高。不使用负字距挤压 UI,长名称通过布局、换行或中间截断处理。
|
|
39
|
+
|
|
40
|
+
| 密度 | 控件高度 | 表格行高 | 典型任务 |
|
|
41
|
+
|---|---:|---:|---|
|
|
42
|
+
| Compact | 28px | 32px | SQL、日志、开发工具 |
|
|
43
|
+
| Default | 32-36px | 36-40px | CRM、项目管理、后台 |
|
|
44
|
+
| Comfortable | 40px | 44-48px | 文档、协作、低频表单 |
|
|
45
|
+
| Touch | 44-48px | 48-52px | 移动与触屏 |
|
|
46
|
+
|
|
47
|
+
## 圆角、边框与阴影
|
|
48
|
+
|
|
49
|
+
- 2-4px:代码块、表格小元素、密集工具按钮。
|
|
50
|
+
- 4-6px:输入、按钮、菜单项、紧凑面板。
|
|
51
|
+
- 6-8px:普通卡片、popover、较大控件。
|
|
52
|
+
- 8-12px:dialog、sheet、移动大容器;移动样板可因触屏语言使用更大值。
|
|
53
|
+
- pill:状态徽标、分段选择滑块或真正胶囊语义,不用于所有按钮。
|
|
54
|
+
|
|
55
|
+
同一视觉层只保留 2-3 个主圆角。常驻页面分区、侧栏、表格和检查器用 1px 边框或背景差建立层级,不用浮卡阴影;popover/menu 使用清晰边框和中等阴影;dialog 使用 scrim 与较大阴影;focus ring 独立于层级阴影。hover、selected、pressed 必须是不同 token。
|
|
56
|
+
|
|
57
|
+
## 原型验证
|
|
58
|
+
|
|
59
|
+
- 浅色、深色、200% 缩放和常见色觉差异下,文本与状态仍可区分;
|
|
60
|
+
- 页面没有绕过 token 的随机颜色、圆角和阴影;
|
|
61
|
+
- 状态不只依赖颜色;
|
|
62
|
+
- 最长名称、中文、数字和错误文案不会撑坏控件;
|
|
63
|
+
- reduced motion 时 token 中的 UI duration 降为零或对应交互停止非必要动画。
|
|
64
|
+
|
|
65
|
+
八种具体 `.theme-*` 实现在 `<Path>{roots.workflows}/specdev/P-prototype/design-library/research-snapshot/ui-gallery/styles/pages.css</Path>`,综合 token 的使用约束在 `<Path>{roots.workflows}/specdev/P-prototype/design-library/research-snapshot/reference/USAGE.md</Path>`。
|