minimal-agent 0.9.0 → 0.10.0

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 (467) hide show
  1. package/README.md +11 -8
  2. package/package.json +34 -1
  3. package/plugins/cron-runner/.claude-plugin/plugin.json +5 -0
  4. package/plugins/cron-runner/commands/cron.md +26 -0
  5. package/plugins/cron-runner/commands/crons.md +7 -0
  6. package/plugins/cron-runner/plugin.js +34 -0
  7. package/plugins/cron-runner/src/commands.js +348 -0
  8. package/plugins/cron-runner/src/cronTime.js +148 -0
  9. package/plugins/cron-runner/src/lock.js +68 -0
  10. package/plugins/cron-runner/src/runs.js +89 -0
  11. package/plugins/cron-runner/src/scheduleEngine.js +72 -0
  12. package/plugins/cron-runner/src/scheduler.js +355 -0
  13. package/plugins/cron-runner/src/schema.js +140 -0
  14. package/plugins/cron-runner/src/service.js +167 -0
  15. package/plugins/cron-runner/src/store.js +298 -0
  16. package/plugins/cron-runner/src/types.js +1 -0
  17. package/plugins/workflow-runner/commands/workflow.md +4 -4
  18. package/plugins/workflow-runner/commands/workflows.md +1 -1
  19. package/plugins/workflow-runner/plugin.js +2 -1
  20. package/plugins/workflow-runner/src/agentCommon.js +172 -9
  21. package/plugins/workflow-runner/src/dslManifest.js +72 -0
  22. package/plugins/workflow-runner/src/expressions.js +150 -13
  23. package/plugins/workflow-runner/src/index.js +39 -8
  24. package/plugins/workflow-runner/src/loader.js +216 -64
  25. package/plugins/workflow-runner/src/multimodal.js +37 -0
  26. package/plugins/workflow-runner/src/recovery.js +26 -24
  27. package/plugins/workflow-runner/src/runner.js +693 -287
  28. package/plugins/workflow-runner/src/stepExecutors/agent.js +126 -37
  29. package/plugins/workflow-runner/src/stepExecutors/assert.js +3 -2
  30. package/plugins/workflow-runner/src/stepExecutors/llm.js +38 -30
  31. package/plugins/workflow-runner/src/stepExecutors/skill.js +27 -38
  32. package/plugins/workflow-runner/src/stepExecutors/tool.js +56 -3
  33. package/plugins/workflow-runner/src/stepExecutors/verify.js +19 -10
  34. package/plugins/workflow-runner/src/taskIdentity.js +185 -30
  35. package/plugins/workflow-runner/src/types.js +18 -7
  36. package/plugins/workflow-runner/src/workflowState.js +355 -55
  37. package/skills/ai-image/SKILL.md +89 -0
  38. package/skills/ai-image/scripts/generate.mjs +497 -0
  39. package/skills/ai-image/scripts/generate_from_plan.mjs +469 -0
  40. package/skills/ai-image/scripts/generate_from_plan_test.mjs +223 -0
  41. package/skills/ai-image/scripts/generate_test.mjs +74 -0
  42. package/skills/browser-automation/SKILL.md +47 -0
  43. package/skills/docx/SKILL.md +25 -3
  44. package/skills/docx/scripts/office/helpers/__pycache__/__init__.cpython-314.pyc +0 -0
  45. package/skills/docx/scripts/office/helpers/__pycache__/merge_runs.cpython-314.pyc +0 -0
  46. package/skills/docx/scripts/office/helpers/__pycache__/simplify_redlines.cpython-314.pyc +0 -0
  47. package/skills/docx/scripts/office/validators/__pycache__/__init__.cpython-314.pyc +0 -0
  48. package/skills/docx/scripts/office/validators/__pycache__/base.cpython-314.pyc +0 -0
  49. package/skills/docx/scripts/office/validators/__pycache__/docx.cpython-314.pyc +0 -0
  50. package/skills/docx/scripts/office/validators/__pycache__/pptx.cpython-314.pyc +0 -0
  51. package/skills/docx/scripts/office/validators/__pycache__/redlining.cpython-314.pyc +0 -0
  52. package/skills/docx/scripts/opc_check.py +253 -0
  53. package/skills/image-gen-openrouter/SKILL.md +10 -2
  54. package/skills/image-stats/SKILL.md +65 -0
  55. package/skills/image-stats/scripts/__pycache__/image_stats.cpython-314.pyc +0 -0
  56. package/skills/image-stats/scripts/__pycache__/image_stats_test.cpython-314.pyc +0 -0
  57. package/skills/image-stats/scripts/image_stats.py +368 -0
  58. package/skills/image-stats/scripts/image_stats_test.py +181 -0
  59. package/skills/pptx/SKILL.md +123 -95
  60. package/skills/pptx/design.md +82 -0
  61. package/skills/pptx/examples/README.md +29 -0
  62. package/skills/pptx/examples/hybrid_example.mjs +107 -0
  63. package/skills/pptx/examples/hybrid_example.pptx +0 -0
  64. package/skills/pptx/pptxgenjs.md +41 -0
  65. package/skills/pptx/scripts/deck_helpers.mjs +224 -0
  66. package/skills/pptx/scripts/layout_lint.py +293 -0
  67. package/skills/pptx/scripts/layout_lint_test.py +160 -0
  68. package/skills/pptx/scripts/opc_check.py +339 -0
  69. package/skills/pptx/scripts/svg_fallback.mjs +145 -0
  70. package/skills/pptx/svg.md +67 -0
  71. package/skills/tts-zh/SKILL.md +19 -2
  72. package/skills/ui-design/SKILL.md +158 -0
  73. package/skills/ui-design/claude_design.md +309 -0
  74. package/skills/ui-design/evals/evals.json +254 -0
  75. package/skills/ui-design/references/aesthetic-direction.md +83 -0
  76. package/skills/ui-design/references/claude-design-protocol.md +36 -0
  77. package/skills/ui-design/references/design-context.md +53 -0
  78. package/skills/ui-design/references/design-execution-playbook.md +82 -0
  79. package/skills/ui-design/references/export-pptx.md +124 -0
  80. package/skills/ui-design/references/layout-composition.md +654 -0
  81. package/skills/ui-design/references/preview-feedback.md +37 -0
  82. package/skills/ui-design/references/source-image-layout.md +189 -0
  83. package/skills/ui-design/references/starter-components.md +78 -0
  84. package/skills/ui-design/references/vi-aegis-vector.md +144 -0
  85. package/skills/ui-design/references/vi-amber-prism.md +133 -0
  86. package/skills/ui-design/references/vi-aqua-glass.md +200 -0
  87. package/skills/ui-design/references/vi-comfort-vision.md +147 -0
  88. package/skills/ui-design/references/vi-ember-prism.md +140 -0
  89. package/skills/ui-design/references/vi-nebula-console.md +151 -0
  90. package/skills/ui-design/references/vi-obsidian-optics.md +139 -0
  91. package/skills/ui-design/references/vi-obsidian-xui.md +143 -0
  92. package/skills/ui-design/references/vi-precision-horizon-dark.md +117 -0
  93. package/skills/ui-design/references/vi-precision-horizon.md +215 -0
  94. package/skills/ui-design/references/vi-solar-relay.md +130 -0
  95. package/skills/ui-design/references/vi-template-workflow.md +48 -0
  96. package/skills/ui-design/references/vi-verdant-grid.md +141 -0
  97. package/skills/ui-design/references/vi-violet-meridian.md +172 -0
  98. package/skills/ui-design/scripts/__pycache__/assemble_material.cpython-314.pyc +0 -0
  99. package/skills/ui-design/scripts/__pycache__/assemble_material_test.cpython-314.pyc +0 -0
  100. package/skills/ui-design/scripts/__pycache__/chart_sanity_check.cpython-314.pyc +0 -0
  101. package/skills/ui-design/scripts/__pycache__/check_language_policy.cpython-314.pyc +0 -0
  102. package/skills/ui-design/scripts/__pycache__/check_ui_artifact.cpython-314.pyc +0 -0
  103. package/skills/ui-design/scripts/__pycache__/check_ui_artifact_pptx_test.cpython-314.pyc +0 -0
  104. package/skills/ui-design/scripts/__pycache__/deck_pages_check.cpython-314.pyc +0 -0
  105. package/skills/ui-design/scripts/__pycache__/deck_pages_check_test.cpython-314.pyc +0 -0
  106. package/skills/ui-design/scripts/__pycache__/deck_visual_style_check.cpython-314.pyc +0 -0
  107. package/skills/ui-design/scripts/__pycache__/deck_visual_style_check_test.cpython-314.pyc +0 -0
  108. package/skills/ui-design/scripts/__pycache__/design_budget_check.cpython-314.pyc +0 -0
  109. package/skills/ui-design/scripts/__pycache__/design_budget_check_test.cpython-314.pyc +0 -0
  110. package/skills/ui-design/scripts/__pycache__/design_repair_hints.cpython-314.pyc +0 -0
  111. package/skills/ui-design/scripts/__pycache__/design_repair_hints_test.cpython-314.pyc +0 -0
  112. package/skills/ui-design/scripts/__pycache__/design_style_check.cpython-314.pyc +0 -0
  113. package/skills/ui-design/scripts/__pycache__/design_style_check_test.cpython-314.pyc +0 -0
  114. package/skills/ui-design/scripts/__pycache__/draft_coverage_check.cpython-314.pyc +0 -0
  115. package/skills/ui-design/scripts/__pycache__/extract_source_assets.cpython-314.pyc +0 -0
  116. package/skills/ui-design/scripts/__pycache__/extract_source_assets_test.cpython-314.pyc +0 -0
  117. package/skills/ui-design/scripts/__pycache__/generated_image_review_collect.cpython-314.pyc +0 -0
  118. package/skills/ui-design/scripts/__pycache__/generated_image_review_collect_test.cpython-314.pyc +0 -0
  119. package/skills/ui-design/scripts/__pycache__/image_plan_lint.cpython-314.pyc +0 -0
  120. package/skills/ui-design/scripts/__pycache__/image_plan_lint_test.cpython-314.pyc +0 -0
  121. package/skills/ui-design/scripts/__pycache__/image_prompt_rewrite.cpython-314.pyc +0 -0
  122. package/skills/ui-design/scripts/__pycache__/image_prompt_rewrite_test.cpython-314.pyc +0 -0
  123. package/skills/ui-design/scripts/__pycache__/layout_balance.cpython-314.pyc +0 -0
  124. package/skills/ui-design/scripts/__pycache__/layout_balance_test.cpython-314.pyc +0 -0
  125. package/skills/ui-design/scripts/__pycache__/normalize_design_json.cpython-314.pyc +0 -0
  126. package/skills/ui-design/scripts/__pycache__/normalize_design_json_test.cpython-314.pyc +0 -0
  127. package/skills/ui-design/scripts/__pycache__/plan_source_layout.cpython-314.pyc +0 -0
  128. package/skills/ui-design/scripts/__pycache__/plan_source_layout_test.cpython-314.pyc +0 -0
  129. package/skills/ui-design/scripts/__pycache__/resolve_source_hint.cpython-314.pyc +0 -0
  130. package/skills/ui-design/scripts/__pycache__/resolve_source_hint_test.cpython-314.pyc +0 -0
  131. package/skills/ui-design/scripts/__pycache__/resolve_source_input.cpython-314.pyc +0 -0
  132. package/skills/ui-design/scripts/__pycache__/resolve_source_input_test.cpython-314.pyc +0 -0
  133. package/skills/ui-design/scripts/__pycache__/scaffold_ui_artifact.cpython-314.pyc +0 -0
  134. package/skills/ui-design/scripts/__pycache__/source_usage_check.cpython-314.pyc +0 -0
  135. package/skills/ui-design/scripts/__pycache__/source_usage_check_test.cpython-314.pyc +0 -0
  136. package/skills/ui-design/scripts/__pycache__/text_readability_pixel.cpython-314.pyc +0 -0
  137. package/skills/ui-design/scripts/__pycache__/visual_quality_gate.cpython-314.pyc +0 -0
  138. package/skills/ui-design/scripts/__pycache__/visual_quality_gate_test.cpython-314.pyc +0 -0
  139. package/skills/ui-design/scripts/assemble_material.py +217 -0
  140. package/skills/ui-design/scripts/assemble_material_test.py +149 -0
  141. package/skills/ui-design/scripts/browser_check_ui_artifact.mjs +221 -0
  142. package/skills/ui-design/scripts/chart_sanity_check.py +261 -0
  143. package/skills/ui-design/scripts/chart_sanity_check_test.py +165 -0
  144. package/skills/ui-design/scripts/check_language_policy.py +351 -0
  145. package/skills/ui-design/scripts/check_ui_artifact.py +435 -0
  146. package/skills/ui-design/scripts/check_ui_artifact_pptx_test.py +251 -0
  147. package/skills/ui-design/scripts/deck_pages_check.py +158 -0
  148. package/skills/ui-design/scripts/deck_pages_check_test.py +134 -0
  149. package/skills/ui-design/scripts/deck_visual_style_check.py +767 -0
  150. package/skills/ui-design/scripts/deck_visual_style_check_test.py +713 -0
  151. package/skills/ui-design/scripts/design_budget_check.py +271 -0
  152. package/skills/ui-design/scripts/design_budget_check_test.py +183 -0
  153. package/skills/ui-design/scripts/design_repair_hints.py +162 -0
  154. package/skills/ui-design/scripts/design_repair_hints_test.py +54 -0
  155. package/skills/ui-design/scripts/design_style_check.py +397 -0
  156. package/skills/ui-design/scripts/design_style_check_test.py +233 -0
  157. package/skills/ui-design/scripts/draft_coverage_check.py +184 -0
  158. package/skills/ui-design/scripts/draft_coverage_check_test.py +131 -0
  159. package/skills/ui-design/scripts/export_pptx_from_html.mjs +2367 -0
  160. package/skills/ui-design/scripts/extract_source_assets.py +607 -0
  161. package/skills/ui-design/scripts/extract_source_assets_test.py +256 -0
  162. package/skills/ui-design/scripts/generated_image_review_collect.py +206 -0
  163. package/skills/ui-design/scripts/generated_image_review_collect_test.py +91 -0
  164. package/skills/ui-design/scripts/image_plan_lint.py +571 -0
  165. package/skills/ui-design/scripts/image_plan_lint_test.py +515 -0
  166. package/skills/ui-design/scripts/image_prompt_rewrite.py +713 -0
  167. package/skills/ui-design/scripts/image_prompt_rewrite_test.py +966 -0
  168. package/skills/ui-design/scripts/layout_balance.py +881 -0
  169. package/skills/ui-design/scripts/layout_balance_test.py +927 -0
  170. package/skills/ui-design/scripts/normalize_design_json.py +272 -0
  171. package/skills/ui-design/scripts/normalize_design_json_test.py +119 -0
  172. package/skills/ui-design/scripts/plan_source_layout.py +1450 -0
  173. package/skills/ui-design/scripts/plan_source_layout_test.py +1136 -0
  174. package/skills/ui-design/scripts/resolve_source_input.py +270 -0
  175. package/skills/ui-design/scripts/resolve_source_input_test.py +98 -0
  176. package/skills/ui-design/scripts/scaffold_ui_artifact.py +377 -0
  177. package/skills/ui-design/scripts/source_usage_check.py +581 -0
  178. package/skills/ui-design/scripts/source_usage_check_test.py +427 -0
  179. package/skills/ui-design/scripts/text_readability_pixel.py +340 -0
  180. package/skills/ui-design/scripts/text_readability_pixel_test.py +219 -0
  181. package/skills/ui-design/scripts/visual_quality_gate.py +301 -0
  182. package/skills/ui-design/scripts/visual_quality_gate_test.py +233 -0
  183. package/skills/ui-design/tests/e2e/prompts/deck.md +19 -0
  184. package/skills/ui-design/tests/e2e/prompts/webpage.md +17 -0
  185. package/skills/ui-design/tests/e2e/render_check.mjs +101 -0
  186. package/skills/ui-design/tests/e2e/rubric.json +54 -0
  187. package/skills/ui-design/tests/e2e/runs/aegis-vector-preview-1/checks/browser-check.json +49 -0
  188. package/skills/ui-design/tests/e2e/runs/aegis-vector-preview-1/checks/language-check.txt +12 -0
  189. package/skills/ui-design/tests/e2e/runs/aegis-vector-preview-1/checks/static-check.txt +15 -0
  190. package/skills/ui-design/tests/e2e/runs/aegis-vector-preview-1/outputs/index.html +837 -0
  191. package/skills/ui-design/tests/e2e/runs/aegis-vector-preview-1/prompt.md +12 -0
  192. package/skills/ui-design/tests/e2e/runs/aegis-vector-preview-1/review.md +21 -0
  193. package/skills/ui-design/tests/e2e/runs/aegis-vector-preview-1/screenshots/desktop.png +0 -0
  194. package/skills/ui-design/tests/e2e/runs/aegis-vector-preview-1/screenshots/mobile.png +0 -0
  195. package/skills/ui-design/tests/e2e/runs/amber-prism-screenshot-check-1/outputs/homepage.html +373 -0
  196. package/skills/ui-design/tests/e2e/runs/amber-prism-screenshot-check-1/outputs/platform.html +378 -0
  197. package/skills/ui-design/tests/e2e/runs/amber-prism-screenshot-check-1/prompt.md +13 -0
  198. package/skills/ui-design/tests/e2e/runs/amber-prism-screenshot-check-1/review.md +26 -0
  199. package/skills/ui-design/tests/e2e/runs/amber-prism-screenshot-check-1/screenshots/homepage/browser-check.json +49 -0
  200. package/skills/ui-design/tests/e2e/runs/amber-prism-screenshot-check-1/screenshots/homepage/desktop.png +0 -0
  201. package/skills/ui-design/tests/e2e/runs/amber-prism-screenshot-check-1/screenshots/homepage/mobile.png +0 -0
  202. package/skills/ui-design/tests/e2e/runs/amber-prism-screenshot-check-1/screenshots/platform/browser-check.json +49 -0
  203. package/skills/ui-design/tests/e2e/runs/amber-prism-screenshot-check-1/screenshots/platform/desktop.png +0 -0
  204. package/skills/ui-design/tests/e2e/runs/amber-prism-screenshot-check-1/screenshots/platform/mobile.png +0 -0
  205. package/skills/ui-design/tests/e2e/runs/aqua-glass-iteration-1/checks/static-check.txt +2 -0
  206. package/skills/ui-design/tests/e2e/runs/aqua-glass-iteration-1/outputs/index.html +656 -0
  207. package/skills/ui-design/tests/e2e/runs/aqua-glass-iteration-1/prompt.md +12 -0
  208. package/skills/ui-design/tests/e2e/runs/aqua-glass-iteration-1/render_check.mjs +67 -0
  209. package/skills/ui-design/tests/e2e/runs/aqua-glass-iteration-2/checks/static-check.txt +2 -0
  210. package/skills/ui-design/tests/e2e/runs/aqua-glass-iteration-2/outputs/index.html +587 -0
  211. package/skills/ui-design/tests/e2e/runs/aqua-glass-iteration-2/prompt.md +12 -0
  212. package/skills/ui-design/tests/e2e/runs/aqua-glass-iteration-2/review.md +36 -0
  213. package/skills/ui-design/tests/e2e/runs/aqua-glass-volcano-refresh-1/checks/browser-check.json +49 -0
  214. package/skills/ui-design/tests/e2e/runs/aqua-glass-volcano-refresh-1/checks/language-check.txt +8 -0
  215. package/skills/ui-design/tests/e2e/runs/aqua-glass-volcano-refresh-1/checks/static-check.txt +16 -0
  216. package/skills/ui-design/tests/e2e/runs/aqua-glass-volcano-refresh-1/outputs/index.html +739 -0
  217. package/skills/ui-design/tests/e2e/runs/aqua-glass-volcano-refresh-1/prompt.md +11 -0
  218. package/skills/ui-design/tests/e2e/runs/aqua-glass-volcano-refresh-1/review.md +22 -0
  219. package/skills/ui-design/tests/e2e/runs/aqua-glass-volcano-refresh-1/screenshots/desktop.png +0 -0
  220. package/skills/ui-design/tests/e2e/runs/aqua-glass-volcano-refresh-1/screenshots/mobile.png +0 -0
  221. package/skills/ui-design/tests/e2e/runs/comfort-vision-preview-1/checks/browser-check.json +52 -0
  222. package/skills/ui-design/tests/e2e/runs/comfort-vision-preview-1/outputs/index.html +641 -0
  223. package/skills/ui-design/tests/e2e/runs/comfort-vision-preview-1/screenshots/desktop.png +0 -0
  224. package/skills/ui-design/tests/e2e/runs/comfort-vision-preview-1/screenshots/mobile.png +0 -0
  225. package/skills/ui-design/tests/e2e/runs/ember-prism-red-preview-1/outputs/index.html +467 -0
  226. package/skills/ui-design/tests/e2e/runs/ember-prism-red-preview-1/screenshots/browser-check.json +49 -0
  227. package/skills/ui-design/tests/e2e/runs/ember-prism-red-preview-1/screenshots/desktop.png +0 -0
  228. package/skills/ui-design/tests/e2e/runs/ember-prism-red-preview-1/screenshots/mobile.png +0 -0
  229. package/skills/ui-design/tests/e2e/runs/ember-prism-screenshot-check-1/outputs/homepage.html +373 -0
  230. package/skills/ui-design/tests/e2e/runs/ember-prism-screenshot-check-1/outputs/platform.html +378 -0
  231. package/skills/ui-design/tests/e2e/runs/ember-prism-screenshot-check-1/prompt.md +13 -0
  232. package/skills/ui-design/tests/e2e/runs/ember-prism-screenshot-check-1/review.md +26 -0
  233. package/skills/ui-design/tests/e2e/runs/ember-prism-screenshot-check-1/screenshots/homepage/browser-check.json +49 -0
  234. package/skills/ui-design/tests/e2e/runs/ember-prism-screenshot-check-1/screenshots/homepage/desktop.png +0 -0
  235. package/skills/ui-design/tests/e2e/runs/ember-prism-screenshot-check-1/screenshots/homepage/mobile.png +0 -0
  236. package/skills/ui-design/tests/e2e/runs/ember-prism-screenshot-check-1/screenshots/platform/browser-check.json +49 -0
  237. package/skills/ui-design/tests/e2e/runs/ember-prism-screenshot-check-1/screenshots/platform/desktop.png +0 -0
  238. package/skills/ui-design/tests/e2e/runs/ember-prism-screenshot-check-1/screenshots/platform/mobile.png +0 -0
  239. package/skills/ui-design/tests/e2e/runs/empty-agent-protocol-check/checks/browser-check.json +49 -0
  240. package/skills/ui-design/tests/e2e/runs/empty-agent-protocol-check/checks/language-check.txt +4 -0
  241. package/skills/ui-design/tests/e2e/runs/empty-agent-protocol-check/checks/static-check.txt +2 -0
  242. package/skills/ui-design/tests/e2e/runs/empty-agent-protocol-check/execution_notes.md +10 -0
  243. package/skills/ui-design/tests/e2e/runs/empty-agent-protocol-check/outputs/index.html +587 -0
  244. package/skills/ui-design/tests/e2e/runs/empty-agent-protocol-check/prompt.md +14 -0
  245. package/skills/ui-design/tests/e2e/runs/empty-agent-protocol-check/review.md +13 -0
  246. package/skills/ui-design/tests/e2e/runs/empty-agent-protocol-check/screenshots/desktop.png +0 -0
  247. package/skills/ui-design/tests/e2e/runs/empty-agent-protocol-check/screenshots/mobile.png +0 -0
  248. package/skills/ui-design/tests/e2e/runs/iteration-1/deck/checks/browser-check.json +24 -0
  249. package/skills/ui-design/tests/e2e/runs/iteration-1/deck/checks/static-check.txt +2 -0
  250. package/skills/ui-design/tests/e2e/runs/iteration-1/deck/execution_notes.md +21 -0
  251. package/skills/ui-design/tests/e2e/runs/iteration-1/deck/outputs/deck.html +451 -0
  252. package/skills/ui-design/tests/e2e/runs/iteration-1/deck/screenshots/slide-01.png +0 -0
  253. package/skills/ui-design/tests/e2e/runs/iteration-1/deck/screenshots/slide-02.png +0 -0
  254. package/skills/ui-design/tests/e2e/runs/iteration-1/review.md +79 -0
  255. package/skills/ui-design/tests/e2e/runs/iteration-1/webpage/checks/browser-check.json +26 -0
  256. package/skills/ui-design/tests/e2e/runs/iteration-1/webpage/checks/static-check.txt +2 -0
  257. package/skills/ui-design/tests/e2e/runs/iteration-1/webpage/execution_notes.md +20 -0
  258. package/skills/ui-design/tests/e2e/runs/iteration-1/webpage/outputs/index.html +534 -0
  259. package/skills/ui-design/tests/e2e/runs/iteration-1/webpage/screenshots/desktop.png +0 -0
  260. package/skills/ui-design/tests/e2e/runs/iteration-1/webpage/screenshots/mobile.png +0 -0
  261. package/skills/ui-design/tests/e2e/runs/nebula-console-iteration-1/checks/browser-check.json +64 -0
  262. package/skills/ui-design/tests/e2e/runs/nebula-console-iteration-1/checks/language-check.txt +7 -0
  263. package/skills/ui-design/tests/e2e/runs/nebula-console-iteration-1/checks/quick-validate.txt +1 -0
  264. package/skills/ui-design/tests/e2e/runs/nebula-console-iteration-1/checks/static-console.txt +2 -0
  265. package/skills/ui-design/tests/e2e/runs/nebula-console-iteration-1/checks/static-homepage.txt +2 -0
  266. package/skills/ui-design/tests/e2e/runs/nebula-console-iteration-1/outputs/console.html +600 -0
  267. package/skills/ui-design/tests/e2e/runs/nebula-console-iteration-1/outputs/homepage.html +556 -0
  268. package/skills/ui-design/tests/e2e/runs/nebula-console-iteration-1/prompt.md +29 -0
  269. package/skills/ui-design/tests/e2e/runs/nebula-console-iteration-1/review.md +57 -0
  270. package/skills/ui-design/tests/e2e/runs/nebula-console-iteration-1/screenshots/console-desktop.png +0 -0
  271. package/skills/ui-design/tests/e2e/runs/nebula-console-iteration-1/screenshots/console-mobile.png +0 -0
  272. package/skills/ui-design/tests/e2e/runs/nebula-console-iteration-1/screenshots/homepage-desktop.png +0 -0
  273. package/skills/ui-design/tests/e2e/runs/nebula-console-iteration-1/screenshots/homepage-mobile.png +0 -0
  274. package/skills/ui-design/tests/e2e/runs/obsidian-optics-iteration-1/checks/browser-check.json +33 -0
  275. package/skills/ui-design/tests/e2e/runs/obsidian-optics-iteration-1/checks/language-check.txt +6 -0
  276. package/skills/ui-design/tests/e2e/runs/obsidian-optics-iteration-1/checks/quick-validate.txt +1 -0
  277. package/skills/ui-design/tests/e2e/runs/obsidian-optics-iteration-1/checks/static-check.txt +2 -0
  278. package/skills/ui-design/tests/e2e/runs/obsidian-optics-iteration-1/outputs/index.html +682 -0
  279. package/skills/ui-design/tests/e2e/runs/obsidian-optics-iteration-1/prompt.md +13 -0
  280. package/skills/ui-design/tests/e2e/runs/obsidian-optics-iteration-1/review.md +59 -0
  281. package/skills/ui-design/tests/e2e/runs/obsidian-optics-iteration-1/screenshots/desktop.png +0 -0
  282. package/skills/ui-design/tests/e2e/runs/obsidian-optics-iteration-1/screenshots/mobile.png +0 -0
  283. package/skills/ui-design/tests/e2e/runs/obsidian-xui-screenshot-check-1/outputs/page-01.html +466 -0
  284. package/skills/ui-design/tests/e2e/runs/obsidian-xui-screenshot-check-1/outputs/page-02.html +433 -0
  285. package/skills/ui-design/tests/e2e/runs/obsidian-xui-screenshot-check-1/prompt.md +13 -0
  286. package/skills/ui-design/tests/e2e/runs/obsidian-xui-screenshot-check-1/screenshots/page-01/browser-check.json +49 -0
  287. package/skills/ui-design/tests/e2e/runs/obsidian-xui-screenshot-check-1/screenshots/page-01/desktop.png +0 -0
  288. package/skills/ui-design/tests/e2e/runs/obsidian-xui-screenshot-check-1/screenshots/page-01/mobile.png +0 -0
  289. package/skills/ui-design/tests/e2e/runs/obsidian-xui-screenshot-check-1/screenshots/page-02/browser-check.json +49 -0
  290. package/skills/ui-design/tests/e2e/runs/obsidian-xui-screenshot-check-1/screenshots/page-02/desktop.png +0 -0
  291. package/skills/ui-design/tests/e2e/runs/obsidian-xui-screenshot-check-1/screenshots/page-02/mobile.png +0 -0
  292. package/skills/ui-design/tests/e2e/runs/precision-horizon-iteration-1/checks/browser-check.json +49 -0
  293. package/skills/ui-design/tests/e2e/runs/precision-horizon-iteration-1/checks/language-check.txt +3 -0
  294. package/skills/ui-design/tests/e2e/runs/precision-horizon-iteration-1/checks/static-check.txt +2 -0
  295. package/skills/ui-design/tests/e2e/runs/precision-horizon-iteration-1/execution_notes.md +24 -0
  296. package/skills/ui-design/tests/e2e/runs/precision-horizon-iteration-1/outputs/index.html +723 -0
  297. package/skills/ui-design/tests/e2e/runs/precision-horizon-iteration-1/prompt.md +15 -0
  298. package/skills/ui-design/tests/e2e/runs/precision-horizon-iteration-1/review.md +26 -0
  299. package/skills/ui-design/tests/e2e/runs/precision-horizon-iteration-1/screenshots/desktop.png +0 -0
  300. package/skills/ui-design/tests/e2e/runs/precision-horizon-iteration-1/screenshots/mobile.png +0 -0
  301. package/skills/ui-design/tests/e2e/runs/precision-horizon-iteration-2/checks/browser-dark.json +49 -0
  302. package/skills/ui-design/tests/e2e/runs/precision-horizon-iteration-2/checks/browser-light.json +49 -0
  303. package/skills/ui-design/tests/e2e/runs/precision-horizon-iteration-2/checks/language-check.txt +11 -0
  304. package/skills/ui-design/tests/e2e/runs/precision-horizon-iteration-2/checks/static-dark.txt +2 -0
  305. package/skills/ui-design/tests/e2e/runs/precision-horizon-iteration-2/checks/static-light.txt +3 -0
  306. package/skills/ui-design/tests/e2e/runs/precision-horizon-iteration-2/execution_notes.md +23 -0
  307. package/skills/ui-design/tests/e2e/runs/precision-horizon-iteration-2/outputs/dark.html +392 -0
  308. package/skills/ui-design/tests/e2e/runs/precision-horizon-iteration-2/outputs/light.html +476 -0
  309. package/skills/ui-design/tests/e2e/runs/precision-horizon-iteration-2/prompt.md +23 -0
  310. package/skills/ui-design/tests/e2e/runs/precision-horizon-iteration-2/review.md +41 -0
  311. package/skills/ui-design/tests/e2e/runs/precision-horizon-iteration-2/screenshots/dark/desktop.png +0 -0
  312. package/skills/ui-design/tests/e2e/runs/precision-horizon-iteration-2/screenshots/dark/mobile.png +0 -0
  313. package/skills/ui-design/tests/e2e/runs/precision-horizon-iteration-2/screenshots/light/desktop.png +0 -0
  314. package/skills/ui-design/tests/e2e/runs/precision-horizon-iteration-2/screenshots/light/mobile.png +0 -0
  315. package/skills/ui-design/tests/e2e/runs/solar-relay-iteration-1/checks/browser-check.json +54 -0
  316. package/skills/ui-design/tests/e2e/runs/solar-relay-iteration-1/checks/language-check.txt +5 -0
  317. package/skills/ui-design/tests/e2e/runs/solar-relay-iteration-1/checks/quick-validate.txt +1 -0
  318. package/skills/ui-design/tests/e2e/runs/solar-relay-iteration-1/checks/static-check.txt +2 -0
  319. package/skills/ui-design/tests/e2e/runs/solar-relay-iteration-1/outputs/index.html +765 -0
  320. package/skills/ui-design/tests/e2e/runs/solar-relay-iteration-1/prompt.md +15 -0
  321. package/skills/ui-design/tests/e2e/runs/solar-relay-iteration-1/review.md +59 -0
  322. package/skills/ui-design/tests/e2e/runs/solar-relay-iteration-1/screenshots/desktop.png +0 -0
  323. package/skills/ui-design/tests/e2e/runs/solar-relay-iteration-1/screenshots/mobile.png +0 -0
  324. package/skills/ui-design/tests/e2e/runs/verdant-grid-preview-1/outputs/index.html +508 -0
  325. package/skills/ui-design/tests/e2e/runs/verdant-grid-preview-1/screenshots/browser-check.json +49 -0
  326. package/skills/ui-design/tests/e2e/runs/verdant-grid-preview-1/screenshots/desktop.png +0 -0
  327. package/skills/ui-design/tests/e2e/runs/verdant-grid-preview-1/screenshots/mobile.png +0 -0
  328. package/skills/ui-design/tests/e2e/runs/violet-meridian-iteration-1/checks/browser-check.json +54 -0
  329. package/skills/ui-design/tests/e2e/runs/violet-meridian-iteration-1/checks/language-check.txt +6 -0
  330. package/skills/ui-design/tests/e2e/runs/violet-meridian-iteration-1/checks/quick-validate.txt +1 -0
  331. package/skills/ui-design/tests/e2e/runs/violet-meridian-iteration-1/checks/static-check.txt +2 -0
  332. package/skills/ui-design/tests/e2e/runs/violet-meridian-iteration-1/outputs/index.html +788 -0
  333. package/skills/ui-design/tests/e2e/runs/violet-meridian-iteration-1/prompt.md +14 -0
  334. package/skills/ui-design/tests/e2e/runs/violet-meridian-iteration-1/review.md +60 -0
  335. package/skills/ui-design/tests/e2e/runs/violet-meridian-iteration-1/screenshots/desktop.png +0 -0
  336. package/skills/ui-design/tests/e2e/runs/violet-meridian-iteration-1/screenshots/mobile.png +0 -0
  337. package/skills/video-compose/SKILL.md +8 -1
  338. package/skills/web-crawler/SKILL.md +70 -0
  339. package/skills/web-crawler/scripts/crawl.mjs +538 -0
  340. package/skills/web-crawler/scripts/crawl.test.mjs +204 -0
  341. package/skills/xlsx/SKILL.md +12 -0
  342. package/skills/xlsx/scripts/opc_check.py +253 -0
  343. package/src/advisorState.js +22 -0
  344. package/src/askBridge.js +87 -3
  345. package/src/bootstrap/workingDir.js +12 -1
  346. package/src/cli/args.js +17 -1
  347. package/src/cli/configMenu.js +236 -0
  348. package/src/cli/configWizard.js +7 -5
  349. package/src/cli/print.js +37 -4
  350. package/src/cli/streamJson.js +77 -24
  351. package/src/cli/wizards/advisorWizard.js +147 -0
  352. package/src/cli/wizards/fieldForm.js +149 -0
  353. package/src/cli/wizards/imageWizard.js +60 -0
  354. package/src/cli/wizards/openRouterWizard.js +23 -0
  355. package/src/cli/wizards/providerPresets.js +95 -0
  356. package/src/cli/wizards/providerWizard.js +219 -0
  357. package/src/cli/wizards/searchWizard.js +23 -0
  358. package/src/cli/wizards/ttsWizard.js +34 -0
  359. package/src/config/configFile.js +441 -83
  360. package/src/config/configService.js +446 -0
  361. package/src/config.js +24 -64
  362. package/src/context/agentHome.js +9 -0
  363. package/src/context/archive.js +3 -2
  364. package/src/context/compact.js +8 -5
  365. package/src/context/contextLock.js +81 -0
  366. package/src/context/persistContext.js +30 -11
  367. package/src/context/reactiveCompact.js +4 -2
  368. package/src/context/recentDirs.js +21 -61
  369. package/src/context/sessionPath.js +97 -23
  370. package/src/context/sessionRegistry.js +303 -24
  371. package/src/context/tokenCounter.js +18 -0
  372. package/src/context/workspaceIndex.js +731 -0
  373. package/src/infra/verification.js +3 -2
  374. package/src/llm/client.js +293 -206
  375. package/src/llm/providers/anthropicFormat.js +241 -0
  376. package/src/llm/providers/openaiFormat.js +190 -0
  377. package/src/loop.js +211 -27
  378. package/src/main.js +61 -11
  379. package/src/messageQueue.js +97 -0
  380. package/src/multimodal.js +203 -0
  381. package/src/plugin-sdk.js +15 -0
  382. package/src/plugins/commandRouter.js +3 -0
  383. package/src/plugins/hookEngine.js +5 -1
  384. package/src/plugins/pluginLifecycle.js +28 -0
  385. package/src/plugins/pluginRunner.js +40 -0
  386. package/src/plugins/transcript.js +4 -3
  387. package/src/prompts/pluginList.js +2 -2
  388. package/src/prompts/projectInstructions.js +3 -3
  389. package/src/prompts/promptAssembly.js +133 -109
  390. package/src/prompts/skillList.js +12 -22
  391. package/src/session/runAgentTurn.js +70 -0
  392. package/src/session/runTurn.js +41 -6
  393. package/src/toolGate.js +17 -0
  394. package/src/tools/advisor/advisor.js +379 -0
  395. package/src/tools/agent/agent.js +555 -0
  396. package/src/tools/agent/agentTypes.js +59 -0
  397. package/src/tools/agent/coordinator.js +93 -0
  398. package/src/tools/agent/worktree.js +270 -0
  399. package/src/tools/ask/ask.js +7 -2
  400. package/src/tools/bash/bash.js +112 -18
  401. package/src/tools/download/download.js +144 -0
  402. package/src/tools/edit/edit.js +1 -0
  403. package/src/tools/edit/multi-edit.js +1 -0
  404. package/src/tools/genimage/genimage.js +242 -0
  405. package/src/tools/genspeech/genspeech.js +67 -0
  406. package/src/tools/glob/glob.js +1 -0
  407. package/src/tools/grep/grep.js +3 -0
  408. package/src/tools/grep/rgPath.js +2 -0
  409. package/src/tools/index.js +25 -2
  410. package/src/tools/read/read.js +1 -0
  411. package/src/tools/shared/killTree.js +52 -0
  412. package/src/tools/toolProgressBridge.js +48 -0
  413. package/src/tools/webbrowser/agentBrowserPath.js +258 -0
  414. package/src/tools/webbrowser/browser.js +59 -42
  415. package/src/tools/webbrowser/browserControl.js +118 -0
  416. package/src/tools/webbrowser/browserDaemon.js +97 -0
  417. package/src/tools/webbrowser/browserService.js +27 -0
  418. package/src/tools/webbrowser/browserStream.js +119 -0
  419. package/src/tools/webbrowser/webbrowser.js +699 -130
  420. package/src/tools/webfetch/webfetch.js +1 -0
  421. package/src/tools/websearch/websearch.js +134 -51
  422. package/src/tools/write/write.js +1 -0
  423. package/src/ui/App.js +249 -22
  424. package/src/ui/AskQuestion.js +19 -17
  425. package/src/ui/InputBox.js +34 -9
  426. package/src/ui/LiveArea.js +112 -19
  427. package/src/ui/MessageList.js +100 -14
  428. package/src/ui/ModelPicker.js +56 -0
  429. package/src/ui/QueuedMessagesBanner.js +14 -0
  430. package/src/ui/Root.js +18 -10
  431. package/src/ui/SessionPicker.js +102 -0
  432. package/src/ui/StatusLine.js +13 -4
  433. package/src/ui/WorkspacePicker.js +55 -0
  434. package/src/ui/figures.js +44 -0
  435. package/src/ui/hooks/askSlot.js +82 -0
  436. package/src/ui/hooks/useChat.js +345 -64
  437. package/src/ui/hooks/usePasteHandler.js +11 -1
  438. package/src/ui/hooks/useTextBuffer.js +1 -3
  439. package/src/ui/liveViewport.js +5 -1
  440. package/src/ui/markdown.js +206 -0
  441. package/src/ui/textBuffer.js +0 -7
  442. package/src/ui/theme.js +32 -0
  443. package/src/utils/debugLog.js +0 -4
  444. package/src/utils/resourcePaths.js +2 -2
  445. package/src/utils/stripThink.js +50 -0
  446. package/src/web/browserBridge.js +447 -0
  447. package/src/web/protocol.js +19 -0
  448. package/workflows/adaptive-research.yaml +9 -2
  449. package/workflows/book-review-short.yaml +31 -7
  450. package/workflows/e2e-write-greet.yaml +3 -0
  451. package/workflows/illustrate.yaml +227 -0
  452. package/workflows/plan.yaml +437 -207
  453. package/workflows/ppt.yaml +1659 -0
  454. package/workflows/ralph-loop.yaml +142 -112
  455. package/workflows/schema.json +81 -23
  456. package/workflows/webppt.yaml +496 -0
  457. package/workflows/word.yaml +710 -0
  458. package/workflows/youtube-shorts.yaml +38 -10
  459. package/MINIMAL-TRACE.md +0 -77
  460. package/plugins/workflow-runner/src/voteHelpers.js +0 -110
  461. package/skills/config/SKILL.md +0 -123
  462. package/skills/frontend-design/LICENSE.txt +0 -177
  463. package/skills/frontend-design/SKILL.md +0 -42
  464. package/skills/pptx/scripts/office/__pycache__/soffice.cpython-314.pyc +0 -0
  465. package/src/ui/ProgressPanel.js +0 -54
  466. package/src/ui/StreamingBlock.js +0 -11
  467. package/src/ui/ToolStatus.js +0 -11
@@ -0,0 +1,139 @@
1
+ # Obsidian Optics VI 模板
2
+
3
+ 当用户需要“深色摄影器材、电影机、影像科技、黑白红、专业硬件、录制信号”这类前端设计方向,或明确提到“Obsidian Optics / 黑曜影像”时,使用这个模板。它是“器材影像作背景 / 主角、参数与录制信号浮前景、规格走图表与时间码”的暗场编辑式版式,最适合影像器材详情页 / 发布页 / 控制台 / HTML deck。
4
+
5
+ 这是原创视觉系统模板,不是任何真实摄影品牌的复刻。用户提到红龙摄像机、电影机或类似高端影像设备时,只迁移“黑白红、精密工业、录制信号、光学科技”的方向;不要复用真实品牌名称、标识、商标、专有字形、产品名或独特 UI。
6
+
7
+ ## 视觉定位
8
+
9
+ > **遵循 SKILL.md 的「★ 编辑式最高原则」**:图作背景 / 主角、文字浮前景、数据用图表、特写用插图,不堆卡海。本模板的「电影机控制台」气质天然就是编辑式:器材影像 / 镜头光学画面(客户图 / AI 渲染 / 黑石墨冷光底)出血铺底,标题、核心卖点、录制信号与时间码直接浮在画面上,分辨率/帧率/动态范围等规格走图表(柱/进度环/参数胶囊)与时间码,镜头/接口/材质走特写插图。面板只保留为「图表 / 参数面板浮背景」的例外,不是黑底模块化卡墙。
10
+
11
+ - **气质**:精密、锋利、专业、轻科技、高端影像硬件。
12
+ - **情绪**:像一台待命的电影机控制台,有录制前的专注感,但不压抑。
13
+ - **核心原则**:黑不是一片纯黑,而是分层暗面、金属边缘、镜头玻璃高光和红色信号点。
14
+ - **第一印象**:冷静、昂贵、可控、参数清楚,有工业感但不笨重。
15
+
16
+ ## 色彩 token
17
+
18
+ 以下作为起始色盘。可以根据用户领域微调红色或冷光色,但不要破坏“黑白主体 + 少量红色信号 + 光学冷光”的结构。
19
+
20
+ ```css
21
+ :root {
22
+ --ink: #f4f5f6; /* 冷白:主文字 */
23
+ --ink-soft: #d8dde3; /* 次级标题 */
24
+ --muted: #8c939d; /* 雾灰:辅助文字 */
25
+ --paper: #07080a; /* 深背景 */
26
+ --surface: #101216; /* 主面板 */
27
+ --surface-raised: #171a20; /* 抬升面板 */
28
+ --surface-metal: #20242b; /* 金属暗面 */
29
+ --line: rgba(244, 245, 246, 0.12);
30
+ --line-strong: rgba(244, 245, 246, 0.22);
31
+ --accent: #e21b2d; /* 信号红:录制、选中、关键行动 */
32
+ --accent-deep: #7b0f18; /* 暗红:深层警示、阴影 */
33
+ --optic: #b9c7d6; /* 镜头冷光 */
34
+ --shadow: rgba(0, 0, 0, 0.42);
35
+ }
36
+ ```
37
+
38
+ ### 色彩使用
39
+
40
+ - `--ink` 用于主标题、关键参数和按钮文字,保证深色背景上的阅读。
41
+ - `--paper` 不能铺成死黑,必须配合石墨微渐变、冷光和细线层级。
42
+ - `--surface` 与 `--surface-raised` 用于面板层级,面板之间靠明度和边线区分。
43
+ - `--accent` 只用于录制点、选中状态、关键 CTA、进度线和少量状态标记。
44
+ - `--accent-deep` 用于红色暗部,不要做大面积红色背景。
45
+ - `--optic` 用于镜头高光、焦平面线、冷色边缘和参数辅助信号。
46
+
47
+ ### 数据可视化分类色(图表/点缀,与本 VI 协调)
48
+
49
+ 本 VI 近乎黑 + 信号红的精密工业调,图表(柱/饼/折线/进度环)仍需**可区分的数据系列色**,别全用强调红一种(见 `layout-composition.md` §0.9 配色解耦)。
50
+ 分类色保持冷静、克制(红 + 冷光系,深背景上都可读),按系列数依次取用:
51
+
52
+ `#e21b2d 信号红` · `#b9c7d6 镜头冷光` · `#4a90c2 冷蓝` · `#d8a13a 琥珀` · `#5fae8c 青绿` · `#8c939d 雾灰`
53
+
54
+ 单系列图(单进度环/单柱)用 `accent` `#e21b2d` 一色即可;多系列按上面顺序取。A 路线插图以画面真实色为准、不受此约束,只需与 VI 协调不冲突。
55
+
56
+ ## 渐变与材质
57
+
58
+ - 背景使用黑到石墨的微渐变,叠加非常轻的冷光,让页面有深度但不脏。
59
+ - 面板使用低对比金属渐变:上缘略亮、下缘更暗,配合 1px 细边框。
60
+ - 红色用于“信号”,不是“主题底色”。任何大面积红色都会让界面变重。
61
+ - 镜头/光学母题可用圆环、刻度、焦平面线、红色录制点、窄线栅格。
62
+ - 阴影要深但薄,像设备缝隙,不要做厚重卡片阴影。
63
+
64
+ ## 字体与排版
65
+
66
+ - 中文标题硬朗但不能过粗,建议字重 750-850;不要使用负字距。
67
+ - H1 上限建议 72-84px,适合硬件官网;控制在 2-4 行,避免中文单字孤行。
68
+ - 正文使用冷灰,字号建议 15-17px,暗色背景下不要用小号浅灰长段落。
69
+ - 参数标签、规格、时间码可使用等宽字体栈:`"SFMono-Regular", "Cascadia Mono", "Roboto Mono", monospace`。
70
+ - 英文缩写如 ISO、FPS、RAW、HDR 可以保留;解释性文案仍使用简体中文。
71
+
72
+ 推荐尺度:
73
+
74
+ ```css
75
+ h1 {
76
+ font-size: clamp(42px, 6vw, 76px);
77
+ line-height: 0.98;
78
+ letter-spacing: 0;
79
+ }
80
+
81
+ .spec-label {
82
+ font-family: "SFMono-Regular", "Cascadia Mono", "Roboto Mono", monospace;
83
+ font-size: 12px;
84
+ letter-spacing: 0.08em;
85
+ color: var(--muted);
86
+ }
87
+ ```
88
+
89
+ ## 结构语言
90
+
91
+ 这个模板适合展示专业影像设备和影像工作流。版式遵循编辑式:器材影像作背景 / 主角,参数与状态浮前景,规格走图表而非堆卡。
92
+
93
+ - **主机位首屏**:器材影像或精密设备视觉母题铺底,一个强标题、少量核心卖点浮在画面前景。
94
+ - **参数视觉化**:分辨率、帧率、动态范围、接口、电池、存储等规格用图表(柱/进度环/参数胶囊浮背景)+ 时间码呈现,不堆参数表格或参数卡墙。
95
+ - **录制状态**:红色点、时间码、状态线、进度条直接浮在器材背景上,红色面积必须克制。
96
+ - **镜头环/刻度**:用于建立光学识别,不需要真实镜头图也能有器材感。
97
+ - **机身模块拼接(罕见例外)**:仅当真·并列规格矩阵时,才把它做成边缘锐利的图表化指标面板浮在背景上(圆角 6-10px),不是默认的黑底分区卡墙。
98
+ - **暗色按钮**:主按钮可用红色或冷白描边,次按钮用暗面板和细边框。
99
+
100
+ ## 视觉母题
101
+
102
+ 选择一个轻量母题并持续复用:
103
+
104
+ - 录制红点:表达待命、捕捉、关键行动。
105
+ - 镜头圆环:表达光学、焦距、传感器、监看。
106
+ - 焦平面线:表达精度、画幅、构图。
107
+ - 参数栅格:表达专业控制、硬件规格。
108
+ - 金属边缘高光:表达设备质感,不要变成重金属纹理。
109
+
110
+ ## 适用场景
111
+
112
+ 适合:
113
+
114
+ - 摄影器材、电影机、镜头、稳定器、监看工具
115
+ - 影像工作流、调色工具、素材管理、创作者硬件
116
+ - 专业设备官网、产品发布页、控制台、HTML deck
117
+ - 需要黑白红、精密、科技、硬件可信度的界面
118
+
119
+ 不适合:
120
+
121
+ - 轻消费 SaaS、儿童娱乐、生活方式、电商软装
122
+ - 医疗、金融、教育等需要柔和信任感的场景
123
+ - 强游戏化、赛博朋克、霓虹夜店风页面
124
+ - 需要大面积彩色插画或温暖亲和感的品牌
125
+
126
+ ## 迁移方式
127
+
128
+ 复用模板时:
129
+
130
+ 1. 先明确用户任务里的“设备、参数、状态、动作、输出”分别是什么。
131
+ 2. 保留黑白主体和少量红色信号,禁止把红色扩展成大面积背景。
132
+ 3. 用石墨渐变、冷光、边线和参数模块减轻纯黑压迫感。
133
+ 4. 所有内容都要重写到新领域,不能残留电影机样例参数,除非任务就是摄影器材。
134
+ 5. 移动端减少装饰刻度和过密参数,优先保证黑底白字对比和点击目标。
135
+ 6. 截图确认:页面是否高端、科技、专业、不沉重;红色是否像信号而不是情绪涂层。
136
+
137
+ ## 质量标准
138
+
139
+ 一个成功的 Obsidian Optics 变体应该像专业影像设备的现代控制界面:黑白有层次,红色有纪律,参数有秩序,整体锋利但不压迫。检验标准是:用户能快速识别它属于高端影像/硬件领域,同时愿意长时间阅读其中的参数与说明。
@@ -0,0 +1,143 @@
1
+ # `Obsidian XUI` VI 模板
2
+
3
+ 中文名:黑曜界面。
4
+
5
+ 当用户需要“黑色科技、XUI、科幻质感、深色科技编辑式、渐变光、精密线框、HUD 灵感、工业数据可视化、科技感更强”这类前端设计方向,或明确提到 `Obsidian XUI / 黑曜界面` 时,使用这个模板。**它是比 `Nebula Console` 更黑更锋利的「深色科技编辑式数据可视化」**——极黑背景作底、强中文标题与论点文字浮前景、数据用图表(柱/饼/折线/进度环/指标条)说话、系统关系用精密线框拓扑,**不是把屏幕铺成发光数据卡片矩阵 / HUD 卡海的数据大屏界面**。慎用于:需要密集行操作的真后台软件、长文内容站、温暖消费品牌。
6
+
7
+ 这是面向真实网页、产品官网和演示 artifact 的原创视觉系统,不是电影道具或游戏界面。可以借鉴黑色 XUI、未来显示器、扫描线、精密边框和发光数据节点的**质感**,但版式服务中文阅读、按钮可点、信息层级清楚,不堆 HUD 卡海。
8
+
9
+ > **遵循 `SKILL.md` 的编辑式最高原则**:图作背景、文字浮前景、数据用图表、特写用插图,**数据大屏 / 控制台型的数据面板也是图表 / 指标面板浮在极黑背景上、不是发光卡片矩阵**。本模板下出现的「面板」仅作为「图表 / 指标 / 线框拓扑浮背景」的容器,不用来按玻璃卡 / HUD 卡分区。
10
+
11
+ ## 视觉定位
12
+
13
+ - **气质**:黑色、锋利、精密、未来、系统在线、科技强度高。
14
+ - **情绪**:像一个高端设备或智能系统的核心控制界面,深色空间里有渐变光、透明层、线框和数据流,但用户仍能清楚读字和操作。
15
+ - **核心原则**:科幻感来自“深色层级 + 渐变光 + 半透明面板 + 精密线框 + 高对比文字”,不是把文字放到花背景上。
16
+ - **第一印象**:高级、冷静、强科技、可控,而不是廉价蓝光大屏、游戏 HUD 或满屏装饰线。
17
+
18
+ ## 色彩 token
19
+
20
+ 以下作为起始色盘。黑色是主体;青蓝是主信号;紫蓝和绿光只做点缀;红橙只用于告警。
21
+
22
+ ```css
23
+ :root {
24
+ --ink: #f2f7ff; /* 主文字冷白 */
25
+ --ink-soft: #d5e2f2; /* 次级标题 */
26
+ --muted: #91a3b7; /* 辅助文字 */
27
+ --paper: #03050a; /* 深黑背景 */
28
+ --paper-blue: #060d18; /* 蓝黑渐变底 */
29
+ --surface: rgba(10, 18, 30, 0.82); /* 稳定深色阅读面 */
30
+ --surface-glass: rgba(16, 32, 52, 0.62); /* 半透明玻璃面 */
31
+ --surface-raised: rgba(24, 42, 66, 0.88); /* 抬升控制面 */
32
+ --line: rgba(148, 213, 255, 0.18);
33
+ --line-strong: rgba(148, 213, 255, 0.40);
34
+ --accent: #33b8ff; /* 电光蓝:主行动、选中 */
35
+ --signal: #2ee8d6; /* 青蓝:在线、连接、流动 */
36
+ --matrix: #8dffb4; /* 少量绿光:校验、通过 */
37
+ --violet: #8b5cf6; /* 紫蓝:空间深度、AI 状态 */
38
+ --amber: #f5b84b; /* 告警 */
39
+ --danger: #ff4d5e; /* 风险 */
40
+ --shadow: rgba(0, 10, 28, 0.62);
41
+ }
42
+ ```
43
+
44
+ ### 色彩使用
45
+
46
+ - `--paper` 与 `--paper-blue` 用于大背景,必须有低对比渐变,不要纯黑死板。
47
+ - `--surface` 是正文和长信息的默认承载层。所有正文、表格、说明文本都必须落在稳定深色面上。
48
+ - `--surface-glass` 用于浮层、状态条、工具栏和短信息面板;透明度不能低到影响可读。
49
+ - `--accent` 用于主按钮、选中状态、关键节点和高亮边框。
50
+ - `--signal` 用于在线、连接、流动、同步和数据传输。
51
+ - `--matrix` 只用于通过、校验、健康状态和少量代码感信号,不做大面积绿色。
52
+ - `--violet` 只做 AI、预测、空间深度和渐变边缘,不做主色。
53
+ - `--amber` / `--danger` 只用于告警和风险,不做装饰。
54
+
55
+ ### 数据可视化分类色(图表/点缀,与本 VI 协调)
56
+
57
+ 图表(柱/饼/折线/进度环)与辅助图形要用**可区分的数据系列色**,别全用电光蓝一种(见 `layout-composition.md` §0.9 配色解耦)。
58
+ 本 VI 现成分类色序列(深黑背景上的高对比科技色,彼此分得开),按系列数依次取用:
59
+
60
+ `#33b8ff 电光蓝` · `#2ee8d6 青蓝` · `#8dffb4 绿光` · `#8b5cf6 紫蓝` · `#f5b84b 琥珀` · `#ff4d5e 风险红`
61
+
62
+ 单系列图(单进度环/单柱)用 `accent` `#33b8ff` 一色即可;多系列按上面顺序取。A 路线插图以画面真实色为准,只需与深色科技底协调。
63
+
64
+ ## 渐变与材质
65
+
66
+ - 背景使用黑到蓝黑的纵深渐变,可以叠加少量斜向电光蓝/紫蓝径向光。
67
+ - 主面板使用“半透明外层 + 稳定内层阅读面”的双层结构:外层负责科幻感,内层负责文字对比。
68
+ - 边缘高光使用 1px 冷蓝线、角标、短切线和内阴影,不做厚重霓虹边框。
69
+ - 扫描线和网格透明度要低,通常不超过 0.08;它们只服务空间感和对齐,不承载主体美感。
70
+ - 渐变必须有方向:背景纵深、按钮行动、状态流动、节点连接。不要把蓝紫青绿混成脏雾。
71
+
72
+ ## 可读性铁律
73
+
74
+ - 正文、表格、注释、按钮文字必须达到高对比;不要把文字直接放在复杂光效、网格或动态图层上。
75
+ - 任何半透明面板中,如果背景细节穿透导致阅读变脏,必须增加内层 `rgba(3, 5, 10, 0.72+)` 或实色遮罩。
76
+ - 暗色背景下正文不低于 15px,行高不低于 1.55;辅助文字不要低于 `#91a3b7` 的对比水平。
77
+ - H1 可以发光或用渐变描边,但可读文字本体必须是冷白或接近白色。
78
+ - 移动端减少扫描线、网格、背景光和浮层数量,优先保证标题、按钮和关键指标清楚。
79
+
80
+ ## 字体与排版
81
+
82
+ - 中文优先使用系统无衬线栈:`"PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", "Inter", sans-serif`。
83
+ - 标题硬朗但不做赛博朋克字形;字重 750-850,字距保持 0。
84
+ - H1 建议 44-76px;移动端 36-48px;不要出现单字孤行。
85
+ - 正文 15-17px,行高 1.55-1.65。
86
+ - 参数、时间码、设备编号、节点 ID 可使用等宽字体栈:`"SFMono-Regular", "Cascadia Mono", "Roboto Mono", monospace`。
87
+ - 短标签可以全大写英文缩写,但解释性文案必须简体中文。
88
+
89
+ ## 结构语言
90
+
91
+ 这个模板适合高科技产品官网、工业数据可视化、AI 系统、空间/机器人/安全/工业产品的展示与 deck。**版式走深色科技编辑式**:极黑背景作底、一屏一件事,数据交给图表、论点交给前景浮层文字、系统关系交给精密线框拓扑,**不靠发光数据卡片矩阵 / 网格 / HUD 卡海 / 对比表格划分区域**。
92
+
93
+ - **黑色主舞台**:全局深黑,强标题与论点文字浮在前景,背景层负责纵深与质感。
94
+ - **数据图表(替代发光卡片矩阵)**:指标、状态、负载用柱/饼/折线/进度环/指标条画出来,做成**浮在极黑背景上的图表 / 指标面板**,XUI 质感(半透明边框、角标、短切线、状态灯、微弱内发光)只作这些图表/指标容器的边框语言;**不排成一片发光数据卡矩阵或 div 对比表**。真·并列指标矩阵也以指标面板/图表呈现。
95
+ - **线框拓扑与节点**:用精密线框、节点、短标签表达系统连接,不做无意义雷达,也不退化成卡片网格。
96
+ - **数据轨道**:进度、扫描、流动状态用细线、进度环和小面积渐变,不铺满。
97
+ - **要点前景浮层**:特性、能力要点直接浮在背景上(参数胶囊 / 对比列),不装进玻璃/HUD 卡分区;要特写时插透明背景前景插图。
98
+ - **告警状态**:琥珀/红色只在异常状态出现,保持克制。
99
+ - **行动按钮**:主按钮电光蓝或青蓝渐变,按钮高度不低于 44px,文字清楚。
100
+
101
+ 少量必要的图表/指标容器圆角建议 6-12px、越密集越方正;官网首屏可用 12-16px。不要套普通 SaaS 大圆角卡片,不要把所有模块都做成同一种透明玻璃,更不要把屏幕铺成发光卡片矩阵——容器只作图表/指标/拓扑的载体。
102
+
103
+ ## 视觉母题
104
+
105
+ 选择一个母题并持续复用:
106
+
107
+ - 深层控制台:背景、主面、浮层、状态面四级分层。
108
+ - 精密线框:角标、切线、测量线、分区线。
109
+ - 数据航道:流动线、节点、脉冲、路径追踪。
110
+ - 透明装甲:半透明外层 + 稳定内层阅读面。
111
+ - 校验矩阵:少量绿光表示通过、健康和系统稳定。
112
+
113
+ 不要使用满屏十字准星、假雷达、复杂无意义 HUD、闪烁动画、密集随机数字雨或过度霓虹。XUI 的高级感来自克制和结构,不来自堆效果。
114
+
115
+ ## 适用场景
116
+
117
+ 适合:
118
+
119
+ - AI 系统、工业软件、机器人系统、空间科技、网络安全的官网与展示
120
+ - 工业数据可视化、数字孪生、设备能力 deck、黑色科技官网
121
+ - 需要比 `Nebula Console` 更强 XUI 科幻质感的编辑式数据 artifact
122
+
123
+ 不适合:
124
+
125
+ - 需要密集行操作、增删改查的真后台软件 / 监控控制台界面(编辑式不擅长)
126
+ - 长文内容站、温暖消费产品、医疗信任场景、儿童娱乐
127
+ - 严肃政务报告、传统金融报告、生活方式品牌
128
+ - 需要白底高可读或大量文档型阅读的页面
129
+
130
+ ## 迁移方式
131
+
132
+ 复用模板时:
133
+
134
+ 1. 先明确系统对象:设备、模型、节点、任务、风险、控制动作。
135
+ 2. 先声明层级:背景光、前景文字浮层、图表/指标面板、线框拓扑、状态光分别承担什么信息;数据进图表、要点进前景浮层,不铺发光卡矩阵。
136
+ 3. 把最重要文字浮在前景、放在稳定深色阅读面上,装饰光和网格退到底层;数据交给图表/指标面板而非排成卡片网格。
137
+ 4. 用青蓝/电光蓝表达正常系统动作,用琥珀/红色表达异常,用紫蓝表达 AI/预测。
138
+ 5. 移动端减少 HUD 线条,只保留标题、状态、关键指标和行动按钮。
139
+ 6. 截图确认:是否黑色有层次,文字是否清楚,渐变是否有方向,是否过度像游戏界面或电影道具。
140
+
141
+ ## 质量标准
142
+
143
+ 成功的 `Obsidian XUI` 变体应该像真实高科技系统的产品官网 / 数据可视化 deck:黑色深而不死,透明有边界,发光有纪律,文字始终清楚浮在前景,**数据用图表说话、要点用前景浮层文字、系统关系用精密线框拓扑,而不是一片发光数据卡片矩阵 / HUD 卡海**。用户第一眼感到强科技和系统在线,第二眼能明确读懂状态、风险、动作和下一步,且每组数据都以图表/指标面板而非卡海呈现。
@@ -0,0 +1,117 @@
1
+ # `Precision Horizon Dark` VI 模板
2
+
3
+ 当用户需要“深色产品官网、专业硬件发布页、高性能设备、黑色产品剧场、类似 iPhone Pro / MacBook Pro 深色产品详情页那种图文融合气质”这类前端设计方向,或明确提到 `Precision Horizon Dark / 精密地平线深色版` 时,使用这个模板。它天生就是“产品边缘光作主角、文字与大参数浮前景”的暗场编辑式版式,最适合专业产品详情页 / 发布页 / 产品介绍 deck。
4
+
5
+ 这是 `Precision Horizon / 精密地平线` 的深色版本,专门处理高端专业产品的暗色发布感。它不是 Apple、DJI 或任何真实品牌的复刻。可以学习“黑色剧场、产品边缘光、暖橙/深蓝材质色、性能参数冲击”的方法,但不能复制真实品牌名称、标识、字体、产品摄影、页面结构、文案、图标或专有 UI。
6
+
7
+ ## 视觉定位
8
+
9
+ > **遵循 SKILL.md 的「★ 编辑式最高原则」**:图作背景 / 主角、文字浮前景、数据用图表、特写用插图,不堆卡海。深色版的「黑色剧场 + 产品边缘光」天然就是编辑式:产品(客户图 / AI 渲染 / 暖黑·深蓝黑材质光底)出血铺底,短标题、大参数与收益句直接浮在产品边缘光上,性能数据走大数字 + 图表(柱/进度环/芯片面板),材质走接口/散热/屏幕特写插图。深色面板只保留为「图表 / 指标面板浮背景」的例外,不是黑底分区卡墙。
10
+
11
+ - **气质**:专业、强性能、沉浸、高端、锋利,但不能沉闷。
12
+ - **情绪**:像一台专业设备在黑色摄影棚里被灯光扫过,性能、散热、屏幕和材质都被精准展示。
13
+ - **核心原则**:深色版靠“黑色层级 + 产品边缘光 + 材质强调色 + 大参数”建立发布感,不靠赛博朋克装饰。
14
+ - **第一印象**:强、稳、贵、专业,有暗场戏剧性,但中文仍然清楚。
15
+
16
+ ## 色彩 token
17
+
18
+ ```css
19
+ :root {
20
+ --ink: #f5f5f7; /* 主文字冷白 */
21
+ --ink-soft: #d8dbe2; /* 次级标题 */
22
+ --muted: #9a9fa8; /* 辅助文字 */
23
+ --paper: #050506; /* 主背景黑 */
24
+ --paper-warm: #120b08; /* 暖黑,用于橙色产品 */
25
+ --paper-blue: #070b14; /* 深蓝黑,用于屏幕/芯片 */
26
+ --surface: #111217; /* 主面板 */
27
+ --surface-raised: #1a1d24; /* 抬升面板 */
28
+ --line: rgba(245, 245, 247, 0.16);
29
+ --line-strong: rgba(245, 245, 247, 0.28);
30
+ --accent: #ff7a1a; /* 暖橙:产品材质、主行动 */
31
+ --accent-blue: #2f8cff; /* 深色屏幕蓝 */
32
+ --accent-red: #ff3b4f; /* 专业警示/录制信号,低面积 */
33
+ --accent-violet: #8b5cf6; /* 屏幕/智能能力点缀 */
34
+ --metal: #c7ccd5;
35
+ --graphite: #545b66;
36
+ --shadow: rgba(0, 0, 0, 0.55);
37
+ }
38
+ ```
39
+
40
+ ## 配色变化
41
+
42
+ - **黑橙性能版**:黑底、暖黑渐变、橙色材质光。适合高性能手机、电脑、芯片、专业设备。
43
+ - **黑蓝影像版**:黑底、深蓝屏幕光、冷白文字。适合影像、显示、AI、创作工具。
44
+ - **黑银工艺版**:黑底、银色产品边缘、低饱和强调色。适合高端硬件、音频、精密仪器。
45
+ - **黑红录制版**:黑底、少量红色信号。只适合录制、影像、专业状态,不要大面积红。
46
+
47
+ ### 数据可视化分类色(图表/点缀,与本 VI 协调)
48
+
49
+ 图表(柱/饼/折线/进度环)与辅助图形要用**可区分的数据系列色**,别全用暖橙一种(见 `layout-composition.md` §0.9 配色解耦)。
50
+ 本 VI 现成分类色序列(黑色产品剧场上高可读,保留专业硬件质感),按系列数依次取用:
51
+
52
+ `#ff7a1a 暖橙` · `#2f8cff 深色屏幕蓝` · `#ff3b4f 录制红` · `#8b5cf6 智能紫` · `#c7ccd5 金属银` · `#1f9d78 状态绿`
53
+
54
+ 单系列图(单进度环/单柱)用 `accent` `#ff7a1a` 一色即可;多系列按上面顺序取。A 路线产品插图和场景图以产品本色、材质光和屏幕色为准,不强行染成橙色。
55
+
56
+ ## 渐变与材质
57
+
58
+ - 背景至少有 2 层暗面:主黑、石墨暗面、局部暖黑或深蓝光。
59
+ - 产品周围要有边缘光、反射或屏幕亮面,让黑色产品能从黑底中分离出来。
60
+ - 暖橙、蓝、红只用于材质光、关键参数、按钮、屏幕内容或状态点。
61
+ - 不要堆深色卡片墙。深色版更适合产品大图作背景 + 大标题、大参数与少量说明浮前景;要用面板时只用于承载图表或指标面板浮在产品背景上。
62
+ - 不使用满屏网格、霓虹线框、科幻 HUD 或游戏界面语言,除非用户明确要求。
63
+
64
+ ## 字体与排版
65
+
66
+ - 中文标题用冷白或暖白,字重要稳,不能过细。
67
+ - H1 桌面建议 56-84px;移动端控制在 40-54px。深色页可以有冲击力,但不能让中文挤压、断裂或单字孤行。
68
+ - 正文 16-18px,辅助文字不能低于可读对比。
69
+ - 参数数字可以更大、更有冲击,配短单位和一句收益解释。
70
+ - 渐变文字可以使用暖橙到金色、蓝到紫,但只用于 1 个短关键词或一句短标题。
71
+
72
+ ### 中文断行与图文安全区
73
+
74
+ - 深色版的标题通常更粗更亮,更容易显得拥挤。每个大标题都要检查桌面和移动端断行,禁止最后一行只剩单个汉字或标点。
75
+ - 优先把标题拆成语义完整的两段,例如“为高负载影像而生的 / 专业工作站”,不要让浏览器随机截断。
76
+ - 产品图、边缘光和参数浮层必须有独立空间。首屏可以左右分栏或上下分区,但不能让产品图压到标题、按钮或参数。
77
+ - 桌面图文安全距离至少 48px;移动端至少 28px。深色发光会扩大视觉占位,要把光晕也算进安全距离。
78
+ - 结尾行动标题建议控制在 12-18 个汉字,必要时手动换行成完整短语。不要出现“安 / 静”这类拆字式断行。
79
+
80
+ ## 结构语言
81
+
82
+ - **首屏剧场**:黑色背景、产品大图或原创渲染铺底,短标题、主行动和 2-3 个核心参数浮在产品边缘光上。
83
+ - **性能章节**:大数字 + 芯片/散热/屏幕视觉,数据走图表(柱/进度环/芯片面板浮背景),不堆深色卡墙。
84
+ - **工艺章节**:边缘、接口、镜头、屏幕、材料剖面特写插图浮在产品背景上。
85
+ - **专业场景**:暗场摄影棚、工作台、夜景、渲染窗口、屏幕内容作背景,文案浮前景。
86
+ - **型号对比**:用双列对照或参数图表浮背景表达 Pro / Max / 标准版本差异;真·多型号并列指标矩阵才做成图表化指标面板,不堆长表格或分区卡海。
87
+
88
+ ## 视觉母题
89
+
90
+ - 产品边缘光:表达薄、硬、贵、精密。
91
+ - 暖橙光带:表达性能、热力、能量和材料。
92
+ - 深蓝屏幕光:表达显示、影像、AI 和数据。
93
+ - 石墨剖面:表达内部结构、散热、芯片和工程可信度。
94
+
95
+ ## 适用与不适用
96
+
97
+ 适合:
98
+
99
+ - 高性能电脑、手机、专业相机、影像设备、AI 硬件、工作站、显示器、芯片
100
+ - 深色官网首屏、发布页、产品介绍 deck、专业产品参数页
101
+
102
+ 不适合:
103
+
104
+ - 轻生活消费品、儿童娱乐、普通 SaaS、医疗信任场景、大量长文内容站
105
+ - 需要温暖、轻快、亲和的产品
106
+
107
+ ## 迁移方式
108
+
109
+ 1. 先确定产品的“深色理由”:性能、专业、影像、材料、夜景、屏幕或芯片。
110
+ 2. 选择一个强调色,不要同时使用橙、蓝、红、紫做主色。
111
+ 3. 先做产品边缘光,再加文字和参数。
112
+ 4. 每个深色章节只讲一个能力,避免全部内容都在黑卡里。
113
+ 5. 移动端减少暗场装饰,保证标题、按钮、参数和产品图足够清楚。
114
+
115
+ ## 质量标准
116
+
117
+ 成功的 `Precision Horizon Dark` 应该像高端专业设备的深色发布页:黑色有层次,产品边缘清楚,强调色有节制,参数有冲击,整体不是游戏 HUD,也不是一片死黑。用户第一眼感到“这是专业产品”,第二眼能读懂它强在哪里。
@@ -0,0 +1,215 @@
1
+ # `Precision Horizon` VI 模板
2
+
3
+ 当用户需要“高端产品展示、硬件官网、产品发布页、科技设备、影像设备、智能硬件、极简高级、浅色产品官网、深色产品剧场、类似 Apple/DJI 产品详情页那种图文融合气质”这类前端设计方向,或明确提到 `Precision Horizon / 精密地平线` 时,使用这个模板。它天生就是“产品作主角、图文融合、参数视觉化”的编辑式版式,最适合产品详情页 / 发布页 / 产品介绍 deck。
4
+
5
+ 这是原创产品展示 VI,不是 Apple、DJI 或任何真实品牌的复刻。可以学习“产品作为主角、材质光、极简叙事、参数视觉化、克制配色”的方法,但不能复制真实品牌名称、标识、字体、产品摄影、页面结构、文案、图标或专有 UI。
6
+
7
+ ## 视觉定位
8
+
9
+ > **遵循 SKILL.md 的「★ 编辑式最高原则」**:图作背景 / 主角、文字浮前景、数据用图表、特写用插图,不堆卡海。本模板的「产品叙事镜头」段(见下)就是这条原则的范本——产品(客户图 / AI 渲染 / VI 同色系摄影棚渐变)铺底,标题/价值句/参数直接浮在产品镜头上,数据走参数视觉化与对比,特写走材质插图。卡片只保留为「图表 / 指标面板浮背景」的例外,不是白底分区卡海。
10
+
11
+ - **气质**:克制、高端、精密、清晰、可信,但不能冷清。浅色版要有灰白空间、活跃产品图和少量彩色提气;深色版要有黑石墨剧场、暖色材质光和强产品边缘。
12
+ - **情绪**:像新品发布官网:第一屏让产品被光线托起,后续用产品大图、场景画面、参数视觉化和对比逐屏展开,一屏一件事,而不是一屏塞满小卡片。
13
+ - **核心原则**:产品永远是主角。背景、字体、留白、参数、动效和渐变字都服务于“看清产品、理解价值、相信工艺”。
14
+ - **第一印象**:高级但不呆板,干净但不单调,有产品发布感和真实内容密度。
15
+
16
+ ## 色彩 token
17
+
18
+ 以下作为起始色盘。它不是单一配色,而是一个“产品展示系统”:灰白是底,产品色和屏幕色负责活力,深色版用材质色和边缘光建立冲击。
19
+
20
+ ```css
21
+ :root {
22
+ --ink: #111113; /* 主文字:近黑 */
23
+ --ink-soft: #2b2d32; /* 次级标题 */
24
+ --muted: #6b7078; /* 辅助文字 */
25
+ --paper: #f5f5f7; /* 祖传灰白页面背景 */
26
+ --paper-clean: #ffffff; /* 纯白大留白 */
27
+ --paper-warm: #fbfaf7; /* 暖白背景,用于生活化产品 */
28
+ --paper-cool: #f2f4f7; /* 冷灰背景,用于科技设备 */
29
+ --paper-lilac: #f5f0ff; /* 淡紫雾,用于智能/创造力 */
30
+ --surface: #ffffff; /* 主内容面板 */
31
+ --surface-soft: #fbfbfd;
32
+ --dark: #050506; /* 深色发布页背景 */
33
+ --dark-soft: #111217; /* 深色分区 */
34
+ --dark-warm: #1a100c; /* 暖黑,用于橙色/铜色产品 */
35
+ --line: rgba(17, 17, 19, 0.12);
36
+ --line-dark: rgba(245, 245, 247, 0.16);
37
+ --metal: #c9ced6; /* 金属高光 */
38
+ --graphite: #575d66; /* 石墨灰 */
39
+ --accent: #0071e3; /* 默认行动蓝,可按产品改 */
40
+ --accent-warm: #d9822b; /* 暖金/橙,用于行动或场景能量 */
41
+ --accent-orange: #f26d21; /* 深色产品剧场中的暖橙 */
42
+ --accent-pink: #f45bb3; /* 屏幕/创造力点缀 */
43
+ --accent-violet: #8b5cf6; /* 智能/创造力渐变 */
44
+ --accent-cool: #3aa7ff; /* 冷蓝,用于影像、空气、飞行 */
45
+ --screen-blue: #67b7ff; /* 屏幕/系统画面 */
46
+ --screen-green: #9bd95f; /* 活跃屏幕色 */
47
+ --success: #1f9d78;
48
+ --warning: #c98a1a;
49
+ --shadow: rgba(18, 24, 36, 0.16);
50
+ }
51
+ ```
52
+
53
+ ### 色彩变化
54
+
55
+ 根据产品特性选择一种主背景策略,不要在一个页面里平均使用所有颜色。
56
+
57
+ - **祖传灰白**:`--paper` + `--surface` + 近黑文字。适合产品线、分类入口、型号对比和浅色官网主叙事。它不是蓝白,而是微灰、温和、干净。
58
+ - **纯净白场**:`--paper-clean` + 大留白 + 产品本体色。适合单品首屏和高端消费电子,重点是产品轮廓、材质、阴影和短价值句。
59
+ - **活力浅色**:灰白底上加入少量屏幕渐变、产品颜色、彩色前景浮层或渐变标题。适合轻薄设备、创作工具、智能产品。彩色必须来自“屏幕内容、产品色、场景图”,不能变成背景乱涂。
60
+ - **深色剧场**:`--dark` / `--dark-warm` + 冷白文字 + 暖橙或深蓝材质光。适合专业设备、影像硬件、高性能产品、发布会首屏。重点是光线、边缘、产品局部和参数冲击。
61
+ - **冷雾科技**:`--paper-cool` + 少量冷蓝光 + 石墨文字。只在飞行、影像、空间产品中使用,不能把整个浅色版做成发青。
62
+ - **暖白生活**:`--paper-warm` + 暖金/橙小面积强调。适合消费电子、家庭设备、生活方式科技。重点是亲和、舒适和使用场景。
63
+ - **材料同色系**:从产品材质中提取一个颜色作为强调色,如银、钛、深蓝、沙金、陶瓷白。强调色只用于按钮、局部标题、参数焦点或背景微光。
64
+
65
+ ### 数据可视化分类色(图表/点缀,与本 VI 协调)
66
+
67
+ 图表(柱/饼/折线/进度环)与辅助图形要用**可区分的数据系列色**,别全用默认蓝一种(见 `layout-composition.md` §0.9 配色解耦)。
68
+ 本 VI 现成分类色序列(中性产品展示底上可读,兼顾屏幕色、材质色与状态色),按系列数依次取用:
69
+
70
+ `#0071e3 行动蓝` · `#d9822b 暖金` · `#8b5cf6 智能紫` · `#3aa7ff 冷蓝` · `#1f9d78 成功绿` · `#f45bb3 创作粉`
71
+
72
+ 单系列图(单进度环/单柱)用 `accent` `#0071e3` 一色即可;多系列按上面顺序取。A 路线产品插图和场景图以产品本色、屏幕内容和真实场景色为准,不强行染成品牌色。
73
+
74
+ ### 浅色版规则
75
+
76
+ - 页面底色优先用 `#f5f5f7`、`#fbfbfd`、`#ffffff`,不要默认浅蓝。
77
+ - 大标题使用近黑,字号可以很大,但周围要有真实产品图或产品线内容承接。
78
+ - 少量渐变字体可以用于一句核心价值或关键词,建议只占 1-2 行,颜色从产品屏幕或产品材质提取。
79
+ - 活力来自产品图、屏幕内容、场景画面和颜色选择器,不来自大面积背景渐变。
80
+ - 内容页优先「产品图作背景 / 主角 + 标题与参数浮前景」,不要默认堆白底卡片墙;真要用卡片,只用于承载图表或指标面板浮在产品背景上,且卡内要有强图像或强产品语义,不是白卡加小文字。
81
+ - 灰白大留白要配合产品镜头、横向产品线、场景大图或对比控件承接实质,否则会显得空。
82
+
83
+ ### 深色版规则
84
+
85
+ - 深色不是单纯 `#000` 铺底,而是黑、石墨、暖黑、深蓝黑的层级。
86
+ - 文字以冷白为主,辅助文字不能太暗;正文最低要有足够对比。
87
+ - 少量暖橙、深蓝、紫红或青蓝用于产品材质光、屏幕内容、芯片/性能图和主按钮。
88
+ - 深色版首屏要有“产品边缘光”:轮廓、反射、屏幕亮面、接口、摄像头、芯片或散热结构至少出现一种。
89
+ - 参数可更有冲击力,但仍然一屏只讲一件事;不要做成游戏 HUD 或赛博朋克。
90
+
91
+ ## 渐变与材质
92
+
93
+ - 背景使用低对比线性或径向渐变,模拟摄影棚灯光,而不是显眼装饰色块。
94
+ - 浅色页面优先使用灰白和暖白的微妙层次;只有产品本身需要时才加入冷蓝。
95
+ - 深色页面用黑到石墨、暖黑或深蓝黑的层次,配合产品边缘高光,避免死黑。
96
+ - 金属产品使用细腻高光、柔和投影和反射线,不使用厚重拟物纹理。
97
+ - 飞行、影像和运动产品可以加入极淡轨迹线、地平线、透视网格或环境雾,但必须服务产品运动方向。
98
+ - 渐变文字只做少量强调:适合“轻得更有力”“性能全开”“影像再进化”这类短句,不要把整段标题都做渐变。
99
+ - 渐变的职责是“托起产品”和“分隔叙事段落”,不是制造背景热闹。
100
+
101
+ ## 字体与排版
102
+
103
+ - 中文优先使用系统无衬线栈:`"PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", "Inter", sans-serif`。
104
+ - 标题要大、短、稳。中文标题建议 2-3 行内完成,不使用负字距,不做过度压缩。
105
+ - H1 桌面建议 56-82px;硬件发布页可短暂到 88px,但必须检查中文断行。不要为了模仿大标题而让中文产生单字孤行。
106
+ - 正文建议 16-18px,行高 1.55 左右;首屏正文不超过 2-3 行。
107
+ - 参数数字可以使用等宽或紧凑数字栈,但参数解释仍用简体中文。
108
+ - 大标题用近黑或冷白,辅助文案用中性灰;不要把正文放成低对比浅灰。
109
+
110
+ ### 中文断行与图文安全区
111
+
112
+ - 中文大标题必须人工检查断行。禁止出现最后一行只有 1 个汉字或 1 个标点的“孤字行”,例如把“电脑。”单独挤到下一行。
113
+ - `text-wrap: balance` 只能作为辅助,不能替代设计判断。必要时用更短文案、手动 `<br>`、限制 `max-width` 或降低字号控制断行。
114
+ - 6-12 个汉字的短标题尽量保持一行;超过 12-18 个汉字时,优先拆成两条语义完整的短句,而不是任由浏览器断开。
115
+ - 图文同屏时必须给文字和产品图各自稳定区域。推荐用网格或弹性布局明确分区,避免绝对定位的产品图压住标题。
116
+ - 图文安全距离:桌面文字与产品图至少 40px;移动端至少 24px。若产品图进入文字区域,先改布局,不要只缩小图片。
117
+ - 大标题行高建议 1.05-1.14。中文粗体太大时要增加行高和容器高度,避免上下行视觉挤压。
118
+ - 结尾行动标题要优先自然断成完整短语,例如“选一台适合你的 / 创作电脑”,不要让“脑”或“器”单独成行。
119
+
120
+ 推荐尺度:
121
+
122
+ ```css
123
+ h1 {
124
+ font-size: clamp(42px, 5.8vw, 82px);
125
+ line-height: 1.08;
126
+ letter-spacing: 0;
127
+ text-wrap: balance;
128
+ }
129
+
130
+ .lead {
131
+ font-size: clamp(16px, 1.5vw, 20px);
132
+ line-height: 1.55;
133
+ color: var(--muted);
134
+ }
135
+
136
+ .spec-value {
137
+ font-variant-numeric: tabular-nums;
138
+ font-size: clamp(30px, 4vw, 56px);
139
+ line-height: 1;
140
+ }
141
+ ```
142
+
143
+ ## 产品展示方式
144
+
145
+ 这个模板的核心不是卡片,而是“产品叙事镜头”——这正是 SKILL.md 编辑式最高原则的范本:图(产品)作背景 / 主角、文字浮前景、数据用图表与参数视觉化、特写用插图,不靠卡片墙划分区域。每个页面至少选择一种强展示方式。
146
+
147
+ - **英雄产品镜头**:首屏大产品图或原创产品渲染占据视觉中心,文案围绕它收敛。没有真实图片时,用抽象设备框、材质块、镜头/翼面/屏幕轮廓表达产品,不要用普通插画假图。产品渲染必须有体积、阴影、屏幕/镜头/接口细节,不能像扁平图标。
148
+ - **产品线横排**:适合浅色官网首页,用一排小产品缩略图、型号名和新款标记建立真实产品矩阵。每个缩略图要有不同形态或屏幕颜色。
149
+ - **材质特写**:展示边缘、接口、镜头、屏幕、折叠结构、传感器、按键或表面材质,让高级感有依据。
150
+ - **功能场景**:用一张强场景图或场景化背景表达产品在真实环境中的价值,如飞行、创作、办公、家庭、户外。没有真实图时,用大面积场景色块、屏幕内容、窗口画面、星空/城市/工作台等原创视觉模拟,不要空白占位。
151
+ - **参数剖面**:把关键参数放进剖面、爆炸图、轨迹线、镜头圆环或芯片面板中,而不是堆成普通表格。
152
+ - **对比矩阵**:用于型号、规格或套餐比较。桌面可以用分栏表格;移动端优先改成型号卡,不要把表格硬堆成很长的单列。
153
+ - **滚动章节**:一屏讲一个能力。标题短,说明少,视觉强,参数随章节出现。
154
+
155
+ ## 参数与描述规则
156
+
157
+ - 首屏只放 2-4 个核心卖点,不要把所有参数塞进第一屏。
158
+ - 参数要分层:核心数字最大,单位和解释次级,备注最小。
159
+ - 技术名词必须翻译成用户收益,例如“4K 120fps”后面要说明“高速动作更清晰”。
160
+ - 描述文案要具体,不写“颠覆体验、重新定义、极致性能”这类空话,除非后面马上有参数或场景支撑。
161
+ - 规格区使用清晰网格:3 列或 4 列桌面,移动端变成单列或双列。
162
+ - 长参数表放后面;主叙事区只展示最能建立信任的参数。
163
+
164
+ ## 结构语言
165
+
166
+ - **顶部导航**:极简,透明或纯白/纯黑,保留产品名、章节、购买/预约按钮。
167
+ - **首屏**:产品名、短价值句、产品视觉、两个以内行动按钮、2-4 个关键参数。
168
+ - **亮点章节**:每屏一个核心能力,配产品特写、场景或参数视觉化。
169
+ - **参数章节**:用大数字和短说明建立可信度,避免密密麻麻。
170
+ - **场景章节**:展示产品如何被使用,帮助从“好看”过渡到“有用”。
171
+ - **对比章节**:适合多型号产品,使用克制表格和差异标记。
172
+ - **结尾行动**:购买、预约、了解方案或下载资料,保持简短。
173
+
174
+ ## 视觉母题
175
+
176
+ 选择 1-3 个母题持续复用:
177
+
178
+ - 地平线:表达远景、飞行、空间、发布感和产品方向。
179
+ - 材质边缘光:表达精密加工、薄、硬、轻、强。
180
+ - 轨迹线:表达运动、飞行、捕捉、连接和性能路径。
181
+ - 参数坐标:表达专业、可量化、可信。
182
+ - 产品影子:表达真实体积和摄影棚质感。
183
+
184
+ 不要同时使用太多母题。产品页的高级感来自克制和连续性。
185
+
186
+ ## 适用场景
187
+
188
+ 适合:
189
+
190
+ - 智能硬件、消费电子、无人机、相机、机器人、可穿戴、电脑、手机、屏幕设备
191
+ - 产品官网、发布页、营销首屏、产品介绍 deck、型号对比页
192
+ - 需要“高端、清晰、产品主角、技术可信、中文可读”的展示型页面
193
+
194
+ 不适合:
195
+
196
+ - 高密度运营 dashboard、复杂后台、金融风控、政务系统
197
+ - 儿童娱乐、强插画品牌、强游戏化界面
198
+ - 需要大量长文阅读的内容站
199
+ - 没有明确产品对象、只能展示抽象服务的 SaaS 页面;这类任务应先选择其他 VI 或建立独立视觉概念
200
+
201
+ ## 迁移方式
202
+
203
+ 复用模板时:
204
+
205
+ 1. 先明确产品对象:外观、材质、核心能力、使用场景、关键参数、购买动作。
206
+ 2. 选择一种背景策略:纯净白场、深色剧场、冷雾科技、暖白生活或材料同色系。
207
+ 3. 先设计产品镜头,再安排文字。不要先堆卡片再找产品图。
208
+ 4. 把参数转成视觉层级:大数字、短单位、场景解释、对比差异。
209
+ 5. 如果没有真实产品图片,用原创抽象产品渲染、设备框、剖面线或材质块表达,不要复制 Apple/DJI 图片。
210
+ 6. 移动端减少产品旁边的散点参数,改成产品图在上、核心卖点在下、按钮 44px 以上。
211
+ 7. 截图检查:产品是否是主角,首屏是否空泛,参数是否可信,留白是否高级而不是没内容。
212
+
213
+ ## 质量标准
214
+
215
+ 成功的 `Precision Horizon` 变体应该像一个成熟科技公司为新品做的产品展示页:第一眼看清产品,第二眼知道价值,第三眼相信参数。它可以是白色、黑色、冷雾或暖白,但一定要克制、清楚、产品中心、中文阅读舒服。检验标准是:去掉品牌名后,页面仍然有明确产品对象和高端发布感,而不是普通 SaaS 落地页。