@givolt/i3-composer-agent 2.2.2 → 2.3.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 (447) hide show
  1. package/.agents/plugins/marketplace.json +1 -1
  2. package/.claude/commands/i3-prototype.md +23 -0
  3. package/.claude/commands/i3-review.md +1 -1
  4. package/.claude/commands/i3-ship.md +1 -1
  5. package/.claude-plugin/marketplace.json +1 -1
  6. package/.claude-plugin/plugin.json +1 -1
  7. package/.codex-plugin/plugin.json +2 -2
  8. package/.gemini/commands/i3-prototype.toml +23 -0
  9. package/.gemini/commands/i3-review.toml +1 -1
  10. package/.gemini/commands/i3-ship.toml +1 -1
  11. package/README.md +42 -25
  12. package/agents/code-reviewer.md +1 -1
  13. package/agents/test-engineer.md +1 -1
  14. package/bin/i3-composer-agent.cjs +5 -4
  15. package/bin/install.cjs +22 -10
  16. package/bin/native-command-validation.cjs +8 -13
  17. package/bin/native-layout.cjs +64 -28
  18. package/bin/native-migration.cjs +13 -7
  19. package/bin/native-runtime.cjs +10 -5
  20. package/commands/i3-prototype.toml +23 -0
  21. package/commands/i3-review.toml +1 -1
  22. package/commands/i3-ship.toml +1 -1
  23. package/docs/advanced-per-agent-configuration.md +78 -0
  24. package/docs/agents.md +2 -2
  25. package/docs/codebuddy-setup.md +5 -5
  26. package/docs/codex-setup.md +3 -3
  27. package/docs/copilot-setup.md +4 -0
  28. package/docs/cursor-setup.md +3 -0
  29. package/docs/other-hosts.md +44 -9
  30. package/docs/workbuddy-setup.md +9 -9
  31. package/evals/README.md +28 -16
  32. package/evals/cases/i3-documentation-and-adrs.json +18 -0
  33. package/evals/cases/i3-test-driven-development.json +8 -0
  34. package/evals/cases/i3-ui-prototype.json +49 -0
  35. package/evals/fixtures/i3-documentation-and-adrs/prose-review/README.md +19 -0
  36. package/evals/fixtures/i3-documentation-and-adrs/prose-review/queue.js +32 -0
  37. package/evals/fixtures/i3-ui-prototype/business-brief.md +7 -0
  38. package/evals/plugin/tdd-fires-on-pasted-bug/graders/failing-test-first.md +7 -0
  39. package/evals/plugin/tdd-fires-on-pasted-bug/graders/skill-fired.md +5 -0
  40. package/evals/plugin/tdd-fires-on-pasted-bug/prompt.md +15 -0
  41. package/evals/plugin/tdd-stays-quiet-on-debug/graders/not-fired.md +8 -0
  42. package/evals/plugin/tdd-stays-quiet-on-debug/prompt.md +25 -0
  43. package/evals/zh-CN/cases/i3-documentation-and-adrs.json +19 -0
  44. package/evals/zh-CN/cases/i3-test-driven-development.json +4 -0
  45. package/evals/zh-CN/cases/i3-ui-prototype.json +50 -0
  46. package/hooks/SIMPLIFY-IGNORE.md +3 -2
  47. package/hooks/simplify-ignore-test.sh +93 -1
  48. package/hooks/simplify-ignore.sh +94 -11
  49. package/package.json +63 -18
  50. package/plugin.json +1 -1
  51. package/references/performance-checklist.md +4 -2
  52. package/scripts/enterprise-template-test.js +139 -0
  53. package/scripts/floor-guard-reference-test.js +291 -0
  54. package/scripts/lib/skill-lint-test.js +762 -0
  55. package/scripts/lib/skill-lint.js +62 -8
  56. package/scripts/run-evals-test.js +830 -0
  57. package/scripts/run-evals.js +47 -9
  58. package/scripts/run-regressions.js +19 -0
  59. package/scripts/template-adapter-test.js +155 -0
  60. package/scripts/ui-prototype-test.js +114 -0
  61. package/scripts/validate-artifact-paths-test.js +179 -0
  62. package/scripts/validate-commands-test.js +246 -0
  63. package/scripts/validate-commands.js +6 -16
  64. package/scripts/validate-reference-links-test.js +513 -0
  65. package/scripts/validate-reference-links.js +4 -2
  66. package/scripts/validate-skills.js +26 -3
  67. package/scripts/validate-versions-test.js +32 -0
  68. package/skills/i3-documentation-and-adrs/SKILL.md +9 -0
  69. package/skills/i3-frontend-ui-engineering/SKILL.md +5 -1
  70. package/skills/i3-idea-refine/SKILL.md +20 -5
  71. package/skills/i3-incremental-implementation/SKILL.md +4 -0
  72. package/skills/i3-performance-optimization/SKILL.md +10 -10
  73. package/skills/i3-security-and-hardening/references/hardening-patterns.md +1 -1
  74. package/skills/i3-shipping-and-launch/SKILL.md +6 -0
  75. package/skills/i3-test-driven-development/SKILL.md +3 -3
  76. package/skills/i3-ui-prototype/SKILL.md +119 -0
  77. package/skills/i3-ui-prototype/assets/templates/catalog.json +147 -0
  78. package/skills/i3-ui-prototype/assets/templates/classic-admin/manifest.json +9 -0
  79. package/skills/i3-ui-prototype/assets/templates/classic-admin/preset.json +6 -0
  80. package/skills/i3-ui-prototype/assets/templates/common/app/app.mjs +89 -0
  81. package/skills/i3-ui-prototype/assets/templates/common/app/config.json +1 -0
  82. package/skills/i3-ui-prototype/assets/templates/common/app/domain.mjs +20 -0
  83. package/skills/i3-ui-prototype/assets/templates/common/app/index.html +17 -0
  84. package/skills/i3-ui-prototype/assets/templates/common/app/serve.cjs +16 -0
  85. package/skills/i3-ui-prototype/assets/templates/common/app/styles.css +670 -0
  86. package/skills/i3-ui-prototype/assets/templates/common/app/tokens.css +19 -0
  87. package/skills/i3-ui-prototype/assets/templates/common/design-system/master.md +20 -0
  88. package/skills/i3-ui-prototype/assets/templates/common/gallery.html +2 -0
  89. package/skills/i3-ui-prototype/assets/templates/common/mocks/applications.json +5 -0
  90. package/skills/i3-ui-prototype/assets/templates/common/requirements-map.json +8 -0
  91. package/skills/i3-ui-prototype/assets/templates/common/serve-gallery.cjs +16 -0
  92. package/skills/i3-ui-prototype/assets/templates/credits.md +17 -0
  93. package/skills/i3-ui-prototype/assets/templates/data-operations/manifest.json +9 -0
  94. package/skills/i3-ui-prototype/assets/templates/data-operations/preset.json +6 -0
  95. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/design-system.md +32 -0
  96. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/index.html +29 -0
  97. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/manifest.json +9 -0
  98. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/origin.json +344 -0
  99. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/preset.json +928 -0
  100. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/app.js +22 -0
  101. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets/empty.svg +1 -0
  102. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets/reference-styles.json +1 -0
  103. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets/result-403.svg +1 -0
  104. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets/result-404.svg +1 -0
  105. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/assets-manifest.json +334 -0
  106. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/baseline.json +173 -0
  107. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/conversion.md +30 -0
  108. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/credits.md +17 -0
  109. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/design-tokens.json +881 -0
  110. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/index.html +28 -0
  111. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/licenses/@qin-ui-antdv-next-pro.txt +9 -0
  112. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/licenses/ant-design-icons.txt +22 -0
  113. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/licenses/antdv-next.txt +21 -0
  114. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/package.json +12 -0
  115. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/browser-routes.json +298 -0
  116. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/coverage.json +180 -0
  117. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/integrity.json +13 -0
  118. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/keyboard.json +11 -0
  119. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/responsive.json +125 -0
  120. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/review.md +51 -0
  121. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/rules.log +150 -0
  122. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/flow-editor-html.png +0 -0
  123. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/flow-editor-original.png +0 -0
  124. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/intent-create-html.png +0 -0
  125. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/intent-create-original.png +0 -0
  126. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/models-html.png +0 -0
  127. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/models-original.png +0 -0
  128. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/workbench-html.png +0 -0
  129. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/screenshots/workbench-original.png +0 -0
  130. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/selection.json +9 -0
  131. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/qa/visual-comparison.json +342 -0
  132. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/readme.md +73 -0
  133. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/reference.md +59 -0
  134. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/routes.json +178 -0
  135. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/controls.js +99 -0
  136. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/dialogs.js +54 -0
  137. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/dom.js +264 -0
  138. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/forms.js +47 -0
  139. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/icons.js +41 -0
  140. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/layout.js +47 -0
  141. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/router.js +63 -0
  142. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/state.js +90 -0
  143. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/table.js +41 -0
  144. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/runtime/widgets.js +8 -0
  145. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentDetail.html +3 -0
  146. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentDetail.js +36 -0
  147. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentEditor.html +2 -0
  148. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentEditor.js +51 -0
  149. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentsPage.html +3 -0
  150. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/AgentsPage.js +48 -0
  151. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/CheckResults.html +2 -0
  152. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/CheckResults.js +6 -0
  153. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/ResourcePicker.html +2 -0
  154. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/ResourcePicker.js +13 -0
  155. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/data.js +24 -0
  156. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/domain.js +32 -0
  157. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/registry.js +25 -0
  158. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/agents/store.js +85 -0
  159. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentClose.html +2 -0
  160. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentClose.js +17 -0
  161. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentCreate.html +2 -0
  162. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentCreate.js +66 -0
  163. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDecisions.html +3 -0
  164. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDecisions.js +38 -0
  165. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDetail.html +2 -0
  166. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDetail.js +66 -0
  167. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDocument.html +2 -0
  168. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentDocument.js +5 -0
  169. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentHeader.html +2 -0
  170. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentHeader.js +12 -0
  171. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentHistory.html +2 -0
  172. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentHistory.js +11 -0
  173. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentList.html +2 -0
  174. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentList.js +116 -0
  175. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentReplan.html +2 -0
  176. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentReplan.js +32 -0
  177. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentRevision.html +2 -0
  178. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentRevision.js +49 -0
  179. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentSummary.html +2 -0
  180. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentSummary.js +10 -0
  181. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentWorkspace.html +2 -0
  182. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/IntentWorkspace.js +77 -0
  183. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/data.js +60 -0
  184. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/domain.js +105 -0
  185. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/intents/store.js +212 -0
  186. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/AuditPanel.html +2 -0
  187. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/AuditPanel.js +18 -0
  188. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelDetail.html +2 -0
  189. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelDetail.js +23 -0
  190. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelEditor.html +2 -0
  191. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelEditor.js +78 -0
  192. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelGrant.html +2 -0
  193. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelGrant.js +55 -0
  194. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelReferences.html +2 -0
  195. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelReferences.js +26 -0
  196. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelRelease.html +2 -0
  197. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelRelease.js +38 -0
  198. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelStatus.html +2 -0
  199. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelStatus.js +7 -0
  200. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelTable.html +2 -0
  201. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelTable.js +72 -0
  202. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelTester.html +2 -0
  203. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelTester.js +46 -0
  204. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelsPage.html +2 -0
  205. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/ModelsPage.js +52 -0
  206. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/RowActions.html +2 -0
  207. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/RowActions.js +19 -0
  208. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/UsagePanel.html +2 -0
  209. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/UsagePanel.js +30 -0
  210. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/data.js +48 -0
  211. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/domain.js +39 -0
  212. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/models/store.js +129 -0
  213. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/IncidentDetail.html +4 -0
  214. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/IncidentDetail.js +21 -0
  215. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/IntentSource.html +2 -0
  216. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/IntentSource.js +8 -0
  217. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationActionDialog.html +2 -0
  218. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationActionDialog.js +37 -0
  219. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationEntry.html +2 -0
  220. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationEntry.js +10 -0
  221. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationsPage.html +2 -0
  222. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/OperationsPage.js +37 -0
  223. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/RepairTrack.html +2 -0
  224. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/RepairTrack.js +49 -0
  225. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/RunDetail.html +4 -0
  226. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/RunDetail.js +22 -0
  227. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/SourceSummary.html +2 -0
  228. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/SourceSummary.js +9 -0
  229. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/commands.js +82 -0
  230. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/examples.js +47 -0
  231. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/model.js +61 -0
  232. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/repair.js +68 -0
  233. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/store.js +55 -0
  234. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/types.js +1 -0
  235. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/operations/workbench.js +18 -0
  236. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ManagementTable.html +3 -0
  237. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ManagementTable.js +28 -0
  238. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcCreateEntry.html +2 -0
  239. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcCreateEntry.js +18 -0
  240. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcDetail.html +2 -0
  241. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcDetail.js +31 -0
  242. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcEditor.html +2 -0
  243. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcEditor.js +27 -0
  244. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcLifecycle.html +2 -0
  245. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcLifecycle.js +16 -0
  246. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcPage.html +2 -0
  247. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcPage.js +43 -0
  248. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcPicker.html +4 -0
  249. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcPicker.js +34 -0
  250. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcProgress.html +2 -0
  251. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcProgress.js +30 -0
  252. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcWizard.html +3 -0
  253. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcWizard.js +67 -0
  254. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcWorkspace.html +2 -0
  255. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcWorkspace.js +41 -0
  256. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcsPage.html +2 -0
  257. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/PbcsPage.js +31 -0
  258. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ServiceEditor.html +2 -0
  259. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ServiceEditor.js +26 -0
  260. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ServiceList.html +2 -0
  261. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/ServiceList.js +70 -0
  262. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/data.js +8 -0
  263. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/domain.js +62 -0
  264. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/management.js +36 -0
  265. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/managementStore.js +49 -0
  266. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/pbc/store.js +132 -0
  267. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/AdminList.html +2 -0
  268. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/AdminList.js +38 -0
  269. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/EffectiveGrants.html +2 -0
  270. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/EffectiveGrants.js +11 -0
  271. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/GrantEditor.html +2 -0
  272. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/GrantEditor.js +45 -0
  273. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/MemberEditor.html +2 -0
  274. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/MemberEditor.js +54 -0
  275. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/MembersPage.html +3 -0
  276. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/MembersPage.js +27 -0
  277. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RecordsPage.html +2 -0
  278. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RecordsPage.js +12 -0
  279. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RoleEditor.html +2 -0
  280. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RoleEditor.js +45 -0
  281. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RolesPage.html +3 -0
  282. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/RolesPage.js +38 -0
  283. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/domain.js +61 -0
  284. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/state.js +51 -0
  285. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/permissions/store.js +116 -0
  286. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseActionDialog.html +2 -0
  287. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseActionDialog.js +45 -0
  288. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseDetail.html +4 -0
  289. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseDetail.js +30 -0
  290. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseEditor.html +2 -0
  291. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseEditor.js +67 -0
  292. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseExecution.html +2 -0
  293. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleaseExecution.js +5 -0
  294. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleasesPage.html +4 -0
  295. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/ReleasesPage.js +60 -0
  296. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/commands.js +157 -0
  297. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/model.js +136 -0
  298. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/releases/store.js +76 -0
  299. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewDetail.html +3 -0
  300. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewDetail.js +26 -0
  301. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewEvidence.html +2 -0
  302. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewEvidence.js +14 -0
  303. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewProcess.html +2 -0
  304. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewProcess.js +113 -0
  305. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewsPage.html +3 -0
  306. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/ReviewsPage.js +62 -0
  307. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/commands.js +97 -0
  308. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/model.js +147 -0
  309. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/reviews/store.js +13 -0
  310. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ColumnSettings.html +2 -0
  311. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ColumnSettings.js +9 -0
  312. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListBatchBar.html +2 -0
  313. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListBatchBar.js +8 -0
  314. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListDeleteDialog.html +2 -0
  315. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListDeleteDialog.js +37 -0
  316. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListMore.html +2 -0
  317. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/ListMore.js +8 -0
  318. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/RecordMetadata.html +2 -0
  319. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/RecordMetadata.js +17 -0
  320. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/columns.js +32 -0
  321. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/deliveryGuide.js +49 -0
  322. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/deliveryView.js +12 -0
  323. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/listBatch.js +15 -0
  324. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/listSelection.js +37 -0
  325. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/policy.js +68 -0
  326. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shared/session.js +44 -0
  327. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ConfirmationDialog.html +2 -0
  328. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ConfirmationDialog.js +25 -0
  329. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ConsoleShell.html +2 -0
  330. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ConsoleShell.js +53 -0
  331. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/PrototypeGuide.html +10 -0
  332. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/PrototypeGuide.js +30 -0
  333. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ScopePage.html +2 -0
  334. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/ScopePage.js +10 -0
  335. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/SessionDialog.html +2 -0
  336. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/SessionDialog.js +9 -0
  337. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/confirmation.js +3 -0
  338. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/shell/navigation.js +19 -0
  339. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecDocument.html +2 -0
  340. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecDocument.js +8 -0
  341. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecEdit.html +2 -0
  342. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecEdit.js +32 -0
  343. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecHeader.html +2 -0
  344. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecHeader.js +15 -0
  345. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecHistory.html +2 -0
  346. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecHistory.js +11 -0
  347. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecReview.html +2 -0
  348. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecReview.js +57 -0
  349. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecWorkspace.html +2 -0
  350. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/SpecWorkspace.js +37 -0
  351. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/data.js +20 -0
  352. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/domain.js +55 -0
  353. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/specs/store.js +151 -0
  354. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/ArtifactDetail.html +3 -0
  355. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/ArtifactDetail.js +18 -0
  356. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskCreate.html +2 -0
  357. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskCreate.js +40 -0
  358. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskDetail.html +2 -0
  359. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskDetail.js +51 -0
  360. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskLaunch.html +2 -0
  361. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TaskLaunch.js +9 -0
  362. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TasksPage.html +5 -0
  363. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/TasksPage.js +48 -0
  364. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/domain.js +204 -0
  365. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/exampleSource.js +22 -0
  366. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/registry.js +135 -0
  367. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/tasks/store.js +137 -0
  368. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workbench/WorkbenchPage.html +3 -0
  369. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workbench/WorkbenchPage.js +36 -0
  370. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workbench/model.js +56 -0
  371. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workbench/store.js +15 -0
  372. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowCanvas.html +2 -0
  373. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowCanvas.js +27 -0
  374. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowDetail.html +4 -0
  375. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowDetail.js +31 -0
  376. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowEditor.html +2 -0
  377. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/FlowEditor.js +68 -0
  378. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/WorkflowsPage.html +5 -0
  379. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/WorkflowsPage.js +55 -0
  380. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/data.js +16 -0
  381. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/domain.js +83 -0
  382. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/registry.js +18 -0
  383. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/src/workflows/store.js +61 -0
  384. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/admin.css +60 -0
  385. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/agents.css +46 -0
  386. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/antdv.css +295 -0
  387. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/app.css +102 -0
  388. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/delivery.css +4 -0
  389. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/intents.css +37 -0
  390. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/native.css +22 -0
  391. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/operations.css +2 -0
  392. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/pbc.css +3 -0
  393. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/permissions.css +22 -0
  394. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/pro.css +1 -0
  395. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/releases.css +4 -0
  396. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/reset.css +246 -0
  397. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/reviews.css +8 -0
  398. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/tasks.css +6 -0
  399. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/tokens.css +15 -0
  400. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/workbench.css +61 -0
  401. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/styles/workflows.css +1 -0
  402. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/admin-rules.test.js +96 -0
  403. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/agents.test.js +14 -0
  404. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/intent-state.test.js +37 -0
  405. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/list-batch.test.js +44 -0
  406. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/operation-fixtures.js +19 -0
  407. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/operation-repair.test.js +14 -0
  408. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/operations.test.js +25 -0
  409. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/pbc-management.test.js +17 -0
  410. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/pbc-state.test.js +24 -0
  411. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/permission-config.test.js +23 -0
  412. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/permissions.test.js +24 -0
  413. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/releases.test.js +50 -0
  414. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/reviews.test.js +36 -0
  415. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/runtime-forms-router.test.js +28 -0
  416. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/runtime-state.test.js +42 -0
  417. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/runtime-stores.test.js +16 -0
  418. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/spec-state.test.js +11 -0
  419. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/tasks.test.js +27 -0
  420. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/workbench.test.js +34 -0
  421. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tests/workflows.test.js +16 -0
  422. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tools/convert.mjs +168 -0
  423. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tools/serve.mjs +7 -0
  424. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tools/styles.mjs +11 -0
  425. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/reference/tools/verify.mjs +24 -0
  426. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/serve.cjs +16 -0
  427. package/skills/i3-ui-prototype/assets/templates/enterprise-admin/usability.css +44 -0
  428. package/skills/i3-ui-prototype/assets/templates/gallery/index.html +40 -0
  429. package/skills/i3-ui-prototype/assets/templates/modern-workspace/manifest.json +9 -0
  430. package/skills/i3-ui-prototype/assets/templates/modern-workspace/preset.json +6 -0
  431. package/skills/i3-ui-prototype/assets/templates/serve-gallery.cjs +16 -0
  432. package/skills/i3-ui-prototype/references/artifact-contract.md +41 -0
  433. package/skills/i3-ui-prototype/references/enterprise-admin.md +38 -0
  434. package/skills/i3-ui-prototype/references/expert-adapter.md +42 -0
  435. package/skills/i3-ui-prototype/references/template-adapters.md +57 -0
  436. package/skills/i3-ui-prototype/references/workflow-contract.md +19 -0
  437. package/skills/i3-ui-prototype/scripts/adapters/easel-html.cjs +30 -0
  438. package/skills/i3-ui-prototype/scripts/adapters/legacy-html.cjs +28 -0
  439. package/skills/i3-ui-prototype/scripts/check-design-provider.cjs +9 -0
  440. package/skills/i3-ui-prototype/scripts/check-prototype.cjs +14 -0
  441. package/skills/i3-ui-prototype/scripts/enterprise-template.cjs +88 -0
  442. package/skills/i3-ui-prototype/scripts/init-prototype.cjs +8 -0
  443. package/skills/i3-ui-prototype/scripts/manage-baseline.cjs +11 -0
  444. package/skills/i3-ui-prototype/scripts/prototype-lib.cjs +255 -0
  445. package/skills/i3-ui-prototype/scripts/template-adapters.cjs +89 -0
  446. package/skills/i3-using-agent-skills/SKILL.md +5 -0
  447. package/bin/native-version-validation.cjs +0 -8
@@ -17,8 +17,18 @@ Skill/Command/Agent 标识、文件路径、命令参数、代码/API 名称、
17
17
 
18
18
  # Idea Refine
19
19
 
20
+ ## Overview
21
+
20
22
  Refines raw ideas into sharp, actionable concepts worth building through structured divergent and convergent thinking.
21
23
 
24
+ ## When to Use
25
+
26
+ - Use when an idea is still vague and needs shaping before it can become a plan
27
+ - Use when you need to stress-test assumptions before committing to a direction
28
+ - Use when you want to expand options before converging on one
29
+ - Trigger phrases: "Help me refine this idea", "Ideate on [concept]", "Stress-test my plan"
30
+ - Not for: a user who is unsure what they want at all (use `i3-interview-me`), or a direction already chosen that needs a spec (use `i3-spec-driven-development`)
31
+
22
32
  ## How It Works
23
33
 
24
34
  1. **Understand & Expand (Divergent):** Restate the idea, ask sharpening questions, and generate variations.
@@ -34,11 +44,6 @@ This skill is primarily an interactive dialogue. Invoke it with an idea, and the
34
44
  bash skills/i3-idea-refine/scripts/idea-refine.sh
35
45
  ```
36
46
 
37
- **Trigger Phrases:**
38
- - "Help me refine this idea"
39
- - "Ideate on [concept]"
40
- - "Stress-test my plan"
41
-
42
47
  ## Output
43
48
 
44
49
  The final output is a markdown one-pager saved to `docs/ideas/[idea-name].md` (after user confirmation), containing:
@@ -167,6 +172,16 @@ Direct, thoughtful, slightly provocative. You're a sharp thinking partner, not a
167
172
 
168
173
  Read `examples.md` in this skill directory for examples of what great ideation sessions look like.
169
174
 
175
+ ## Common Rationalizations
176
+
177
+ | Rationalization | Reality |
178
+ |---|---|
179
+ | I'll generate 20+ ideas to cover all bases | 5-8 well-considered variations beat 20 shallow ones. Quality over quantity. |
180
+ | The user just needs encouragement, not critique | A yes-machine produces weak ideas. Push back with specificity and kindness. |
181
+ | Who this is for is obvious — no need to ask | Every good idea starts with a person and their problem. Skipping it means designing for nobody. |
182
+ | We'll surface assumptions once we start building | Untested assumptions are the #1 killer of good ideas. Surface them before committing. |
183
+ | A plan without a Not Doing list is fine | The Not Doing list is arguably the most valuable part. Make trade-offs explicit. |
184
+
170
185
  ## Red Flags
171
186
 
172
187
  - Generating 20+ shallow variations instead of 5-8 considered ones
@@ -192,6 +192,10 @@ Each increment should be independently revertable:
192
192
  - Database migrations should have corresponding rollback migrations
193
193
  - Avoid deleting something in one commit and replacing it in the same commit — separate them
194
194
 
195
+ ## UI Slices with Prototype Baselines
196
+
197
+ For a UI slice, check `.i3-ui-prototypes.json` for an applicable approved prototype. Read its design contract, business mapping and baseline before implementation, and include affected interaction/visual checks in the slice acceptance. Preserve prior snapshots; coordinate contract changes through `i3-ui-prototype`. Backend-only slices and projects without a baseline continue the existing increment workflow.
198
+
195
199
  ## Working with Agents
196
200
 
197
201
  When directing an agent to implement incrementally:
@@ -57,12 +57,12 @@ Two complementary approaches — use both:
57
57
  - **RUM (web-vitals library, CrUX):** Real user data in real conditions. Required to validate that a fix actually improved user experience.
58
58
 
59
59
  **Frontend:**
60
- ```bash
61
- # Synthetic: Lighthouse in Chrome DevTools (or CI)
62
- # Chrome DevTools → Performance tab → Record
63
- # Chrome DevTools MCP → Performance trace
60
+ ```javascript
61
+ // Synthetic: Lighthouse in Chrome DevTools (or CI)
62
+ // Chrome DevTools → Performance tab → Record
63
+ // Chrome DevTools MCP → Performance trace
64
64
 
65
- # RUM: Web Vitals library in code
65
+ // RUM: Web Vitals library in code
66
66
  import { onLCP, onINP, onCLS } from 'web-vitals';
67
67
 
68
68
  onLCP(console.log);
@@ -71,12 +71,12 @@ onCLS(console.log);
71
71
  ```
72
72
 
73
73
  **Backend:**
74
- ```bash
75
- # Response time logging
76
- # Application Performance Monitoring (APM)
77
- # Database query logging with timing
74
+ ```javascript
75
+ // Response time logging
76
+ // Application Performance Monitoring (APM)
77
+ // Database query logging with timing
78
78
 
79
- # Simple timing
79
+ // Simple timing
80
80
  console.time('db-query');
81
81
  const result = await db.query(...);
82
82
  console.timeEnd('db-query');
@@ -167,7 +167,7 @@ The `range() !== 'unicast'` check covers loopback, link-local `169.254.169.254`
167
167
  import { z } from 'zod';
168
168
 
169
169
  const CreateTaskSchema = z.object({
170
- title: z.string().min(1).max(200).trim(),
170
+ title: z.string().max(200).trim().min(1),
171
171
  description: z.string().max(2000).optional(),
172
172
  priority: z.enum(['low', 'medium', 'high']).default('medium'),
173
173
  dueDate: z.string().datetime().optional(),
@@ -202,6 +202,12 @@ Client metrics:
202
202
  ```typescript
203
203
  // Set up error boundary with reporting
204
204
  class ErrorBoundary extends React.Component {
205
+ state = { hasError: false };
206
+
207
+ static getDerivedStateFromError() {
208
+ return { hasError: true };
209
+ }
210
+
205
211
  componentDidCatch(error: Error, info: React.ErrorInfo) {
206
212
  // Report to error tracking service
207
213
  reportError(error, {
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: i3-test-driven-development
3
- description: "执行测试先行的红绿重构循环。适用于实现逻辑、修复缺陷、修改行为、复现报错及证明改动有效;缺陷修复使用先证明失败的 Prove-It 模式。"
4
- # i3-description-source: "description: Drives development with tests using the red-green-refactor loop. Use when implementing any logic, fixing any bug, or changing any behavior. Use when you need to prove that code works, when a bug report arrives, or when you're about to modify existing functionality."
3
+ description: "执行测试先行的红绿重构循环。适用于实现逻辑、修复缺陷、修改行为、复现报错及证明改动有效;也用于为函数补测试、修复或修改直接粘贴的代码,即使请求未提到测试;缺陷修复使用先证明失败的 Prove-It 模式。"
4
+ # i3-description-source: "description: Drives development with tests using the red-green-refactor loop. Use when implementing any logic, fixing any bug, or changing any behavior. Use when you need to prove that code works, when a bug report arrives, or when you're about to modify existing functionality. Use when asked to add tests to a function, fix a bug in it or change its behavior, even when the code is pasted inline and the request does not mention tests."
5
5
  ---
6
6
 
7
7
  <!-- i3:zh-CN:start -->
@@ -12,7 +12,7 @@ description: "执行测试先行的红绿重构循环。适用于实现逻辑、
12
12
  Skill/Command/Agent 标识、文件路径、命令参数、代码/API 名称、工具调用参数、JSON 键/类型/枚举、机器状态、测试期望字面量及引用原文保持原样。生成文档正文用中文,SPEC.md、tasks/plan.md、tasks/todo.md、CONSTRAINTS.md 等约定路径不改名。
13
13
  严重程度按原规则判断,面向用户可写“严重(Critical)”“必须修复(Required)”“小问题(Nit)”“可选(Optional)”“建议考虑(Consider)”“仅供参考(FYI)”;High/Medium/Low、APPROVE/REQUEST CHANGES 和 GO/NO-GO 保留其原始语义与机器值。不得因翻译降低门槛,角色不能互相委派。
14
14
 
15
- 适用说明:执行测试先行的红绿重构循环。适用于实现逻辑、修复缺陷、修改行为、复现报错及证明改动有效;缺陷修复使用先证明失败的 Prove-It 模式。
15
+ 适用说明:执行测试先行的红绿重构循环。适用于实现逻辑、修复缺陷、修改行为、复现报错及证明改动有效;也用于为函数补测试、修复或修改直接粘贴的代码,即使请求未提到测试;缺陷修复使用先证明失败的 Prove-It 模式。
16
16
  <!-- i3:zh-CN:end -->
17
17
 
18
18
  # Test-Driven Development
@@ -0,0 +1,119 @@
1
+ ---
2
+ name: i3-ui-prototype
3
+ description: "根据业务需求选择 UI 模板,生成、评审并迭代交互原型。适用于选择原型模板、制作可操作审查原型、检查原型一致性及维护已确认的原型基线。"
4
+ # i3-description-source: "description: Creates and iterates reviewable interactive UI prototypes from selected templates and business requirements. Use when choosing UI prototype templates, generating interactive prototypes for review, inspecting prototype fidelity, or maintaining approved prototype baselines."
5
+ ---
6
+
7
+ <!-- i3:zh-CN:start -->
8
+ ## 中文交互与输出
9
+
10
+ 默认使用简体中文回复,包括追问、选项说明、阶段进度、分析、规格、计划、验收、代码审查与发布报告。只有用户明确要求其他语言时才切换;输入中出现英文术语、代码或引用不构成切换语言的要求。
11
+ 下文的工程步骤、审批要求、退出条件和工具约束完整有效。英文示例中的人类可读标题、说明和占位内容在实际输出时应译为中文;保留原有信息与验证标准,不删减方法。
12
+ Skill/Command/Agent 标识、文件路径、命令参数、代码/API 名称、工具调用参数、JSON 键/类型/枚举、机器状态、测试期望字面量及引用原文保持原样。生成文档正文用中文,SPEC.md、tasks/plan.md、tasks/todo.md、CONSTRAINTS.md 等约定路径不改名。
13
+ 严重程度按原规则判断,面向用户可写“严重(Critical)”“必须修复(Required)”“小问题(Nit)”“可选(Optional)”“建议考虑(Consider)”“仅供参考(FYI)”;High/Medium/Low、APPROVE/REQUEST CHANGES 和 GO/NO-GO 保留其原始语义与机器值。不得因翻译降低门槛,角色不能互相委派。
14
+
15
+ 适用说明:根据业务需求选择 UI 模板,生成、评审并迭代交互原型。适用于选择原型模板、制作可操作审查原型、检查原型一致性及维护已确认的原型基线。
16
+ <!-- i3:zh-CN:end -->
17
+
18
+ # UI Prototype
19
+
20
+ ## Overview
21
+
22
+ 基于业务需求与选定模板交付可操作、可评审的 HTML 原型,保留设计决策、业务映射、浏览器证据和已确认基线。默认使用专业增强模式;用户明确选择后可使用模板模式。原型认可、正式规格、生产开发与发布分别处理。
23
+
24
+ ## When to Use
25
+
26
+ - 选择 UI 原型模板,按业务需求生成交互原型。
27
+ - 根据评审意见修改原型,检查与既有基线的一致性。
28
+ - 确认具体原型版本,维护后续迭代使用的设计基线。
29
+
30
+ 仅实现已有设计的生产组件时 use the `i3-frontend-ui-engineering` skill。普通排错、纯后端工作和不涉及原型的代码评审继续使用对应工程技能。
31
+
32
+ ## Process
33
+
34
+ ### 1. 读取上下文与选择操作
35
+
36
+ 读取项目规则、实际需求和技术栈,以及项目根 `.i3-ui-prototypes.json` 指向的相关原型。没有正式规格时先整理最小业务范围与待确认项,不能补造审批权限或把演示规则写成已确认需求。
37
+
38
+ 选择 `create`、`revise`、`inspect` 或 `confirm-baseline`;无参数默认 `create`。操作契约及产物规则见 [workflow-contract.md](references/workflow-contract.md) 和 [artifact-contract.md](references/artifact-contract.md)。
39
+
40
+ ### 2. 检测专业能力并继续模板预览
41
+
42
+ 新增原型默认 `professional`(专业增强模式)。从当前宿主实际暴露的技能位置发现 UI/UX Pro Max,再运行本技能 `scripts/check-design-provider.cjs --provider <实际技能根>`。不能硬编码开发者的缓存路径、把另一宿主的安装误当当前可用,或仅凭目录存在判断可执行。需要按宿主目录检测时使用明确的 `--host` 和 `--project`。
43
+
44
+ 检测不阻断模板预览,先继续展示模板并记录选择。生成前已可用时自动使用;缺失或不可执行时明确给出安装/修复与“模板模式继续”“先整理需求和模板选择”。用户选择安装后按该宿主的官方方法安装并验证;已有授权或已选择模板模式时不重复确认。安装系统运行环境需根据实际缺项处理,不能静默改动操作系统。
45
+
46
+ 模板模式使用 `template`,仍使用同一套业务和浏览器验收标准。不得静默切换,交付记录必须说明实际模式。专业接入的查询与建议适配见 [expert-adapter.md](references/expert-adapter.md)。
47
+
48
+ ### 3. 选择模板并固定版本
49
+
50
+ 运行 `node <skill-root>/scripts/init-prototype.cjs templates` 查看四类:企业管理后台、AI 工作台、数字孪生大屏、移动端应用。按 availability 区分可操作模板与 planned;不能把待建设类型生成成其他类型。通过 `node <skill-root>/assets/templates/serve-gallery.cjs` 打开选择页。企业后台直接复用 EASEL 完整 HTML 审查版,当前可供人工测试,其余三类待后续实施。已有模板选择时沿用。
51
+
52
+ 选择页只切换预览,不创建或确认业务实例。可生成模板使用 catalog/manifest 显式指定运行层;未知或缺失 adapter 不回退到 common。资源组织、独立模板扩展与旧实例兼容见 [template-adapters.md](references/template-adapters.md)。
53
+
54
+ 企业后台保留原 EASEL 的全部页面、样式、控件和交互。审查整套模板时显式使用 `--purpose template-review`;为新业务生成时沿用默认 business-prototype,替换项目菜单、字段、状态、角色、数据和需求映射,完成后才将 business.status 标为 adapted。旧 classic-admin、modern-workspace、data-operations 仅保留兼容和历史样例迭代,不再作为新项目首选。框架工程保持既有设计规则,交接包含真实组件映射,HTML 审查版不等于真实 Vue/React 组件工程。
55
+
56
+ 创建示例:
57
+
58
+ ```sh
59
+ node <skill-root>/scripts/init-prototype.cjs --project <project-root> --id enterprise-review --template enterprise-admin --purpose template-review --provider <uiux-skill-root>
60
+ # 仅在用户明确选择模板模式后:
61
+ node <skill-root>/scripts/init-prototype.cjs --project <project-root> --id enterprise-review --template enterprise-admin --purpose template-review --expert-mode template
62
+ ```
63
+
64
+ 企业后台初始化保留完整 EASEL 示例。template-review 用于本次模板人工审查;business-prototype 初始为 needs-adaptation,未完成实际业务适配时验收守卫拒绝通过。复制的 app/qa 是历史来源材料,本次验收使用原型根 qa/。目标已存在时使用迭代流程,不覆盖。完整复用、来源核对与响应式规则见 [enterprise-admin.md](references/enterprise-admin.md)。
65
+
66
+ ### 4. 专业设计与业务实现
67
+
68
+ 将需求编号映射到页面、字段、操作、角色、可见范围、状态与验收场景。专业增强模式加载已发现的 UI/UX Pro Max 指令,运行真实查询并核对匹配;建议不能覆盖选定模板、需求或已认可的规则。查询失配时缩小问题重试一次,仍失配则拒绝并记录依据。
69
+
70
+ 专业建议的采用/拒绝写入 `qa/design-advice.json`,包括查询、结果身份、原因和验证条件。被采用规则写入 `design-system/MASTER.md`、token 或页面规则。基础工程与业务映射始终由 i3 维护。
71
+
72
+ 有实际查询及适用建议采用记录后,将 prototype.json 的 expert.status 更新为 used;没有适用结果时记录 no-match。HANDOFF.md 同步本次真实使用情况,不能保留初始化时“专业建议待适配”的描述冒充已完成。
73
+
74
+ Follow the `i3-frontend-ui-engineering` skill 实现原型。固定模板版本和 token,新增页面复用组件约定。演示数据、状态切换和本地权限模拟必须可复现;普通按钮反馈不能代替完整的业务流程。修改 token 后同步 `app/tokens.css`。
75
+
76
+ ### 5. 验证并交付候选
77
+
78
+ 运行 `node <skill-root>/scripts/check-prototype.cjs <prototype-root>`,再启动 `node app/serve.cjs`。Follow the `i3-browser-testing-with-devtools` skill 或当前宿主可用的等效真实浏览器能力,检查需求映射中的主流程、校验、权限演示、失败反馈、窄屏、键盘焦点和控制台。
79
+
80
+ 先取 `manage-baseline.cjs manifest <prototype-root>` 的版本与内容摘要,将实际浏览器结果、场景 ID、视口和截图保存到 `qa/browser.json`,绑定同一摘要。运行 `check-prototype.cjs <prototype-root> --acceptance` 核对证据与覆盖;有修改则旧证据失效。
81
+
82
+ 没有实际浏览器证据时交付待验证候选,不能填写 `passed`。本地通过仍是 `pending-review`。提供可打开的预览、模式、范围、待确认问题、检查结果和 `HANDOFF.md`;关键检查失败时明确阻断项。
83
+
84
+ 实际验收通过后,将 prototype.json 的 verification 更新为 passed 并记录对应 digest;review 保持 pending-review。文件再变化时重新验证,不能只修改状态字段。
85
+
86
+ ### 6. 迭代与确认
87
+
88
+ `revise` 先运行 `manage-baseline.cjs revise <prototype-root> --revision r002`,读取当前设计契约和旧基线,按反馈产生新候选并重新验证受影响场景。保留旧基线和其确认记录;修改全局设计或业务状态规则必须说明差异。
89
+
90
+ `confirm-baseline` 只能依据用户对明确版本的认可。确认 JSON 含 `revision`、`digest`、`reviewer`、`statement`、`source`,记录用户原意和来源,不能由代理自我认可。先通过当前验收,再运行 `manage-baseline.cjs confirm-baseline <prototype-root> --confirmation <record.json>`。版本或摘要不符、必需证据缺失、旧基线已存在时脚本拒绝。
91
+
92
+ 后续 UI 实现读取项目清单、适用基线及页面规则,运行差异检查。`check-prototype.cjs --enforce-baseline` 可作为设计契约变更检查;它检查原型及其契约,不自动证明任意生产代码的视觉一致性。需要强制合并门禁时由项目实际 Hook/CI 接入并验证。
93
+
94
+ ## Common Rationalizations
95
+
96
+ | 想法 | 要求 |
97
+ | --- | --- |
98
+ | 专业技能缺失就直接换成模板模式 | 先提示安装或修复,用户明确选择后才切换 |
99
+ | 搜索返回了配色和首页结构就全部采用 | 核对产品与页面匹配,业务界面不能被营销结构替换 |
100
+ | 通用演示生成成功就是完成用户业务 | 按实际需求实现并更新业务映射与验收 |
101
+ | 测试通过可以标记用户已批准 | 本地验证与具体版本的用户认可分别记录 |
102
+ | 更新参考截图即可消除设计差异 | 先解释变更并评审,再更新对应基线 |
103
+
104
+ ## Red Flags
105
+
106
+ - 未说明模式变化,声称使用了未安装或没有实际采用建议的专业技能。
107
+ - 保留通用演示数据却报告真实业务完成,或把演示授权当服务端权限。
108
+ - 文件变化后继续使用旧的浏览器报告或用户确认。
109
+ - 覆盖已认可的快照、随意更换模板,或为了检查通过降低原有门槛。
110
+ - 用结构校验、词法路由或截图文件存在冒充浏览器和宿主执行证据。
111
+
112
+ ## Verification
113
+
114
+ - [ ] 模板、版本、运行形态、模式和专业能力实际使用有记录。
115
+ - [ ] 业务映射完整,原型行为与本次范围一致;待确认项可见。
116
+ - [ ] 专业建议已核对并形成具体规则;模板模式明确记录未使用。
117
+ - [ ] 结构校验通过,实际浏览器覆盖必要场景并绑定当前内容摘要。
118
+ - [ ] 候选交付待评审;冻结仅依据同一版本的人类确认。
119
+ - [ ] 迭代读取适用基线,设计变更和工程交接保持可追溯。
@@ -0,0 +1,147 @@
1
+ {
2
+ "schemaVersion": 2,
3
+ "templates": [
4
+ {
5
+ "id": "enterprise-admin",
6
+ "name": "企业管理后台",
7
+ "version": "0.1.0",
8
+ "availability": "available",
9
+ "reviewStatus": "pending-review",
10
+ "artifactKind": "html-review",
11
+ "runtime": "HTML/CSS/JavaScript",
12
+ "source": "EASEL v0.14 / Antdv Next HTML 审查版",
13
+ "bestFor": [
14
+ "企业管理",
15
+ "审批台账",
16
+ "复杂表单及多模块业务"
17
+ ],
18
+ "preview": "enterprise-admin/index.html#/workbench",
19
+ "fixed": [
20
+ "原 EASEL 设计 token",
21
+ "导航和控件规范",
22
+ "权限及状态语义"
23
+ ],
24
+ "adjustable": [
25
+ "业务模块",
26
+ "业务字段",
27
+ "按需求适配的流程"
28
+ ],
29
+ "manifest": "enterprise-admin/manifest.json"
30
+ },
31
+ {
32
+ "id": "ai-workbench",
33
+ "name": "AI 工作台",
34
+ "version": null,
35
+ "availability": "planned",
36
+ "source": "https://github.com/TencentCloud/Octop",
37
+ "bestFor": [
38
+ "Agent 会话",
39
+ "执行过程",
40
+ "工具及产物工作区"
41
+ ]
42
+ },
43
+ {
44
+ "id": "digital-twin",
45
+ "name": "数字孪生大屏",
46
+ "version": null,
47
+ "availability": "planned",
48
+ "bestFor": [
49
+ "场景对象",
50
+ "指标告警",
51
+ "联动下钻"
52
+ ]
53
+ },
54
+ {
55
+ "id": "mobile-app",
56
+ "name": "移动端应用",
57
+ "version": null,
58
+ "availability": "planned",
59
+ "bestFor": [
60
+ "移动业务",
61
+ "待办",
62
+ "触控表单"
63
+ ]
64
+ }
65
+ ],
66
+ "legacyTemplates": [
67
+ {
68
+ "id": "classic-admin",
69
+ "name": "企业管理后台",
70
+ "version": "1.0.0",
71
+ "artifactKind": "html-review",
72
+ "runtime": "HTML/CSS/JavaScript",
73
+ "bestFor": [
74
+ "申请审批",
75
+ "台账",
76
+ "组织管理"
77
+ ],
78
+ "preview": "common/gallery.html?template=classic-admin",
79
+ "license": "MIT",
80
+ "fixed": [
81
+ "导航体系",
82
+ "状态语义",
83
+ "字号及间距尺度"
84
+ ],
85
+ "adjustable": [
86
+ "业务字段",
87
+ "表单分组",
88
+ "模板尺度内的信息密度"
89
+ ],
90
+ "availability": "legacy",
91
+ "manifest": "classic-admin/manifest.json"
92
+ },
93
+ {
94
+ "id": "modern-workspace",
95
+ "name": "现代工作空间",
96
+ "version": "1.0.0",
97
+ "artifactKind": "html-review",
98
+ "runtime": "HTML/CSS/JavaScript",
99
+ "bestFor": [
100
+ "项目协作",
101
+ "任务",
102
+ "内容管理"
103
+ ],
104
+ "preview": "common/gallery.html?template=modern-workspace",
105
+ "license": "MIT",
106
+ "fixed": [
107
+ "导航体系",
108
+ "状态语义",
109
+ "字号及间距尺度"
110
+ ],
111
+ "adjustable": [
112
+ "业务字段",
113
+ "表单分组",
114
+ "模板尺度内的信息密度"
115
+ ],
116
+ "availability": "legacy",
117
+ "manifest": "modern-workspace/manifest.json"
118
+ },
119
+ {
120
+ "id": "data-operations",
121
+ "name": "数据运营控制台",
122
+ "version": "1.0.0",
123
+ "artifactKind": "html-review",
124
+ "runtime": "HTML/CSS/JavaScript",
125
+ "bestFor": [
126
+ "指标与明细",
127
+ "异常处置",
128
+ "运营台账"
129
+ ],
130
+ "preview": "common/gallery.html?template=data-operations",
131
+ "license": "MIT",
132
+ "fixed": [
133
+ "导航体系",
134
+ "状态语义",
135
+ "字号及间距尺度"
136
+ ],
137
+ "adjustable": [
138
+ "业务字段",
139
+ "表单分组",
140
+ "模板尺度内的信息密度"
141
+ ],
142
+ "availability": "legacy",
143
+ "manifest": "data-operations/manifest.json"
144
+ }
145
+ ],
146
+ "defaultTemplate": "enterprise-admin"
147
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "adapter": "legacy-html",
4
+ "preset": "classic-admin/preset.json",
5
+ "resources": {
6
+ "common": "common"
7
+ },
8
+ "defaultTitle": "立项申请"
9
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "layout": "admin",
3
+ "primitive": { "blue": "#2563eb", "slate": "#172b4d", "spacing": [4, 8, 12, 16, 24, 32] },
4
+ "semantic": { "color-primary": "#2563eb", "color-text": "#172b4d", "color-muted": "#53657f", "color-background": "#f4f6fa", "color-surface": "#ffffff", "color-border": "#dce3ee", "color-sidebar": "#ffffff", "color-sidebar-text": "#172b4d", "color-success": "#166534", "color-warning": "#92400e", "color-danger": "#b91c1c", "space-page": "32px", "font-body": "system-ui, -apple-system, 'PingFang SC', 'Microsoft YaHei', sans-serif" },
5
+ "component": { "radius-panel": "8px", "control-height": "40px", "table-cell-space": "16px", "sidebar-width": "220px" }
6
+ }
@@ -0,0 +1,89 @@
1
+ import { statusLabels, validateApplication, canPerform, transition } from './domain.mjs';
2
+ const $ = selector => document.querySelector(selector);
3
+ const escape = value => String(value ?? '').replace(/[&<>"']/g, char => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '"': '&quot;', "'": '&#39;' }[char]));
4
+ const badge = value => `<span class="badge ${value}">${statusLabels[value]}</span>`;
5
+ const money = value => new Intl.NumberFormat('zh-CN').format(value);
6
+ const [config, seeds] = await Promise.all([fetch('./config.json').then(r => r.json()), fetch('../mocks/applications.json').then(r => r.json())]);
7
+ const previewTemplate = new URLSearchParams(location.search).get('template');
8
+ if (config.preview && ['classic-admin', 'modern-workspace', 'data-operations'].includes(previewTemplate)) {
9
+ const preset = await fetch(`../../${previewTemplate}/preset.json`).then(r => r.json());
10
+ config.layout = preset.layout;
11
+ config.templateName = { 'classic-admin': '企业管理后台', 'modern-workspace': '现代工作空间', 'data-operations': '数据运营控制台' }[previewTemplate];
12
+ config.id = `preview-${previewTemplate}`;
13
+ for (const [key, value] of Object.entries({ ...preset.semantic, ...preset.component })) document.documentElement.style.setProperty(`--${key}`, value);
14
+ }
15
+ document.body.dataset.layout = config.layout;
16
+ document.title = config.title;
17
+ $('#template-name').textContent = config.templateName;
18
+ const storageKey = `i3-prototype-${config.id}`;
19
+ let records = seeds;
20
+ try { const stored = JSON.parse(localStorage.getItem(storageKey)); if (Array.isArray(stored)) records = stored; } catch {}
21
+ let role = 'requester', scene = 'normal', filter = '', reviewing = null;
22
+ function persist() { try { localStorage.setItem(storageKey, JSON.stringify(records)); } catch { notify('浏览器未允许保存,当前演示仍可继续'); } }
23
+ function notify(message) { $('#feedback').textContent = message; }
24
+ function navigate(route) { if (location.hash === route) render(); else location.hash = route; }
25
+ function pageTitle(title, description, action = '') { return `<div class="page-heading"><div><div class="eyebrow">申请与审批</div><h1>${title}</h1><p>${description}</p></div>${action}</div>`; }
26
+ function metrics() { const visible = records.filter(r => role !== 'requester' || r.applicant === '李思'); return `<section class="metrics" aria-label="申请概览">${[['全部申请', visible.length], ['待审批', visible.filter(r => r.status === 'submitted').length], ['已通过', visible.filter(r => r.status === 'approved').length], ['草稿', visible.filter(r => r.status === 'draft').length]].map(([label, count]) => `<div><span>${label}</span><strong>${count}</strong></div>`).join('')}</section>`; }
27
+ function listPage() {
28
+ const visible = scene === 'empty' ? [] : records.filter(record => (role !== 'requester' || record.applicant === '李思') && (record.title + record.department).includes(filter));
29
+ $('#page').innerHTML = pageTitle(escape(config.title), '集中查看申请进度,按角色完成提交与审批。', role === 'requester' ? '<a class="button primary" href="#/new">新建申请</a>' : '') + metrics() + `<section class="panel"><div class="panel-toolbar"><h2>申请台账 <span class="count">${visible.length}</span></h2><form id="filter-form"><label class="sr-only" for="filter">搜索项目或部门</label><input id="filter" placeholder="搜索项目或部门" value="${escape(filter)}"><button>查询</button><button type="button" id="clear-filter">重置</button></form></div>${scene === 'loading' ? '<div class="empty" role="status" aria-busy="true"><h3>正在加载申请</h3><p>请稍候,申请列表正在准备。</p></div>' : scene === 'failed' ? '<div class="empty" role="alert"><h3>暂时无法加载</h3><p>已保留当前筛选条件,请重试。</p><button id="retry">重新加载</button></div>' : visible.length ? `<div class="table-scroll"><table><thead><tr><th scope="col">项目名称</th><th scope="col">申请部门</th><th scope="col">申请金额</th><th scope="col">状态</th><th scope="col">申请人</th><th scope="col">操作</th></tr></thead><tbody>${visible.map(r => `<tr><td><a class="record-title" href="#/detail/${r.id}">${escape(r.title)}</a><small>${r.id} · ${r.date}</small></td><td>${escape(r.department)}</td><td class="numeric">¥ ${money(r.amount)}</td><td>${badge(r.status)}</td><td>${escape(r.applicant)}</td><td><a href="#/detail/${r.id}">查看详情</a></td></tr>`).join('')}</tbody></table></div>` : '<div class="empty"><h3>暂无申请</h3><p>调整筛选条件,或新建一份申请。</p></div>'}<div class="panel-foot">共 ${visible.length} 条记录 · 当前为本地演示</div></section>`;
30
+ $('#filter-form').onsubmit = event => { event.preventDefault(); filter = $('#filter').value.trim(); render(); };
31
+ $('#clear-filter').onclick = () => { filter = ''; render(); };
32
+ if ($('#retry')) $('#retry').onclick = () => { scene = 'normal'; $('#scene').value = scene; render(); };
33
+ }
34
+ function fieldErrors(errors) { return Object.entries(errors).map(([key, value]) => `<li><a href="#${key}">${value}</a></li>`).join(''); }
35
+ function formPage(record = null) {
36
+ if (role !== 'requester' || (record && !canPerform(record, role, 'save'))) { $('#page').innerHTML = pageTitle('当前角色无法编辑', '切换到申请人查看可操作范围。') + '<a class="button" href="#/list">返回台账</a>'; return; }
37
+ const value = record || { title: '', department: '', amount: '', description: '' };
38
+ $('#page').innerHTML = pageTitle(record ? '编辑申请' : '新建申请', '填写基本信息与申请说明,保存草稿或提交审批。') + `<section class="panel form-panel"><form id="application-form" novalidate><div id="error-summary" tabindex="-1" role="alert" hidden><h2>请检查以下内容</h2><ul></ul></div><h2>基本信息</h2><div class="fields"><div class="field wide"><label for="title">项目名称 <span aria-hidden="true">*</span></label><input id="title" name="title" required maxlength="100" value="${escape(value.title)}"><p class="field-error" id="title-error"></p></div><div class="field"><label for="department">申请部门 <span aria-hidden="true">*</span></label><select id="department" name="department" required><option value="">请选择部门</option>${['运营中心', '产品中心', '技术中心'].map(d => `<option ${value.department === d ? 'selected' : ''}>${d}</option>`).join('')}</select><p class="field-error" id="department-error"></p></div><div class="field"><label for="amount">申请金额(元) <span aria-hidden="true">*</span></label><input id="amount" name="amount" inputmode="decimal" type="number" min="1" required value="${escape(value.amount)}"><p class="field-error" id="amount-error"></p></div><div class="field wide"><label for="description">申请说明 <span aria-hidden="true">*</span></label><textarea id="description" name="description" rows="5" required>${escape(value.description)}</textarea><p class="field-error" id="description-error"></p></div></div><div class="form-actions"><a class="button" href="#/list">取消</a><button name="action" value="save">保存草稿</button><button class="primary" name="action" value="submit">提交审批</button></div></form></section>`;
39
+ $('#application-form').onsubmit = event => {
40
+ event.preventDefault();
41
+ const data = Object.fromEntries(new FormData(event.currentTarget));
42
+ data.amount = Number(data.amount);
43
+ const errors = validateApplication(data);
44
+ for (const field of ['title', 'department', 'amount', 'description']) {
45
+ $(`#${field}-error`).textContent = errors[field] || '';
46
+ $(`#${field}`).setAttribute('aria-invalid', String(Boolean(errors[field])));
47
+ $(`#${field}`).setAttribute('aria-describedby', `${field}-error`);
48
+ }
49
+ const summary = $('#error-summary');
50
+ summary.hidden = !Object.keys(errors).length;
51
+ summary.querySelector('ul').innerHTML = fieldErrors(errors);
52
+ if (!summary.hidden) { summary.focus(); summary.querySelectorAll('a').forEach(link => link.onclick = event => { event.preventDefault(); $(link.getAttribute('href')).focus(); }); return; }
53
+ if (scene === 'submit-failed') { notify('提交失败,已保留填写内容,请稍后重试'); return; }
54
+ const draft = { ...(record || { id: `A-${String(records.length + 1).padStart(3, '0')}`, applicant: '李思', status: 'draft', date: '2026-10-14', history: [] }), ...data };
55
+ const result = transition(draft, role, event.submitter?.value || 'save');
56
+ records = record ? records.map(r => r.id === record.id ? result : r) : [...records, result];
57
+ persist(); navigate(`#/detail/${result.id}`); notify(result.status === 'submitted' ? '申请已提交,等待审批' : '草稿已保存');
58
+ };
59
+ }
60
+ function detailPage(id) {
61
+ const record = records.find(r => r.id === id && (role !== 'requester' || r.applicant === '李思'));
62
+ if (!record) { $('#page').innerHTML = pageTitle('未找到申请', '记录不存在或当前演示角色无法查看。') + '<a class="button" href="#/list">返回台账</a>'; return; }
63
+ $('#page').innerHTML = pageTitle(escape(record.title), `${record.id} · ${record.date}`, '<a class="button" href="#/list">返回台账</a>') + `<div class="detail-grid"><section class="panel detail-panel"><div class="panel-title"><h2>申请信息</h2>${badge(record.status)}</div><dl><div><dt>申请部门</dt><dd>${escape(record.department)}</dd></div><div><dt>申请金额</dt><dd>¥ ${money(record.amount)}</dd></div><div><dt>申请人</dt><dd>${escape(record.applicant)}</dd></div><div class="wide"><dt>申请说明</dt><dd class="description">${escape(record.description)}</dd></div></dl><div class="form-actions">${canPerform(record, role, 'save') ? '<button id="edit">编辑申请</button>' : ''}${canPerform(record, role, 'submit') ? '<button class="primary" id="submit-existing">提交审批</button>' : ''}${canPerform(record, role, 'approve') ? '<button id="reject" class="danger">退回申请</button><button id="approve" class="primary">审批通过</button>' : ''}${role === 'viewer' ? '<span class="muted">当前角色仅可查看</span>' : ''}</div></section><section class="panel history-panel"><h2>审批记录</h2>${record.history.length ? `<ol class="timeline">${record.history.map(item => `<li><strong>${item.action}</strong><span>${escape(item.actor)}</span><p>${escape(item.note || '已完成操作')}</p></li>`).join('')}</ol>` : '<p class="muted">尚未提交审批</p>'}</section></div>`;
64
+ if ($('#edit')) $('#edit').onclick = () => formPage(record);
65
+ if ($('#submit-existing')) $('#submit-existing').onclick = () => {
66
+ if (scene === 'submit-failed') { notify('提交失败,申请内容已保留'); return; }
67
+ records = records.map(r => r.id === id ? transition(r, role, 'submit') : r); persist(); render(); notify('申请已提交,等待审批');
68
+ };
69
+ for (const action of ['approve', 'reject']) if ($(`#${action}`)) $(`#${action}`).onclick = () => {
70
+ reviewing = { id, action }; $('#review-title').textContent = action === 'approve' ? '审批通过' : '退回申请'; $('#review-description').textContent = record.title; $('#review-note').value = ''; $('#review-error').textContent = ''; $('#review-dialog').showModal(); $('#review-note').focus();
71
+ };
72
+ }
73
+ function render() {
74
+ const route = location.hash || '#/list';
75
+ $('#breadcrumb').textContent = route.startsWith('#/detail') ? '申请详情' : route === '#/new' ? '新建申请' : '申请台账';
76
+ document.querySelectorAll('.nav-link').forEach(link => { const active = link.getAttribute('href') === (route.startsWith('#/detail') ? '#/list' : route); link.classList.toggle('active', active); if (active) link.setAttribute('aria-current', 'page'); else link.removeAttribute('aria-current'); });
77
+ if (route === '#/new') formPage(); else if (route.startsWith('#/detail/')) detailPage(route.split('/')[2]); else listPage();
78
+ }
79
+ $('#role').onchange = event => { role = event.target.value; render(); };
80
+ $('#scene').onchange = event => { scene = event.target.value; if (!$('#application-form')) render(); };
81
+ $('#reset').onclick = () => { records = structuredClone(seeds); filter = ''; scene = 'normal'; $('#scene').value = scene; persist(); navigate('#/list'); notify('示例数据已恢复'); };
82
+ $('#close-review').onclick = () => $('#review-dialog').close();
83
+ $('#review-form').onsubmit = event => {
84
+ event.preventDefault();
85
+ try { records = records.map(r => r.id === reviewing.id ? transition(r, role, reviewing.action, $('#review-note').value) : r); persist(); $('#review-dialog').close(); render(); notify(reviewing.action === 'approve' ? '申请已通过' : '申请已退回'); }
86
+ catch (error) { $('#review-error').textContent = error.message; $('#review-note').focus(); }
87
+ };
88
+ window.addEventListener('hashchange', render);
89
+ render();
@@ -0,0 +1 @@
1
+ { "id": "template-preview", "title": "立项申请", "templateName": "企业管理后台", "layout": "admin", "preview": true }
@@ -0,0 +1,20 @@
1
+ export const statusLabels = { draft: '草稿', submitted: '待审批', approved: '已通过', rejected: '已退回' };
2
+ export function validateApplication(value) {
3
+ const errors = {};
4
+ if (!value.title?.trim()) errors.title = '请输入项目名称';
5
+ if (!value.department?.trim()) errors.department = '请选择申请部门';
6
+ if (!Number.isFinite(Number(value.amount)) || Number(value.amount) <= 0) errors.amount = '申请金额必须大于零';
7
+ if (!value.description?.trim()) errors.description = '请填写申请说明';
8
+ return errors;
9
+ }
10
+ export function canPerform(record, role, action) {
11
+ if (['approve', 'reject'].includes(action)) return role === 'approver' && record.status === 'submitted';
12
+ return ['save', 'submit'].includes(action) && role === 'requester' && record.applicant === '李思' && ['draft', 'rejected'].includes(record.status);
13
+ }
14
+ export function transition(record, role, action, note = '') {
15
+ if (!canPerform(record, role, action)) throw new Error('当前角色或申请状态不允许此操作');
16
+ if (action === 'submit' && Object.keys(validateApplication(record)).length) throw new Error('申请信息校验未通过');
17
+ if (action === 'reject' && !note.trim()) throw new Error('请填写退回原因');
18
+ const next = { save: 'draft', submit: 'submitted', approve: 'approved', reject: 'rejected' }[action];
19
+ return { ...record, status: next, history: [...record.history, { action: { save: '保存草稿', submit: '提交申请', approve: '审批通过', reject: '退回申请' }[action], actor: role === 'requester' ? '李思' : '审批人', note }] };
20
+ }
@@ -0,0 +1,17 @@
1
+ <!doctype html>
2
+ <html lang="zh-CN">
3
+ <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>立项申请</title><link rel="icon" href="data:,"><link rel="stylesheet" href="./tokens.css"><link rel="stylesheet" href="./styles.css"></head>
4
+ <body>
5
+ <a class="skip-link" href="#main">跳到主要内容</a>
6
+ <div class="shell">
7
+ <aside class="sidebar"><a class="brand" href="#/list"><span class="brand-mark" aria-hidden="true">工</span><span>业务工作台<small id="template-name">申请与审批</small></span></a><nav aria-label="工作台导航"><a class="nav-link" href="#/list">申请台账</a><a class="nav-link" href="#/new">新建申请</a></nav><div class="sidebar-note">交互原型<br>本地演示数据</div></aside>
8
+ <div class="workspace"><header class="topbar"><span class="breadcrumb">工作台 / <span id="breadcrumb">申请台账</span></span><label class="role-control">演示角色 <select id="role"><option value="requester">申请人 · 李思</option><option value="approver">审批人</option><option value="viewer">只读人员</option></select></label></header>
9
+ <main id="main" tabindex="-1"><div id="page"></div></main>
10
+ <footer><span>交互演示 · 数据仅保存在本机</span><label>演示情景 <select id="scene"><option value="normal">正常数据</option><option value="empty">空列表</option><option value="loading">加载中</option><option value="failed">加载失败</option><option value="submit-failed">提交失败</option></select></label><button class="text-button" id="reset">恢复示例</button></footer>
11
+ </div>
12
+ </div>
13
+ <div id="feedback" role="status" aria-live="polite"></div>
14
+ <dialog id="review-dialog" aria-labelledby="review-title"><form id="review-form"><h2 id="review-title">审批申请</h2><p id="review-description"></p><label for="review-note">审批意见</label><textarea id="review-note" rows="4"></textarea><p id="review-error" class="field-error" role="alert"></p><div class="form-actions"><button type="button" id="close-review">取消</button><button type="submit" class="primary">确认审批</button></div></form></dialog>
15
+ <script type="module" src="./app.mjs"></script>
16
+ </body>
17
+ </html>
@@ -0,0 +1,16 @@
1
+ 'use strict';
2
+ const http = require('node:http');
3
+ const fs = require('node:fs');
4
+ const path = require('node:path');
5
+ const root = path.resolve(__dirname, '..');
6
+ const types = { '.html': 'text/html', '.mjs': 'text/javascript', '.css': 'text/css', '.json': 'application/json' };
7
+ const server = http.createServer((req, res) => {
8
+ let relative;
9
+ try { relative = decodeURIComponent(new URL(req.url, 'http://localhost').pathname); } catch { res.writeHead(400).end(); return; }
10
+ if (relative === '/') { res.writeHead(302, { Location: '/app/index.html' }).end(); return; }
11
+ const file = path.resolve(root, '.' + relative);
12
+ if (!file.startsWith(root + path.sep) || !fs.existsSync(file) || !fs.statSync(file).isFile() || !fs.realpathSync(file).startsWith(fs.realpathSync(root) + path.sep)) { res.writeHead(404).end(); return; }
13
+ res.writeHead(200, { 'Content-Type': (types[path.extname(file)] || 'application/octet-stream') + '; charset=utf-8', 'Cache-Control': 'no-store' });
14
+ fs.createReadStream(file).pipe(res);
15
+ });
16
+ server.listen(Number(process.argv[2] || 0), '127.0.0.1', () => process.stdout.write(`原型预览:http://127.0.0.1:${server.address().port}/\n`));