@openprd/cli 0.1.8 → 0.1.10
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/.openprd/benchmarks/index.md +15 -1
- package/.openprd/config.yaml +10 -0
- package/.openprd/design/README.md +47 -0
- package/.openprd/design/README_EN.md +25 -0
- package/.openprd/design/active/asset-spec.md +15 -0
- package/.openprd/design/active/direction-plan.md +7 -0
- package/.openprd/design/active/facts-sheet.md +13 -0
- package/.openprd/design/active/image-preflight.md +9 -0
- package/.openprd/design/active/selected-direction.md +11 -0
- package/.openprd/design/anti-slop.md +16 -0
- package/.openprd/design/assets/dark-mesh.svg +14 -0
- package/.openprd/design/assets/paper-grid.svg +14 -0
- package/.openprd/design/assets/surface-presets.md +21 -0
- package/.openprd/design/assets/workbench-grid.svg +16 -0
- package/.openprd/design/checklists/ui-quality-gate.md +22 -0
- package/.openprd/design/components/component-catalog.md +42 -0
- package/.openprd/design/layouts/layout-catalog.json +45 -0
- package/.openprd/design/lenses/frontend-lenses.md +31 -0
- package/.openprd/design/recipes/content-experience.md +26 -0
- package/.openprd/design/recipes/operational-tool.md +25 -0
- package/.openprd/design/recipes/product-launch.md +26 -0
- package/.openprd/design/templates/README.md +36 -0
- package/.openprd/design/templates/README_EN.md +31 -0
- package/.openprd/design/templates/content-home.html +415 -0
- package/.openprd/design/templates/ops-dashboard.html +340 -0
- package/.openprd/design/templates/product-launch.html +360 -0
- package/.openprd/design/themes/theme-catalog.json +77 -0
- package/.openprd/engagements/active/prd.md +111 -100
- package/.openprd/schema/prd.schema.yaml +10 -0
- package/.openprd/templates/base/intake.md +4 -0
- package/.openprd/templates/base/prd.md +16 -6
- package/AGENTS.md +10 -7
- package/README.md +28 -10
- package/README_EN.md +23 -3
- package/package.json +41 -2
- package/scripts/openprd-codex-isolated-worker.mjs +799 -0
- package/skills/openprd-benchmark-router/SKILL.md +4 -0
- package/skills/openprd-frontend-design/SKILL.md +161 -0
- package/skills/openprd-frontend-design/references/design-asset-contract.md +34 -0
- package/skills/openprd-frontend-design/references/direction-engine.md +46 -0
- package/skills/openprd-harness/SKILL.md +38 -21
- package/skills/openprd-learning-review/SKILL.md +2 -1
- package/skills/openprd-learning-review/references/style-packs/xianxia-cultivation.prompt.md +1 -1
- package/skills/openprd-quality/SKILL.md +6 -4
- package/skills/openprd-requirement-intake/SKILL.md +27 -5
- package/skills/openprd-requirement-intake/references/prd-template-lenses.md +6 -3
- package/skills/openprd-requirement-intake/references/routing-rubric.md +9 -5
- package/skills/openprd-requirement-intake/references/startup-validation-lens.md +23 -0
- package/skills/openprd-router/SKILL.md +13 -5
- package/skills/openprd-shared/SKILL.md +38 -25
- package/src/agent-integration.js +126 -75
- package/src/brainstorm-artifacts.js +1657 -0
- package/src/brainstorm-presentation.js +223 -0
- package/src/brainstorm.js +603 -0
- package/src/cli/args.js +51 -3
- package/src/cli/doctor-print.js +34 -8
- package/src/cli/print.js +6 -0
- package/src/cli/quality-print.js +70 -0
- package/src/cli/run-print.js +43 -1
- package/src/cli/shared-print.js +33 -2
- package/src/cli/workflow-print.js +21 -0
- package/src/codex-hook-runner-template.mjs +858 -65
- package/src/design-starter-support.js +462 -0
- package/src/design-starter.js +1207 -0
- package/src/knowledge.js +377 -21
- package/src/learning-review.js +3 -3
- package/src/loop.js +839 -101
- package/src/openprd.js +86 -1
- package/src/openspec/change-validate.js +1 -0
- package/src/prd-core.js +18 -0
- package/src/quality-learning.js +50 -6
- package/src/quality.js +2 -2
- package/src/run-harness.js +191 -29
- package/src/self-update.js +301 -4
- package/src/standards.js +46 -5
- package/src/visual-prepare.js +940 -0
- package/src/workspace-core.js +137 -0
- package/src/workspace-workflow.js +190 -7
- package/.openprd/benchmarks/evidence/milvus-io-ai-code-review-gets-better-when-models-debate-claude-vs-gemini-vs-code.md +0 -14
- package/.openprd/benchmarks/evidence/nolanlawson-com-using-ai-to-write-better-code-more-slowly.md +0 -14
- package/.openprd/discovery/config.json +0 -35
- package/.openprd/engagements/active/flows.md +0 -35
- package/.openprd/engagements/active/handoff.md +0 -16
- package/.openprd/engagements/active/review.html +0 -61
- package/.openprd/engagements/active/roles.md +0 -22
- package/.openprd/engagements/work-units/wu-20260524015648-6d33ded7.json +0 -23
- package/.openprd/engagements/work-units/wu-20260602113956-a99b5b88.json +0 -18
- package/.openprd/engagements/work-units/wu-20260602122244-78656aaf.json +0 -18
- package/.openprd/engagements/work-units/wu-20260602122442-e96489e2.json +0 -18
- package/.openprd/engagements/work-units/wu-20260602132835-695429e8.json +0 -18
- package/.openprd/exports/.gitkeep +0 -0
- package/.openprd/knowledge/candidates/candidate-turn-1780116203372-5f266a79e968c758/candidate.json +0 -78
- package/.openprd/knowledge/candidates/candidate-turn-1780116203372-5f266a79e968c758/diagnostic-report.json +0 -129
- package/.openprd/knowledge/candidates/candidate-turn-1780116203372-5f266a79e968c758/root-cause-candidates.json +0 -41
- package/.openprd/knowledge/candidates/candidate-turn-1780116203372-5f266a79e968c758/timeline.json +0 -14
- package/.openprd/knowledge/drafts/openprd-experience-diagnostic-candidate-turn-1780116203372-5f266a79e968c758/SKILL.md +0 -49
- package/.openprd/knowledge/index.json +0 -47
- package/.openprd/reviews/v0001.html +0 -1322
- package/.openprd/reviews/v0002.html +0 -1150
- package/.openprd/reviews/v0003.html +0 -1150
- package/.openprd/reviews/v0004.html +0 -1150
- package/.openprd/reviews/v0005.html +0 -1150
- package/.openprd/sessions/.gitkeep +0 -0
- package/.openprd/state/changes.json +0 -27
- package/.openprd/state/current.json +0 -505
- package/.openprd/state/release-ledger.json +0 -344
- package/.openprd/state/version-index.json +0 -67
- package/.openprd/state/versions/.gitkeep +0 -0
- package/.openprd/state/versions/v0001.json +0 -121
- package/.openprd/state/versions/v0001.md +0 -161
- package/.openprd/state/versions/v0002.json +0 -264
- package/.openprd/state/versions/v0002.md +0 -183
- package/.openprd/state/versions/v0003.json +0 -269
- package/.openprd/state/versions/v0003.md +0 -188
- package/.openprd/state/versions/v0004.json +0 -274
- package/.openprd/state/versions/v0004.md +0 -193
- package/.openprd/state/versions/v0005.json +0 -299
- package/.openprd/state/versions/v0005.md +0 -189
- package/docs/assets/openprd-capability-overview-en.png +0 -0
- package/docs/assets/openprd-capability-overview-zh.png +0 -0
- package/docs/assets/openprd-learning-html.png +0 -0
- package/docs/assets/openprd-quality-html.png +0 -0
- package/docs/assets/openprd-requirement-routing-en.png +0 -0
- package/docs/assets/openprd-requirement-routing-en.svg +0 -102
- package/docs/assets/openprd-requirement-routing-zh-refined.png +0 -0
- package/docs/assets/openprd-requirement-routing-zh.png +0 -0
- package/docs/assets/openprd-requirement-routing-zh.svg +0 -102
- package/docs/assets/openprd-review-html.png +0 -0
- package/docs/assets/openprd-scenario-overview.png +0 -0
- package/docs/assets/openprd-scenario-overview.svg +0 -114
- package/docs/assets/openprd-self-evolving-mechanisms-en.png +0 -0
- package/docs/assets/openprd-self-evolving-mechanisms-zh.png +0 -0
- package/docs/assets/openprd-visual-compare-case-study-en.png +0 -0
- package/docs/assets/openprd-visual-compare-case-study-zh.png +0 -0
|
@@ -41,4 +41,18 @@
|
|
|
41
41
|
|
|
42
42
|
## Candidate Sources
|
|
43
43
|
|
|
44
|
-
-
|
|
44
|
+
### slavingia/skills `github-com-slavingia-skills`
|
|
45
|
+
|
|
46
|
+
- 状态: candidate
|
|
47
|
+
- 来源类型: github
|
|
48
|
+
- 场景: skill-design
|
|
49
|
+
- 触发: 设计 skill 触发、metadata、安装方式、自动识别或项目级覆盖规则
|
|
50
|
+
- 不适用: 普通 PRD / 产品流程设计;与 CLI 无关的一次性 UI 视觉问题;单次脚本报错或纯环境权限问题
|
|
51
|
+
- 研究方式: deepwiki_then_github
|
|
52
|
+
- 来源: https://github.com/slavingia/skills
|
|
53
|
+
- 规范化信源: github.com/slavingia/skills
|
|
54
|
+
- 最近 7 天采纳: 1
|
|
55
|
+
- 累计采纳: 1
|
|
56
|
+
- 最近采纳时间: 2026-06-09 11:21:58
|
|
57
|
+
- 备注: DeepWiki read_wiki_structure + ask_question showed a reusable community -> workaround -> manual-first -> commitment -> productize -> default-alive framework for L2 requirement validation and brainstorm.
|
|
58
|
+
- 价值: DeepWiki read_wiki_structure + ask_question showed a reusable community -> workaround -> manual-first -> commitment -> productize -> default-alive framework for L2 requirement validation and brainstorm.
|
package/.openprd/config.yaml
CHANGED
|
@@ -31,6 +31,16 @@ quality:
|
|
|
31
31
|
enabled: true
|
|
32
32
|
command: openprd quality . --verify
|
|
33
33
|
reportFormat: html
|
|
34
|
+
design:
|
|
35
|
+
enabled: true
|
|
36
|
+
frameworkRoot: .openprd/design
|
|
37
|
+
templateRoot: .openprd/design/templates
|
|
38
|
+
activeArtifacts:
|
|
39
|
+
facts: .openprd/design/active/facts-sheet.md
|
|
40
|
+
assets: .openprd/design/active/asset-spec.md
|
|
41
|
+
imagePreflight: .openprd/design/active/image-preflight.md
|
|
42
|
+
directions: .openprd/design/active/direction-plan.md
|
|
43
|
+
selectedDirection: .openprd/design/active/selected-direction.md
|
|
34
44
|
qualityGates:
|
|
35
45
|
standards:
|
|
36
46
|
docsRoot: docs/basic
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# OpenPrd 前端设计资产
|
|
2
|
+
|
|
3
|
+
这层目录给 Agent 提供前端体验任务的可复用设计框架。
|
|
4
|
+
|
|
5
|
+
它不是参考图仓库,而是实现前的判断顺序和资产底座。
|
|
6
|
+
|
|
7
|
+
## 目录
|
|
8
|
+
|
|
9
|
+
- `lenses/`: 设计判断角度
|
|
10
|
+
- `themes/`: 主题 token 和密度规则
|
|
11
|
+
- `layouts/`: 页面骨架
|
|
12
|
+
- `components/`: 高频组件结构
|
|
13
|
+
- `recipes/`: 按任务类型整理的默认配方
|
|
14
|
+
- `checklists/`: 自检门
|
|
15
|
+
- `assets/`: 可复用表面和素材说明
|
|
16
|
+
- `templates/`: 可直接套用的页面起步模板
|
|
17
|
+
- `active/`: 当前任务正在使用的事实、素材和方向文件
|
|
18
|
+
|
|
19
|
+
## 默认顺序
|
|
20
|
+
|
|
21
|
+
1. 先选 `lens`
|
|
22
|
+
2. 再选 `theme`
|
|
23
|
+
3. 再选 `layout`
|
|
24
|
+
4. 再决定 `component set`
|
|
25
|
+
5. 再补当前任务的 `facts / assets / image preflight / directions`
|
|
26
|
+
6. 最后进入实现
|
|
27
|
+
|
|
28
|
+
对空白静态原型,如果 `templates/` 里已经有足够接近的模板,优先先用模板默认组合开工;只有确实要偏离默认组合时,再回头细读所有 catalog。
|
|
29
|
+
|
|
30
|
+
## 空白底座提醒
|
|
31
|
+
|
|
32
|
+
如果当前工作区几乎没有页面文件,`active/` 目录里的设计合同就是第一批应该被写实的文件。
|
|
33
|
+
|
|
34
|
+
- 先补 `facts-sheet / asset-spec / image-preflight / direction-plan / selected-direction`
|
|
35
|
+
- 再从 `templates/` 里选最近的一份模板,先把骨架落成可打开页面
|
|
36
|
+
- 如果页面主题和模块范围已经明确,优先把它们直接带进 `openprd design-starter ... --brief ... --sections ...`
|
|
37
|
+
- 对不依赖外部产品事实、品牌素材或真实图片的静态首页,也要把 active design artifacts 明确写成“无外部事实依赖”“当前无品牌素材依赖”“真实图片不是页面成立前提”,不要留在 `pending`
|
|
38
|
+
- 再创建第一个可打开的页面入口,例如 `index.html`
|
|
39
|
+
- 跑完 starter 后,下一步就是同时改 active design artifacts 和入口文件;直接在生成的入口文件上改。禁止删除 starter 生成的入口文件后另起新稿,也不要继续在 placeholder 文档之间兜圈
|
|
40
|
+
- 不要在 placeholder 文档之间反复来回扫描而迟迟不落任何实现文件
|
|
41
|
+
|
|
42
|
+
## 这层解决什么问题
|
|
43
|
+
|
|
44
|
+
- 避免界面都长成一种安全极简解
|
|
45
|
+
- 避免事实没核实就上页面
|
|
46
|
+
- 避免内容型页面没有真实图还硬做
|
|
47
|
+
- 避免实现时临时发明主题和组件
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# OpenPrd Frontend Design Assets
|
|
2
|
+
|
|
3
|
+
This folder gives agents a reusable design framework for frontend experience work.
|
|
4
|
+
|
|
5
|
+
It is not a gallery of references. It is the pre-build decision layer and asset base.
|
|
6
|
+
|
|
7
|
+
## Structure
|
|
8
|
+
|
|
9
|
+
- `lenses/`: design decision lenses
|
|
10
|
+
- `themes/`: theme tokens and density rules
|
|
11
|
+
- `layouts/`: page skeletons
|
|
12
|
+
- `components/`: reusable structural components
|
|
13
|
+
- `recipes/`: task-type defaults
|
|
14
|
+
- `checklists/`: quality gates
|
|
15
|
+
- `assets/`: reusable surface and asset notes
|
|
16
|
+
- `templates/`: ready-to-adapt page starters
|
|
17
|
+
- `active/`: task-specific facts, assets, and selected direction files
|
|
18
|
+
|
|
19
|
+
## Blank Workspace Reminder
|
|
20
|
+
|
|
21
|
+
When the workspace is still empty, fill the active design contracts first, then pick the closest file in `templates/` and adapt it into the first runnable page entry such as `index.html`.
|
|
22
|
+
|
|
23
|
+
- If the page does not depend on external product facts, branded assets, or real images, write that down explicitly in the active design contracts instead of leaving them in `pending`.
|
|
24
|
+
- If the page theme and module scope are already clear, prefer passing them into `openprd design-starter` through `--brief` and `--sections` so the first real page and the active design contracts are created together.
|
|
25
|
+
- After the starter is created, the next move should be one patch that updates both the active design contracts and the entry file. Edit the generated entry file in place instead of deleting and recreating it, and do not keep circling through placeholder docs.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Asset Spec
|
|
2
|
+
|
|
3
|
+
| 类型 | 资产 | 来源 | 状态 | 备注 |
|
|
4
|
+
| --- | --- | --- | --- | --- |
|
|
5
|
+
| logo | 待填写 | 待确认 | pending | |
|
|
6
|
+
| 产品图 | 待填写 | 待确认 | pending | |
|
|
7
|
+
| UI 图 | 待填写 | 待确认 | pending | |
|
|
8
|
+
| 摄影 / 插图 | 待填写 | 待确认 | pending | |
|
|
9
|
+
| 色板 / 字体 | 待填写 | 待确认 | pending | |
|
|
10
|
+
|
|
11
|
+
## 冻结变量
|
|
12
|
+
|
|
13
|
+
- lens: 待填写
|
|
14
|
+
- theme: 待填写
|
|
15
|
+
- layout: 待填写
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# Direction Plan
|
|
2
|
+
|
|
3
|
+
| 方向 | 生成逻辑 | lens | theme | layout | 为什么不同 | 适用场景 | 主要风险 |
|
|
4
|
+
| --- | --- | --- | --- | --- | --- | --- | --- |
|
|
5
|
+
| 方向 1 | contrast | 待填写 | 待填写 | 待填写 | 待填写 | 待填写 | 待填写 |
|
|
6
|
+
| 方向 2 | reference-transfer | 待填写 | 待填写 | 待填写 | 待填写 | 待填写 | 待填写 |
|
|
7
|
+
| 方向 3 | design-lens | 待填写 | 待填写 | 待填写 | 待填写 | 待填写 | 待填写 |
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Facts Sheet
|
|
2
|
+
|
|
3
|
+
| 字段 | 当前值 | 来源 | verifiedAt | 状态 |
|
|
4
|
+
| --- | --- | --- | --- | --- |
|
|
5
|
+
| 产品 / 项目名 | 待填写 | 待确认 | - | pending |
|
|
6
|
+
| 版本 / 发布状态 | 待填写 | 待确认 | - | pending |
|
|
7
|
+
| 关键事实 1 | 待填写 | 待确认 | - | pending |
|
|
8
|
+
| 关键事实 2 | 待填写 | 待确认 | - | pending |
|
|
9
|
+
|
|
10
|
+
## 备注
|
|
11
|
+
|
|
12
|
+
- 没核实到就保留 `pending`
|
|
13
|
+
- 不要把记忆当来源
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="180" height="180" viewBox="0 0 180 180" fill="none">
|
|
2
|
+
<rect width="180" height="180" fill="#0D1117"/>
|
|
3
|
+
<path d="M0 0.5H180" stroke="#243140" stroke-opacity="0.78"/>
|
|
4
|
+
<path d="M0 45.5H180" stroke="#243140" stroke-opacity="0.28"/>
|
|
5
|
+
<path d="M0 90.5H180" stroke="#243140" stroke-opacity="0.28"/>
|
|
6
|
+
<path d="M0 135.5H180" stroke="#243140" stroke-opacity="0.28"/>
|
|
7
|
+
<path d="M0.5 0V180" stroke="#243140" stroke-opacity="0.78"/>
|
|
8
|
+
<path d="M45.5 0V180" stroke="#243140" stroke-opacity="0.28"/>
|
|
9
|
+
<path d="M90.5 0V180" stroke="#243140" stroke-opacity="0.28"/>
|
|
10
|
+
<path d="M135.5 0V180" stroke="#243140" stroke-opacity="0.28"/>
|
|
11
|
+
<circle cx="30" cy="38" r="1.2" fill="#34D3A2" fill-opacity="0.36"/>
|
|
12
|
+
<circle cx="146" cy="62" r="1.2" fill="#34D3A2" fill-opacity="0.26"/>
|
|
13
|
+
<circle cx="102" cy="144" r="1.2" fill="#34D3A2" fill-opacity="0.18"/>
|
|
14
|
+
</svg>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="160" height="160" viewBox="0 0 160 160" fill="none">
|
|
2
|
+
<rect width="160" height="160" fill="#FFFDF8"/>
|
|
3
|
+
<path d="M0 0.5H160" stroke="#D8CEC1" stroke-opacity="0.48"/>
|
|
4
|
+
<path d="M0 40.5H160" stroke="#D8CEC1" stroke-opacity="0.22"/>
|
|
5
|
+
<path d="M0 80.5H160" stroke="#D8CEC1" stroke-opacity="0.22"/>
|
|
6
|
+
<path d="M0 120.5H160" stroke="#D8CEC1" stroke-opacity="0.22"/>
|
|
7
|
+
<path d="M0.5 0V160" stroke="#D8CEC1" stroke-opacity="0.48"/>
|
|
8
|
+
<path d="M40.5 0V160" stroke="#D8CEC1" stroke-opacity="0.22"/>
|
|
9
|
+
<path d="M80.5 0V160" stroke="#D8CEC1" stroke-opacity="0.22"/>
|
|
10
|
+
<path d="M120.5 0V160" stroke="#D8CEC1" stroke-opacity="0.22"/>
|
|
11
|
+
<circle cx="20" cy="22" r="1.1" fill="#A64B2A" fill-opacity="0.26"/>
|
|
12
|
+
<circle cx="108" cy="56" r="1" fill="#A64B2A" fill-opacity="0.2"/>
|
|
13
|
+
<circle cx="60" cy="124" r="1.2" fill="#A64B2A" fill-opacity="0.18"/>
|
|
14
|
+
</svg>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<svg xmlns="http://www.w3.org/2000/svg" width="180" height="180" viewBox="0 0 180 180" fill="none">
|
|
2
|
+
<rect width="180" height="180" fill="#FFFFFF"/>
|
|
3
|
+
<path d="M0 0.5H180" stroke="#D9E1E8" stroke-opacity="0.82"/>
|
|
4
|
+
<path d="M0 36.5H180" stroke="#D9E1E8" stroke-opacity="0.34"/>
|
|
5
|
+
<path d="M0 72.5H180" stroke="#D9E1E8" stroke-opacity="0.34"/>
|
|
6
|
+
<path d="M0 108.5H180" stroke="#D9E1E8" stroke-opacity="0.34"/>
|
|
7
|
+
<path d="M0 144.5H180" stroke="#D9E1E8" stroke-opacity="0.34"/>
|
|
8
|
+
<path d="M0.5 0V180" stroke="#D9E1E8" stroke-opacity="0.82"/>
|
|
9
|
+
<path d="M36.5 0V180" stroke="#D9E1E8" stroke-opacity="0.34"/>
|
|
10
|
+
<path d="M72.5 0V180" stroke="#D9E1E8" stroke-opacity="0.34"/>
|
|
11
|
+
<path d="M108.5 0V180" stroke="#D9E1E8" stroke-opacity="0.34"/>
|
|
12
|
+
<path d="M144.5 0V180" stroke="#D9E1E8" stroke-opacity="0.34"/>
|
|
13
|
+
<circle cx="28" cy="24" r="1.2" fill="#2F80ED" fill-opacity="0.24"/>
|
|
14
|
+
<circle cx="120" cy="84" r="1.2" fill="#2F80ED" fill-opacity="0.18"/>
|
|
15
|
+
<circle cx="74" cy="146" r="1.2" fill="#2F80ED" fill-opacity="0.14"/>
|
|
16
|
+
</svg>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# UI Quality Gate
|
|
2
|
+
|
|
3
|
+
## P0
|
|
4
|
+
|
|
5
|
+
- 关键事实已核实,或明确标注 `待确认`
|
|
6
|
+
- 主题已锁定,不存在临时发明的颜色体系
|
|
7
|
+
- 真实图片是否必需已经判断
|
|
8
|
+
- 大界面任务若无参考方向,已完成 3 个异源方向
|
|
9
|
+
|
|
10
|
+
## P1
|
|
11
|
+
|
|
12
|
+
- 页面主次明确
|
|
13
|
+
- 同一页面的密度一致
|
|
14
|
+
- 按钮、卡片、表格、表单大小关系自然
|
|
15
|
+
- 长文本没有挤爆容器
|
|
16
|
+
- 局部视觉语言没有突然换轨
|
|
17
|
+
|
|
18
|
+
## P2
|
|
19
|
+
|
|
20
|
+
- 屏幕第一眼能知道页面是干什么的
|
|
21
|
+
- 未改区域没有明显视觉漂移
|
|
22
|
+
- 需要时已准备 `visual-prepare` 或 `visual-compare` 证据
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Component Catalog
|
|
2
|
+
|
|
3
|
+
优先复用这些结构,不要每次从空白页发明一套。
|
|
4
|
+
|
|
5
|
+
## Hero
|
|
6
|
+
|
|
7
|
+
- `immersive-hero`
|
|
8
|
+
- `spec-hero`
|
|
9
|
+
- `editorial-hero`
|
|
10
|
+
|
|
11
|
+
## Proof
|
|
12
|
+
|
|
13
|
+
- `stat-row`
|
|
14
|
+
- `trust-strip`
|
|
15
|
+
- `quote-block`
|
|
16
|
+
- `logo-wall`
|
|
17
|
+
|
|
18
|
+
## Content
|
|
19
|
+
|
|
20
|
+
- `feature-grid`
|
|
21
|
+
- `story-section`
|
|
22
|
+
- `timeline`
|
|
23
|
+
- `gallery-rail`
|
|
24
|
+
- `map-highlight`
|
|
25
|
+
|
|
26
|
+
## Tooling
|
|
27
|
+
|
|
28
|
+
- `filter-rail`
|
|
29
|
+
- `dense-table`
|
|
30
|
+
- `settings-group`
|
|
31
|
+
- `summary-panel`
|
|
32
|
+
|
|
33
|
+
## Decision
|
|
34
|
+
|
|
35
|
+
- `plan-compare`
|
|
36
|
+
- `faq-accordion`
|
|
37
|
+
- `cta-banner`
|
|
38
|
+
|
|
39
|
+
## 使用规则
|
|
40
|
+
|
|
41
|
+
- 先决定这次页面最重要的 3 到 5 个组件,不要无上限堆结构块。
|
|
42
|
+
- 同一页面的组件风格要服从同一 theme 和 layout。
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"layouts": [
|
|
4
|
+
{
|
|
5
|
+
"id": "immersive-hero-stack",
|
|
6
|
+
"useFor": ["product-launch", "immersive-showcase"],
|
|
7
|
+
"summary": "Full-width hero followed by layered proof and supporting sections."
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"id": "editorial-rail",
|
|
11
|
+
"useFor": ["editorial-contrast", "content-experience"],
|
|
12
|
+
"summary": "Alternating wide media and text rails with strong vertical rhythm."
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "product-spec-runway",
|
|
16
|
+
"useFor": ["product-launch"],
|
|
17
|
+
"summary": "Hero, highlights, specs, proof, and CTA in a linear product narrative."
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"id": "ops-density-grid",
|
|
21
|
+
"useFor": ["operational-density"],
|
|
22
|
+
"summary": "Dense work surface with fixed controls, structured panels, and scan-first tables."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"id": "catalog-browser",
|
|
26
|
+
"useFor": ["catalog-clarity"],
|
|
27
|
+
"summary": "Filter rail plus flexible list or grid browsing surface."
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"id": "story-map",
|
|
31
|
+
"useFor": ["immersive-showcase", "editorial-contrast"],
|
|
32
|
+
"summary": "Narrative sequence with strong landmarks, maps, or guided discovery blocks."
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"id": "pricing-and-proof",
|
|
36
|
+
"useFor": ["product-launch", "operational-density"],
|
|
37
|
+
"summary": "Decision-focused layout with plan comparison, objections, and proof."
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"id": "settings-split",
|
|
41
|
+
"useFor": ["operational-density"],
|
|
42
|
+
"summary": "Stable navigation rail with form-heavy content split by configuration sections."
|
|
43
|
+
}
|
|
44
|
+
]
|
|
45
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Frontend Lenses
|
|
2
|
+
|
|
3
|
+
## `editorial-contrast`
|
|
4
|
+
|
|
5
|
+
- 适合内容型页面、品牌故事、专题页、馆藏导览、展览解说
|
|
6
|
+
- 核心特征:排版节奏感强,图文切换明确,留白与密度并存
|
|
7
|
+
- 常见风险:做成只有“杂志感”但没有任务完成路径
|
|
8
|
+
|
|
9
|
+
## `product-launch`
|
|
10
|
+
|
|
11
|
+
- 适合发布页、产品介绍页、关键功能亮点页
|
|
12
|
+
- 核心特征:主视觉强、卖点集中、规格与证明材料清晰
|
|
13
|
+
- 常见风险:只顾氛围,不给关键事实和证据
|
|
14
|
+
|
|
15
|
+
## `operational-density`
|
|
16
|
+
|
|
17
|
+
- 适合后台、工具页、控制台、SaaS、CRM、配置页
|
|
18
|
+
- 核心特征:扫描效率高、信息密度稳、交互路径短
|
|
19
|
+
- 常见风险:密度高但没有层级,最后变成挤
|
|
20
|
+
|
|
21
|
+
## `immersive-showcase`
|
|
22
|
+
|
|
23
|
+
- 适合旅游、地点、内容探索、案例展示
|
|
24
|
+
- 核心特征:真实图片主导,叙事路径顺滑,视觉情绪明显
|
|
25
|
+
- 常见风险:图片很好看,但信息组织太弱
|
|
26
|
+
|
|
27
|
+
## `catalog-clarity`
|
|
28
|
+
|
|
29
|
+
- 适合资料库、资源库、商品库、内容浏览
|
|
30
|
+
- 核心特征:卡片和列表关系清晰,可筛选、可比较、可快速回看
|
|
31
|
+
- 常见风险:所有区块看起来一样重
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Content Experience Recipe
|
|
2
|
+
|
|
3
|
+
## 默认组合
|
|
4
|
+
|
|
5
|
+
- lens: `editorial-contrast` 或 `immersive-showcase`
|
|
6
|
+
- theme: `quiet-sand` 或 `warm-editorial`
|
|
7
|
+
- layout: `editorial-rail` 或 `story-map`
|
|
8
|
+
|
|
9
|
+
## 必做前置
|
|
10
|
+
|
|
11
|
+
- `image-preflight.md`
|
|
12
|
+
- 需要时补 `asset-spec.md`
|
|
13
|
+
|
|
14
|
+
## 常见组件
|
|
15
|
+
|
|
16
|
+
- `editorial-hero`
|
|
17
|
+
- `story-section`
|
|
18
|
+
- `timeline`
|
|
19
|
+
- `gallery-rail`
|
|
20
|
+
- `quote-block`
|
|
21
|
+
|
|
22
|
+
## 验收重点
|
|
23
|
+
|
|
24
|
+
- 没有真实图时是否及时降级,而不是硬做灰块页面
|
|
25
|
+
- 图文节奏是否成立
|
|
26
|
+
- 读者是否知道下一步看哪里
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Operational Tool Recipe
|
|
2
|
+
|
|
3
|
+
## 默认组合
|
|
4
|
+
|
|
5
|
+
- lens: `operational-density`
|
|
6
|
+
- theme: `tool-neutral`
|
|
7
|
+
- layout: `ops-density-grid` 或 `settings-split`
|
|
8
|
+
|
|
9
|
+
## 必做前置
|
|
10
|
+
|
|
11
|
+
- 先决定关键任务路径和主操作
|
|
12
|
+
- 如有核心业务数据,再补 `facts-sheet.md`
|
|
13
|
+
|
|
14
|
+
## 常见组件
|
|
15
|
+
|
|
16
|
+
- `filter-rail`
|
|
17
|
+
- `dense-table`
|
|
18
|
+
- `summary-panel`
|
|
19
|
+
- `settings-group`
|
|
20
|
+
|
|
21
|
+
## 验收重点
|
|
22
|
+
|
|
23
|
+
- 是否方便扫描
|
|
24
|
+
- 主操作是否靠近用户决策点
|
|
25
|
+
- 文本和控件是否出现无意义放大
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# Product Launch Recipe
|
|
2
|
+
|
|
3
|
+
## 默认组合
|
|
4
|
+
|
|
5
|
+
- lens: `product-launch`
|
|
6
|
+
- theme: `deep-launch` 或 `warm-editorial`
|
|
7
|
+
- layout: `product-spec-runway`
|
|
8
|
+
|
|
9
|
+
## 必做前置
|
|
10
|
+
|
|
11
|
+
- `facts-sheet.md`
|
|
12
|
+
- `asset-spec.md`
|
|
13
|
+
|
|
14
|
+
## 常见组件
|
|
15
|
+
|
|
16
|
+
- `spec-hero`
|
|
17
|
+
- `feature-grid`
|
|
18
|
+
- `stat-row`
|
|
19
|
+
- `plan-compare`
|
|
20
|
+
- `faq-accordion`
|
|
21
|
+
|
|
22
|
+
## 验收重点
|
|
23
|
+
|
|
24
|
+
- 首屏是否一眼知道是什么产品
|
|
25
|
+
- 规格和卖点有没有混成一锅
|
|
26
|
+
- 证明材料是否真实且位置合理
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Frontend Starter Templates
|
|
2
|
+
|
|
3
|
+
这层模板不是最终成品,而是空白工作区的第一版骨架。
|
|
4
|
+
|
|
5
|
+
## 使用顺序
|
|
6
|
+
|
|
7
|
+
1. 先补 `active/` 下的事实、素材、图片前置和方向合同
|
|
8
|
+
2. 再从这里挑最近的一份模板
|
|
9
|
+
3. 运行 `openprd design-starter . --starter <starter-id> --out index.html`
|
|
10
|
+
4. 再按选中的 `lens + theme + layout + component set` 改写内容和样式
|
|
11
|
+
|
|
12
|
+
## 模板清单
|
|
13
|
+
|
|
14
|
+
- `content-home.html`: 内容型首页、导览页、展览页、城市体验页、故事型首页
|
|
15
|
+
- `product-launch.html`: 产品发布页、品牌发布页、功能发布页、招商/介绍型首页
|
|
16
|
+
- `ops-dashboard.html`: 工具台、后台首页、运营工作台、信息密度型页面
|
|
17
|
+
|
|
18
|
+
## 推荐起步组合
|
|
19
|
+
|
|
20
|
+
| 模板 | 默认 lens | 默认 theme | 默认 layout | 默认组件 |
|
|
21
|
+
| --- | --- | --- | --- | --- |
|
|
22
|
+
| `content-home.html` | `editorial-contrast` | `warm-editorial` | `story-map` | `editorial-hero` `stat-row` `story-section` `feature-grid` `timeline` `cta-banner` |
|
|
23
|
+
| `product-launch.html` | `product-launch` | `deep-launch` | `product-spec-runway` | `spec-hero` `stat-row` `feature-grid` `logo-wall` `cta-banner` |
|
|
24
|
+
| `ops-dashboard.html` | `operational-density` | `tool-neutral` | `ops-density-grid` | `filter-rail` `summary-panel` `dense-table` `settings-group` |
|
|
25
|
+
|
|
26
|
+
## 默认规则
|
|
27
|
+
|
|
28
|
+
- 静态原型优先使用单文件 HTML 模板起步
|
|
29
|
+
- 优先用 `openprd design-starter` 创建入口文件,不要手动从空白页重搭第一版骨架
|
|
30
|
+
- 如果页面主题和模块范围已经明确,优先用 `openprd design-starter . --starter <starter-id> --out index.html --brief "<页面主题>" --sections "<模块1|模块2|模块3>"`,让 starter 顺手把 active design artifacts 和第一版真实文案一起落出来
|
|
31
|
+
- 对不依赖外部产品事实、品牌素材或真实图片的静态首页,active design artifacts 可以直接写“无外部事实依赖”“当前无品牌素材依赖”“真实图片不是页面成立前提”,不要把这些通用页面长时间停在 `pending`
|
|
32
|
+
- 跑完 `design-starter` 后先改生成入口文件里的 `[占位]` 文案和标题,再细化样式,不要回头整页重读模板源码
|
|
33
|
+
- 跑完 `design-starter` 后,下一步默认就是一次补丁,同时改入口文件和必要的 active design artifacts;直接在生成的入口文件上改。禁止删除 starter 生成的入口文件后另起新稿
|
|
34
|
+
- 先改结构和文案,再细化装饰
|
|
35
|
+
- 模板只是骨架,不能把示例文案原样交付
|
|
36
|
+
- 如果模板默认组合已经够用,不要继续把所有 catalog 文件都重读一遍再决定
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Frontend Starter Templates
|
|
2
|
+
|
|
3
|
+
These templates are not final deliverables. They are the first runnable skeleton for blank frontend workspaces.
|
|
4
|
+
|
|
5
|
+
## Order
|
|
6
|
+
|
|
7
|
+
1. Fill the task-specific contracts under `active/`
|
|
8
|
+
2. Pick the closest starter template here
|
|
9
|
+
3. Run `openprd design-starter . --starter <starter-id> --out index.html`
|
|
10
|
+
4. Then adapt it using the selected `lens + theme + layout + component set`
|
|
11
|
+
|
|
12
|
+
## Included Starters
|
|
13
|
+
|
|
14
|
+
- `content-home.html`
|
|
15
|
+
- `product-launch.html`
|
|
16
|
+
- `ops-dashboard.html`
|
|
17
|
+
|
|
18
|
+
## Starter Defaults
|
|
19
|
+
|
|
20
|
+
- `content-home.html`: `editorial-contrast` + `warm-editorial` + `story-map`
|
|
21
|
+
- `product-launch.html`: `product-launch` + `deep-launch` + `product-spec-runway`
|
|
22
|
+
- `ops-dashboard.html`: `operational-density` + `tool-neutral` + `ops-density-grid`
|
|
23
|
+
|
|
24
|
+
## Defaults
|
|
25
|
+
|
|
26
|
+
- Prefer `openprd design-starter` over rebuilding the first skeleton from an empty page
|
|
27
|
+
- If the page theme and module scope are already clear, prefer `openprd design-starter ... --brief ... --sections ...` so the first page and the active contracts are created together
|
|
28
|
+
- If the page does not depend on external product facts, branded assets, or real images, write those contracts as explicit no-dependency decisions instead of leaving them in `pending`
|
|
29
|
+
- After `design-starter`, replace the generated placeholder copy and title in the entry file before rereading the whole template
|
|
30
|
+
- After `design-starter`, the default next move is one patch that updates both the entry file and the active design contracts; edit the generated entry file in place instead of deleting and recreating it
|
|
31
|
+
- Start with structure and copy before decoration
|