@design-ai/cli 4.55.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 (529) hide show
  1. package/.claude-plugin/plugin.json +164 -0
  2. package/AGENTS.ko.md +126 -0
  3. package/AGENTS.md +182 -0
  4. package/CHANGELOG.md +6883 -0
  5. package/CLAUDE.md +39 -0
  6. package/LICENSE +21 -0
  7. package/README.ko.md +245 -0
  8. package/README.md +277 -0
  9. package/agents/README.md +14 -0
  10. package/agents/a11y-reviewer.md +121 -0
  11. package/agents/component-architect.md +57 -0
  12. package/agents/design-critic.md +46 -0
  13. package/agents/token-extractor.md +63 -0
  14. package/cli/bin/design-ai-mcp.mjs +6 -0
  15. package/cli/bin/design-ai.mjs +40 -0
  16. package/cli/commands/audit.mjs +111 -0
  17. package/cli/commands/check.mjs +226 -0
  18. package/cli/commands/doctor.mjs +141 -0
  19. package/cli/commands/examples.mjs +58 -0
  20. package/cli/commands/help.mjs +271 -0
  21. package/cli/commands/install.mjs +161 -0
  22. package/cli/commands/learn.mjs +1871 -0
  23. package/cli/commands/list.mjs +143 -0
  24. package/cli/commands/mcp.mjs +27 -0
  25. package/cli/commands/pack.mjs +211 -0
  26. package/cli/commands/prompt.mjs +199 -0
  27. package/cli/commands/route.mjs +247 -0
  28. package/cli/commands/search.mjs +60 -0
  29. package/cli/commands/show.mjs +52 -0
  30. package/cli/commands/site.mjs +558 -0
  31. package/cli/commands/status.mjs +161 -0
  32. package/cli/commands/uninstall.mjs +119 -0
  33. package/cli/commands/update.mjs +184 -0
  34. package/cli/commands/version.mjs +94 -0
  35. package/cli/commands/workspace.mjs +176 -0
  36. package/cli/lib/brief.mjs +52 -0
  37. package/cli/lib/check.mjs +642 -0
  38. package/cli/lib/dispatch.mjs +109 -0
  39. package/cli/lib/doctor.mjs +505 -0
  40. package/cli/lib/examples.mjs +258 -0
  41. package/cli/lib/exec.mjs +63 -0
  42. package/cli/lib/help-flags.mjs +5 -0
  43. package/cli/lib/learn.mjs +3694 -0
  44. package/cli/lib/log.mjs +47 -0
  45. package/cli/lib/mcp-server.mjs +426 -0
  46. package/cli/lib/output.mjs +101 -0
  47. package/cli/lib/pack.mjs +599 -0
  48. package/cli/lib/paths.mjs +63 -0
  49. package/cli/lib/prompt.mjs +603 -0
  50. package/cli/lib/route.mjs +740 -0
  51. package/cli/lib/search.mjs +158 -0
  52. package/cli/lib/show.mjs +161 -0
  53. package/cli/lib/signals.mjs +2337 -0
  54. package/cli/lib/site.mjs +6617 -0
  55. package/cli/lib/skill-proposals.mjs +2046 -0
  56. package/cli/lib/suggest.mjs +66 -0
  57. package/cli/lib/workspace.mjs +1056 -0
  58. package/commands/README.md +25 -0
  59. package/commands/component-spec.md +34 -0
  60. package/commands/conversational.md +44 -0
  61. package/commands/design-from-brief.md +141 -0
  62. package/commands/design-review.md +62 -0
  63. package/commands/document-from-brief.md +47 -0
  64. package/commands/extract-tokens.md +38 -0
  65. package/commands/game-ui.md +40 -0
  66. package/commands/illustration.md +37 -0
  67. package/commands/iterate.md +167 -0
  68. package/commands/motion-design.md +54 -0
  69. package/commands/palette-from-brand.md +50 -0
  70. package/commands/print.md +49 -0
  71. package/commands/slide-deck.md +46 -0
  72. package/commands/spatial.md +47 -0
  73. package/commands/stability-review.md +74 -0
  74. package/commands/video.md +42 -0
  75. package/commands/website-improvement.md +77 -0
  76. package/docs/AGENT-DEVELOPMENT.md +658 -0
  77. package/docs/AI-LEARNING.md +429 -0
  78. package/docs/AIDER-INTEGRATION.md +224 -0
  79. package/docs/ARCHITECTURE.ko.md +183 -0
  80. package/docs/ARCHITECTURE.md +105 -0
  81. package/docs/CODEX-INTEGRATION.md +311 -0
  82. package/docs/COMPANY-WEBSITE-DOGFOOD.ko.md +144 -0
  83. package/docs/COMPANY-WEBSITE-DOGFOOD.md +150 -0
  84. package/docs/COMPANY-WEBSITE-INTAKE-TEMPLATE.ko.md +153 -0
  85. package/docs/COMPANY-WEBSITE-INTAKE-TEMPLATE.md +154 -0
  86. package/docs/CONTRIBUTING.ko.md +203 -0
  87. package/docs/CONTRIBUTING.md +242 -0
  88. package/docs/CURSOR-INTEGRATION.md +220 -0
  89. package/docs/DISTRIBUTION.ko.md +248 -0
  90. package/docs/DISTRIBUTION.md +253 -0
  91. package/docs/DOGFOOD-FINDINGS.md +180 -0
  92. package/docs/DOGFOOD-V4-FINDINGS.md +139 -0
  93. package/docs/DOGFOOD-V4-MKDOCS-FINDINGS.md +233 -0
  94. package/docs/DOGFOOD-V4-NPM-FINDINGS.md +157 -0
  95. package/docs/DOGFOOD-V4-VSCODE-FINDINGS.md +135 -0
  96. package/docs/FIGMA-INTEGRATION.md +222 -0
  97. package/docs/MCP-INTEGRATION.md +243 -0
  98. package/docs/MIGRATION-v4.md +121 -0
  99. package/docs/PLUGIN-PACKAGING.md +240 -0
  100. package/docs/PRODUCT-READINESS.md +66 -0
  101. package/docs/QUICKSTART.ko.md +178 -0
  102. package/docs/QUICKSTART.md +179 -0
  103. package/docs/RELEASE-CHECKLIST.md +292 -0
  104. package/docs/ROADMAP.md +19495 -0
  105. package/docs/SESSION-LOG.md +940 -0
  106. package/docs/TOKEN-SYNC.md +237 -0
  107. package/docs/USING.ko.md +206 -0
  108. package/docs/USING.md +218 -0
  109. package/docs/WEBSITE-IMPROVEMENT.ko.md +75 -0
  110. package/docs/WEBSITE-IMPROVEMENT.md +89 -0
  111. package/docs/announcements/README.md +56 -0
  112. package/docs/announcements/dev-to-korea.md +206 -0
  113. package/docs/announcements/hashnode-post.ko.md +232 -0
  114. package/docs/announcements/okky-post.ko.md +158 -0
  115. package/docs/announcements/press-kit.md +101 -0
  116. package/docs/announcements/reddit-r-korea.md +196 -0
  117. package/docs/announcements/show-hn.md +114 -0
  118. package/docs/announcements/twitter-thread.md +255 -0
  119. package/docs/external-status.md +34 -0
  120. package/docs/integrations/aider-walkthrough.ko.md +275 -0
  121. package/docs/integrations/aider-walkthrough.md +274 -0
  122. package/docs/integrations/codex-walkthrough.ko.md +297 -0
  123. package/docs/integrations/codex-walkthrough.md +297 -0
  124. package/docs/integrations/cursor-walkthrough.ko.md +281 -0
  125. package/docs/integrations/cursor-walkthrough.md +284 -0
  126. package/docs/integrations/design-ai-mcp-server.md +169 -0
  127. package/docs/integrations/figma-mcp.md +149 -0
  128. package/docs/integrations/github-mcp.md +178 -0
  129. package/docs/integrations/linear-mcp.md +215 -0
  130. package/docs/integrations/notion-mcp.md +174 -0
  131. package/docs/integrations/sdk-walkthrough.ko.md +375 -0
  132. package/docs/integrations/sdk-walkthrough.md +375 -0
  133. package/docs/integrations/slack-mcp.md +208 -0
  134. package/docs/integrations/vscode-walkthrough.ko.md +202 -0
  135. package/docs/integrations/vscode-walkthrough.md +205 -0
  136. package/docs/requirements.txt +16 -0
  137. package/docs/site-overrides/extra.css +83 -0
  138. package/docs/site-overrides/favicon.svg +4 -0
  139. package/docs/site-overrides/logo.svg +10 -0
  140. package/docs/site-overrides/main.html +18 -0
  141. package/docs/website-console/app.js +2540 -0
  142. package/docs/website-console/index.html +24 -0
  143. package/docs/website-console/styles.css +975 -0
  144. package/examples/README.md +252 -0
  145. package/examples/cases/dogfood-v4-korean-hr-onboarding.md +356 -0
  146. package/examples/component-accordion-actions.md +153 -0
  147. package/examples/component-accordion-details.md +147 -0
  148. package/examples/component-accordion-summary.md +180 -0
  149. package/examples/component-accordion.md +229 -0
  150. package/examples/component-account-card.md +284 -0
  151. package/examples/component-address-input.md +260 -0
  152. package/examples/component-affix.md +190 -0
  153. package/examples/component-alert-dialog.md +210 -0
  154. package/examples/component-alert-title.md +77 -0
  155. package/examples/component-alert.md +192 -0
  156. package/examples/component-amount-input.md +278 -0
  157. package/examples/component-anchor.md +198 -0
  158. package/examples/component-app-bar.md +249 -0
  159. package/examples/component-aspect-ratio.md +156 -0
  160. package/examples/component-auto-complete.md +199 -0
  161. package/examples/component-avatar-group.md +170 -0
  162. package/examples/component-avatar.md +191 -0
  163. package/examples/component-back-top.md +123 -0
  164. package/examples/component-backdrop.md +148 -0
  165. package/examples/component-badge.md +181 -0
  166. package/examples/component-banner.md +237 -0
  167. package/examples/component-biometric-gate.md +281 -0
  168. package/examples/component-blockquote.md +153 -0
  169. package/examples/component-border-beam.md +207 -0
  170. package/examples/component-bottom-navigation.md +226 -0
  171. package/examples/component-box.md +112 -0
  172. package/examples/component-breadcrumb.md +222 -0
  173. package/examples/component-button-base.md +190 -0
  174. package/examples/component-button-group.md +117 -0
  175. package/examples/component-button.md +213 -0
  176. package/examples/component-calendar.md +280 -0
  177. package/examples/component-callout.md +131 -0
  178. package/examples/component-card-actions.md +101 -0
  179. package/examples/component-card-content.md +90 -0
  180. package/examples/component-card-header.md +122 -0
  181. package/examples/component-card-media.md +79 -0
  182. package/examples/component-card.md +233 -0
  183. package/examples/component-carousel.md +266 -0
  184. package/examples/component-cascader.md +135 -0
  185. package/examples/component-category-picker.md +271 -0
  186. package/examples/component-chart.md +237 -0
  187. package/examples/component-chat-interface.md +399 -0
  188. package/examples/component-checkbox.md +149 -0
  189. package/examples/component-click-away-listener.md +87 -0
  190. package/examples/component-code.md +213 -0
  191. package/examples/component-collapsible.md +219 -0
  192. package/examples/component-color-picker.md +110 -0
  193. package/examples/component-combobox.md +267 -0
  194. package/examples/component-command.md +299 -0
  195. package/examples/component-config-provider.md +190 -0
  196. package/examples/component-context-menu.md +179 -0
  197. package/examples/component-css-baseline.md +148 -0
  198. package/examples/component-date-picker.md +249 -0
  199. package/examples/component-descriptions.md +242 -0
  200. package/examples/component-dialog-actions.md +111 -0
  201. package/examples/component-dialog-content-text.md +76 -0
  202. package/examples/component-dialog-content.md +105 -0
  203. package/examples/component-dialog-title.md +104 -0
  204. package/examples/component-dialog.md +176 -0
  205. package/examples/component-divider.md +182 -0
  206. package/examples/component-doc-page.md +217 -0
  207. package/examples/component-drawer.md +257 -0
  208. package/examples/component-dropdown.md +220 -0
  209. package/examples/component-email-layout.md +253 -0
  210. package/examples/component-empty-state.md +269 -0
  211. package/examples/component-empty.md +172 -0
  212. package/examples/component-fade.md +87 -0
  213. package/examples/component-feature-grid.md +201 -0
  214. package/examples/component-field.md +266 -0
  215. package/examples/component-filled-input.md +114 -0
  216. package/examples/component-flex.md +117 -0
  217. package/examples/component-float-button.md +214 -0
  218. package/examples/component-form-control-label.md +134 -0
  219. package/examples/component-form-control.md +113 -0
  220. package/examples/component-form-controls.md +251 -0
  221. package/examples/component-form-group.md +86 -0
  222. package/examples/component-form-helper-text.md +95 -0
  223. package/examples/component-form-label.md +98 -0
  224. package/examples/component-form.md +291 -0
  225. package/examples/component-game-hud.md +362 -0
  226. package/examples/component-game-menu.md +327 -0
  227. package/examples/component-grid.md +140 -0
  228. package/examples/component-grow.md +79 -0
  229. package/examples/component-hero-block.md +252 -0
  230. package/examples/component-hover-card.md +211 -0
  231. package/examples/component-icon-button.md +142 -0
  232. package/examples/component-icon.md +102 -0
  233. package/examples/component-illustration.md +280 -0
  234. package/examples/component-image-list.md +107 -0
  235. package/examples/component-image.md +282 -0
  236. package/examples/component-input-adornment.md +101 -0
  237. package/examples/component-input-base.md +134 -0
  238. package/examples/component-input-number.md +141 -0
  239. package/examples/component-input-otp.md +271 -0
  240. package/examples/component-input.md +213 -0
  241. package/examples/component-item.md +243 -0
  242. package/examples/component-kbd.md +197 -0
  243. package/examples/component-krw-amount.md +219 -0
  244. package/examples/component-label.md +118 -0
  245. package/examples/component-layout.md +217 -0
  246. package/examples/component-link.md +223 -0
  247. package/examples/component-list-item-avatar.md +72 -0
  248. package/examples/component-list-item-button.md +139 -0
  249. package/examples/component-list-item-icon.md +82 -0
  250. package/examples/component-list-item-text.md +98 -0
  251. package/examples/component-list-item.md +116 -0
  252. package/examples/component-list-subheader.md +70 -0
  253. package/examples/component-list.md +198 -0
  254. package/examples/component-loading-button.md +125 -0
  255. package/examples/component-loading-sequence.md +254 -0
  256. package/examples/component-lottie-player.md +279 -0
  257. package/examples/component-masonry.md +191 -0
  258. package/examples/component-mentions.md +189 -0
  259. package/examples/component-menu-item.md +102 -0
  260. package/examples/component-menu-list.md +98 -0
  261. package/examples/component-menu.md +139 -0
  262. package/examples/component-menubar.md +259 -0
  263. package/examples/component-message.md +162 -0
  264. package/examples/component-mobile-stepper.md +155 -0
  265. package/examples/component-modal.md +220 -0
  266. package/examples/component-navigation-menu.md +295 -0
  267. package/examples/component-notification.md +166 -0
  268. package/examples/component-otp-countdown.md +245 -0
  269. package/examples/component-outlined-input.md +145 -0
  270. package/examples/component-page-transition.md +281 -0
  271. package/examples/component-pagination.md +226 -0
  272. package/examples/component-paper.md +199 -0
  273. package/examples/component-pass-auth.md +265 -0
  274. package/examples/component-payment-brand-button.md +253 -0
  275. package/examples/component-payment-method-selector.md +272 -0
  276. package/examples/component-payment-receipt.md +277 -0
  277. package/examples/component-popconfirm.md +144 -0
  278. package/examples/component-popover.md +239 -0
  279. package/examples/component-popper.md +129 -0
  280. package/examples/component-pricing-cards.md +247 -0
  281. package/examples/component-progress.md +195 -0
  282. package/examples/component-qr-code.md +201 -0
  283. package/examples/component-radio.md +167 -0
  284. package/examples/component-rate.md +202 -0
  285. package/examples/component-resizable.md +163 -0
  286. package/examples/component-result.md +270 -0
  287. package/examples/component-scroll-area.md +199 -0
  288. package/examples/component-scroll-reveal.md +320 -0
  289. package/examples/component-segmented.md +178 -0
  290. package/examples/component-select.md +258 -0
  291. package/examples/component-separator.md +177 -0
  292. package/examples/component-sheet.md +277 -0
  293. package/examples/component-sidebar.md +257 -0
  294. package/examples/component-skeleton.md +178 -0
  295. package/examples/component-slide.md +89 -0
  296. package/examples/component-slider.md +208 -0
  297. package/examples/component-snackbar-content.md +92 -0
  298. package/examples/component-snackbar.md +121 -0
  299. package/examples/component-sonner.md +165 -0
  300. package/examples/component-space.md +125 -0
  301. package/examples/component-spatial-locomotion.md +373 -0
  302. package/examples/component-spatial-panel.md +330 -0
  303. package/examples/component-speed-dial-action.md +78 -0
  304. package/examples/component-speed-dial.md +177 -0
  305. package/examples/component-spin.md +173 -0
  306. package/examples/component-spinner.md +204 -0
  307. package/examples/component-splitter.md +210 -0
  308. package/examples/component-stack.md +130 -0
  309. package/examples/component-statistic.md +282 -0
  310. package/examples/component-step-button.md +157 -0
  311. package/examples/component-step-connector.md +157 -0
  312. package/examples/component-step-content.md +121 -0
  313. package/examples/component-step-icon.md +115 -0
  314. package/examples/component-step-label.md +101 -0
  315. package/examples/component-step.md +84 -0
  316. package/examples/component-steps.md +264 -0
  317. package/examples/component-stock-chart.md +251 -0
  318. package/examples/component-swipeable-drawer.md +149 -0
  319. package/examples/component-switch.md +99 -0
  320. package/examples/component-tab-scroll-button.md +180 -0
  321. package/examples/component-tab.md +120 -0
  322. package/examples/component-table-body.md +82 -0
  323. package/examples/component-table-cell.md +118 -0
  324. package/examples/component-table-container.md +75 -0
  325. package/examples/component-table-footer.md +72 -0
  326. package/examples/component-table-head.md +78 -0
  327. package/examples/component-table-pagination.md +137 -0
  328. package/examples/component-table-row.md +113 -0
  329. package/examples/component-table-sort-label.md +109 -0
  330. package/examples/component-table.md +202 -0
  331. package/examples/component-tabs.md +184 -0
  332. package/examples/component-tag-badge.md +309 -0
  333. package/examples/component-tag.md +102 -0
  334. package/examples/component-testimonial-carousel.md +218 -0
  335. package/examples/component-textarea-autosize.md +114 -0
  336. package/examples/component-textarea.md +173 -0
  337. package/examples/component-time-picker.md +205 -0
  338. package/examples/component-timeline.md +170 -0
  339. package/examples/component-toast.md +224 -0
  340. package/examples/component-toggle-button.md +129 -0
  341. package/examples/component-toggle.md +220 -0
  342. package/examples/component-toolbar.md +104 -0
  343. package/examples/component-tooltip.md +178 -0
  344. package/examples/component-tour.md +176 -0
  345. package/examples/component-transaction-list-item.md +243 -0
  346. package/examples/component-transfer.md +156 -0
  347. package/examples/component-tree-select.md +202 -0
  348. package/examples/component-tree.md +297 -0
  349. package/examples/component-typography.md +215 -0
  350. package/examples/component-upload.md +295 -0
  351. package/examples/component-video-hero.md +409 -0
  352. package/examples/component-video-player.md +340 -0
  353. package/examples/component-voice-input.md +408 -0
  354. package/examples/component-watermark.md +217 -0
  355. package/examples/component-zoom.md +92 -0
  356. package/examples/doc-explanation-example.md +196 -0
  357. package/examples/doc-how-to-example.md +205 -0
  358. package/examples/doc-tutorial-example.md +162 -0
  359. package/examples/dogfood-korean-fintech-system.md +433 -0
  360. package/examples/email-transactional-example.md +259 -0
  361. package/examples/palette-saas-violet.md +235 -0
  362. package/examples/print-business-card-spec.md +205 -0
  363. package/examples/print-packaging-spec.md +285 -0
  364. package/examples/report-example.md +228 -0
  365. package/examples/slide-deck-example.md +237 -0
  366. package/examples/website-improvement-report.md +128 -0
  367. package/examples/website-improvement-workspace.json +126 -0
  368. package/install.sh +189 -0
  369. package/knowledge/COVERAGE.md +740 -0
  370. package/knowledge/PRINCIPLES.md +108 -0
  371. package/knowledge/a11y/contrast.md +70 -0
  372. package/knowledge/a11y/keyboard-and-focus.md +108 -0
  373. package/knowledge/colors/color-theory.md +90 -0
  374. package/knowledge/colors/mui-palette-structure.md +105 -0
  375. package/knowledge/colors/palettes-by-product-type.md +876 -0
  376. package/knowledge/components/INDEX.md +231 -0
  377. package/knowledge/components/index.json +1470 -0
  378. package/knowledge/components/shadcn-registry.md +159 -0
  379. package/knowledge/conversational/ai-chat-interfaces.md +323 -0
  380. package/knowledge/conversational/chatbot-design.md +312 -0
  381. package/knowledge/conversational/conversational-ui-fundamentals.md +299 -0
  382. package/knowledge/conversational/korean-voice-conventions.md +281 -0
  383. package/knowledge/conversational/voice-ui-patterns.md +297 -0
  384. package/knowledge/design-tokens/ant-design.md +124 -0
  385. package/knowledge/design-tokens/material-3.md +235 -0
  386. package/knowledge/design-tokens/polaris-and-carbon.md +231 -0
  387. package/knowledge/design-tokens/tailwind-v4.md +284 -0
  388. package/knowledge/game-ui/game-accessibility.md +317 -0
  389. package/knowledge/game-ui/game-ui-fundamentals.md +281 -0
  390. package/knowledge/game-ui/hud-design.md +324 -0
  391. package/knowledge/game-ui/korean-gaming-conventions.md +312 -0
  392. package/knowledge/game-ui/menu-systems.md +388 -0
  393. package/knowledge/i18n/korean-app-store-visual.md +223 -0
  394. package/knowledge/i18n/korean-document-style.md +301 -0
  395. package/knowledge/i18n/korean-payments.md +211 -0
  396. package/knowledge/i18n/korean-product-conventions.md +96 -0
  397. package/knowledge/i18n/korean-publishing.md +139 -0
  398. package/knowledge/i18n/korean-typography.md +123 -0
  399. package/knowledge/icons/curated-sets.md +225 -0
  400. package/knowledge/illustration/hero-illustrations.md +234 -0
  401. package/knowledge/illustration/illustration-systems.md +221 -0
  402. package/knowledge/illustration/mascot-design.md +208 -0
  403. package/knowledge/illustration/spot-illustrations.md +246 -0
  404. package/knowledge/illustration/svg-optimization.md +308 -0
  405. package/knowledge/layout/spacing-and-grid.md +119 -0
  406. package/knowledge/motion/app-loading-sequences.md +277 -0
  407. package/knowledge/motion/choreography-depth.md +297 -0
  408. package/knowledge/motion/marketing-motion.md +223 -0
  409. package/knowledge/motion/micro-interactions.md +266 -0
  410. package/knowledge/motion/motion-tools.md +281 -0
  411. package/knowledge/motion/principles.md +126 -0
  412. package/knowledge/patterns/auth-flow-design.md +316 -0
  413. package/knowledge/patterns/b2b-onboarding-flows.md +182 -0
  414. package/knowledge/patterns/brand-identity.md +238 -0
  415. package/knowledge/patterns/brand-references.md +97 -0
  416. package/knowledge/patterns/chart-color-encoding.md +269 -0
  417. package/knowledge/patterns/chart-types.md +344 -0
  418. package/knowledge/patterns/dashboard-composition.md +299 -0
  419. package/knowledge/patterns/design-system-qa.md +356 -0
  420. package/knowledge/patterns/document-typography.md +248 -0
  421. package/knowledge/patterns/email-design.md +338 -0
  422. package/knowledge/patterns/empty-states.md +263 -0
  423. package/knowledge/patterns/error-states.md +318 -0
  424. package/knowledge/patterns/form-design.md +237 -0
  425. package/knowledge/patterns/information-architecture.md +341 -0
  426. package/knowledge/patterns/landing-hero-design.md +283 -0
  427. package/knowledge/patterns/landing-page-patterns.md +681 -0
  428. package/knowledge/patterns/list-and-feed.md +371 -0
  429. package/knowledge/patterns/mobile-navigation.md +278 -0
  430. package/knowledge/patterns/money-and-amount.md +301 -0
  431. package/knowledge/patterns/onboarding.md +300 -0
  432. package/knowledge/patterns/pricing-page-design.md +261 -0
  433. package/knowledge/patterns/realtime-data.md +280 -0
  434. package/knowledge/patterns/report-design.md +330 -0
  435. package/knowledge/patterns/search-ux.md +373 -0
  436. package/knowledge/patterns/settings-page.md +325 -0
  437. package/knowledge/patterns/slide-deck-design.md +316 -0
  438. package/knowledge/patterns/styles-catalog.md +2599 -0
  439. package/knowledge/patterns/technical-writing.md +306 -0
  440. package/knowledge/patterns/ui-reasoning.md +1853 -0
  441. package/knowledge/patterns/ux-guidelines.md +1454 -0
  442. package/knowledge/platforms/react-native.md +395 -0
  443. package/knowledge/print/brochures-and-flyers.md +276 -0
  444. package/knowledge/print/korean-print-conventions.md +284 -0
  445. package/knowledge/print/packaging.md +321 -0
  446. package/knowledge/print/print-fundamentals.md +238 -0
  447. package/knowledge/print/signage-and-posters.md +235 -0
  448. package/knowledge/print/stationery.md +262 -0
  449. package/knowledge/spatial/ar-patterns.md +253 -0
  450. package/knowledge/spatial/comfort-and-accessibility.md +245 -0
  451. package/knowledge/spatial/spatial-design-fundamentals.md +346 -0
  452. package/knowledge/spatial/spatial-ui-elements.md +343 -0
  453. package/knowledge/spatial/vr-patterns.md +302 -0
  454. package/knowledge/typography/font-pairings.md +332 -0
  455. package/knowledge/typography/mui-type-scale.md +57 -0
  456. package/knowledge/typography/type-scale-fundamentals.md +105 -0
  457. package/knowledge/video/in-product-video.md +277 -0
  458. package/knowledge/video/korean-video-conventions.md +247 -0
  459. package/knowledge/video/marketing-video.md +258 -0
  460. package/knowledge/video/social-and-short-form.md +257 -0
  461. package/knowledge/video/video-fundamentals.md +296 -0
  462. package/package.json +106 -0
  463. package/skills/README.md +39 -0
  464. package/skills/color-palette/PLAYBOOK.md +175 -0
  465. package/skills/color-palette/SKILL.md +6 -0
  466. package/skills/color-palette/TEMPLATE.md +103 -0
  467. package/skills/component-spec-writer/PLAYBOOK.md +169 -0
  468. package/skills/component-spec-writer/SKILL.md +6 -0
  469. package/skills/component-spec-writer/TEMPLATE.md +115 -0
  470. package/skills/conversational-ui-designer/PLAYBOOK.md +231 -0
  471. package/skills/conversational-ui-designer/SKILL.md +6 -0
  472. package/skills/design-broadcast/PLAYBOOK.md +146 -0
  473. package/skills/design-broadcast/SKILL.md +6 -0
  474. package/skills/design-critique/PLAYBOOK.md +137 -0
  475. package/skills/design-critique/SKILL.md +6 -0
  476. package/skills/design-pr-review/PLAYBOOK.md +171 -0
  477. package/skills/design-pr-review/SKILL.md +6 -0
  478. package/skills/design-system-builder/PLAYBOOK.md +218 -0
  479. package/skills/design-system-builder/SKILL.md +6 -0
  480. package/skills/design-system-qa/PLAYBOOK.md +163 -0
  481. package/skills/design-system-qa/SKILL.md +6 -0
  482. package/skills/document-author/PLAYBOOK.md +167 -0
  483. package/skills/document-author/SKILL.md +6 -0
  484. package/skills/figma-token-sync/PLAYBOOK.md +149 -0
  485. package/skills/figma-token-sync/SKILL.md +6 -0
  486. package/skills/game-ui-designer/PLAYBOOK.md +209 -0
  487. package/skills/game-ui-designer/SKILL.md +6 -0
  488. package/skills/handoff-spec/PLAYBOOK.md +170 -0
  489. package/skills/handoff-spec/SKILL.md +6 -0
  490. package/skills/illustration-designer/PLAYBOOK.md +166 -0
  491. package/skills/illustration-designer/SKILL.md +6 -0
  492. package/skills/motion-designer/PLAYBOOK.md +223 -0
  493. package/skills/motion-designer/SKILL.md +6 -0
  494. package/skills/print-designer/PLAYBOOK.md +209 -0
  495. package/skills/print-designer/SKILL.md +6 -0
  496. package/skills/slide-deck-author/PLAYBOOK.md +198 -0
  497. package/skills/slide-deck-author/SKILL.md +6 -0
  498. package/skills/spatial-designer/PLAYBOOK.md +238 -0
  499. package/skills/spatial-designer/SKILL.md +6 -0
  500. package/skills/ux-audit/PLAYBOOK.md +142 -0
  501. package/skills/ux-audit/SKILL.md +6 -0
  502. package/skills/video-designer/PLAYBOOK.md +240 -0
  503. package/skills/video-designer/SKILL.md +6 -0
  504. package/skills/website-improvement/PLAYBOOK.md +118 -0
  505. package/skills/website-improvement/SKILL.md +6 -0
  506. package/skills/website-improvement/TEMPLATE.md +103 -0
  507. package/tools/audit/changelog-generate.py +176 -0
  508. package/tools/audit/check-coverage.py +483 -0
  509. package/tools/audit/doctor_assertions.py +256 -0
  510. package/tools/audit/example-qa.py +108 -0
  511. package/tools/audit/frontmatter-check.py +199 -0
  512. package/tools/audit/integration-check.py +95 -0
  513. package/tools/audit/korean-copy-check.py +161 -0
  514. package/tools/audit/link-check.py +146 -0
  515. package/tools/audit/local-ci.py +558 -0
  516. package/tools/audit/package-contents.py +723 -0
  517. package/tools/audit/package-smoke.py +22443 -0
  518. package/tools/audit/raw-hex-check.py +252 -0
  519. package/tools/audit/registry-smoke.py +8188 -0
  520. package/tools/audit/release-metadata.py +9832 -0
  521. package/tools/audit/run-all.py +351 -0
  522. package/tools/audit/smoke_assertions.py +12742 -0
  523. package/tools/audit/stability-review.py +332 -0
  524. package/tools/audit/stale-check.py +156 -0
  525. package/tools/migrations/add-version-frontmatter.py +132 -0
  526. package/tools/migrations/bump-last-updated.py +131 -0
  527. package/tools/migrations/promote-stability.py +172 -0
  528. package/tools/preview/README.md +58 -0
  529. package/tools/preview/render-tokens.py +454 -0
@@ -0,0 +1,658 @@
1
+ # Agent development plan
2
+
3
+ This document tracks how design-ai should evolve its local AI learning and agent workflow surface after reviewing adjacent open-source agent projects. It is a product and engineering plan, not a mandate to copy code from those repositories.
4
+
5
+ ## Reference baseline
6
+
7
+ | Reference | Useful pattern | design-ai decision |
8
+ |---|---|---|
9
+ | [NousResearch/hermes-agent](https://github.com/NousResearch/hermes-agent) | Closed learning loop, skills from experience, session search, scheduled automations, subagent delegation | Adopt the pattern as local deterministic learning, route evals, skill proposals, and explicit operator approval. Do not add autonomous background collection yet. |
10
+ | [harness/harness](https://github.com/harness/harness) | Pipeline, conformance tests, release evidence, local service readiness | Adopt evidence-first release gates and conformance-style CLI smoke checks. Do not build a DevOps platform in this repo. |
11
+ | [strands-agents/sdk-python](https://github.com/strands-agents/sdk-python) | Model/tool abstraction, MCP-native agent composition, lightweight SDK shape | Keep design-ai model-agnostic and add tool readiness metadata before adding provider adapters. |
12
+ | [obra/superpowers](https://github.com/obra/superpowers) | Skill-triggered workflow, planning before coding, test-first checkpoints | Adopt mandatory workflow checkpoints in skills and route evals. Keep user approval for destructive or external actions. |
13
+ | [affaan-m/ECC](https://github.com/affaan-m/ECC) | Cross-harness packaging, memory persistence, eval/checkpoint framing, security guardrails | Adopt cross-harness compatibility and eval checkpoint language. Avoid hidden hooks that mutate state without explicit CLI commands. |
14
+ | [anomalyco/opencode](https://github.com/anomalyco/opencode) | Separate plan/build agents and terminal-first agent UX | Add route/eval support for plan vs implementation prompts; no full coding agent runtime in design-ai. |
15
+ | [langflow-ai/langflow](https://github.com/langflow-ai/langflow) and [langgenius/dify](https://github.com/langgenius/dify) | Visual workflow builders, API/MCP deployment, observability | Future Website Console can export workflow JSON and reports. MVP stays static/local. |
16
+ | [anthropics/skills](https://github.com/anthropics/skills) | Self-contained `SKILL.md` folders with metadata, scripts, and resources | Keep skills self-contained and add validation for route/skill coverage. |
17
+ | [langchain-ai/langchain](https://github.com/langchain-ai/langchain) | Agent engineering layers, integrations, observability/evals | Adopt eval/observability concepts only; no dependency on LangChain. |
18
+ | [google-gemini/gemini-cli](https://github.com/google-gemini/gemini-cli) | Terminal-first CLI, MCP support, checkpointing, GitHub action workflows | Add CLI checkpoint reports and future CI smoke targets. |
19
+ | [TauricResearch/TradingAgents](https://github.com/TauricResearch/TradingAgents) | Role-specialized multi-agent debate and risk review | Use role debate as a prompt template for design decisions, not as financial-domain logic. |
20
+ | [farion1231/cc-switch](https://github.com/farion1231/cc-switch) | Cross-tool provider, MCP, and skill management | Future UI can manage provider/readiness metadata. Avoid API relay or provider switching inside this repo. |
21
+ | [Shubhamsaboo/awesome-llm-apps](https://github.com/Shubhamsaboo/awesome-llm-apps) | Runnable app examples and RAG/agent catalog | Use as inspiration for examples only. |
22
+ | [x1xhlol/system-prompts-and-models-of-ai-tools](https://github.com/x1xhlol/system-prompts-and-models-of-ai-tools) | Prompt surface comparison | Do not copy prompts or code. Treat as a red-team/input hygiene reference because licensing and provenance are risky. |
23
+
24
+ ## Architecture stance
25
+
26
+ design-ai should remain a local, deterministic control layer:
27
+
28
+ - It routes tasks to skills, commands, agents, examples, and checked knowledge files.
29
+ - It stores explicit local learning entries and usage metadata.
30
+ - It validates artifacts and captures warn/fail feedback only when requested.
31
+ - It produces prompts, packs, site handoff reports, and release evidence.
32
+ - It should not become a hosted model runtime, external telemetry system, or hidden background trainer.
33
+
34
+ ## Phase plan
35
+
36
+ ### Phase 271: route eval harness
37
+
38
+ Add `design-ai route --eval-template` and `design-ai route --eval` so route selection can be checked with deterministic fixtures. This protects agent routing before deeper learning features rely on it.
39
+
40
+ Example:
41
+
42
+ ```bash
43
+ design-ai route --eval-template --json > route-eval.json
44
+ design-ai route --eval --from-file route-eval.json --strict --json
45
+ ```
46
+
47
+ ### Phase 272: prompt/pack eval harness
48
+
49
+ Extend the eval pattern from route selection to prompt plans and context bundles:
50
+
51
+ - expected route id
52
+ - required files to read
53
+ - required checklist items
54
+ - required prompt fragments
55
+ - optional learning context expectations
56
+ - strict failure on missing playbook files, missing checklist items, route drift, or context bundle drift
57
+
58
+ Examples:
59
+
60
+ ```bash
61
+ design-ai prompt --eval-template --json > prompt-eval.json
62
+ design-ai prompt --eval --from-file prompt-eval.json --strict --json
63
+
64
+ design-ai pack --eval-template --json > pack-eval.json
65
+ design-ai pack --eval --from-file pack-eval.json --strict --json
66
+ ```
67
+
68
+ Prompt evals report the generated prompt plan. Pack evals report a context snapshot with file metadata, context status, and markdown byte counts without dumping full context file bodies into eval JSON.
69
+
70
+ ### Phase 273: learning signal registry
71
+
72
+ Implemented `design-ai learn --signals` as a read-only registry report that joins:
73
+
74
+ - learning profile audit
75
+ - usage sidecar
76
+ - route/prompt/pack/learning eval signal files
77
+ - check learning capture entries
78
+ - deterministic agent development backlog actions
79
+ - workspace readiness
80
+
81
+ ```bash
82
+ design-ai learn --signals --from-file . --json
83
+ design-ai learn --signals --from-file . --strict --json
84
+ design-ai learn --signals --from-file route-eval-report.json --usage-file learning.usage.json
85
+ ```
86
+
87
+ This exposes drift without changing the learning profile, calling external AI APIs, adding dependencies, or storing raw brief text. Use `--strict` when the signal registry and agent development backlog should behave like a local deterministic gate.
88
+
89
+ ### Phase 488: readiness check index
90
+
91
+ Added automation-friendly readiness indexes to `design-ai learn --signals` and `design-ai learn --agent-backlog` JSON:
92
+
93
+ - `requiredCheckIds`
94
+ - `optionalCheckIds`
95
+ - `checkStatusById`
96
+ - `checkRequiredById`
97
+
98
+ These fields keep the existing `checks` array intact while letting local runners branch on checks such as `check-capture` or `agent-development` without array scanning or prose parsing. The change remains deterministic, local, read-only, and dependency-free.
99
+
100
+ ### Phase 274: skill evolution proposals
101
+
102
+ Implemented `design-ai learn --propose-skills` as a preview-only command that converts repeated learning/check issues into proposed skill edits:
103
+
104
+ - candidate skill
105
+ - evidence sources
106
+ - proposed instruction delta
107
+ - verification command
108
+ - risk level
109
+
110
+ ```bash
111
+ design-ai learn --propose-skills --from-file . --json
112
+ design-ai learn --propose-skills --from-file route-eval-report.json --usage-file learning.usage.json
113
+ ```
114
+
115
+ The command groups repeated `source: check:*` learning entries by candidate skill and category. It reports single-entry groups as skipped, rejects `--yes`, and does not change `learning.json`, edit `skills/*/SKILL.md`, call external AI APIs, or add dependencies. No skill file should be changed unless the operator runs an explicit apply command in a later phase.
116
+
117
+ ### Phase 425: skill proposal patch handoffs
118
+
119
+ Added `design-ai learn --propose-skills --patch` as a preview-only handoff mode:
120
+
121
+ ```bash
122
+ design-ai learn --propose-skills --from-file . --patch
123
+ design-ai learn --propose-skills --from-file . --patch --out skill-proposals.patch
124
+ ```
125
+
126
+ The patch output is a unified diff preview that appends proposal review notes to candidate `skills/*/SKILL.md` files for manual review. It still does not mutate `learning.json`, edit skill files, call external AI APIs, add embeddings/fine-tuning, or add dependencies.
127
+
128
+ ### Phase 549: apply-plan decision manual apply status tones
129
+
130
+ Added selected-branch manual-apply status tones under `operatorRunbook.stageSelection.decision`:
131
+
132
+ - `decision.commandOutputArtifactManualApplyStatusToneByKey`
133
+ - `decision.nextCommandOutputArtifactManualApplyStatusTone`
134
+
135
+ Wrappers can now style apply badges without keeping a local status-to-tone map. Current tones are `neutral` for review-only artifacts, `warning` for blocked patch previews, and `success` for ready manual-apply artifacts.
136
+
137
+ ### Phase 548: apply-plan decision manual apply status labels
138
+
139
+ Added selected-branch manual-apply status display labels under `operatorRunbook.stageSelection.decision`:
140
+
141
+ - `decision.commandOutputArtifactManualApplyStatusLabelByKey`
142
+ - `decision.nextCommandOutputArtifactManualApplyStatusLabel`
143
+
144
+ Wrappers can now render apply badges without keeping a local enum-to-label map. Current labels are `Review only`, `Blocked`, and `Ready to apply`.
145
+
146
+ ### Phase 547: apply-plan decision manual apply status
147
+
148
+ Added selected-branch manual-apply status metadata under `operatorRunbook.stageSelection.decision`:
149
+
150
+ - `decision.commandOutputArtifactManualApplyStatusByKey`
151
+ - `decision.nextCommandOutputArtifactManualApplyStatus`
152
+
153
+ Wrappers can now render apply badges from one enum. The values are `not-applicable` for review-only artifacts, `blocked` for manual-apply candidates with pending required preconditions, and `ready` once a manual-apply candidate has no required pending preconditions.
154
+
155
+ ### Phase 546: apply-plan decision manual apply blocked reasons
156
+
157
+ Added selected-branch manual-apply blocked reason metadata under `operatorRunbook.stageSelection.decision`:
158
+
159
+ - `decision.commandOutputArtifactManualApplyBlockedReasonByKey`
160
+ - `decision.commandOutputArtifactManualApplyBlockedReasonCodeByKey`
161
+ - `decision.nextCommandOutputArtifactManualApplyBlockedReason`
162
+ - `decision.nextCommandOutputArtifactManualApplyBlockedReasonCode`
163
+
164
+ Wrappers can now render disabled patch-apply copy from explicit reason fields. Current review reports return `not-manual-apply-candidate`, while patch previews return `required-preconditions-pending` until manual review and clean-workspace preconditions are satisfied.
165
+
166
+ ### Phase 545: apply-plan decision manual apply readiness
167
+
168
+ Added selected-branch manual-apply readiness booleans under `operatorRunbook.stageSelection.decision`:
169
+
170
+ - `decision.commandOutputArtifactManualApplyReadyByKey`
171
+ - `decision.nextCommandOutputArtifactManualApplyReady`
172
+
173
+ Wrappers can now gate patch-apply affordances from one boolean. The field is true only when the artifact is a manual-apply candidate and all required apply preconditions are satisfied; current patch-preview output remains false until manual review and clean-workspace preconditions are explicitly satisfied.
174
+
175
+ ### Phase 544: apply-plan decision apply precondition state counts
176
+
177
+ Added selected-branch apply-precondition state counts under `operatorRunbook.stageSelection.decision`:
178
+
179
+ - `decision.commandOutputArtifactSatisfiedApplyPreconditionCountByKey`
180
+ - `decision.commandOutputArtifactPendingApplyPreconditionCountByKey`
181
+ - `decision.commandOutputArtifactRequiredPendingApplyPreconditionCountByKey`
182
+ - `decision.nextCommandOutputArtifactSatisfiedApplyPreconditionCount`
183
+ - `decision.nextCommandOutputArtifactPendingApplyPreconditionCount`
184
+ - `decision.nextCommandOutputArtifactRequiredPendingApplyPreconditionCount`
185
+
186
+ Wrappers can now render checklist progress and disabled apply affordances without reducing row objects. Current patch-preview preconditions are pending by default; a precondition counts as satisfied only when it explicitly carries `satisfied: true`.
187
+
188
+ ### Phase 543: apply-plan decision apply precondition counts
189
+
190
+ Added selected-branch apply-precondition summary counts under `operatorRunbook.stageSelection.decision`:
191
+
192
+ - `decision.commandOutputArtifactApplyPreconditionCountByKey`
193
+ - `decision.commandOutputArtifactRequiredApplyPreconditionCountByKey`
194
+ - `decision.nextCommandOutputArtifactApplyPreconditionCount`
195
+ - `decision.nextCommandOutputArtifactRequiredApplyPreconditionCount`
196
+
197
+ Wrappers can now render checklist summaries without iterating over compact precondition objects. Use the compact `{ id, label, required }` array for row rendering and these count fields for summary or disabled-state copy.
198
+
199
+ ### Phase 542: apply-plan decision compact apply preconditions
200
+
201
+ Added selected-branch compact apply-precondition objects under `operatorRunbook.stageSelection.decision`:
202
+
203
+ - `decision.commandOutputArtifactApplyPreconditionsByKey.reviewCheckReport`
204
+ - `decision.commandOutputArtifactApplyPreconditionsByKey.proposalPatchPreview`
205
+ - `decision.nextCommandOutputArtifactApplyPreconditions`
206
+
207
+ Wrappers can now render checklist rows from `{ id, label, required }` objects without zipping parallel id and label arrays. Keep using split id/label arrays when a host needs separate automation and display surfaces.
208
+
209
+ ### Phase 541: apply-plan decision apply precondition labels
210
+
211
+ Added selected-branch ordered apply-precondition labels under `operatorRunbook.stageSelection.decision`:
212
+
213
+ - `decision.commandOutputArtifactApplyPreconditionLabelsByKey.reviewCheckReport`
214
+ - `decision.commandOutputArtifactApplyPreconditionLabelsByKey.proposalPatchPreview`
215
+ - `decision.nextCommandOutputArtifactApplyPreconditionLabels`
216
+
217
+ Wrappers can now render checklist copy without maintaining a local label map for precondition ids. Use `decision.commandOutputArtifactApplyPreconditionIdsByKey.<key>` for stable automation ids and `decision.commandOutputArtifactApplyPreconditionLabelsByKey.<key>` for display copy in the same order.
218
+
219
+ ### Phase 540: apply-plan decision apply precondition ids
220
+
221
+ Added selected-branch ordered apply-precondition ids under `operatorRunbook.stageSelection.decision`:
222
+
223
+ - `decision.commandOutputArtifactApplyPreconditionIdsByKey.reviewCheckReport`
224
+ - `decision.commandOutputArtifactApplyPreconditionIdsByKey.proposalPatchPreview`
225
+ - `decision.nextCommandOutputArtifactApplyPreconditionIds`
226
+
227
+ Wrappers can now render patch-apply checklist items from a stable array instead of recombining multiple booleans. Use `decision.commandOutputArtifactApplyPreconditionIdsByKey.proposalPatchPreview` for ordered apply checklist ids, then use the corresponding boolean fields for gate state and confirmation logic.
228
+
229
+ ### Phase 539: apply-plan decision clean workspace apply gates
230
+
231
+ Added selected-branch clean-workspace apply gates under `operatorRunbook.stageSelection.decision`:
232
+
233
+ - `decision.commandOutputArtifactRequiresCleanWorkspaceBeforeApplyByKey.reviewCheckReport`
234
+ - `decision.commandOutputArtifactRequiresCleanWorkspaceBeforeApplyByKey.proposalPatchPreview`
235
+ - `decision.nextCommandOutputArtifactRequiresCleanWorkspaceBeforeApply`
236
+
237
+ Wrappers can now require a clean workspace before manually applying a patch preview without blocking the preview-generation command itself. Treat `decision.nextCommandSafety.requiresCleanWorkspace` as the safety requirement for running the selected command, and `decision.nextCommandOutputArtifactRequiresCleanWorkspaceBeforeApply` as the safety requirement for applying the generated artifact after review.
238
+
239
+ ### Phase 538: apply-plan decision output artifact review instructions
240
+
241
+ Added selected-branch output artifact review guidance under `operatorRunbook.stageSelection.decision`:
242
+
243
+ - `decision.commandOutputArtifactReviewInstructionByKey.reviewCheckReport`
244
+ - `decision.commandOutputArtifactReviewInstructionByKey.proposalPatchPreview`
245
+ - `decision.nextCommandOutputArtifactReviewInstruction`
246
+
247
+ Wrappers can now render artifact-specific review guidance for Markdown reports and patch previews without hard-coding command keys, artifact names, or copy. Use `decision.commandOutputArtifactReviewInstructionByKey.<key>` for review copy, `decision.commandOutputArtifactRequiresManualReviewByKey.<key>` for review gates, and `decision.commandOutputArtifactManualApplyCandidateByKey.<key>` for boolean apply affordances.
248
+
249
+ ### Phase 537: apply-plan decision manual review gates
250
+
251
+ Added selected-branch manual-review-required metadata under `operatorRunbook.stageSelection.decision`:
252
+
253
+ - `decision.commandOutputArtifactRequiresManualReviewByKey.reviewCheckReport`
254
+ - `decision.commandOutputArtifactRequiresManualReviewByKey.proposalPatchPreview`
255
+ - `decision.nextCommandOutputArtifactRequiresManualReview`
256
+
257
+ Wrappers can now require human review before enabling patch-preview apply affordances without parsing command keys, disposition strings, or manual-apply candidate flags. Use `decision.commandOutputArtifactRequiresManualReviewByKey.<key>` for review gates, `decision.commandOutputArtifactManualApplyCandidateByKey.<key>` for boolean apply affordances, and `decision.commandArgsByKey.<key>` for automation execution.
258
+
259
+ ### Phase 536: apply-plan decision manual-apply candidate flags
260
+
261
+ Added selected-branch manual-apply candidate metadata under `operatorRunbook.stageSelection.decision`:
262
+
263
+ - `decision.commandOutputArtifactManualApplyCandidateByKey.reviewCheckReport`
264
+ - `decision.commandOutputArtifactManualApplyCandidateByKey.proposalPatchPreview`
265
+ - `decision.nextCommandOutputArtifactManualApplyCandidate`
266
+
267
+ Wrappers can now show manual-apply buttons, warnings, or confirmation affordances only for patch previews without parsing artifact disposition strings or hard-coding command keys. Use `decision.commandOutputArtifactManualApplyCandidateByKey.<key>` for boolean UI gates, `decision.commandOutputArtifactDispositionByKey.<key>` for post-render handling, and `decision.commandArgsByKey.<key>` for automation execution.
268
+
269
+ ### Phase 535: apply-plan decision output artifact dispositions
270
+
271
+ Added selected-branch output artifact disposition metadata under `operatorRunbook.stageSelection.decision`:
272
+
273
+ - `decision.commandOutputArtifactDispositionByKey.reviewCheckReport`
274
+ - `decision.commandOutputArtifactDispositionByKey.proposalPatchPreview`
275
+ - `decision.nextCommandOutputArtifactDisposition`
276
+
277
+ Wrappers can now distinguish review-only artifacts from manual-apply previews without hard-coding command keys, parsing file names, or inferring behavior from media types. Use `decision.commandOutputArtifactDispositionByKey.<key>` for post-render handling, `decision.commandOutputArtifactMediaTypeByKey.<key>` for content type handling, `decision.commandOutputArtifactActionByKey.<key>` for preview behavior, and `decision.commandArgsByKey.<key>` for automation execution.
278
+
279
+ ### Phase 534: apply-plan decision output artifact media types
280
+
281
+ Added selected-branch output artifact media type metadata under `operatorRunbook.stageSelection.decision`:
282
+
283
+ - `decision.commandOutputArtifactMediaTypeByKey.reviewCheckReport`
284
+ - `decision.commandOutputArtifactMediaTypeByKey.proposalPatchPreview`
285
+ - `decision.nextCommandOutputArtifactMediaType`
286
+
287
+ Wrappers can now configure Markdown and diff viewers, clipboard behavior, or download content types without parsing file extensions, artifact type strings, command strings, or argv arrays. Use `decision.commandOutputArtifactMediaTypeByKey.<key>` for content type handling, `decision.commandOutputArtifactActionByKey.<key>` for preview behavior, `decision.commandOutputArtifactTypeByKey.<key>` for artifact type, and `decision.commandArgsByKey.<key>` for automation execution.
288
+
289
+ ### Phase 533: apply-plan decision output artifact actions
290
+
291
+ Added selected-branch output artifact action metadata under `operatorRunbook.stageSelection.decision`:
292
+
293
+ - `decision.commandOutputArtifactActionByKey.reviewCheckReport`
294
+ - `decision.commandOutputArtifactActionByKey.proposalPatchPreview`
295
+ - `decision.nextCommandOutputArtifactAction`
296
+
297
+ Wrappers can now choose Markdown report rendering or unified diff preview rendering without deriving UI behavior from artifact type strings, file names, command strings, or argv arrays. Use `decision.commandOutputArtifactActionByKey.<key>` for preview behavior, `decision.commandOutputArtifactTypeByKey.<key>` for artifact type, `decision.commandOutputArtifactByKey.<key>` for artifact names, and `decision.commandArgsByKey.<key>` for automation execution.
298
+
299
+ ### Phase 532: apply-plan decision output artifact types
300
+
301
+ Added selected-branch output artifact type metadata under `operatorRunbook.stageSelection.decision`:
302
+
303
+ - `decision.commandOutputArtifactTypeByKey.reviewCheckReport`
304
+ - `decision.commandOutputArtifactTypeByKey.proposalPatchPreview`
305
+ - `decision.nextCommandOutputArtifactType`
306
+
307
+ Wrappers can now distinguish Markdown review reports from unified diff previews without parsing file extensions, command strings, or argv arrays. Use `decision.commandOutputArtifactTypeByKey.<key>` for preview/rendering type decisions, `decision.commandOutputArtifactByKey.<key>` for artifact names, `decision.commandDisplayLabelByKey.<key>` for UI labels, `decision.commandDescriptionByKey.<key>` for helper text, and `decision.commandArgsByKey.<key>` for automation execution.
308
+
309
+ ### Phase 531: apply-plan decision output artifacts
310
+
311
+ Added selected-branch output artifact metadata under `operatorRunbook.stageSelection.decision`:
312
+
313
+ - `decision.commandOutputArtifactByKey.reviewCheckReport`
314
+ - `decision.commandOutputArtifactByKey.proposalPatchPreview`
315
+ - `decision.nextCommandOutputArtifact`
316
+
317
+ Wrappers can now display selected optional preview artifact targets without parsing `--out` arguments from command strings or argv arrays. Use `decision.commandOutputArtifactByKey.<key>` for UI/export artifact names, `decision.commandDisplayLabelByKey.<key>` for UI labels, `decision.commandDescriptionByKey.<key>` for helper text, `decision.commandStringByKey.<key>` for copy/display command strings, and `decision.commandArgsByKey.<key>` for automation execution.
318
+
319
+ ### Phase 530: apply-plan decision command descriptions
320
+
321
+ Added selected-branch command description metadata under `operatorRunbook.stageSelection.decision`:
322
+
323
+ - `decision.commandDescriptionByKey.reviewCheckReport`
324
+ - `decision.commandDescriptionByKey.proposalPatchPreview`
325
+ - `decision.nextCommandDescription`
326
+
327
+ Wrappers can now render selected optional preview command tooltips or secondary descriptions without hard-coding command semantics or scanning `decision.commands`. Use `decision.commandDisplayLabelByKey.<key>` for UI labels, `decision.commandDescriptionByKey.<key>` for helper text, `decision.commandStringByKey.<key>` for copy/display command strings, and `decision.commandArgsByKey.<key>` for automation execution.
328
+
329
+ ### Phase 529: apply-plan decision command display labels
330
+
331
+ Added selected-branch command display-label metadata under `operatorRunbook.stageSelection.decision`:
332
+
333
+ - `decision.commandDisplayLabelByKey.reviewCheckReport`
334
+ - `decision.commandDisplayLabelByKey.proposalPatchPreview`
335
+ - `decision.nextCommandDisplayLabel`
336
+
337
+ Wrappers can now render selected optional preview command labels without deriving UI copy from camelCase command keys or scanning `decision.commands`. Use `decision.commandDisplayLabelByKey.<key>` for UI labels, `decision.commandStringByKey.<key>` for copy/display command strings, and `decision.commandArgsByKey.<key>` for automation execution.
338
+
339
+ ### Phase 528: apply-plan decision command string lookup
340
+
341
+ Added selected-branch command-string lookup metadata under `operatorRunbook.stageSelection.decision`:
342
+
343
+ - `decision.commandStringByKey.reviewCheckReport`
344
+ - `decision.commandStringByKey.proposalPatchPreview`
345
+
346
+ Wrappers can now display or copy selected optional preview command strings by key without scanning `decision.commands`, opening `decision.commandByKey`, or jumping to the top-level `commands` object. Use `decision.commandArgsByKey.<key>` for automation execution and `decision.commandStringByKey.<key>` for human-readable copy/display handoffs.
347
+
348
+ ### Phase 527: apply-plan decision command args lookup
349
+
350
+ Added selected-branch command-args lookup metadata under `operatorRunbook.stageSelection.decision`:
351
+
352
+ - `decision.commandArgsByKey.reviewCheckReport`
353
+ - `decision.commandArgsByKey.proposalPatchPreview`
354
+
355
+ Wrappers can now retrieve selected optional preview command argv by key without scanning `decision.commands`, opening `decision.commandByKey`, or jumping to the top-level `commandArgs` object. The lookup currently maps both selected preview commands to their full structured argv arrays; use `decision.commandByKey.<key>` when a full command object is needed.
356
+
357
+ ### Phase 526: apply-plan decision command safety-level lookup
358
+
359
+ Added selected-branch safety-level lookup metadata under `operatorRunbook.stageSelection.decision`:
360
+
361
+ - `decision.commandSafetyLevelByKey.reviewCheckReport`
362
+ - `decision.commandSafetyLevelByKey.proposalPatchPreview`
363
+
364
+ Wrappers can now validate selected optional preview command safety levels by key without scanning `decision.commands` or opening `decision.commandByKey`. The lookup currently maps both selected preview commands to `local-output`; use `decision.commandByKey.<key>.safety` when full mutation details are needed.
365
+
366
+ ### Phase 525: apply-plan decision command run-policy lookup
367
+
368
+ Added selected-branch run-policy lookup metadata under `operatorRunbook.stageSelection.decision`:
369
+
370
+ - `decision.commandRunPolicyByKey.reviewCheckReport`
371
+ - `decision.commandRunPolicyByKey.proposalPatchPreview`
372
+
373
+ Wrappers can now validate the selected optional preview branch's execution policy by key without scanning `decision.commands` or reading the full `commandSequence`. The lookup currently maps both selected preview commands to `output-artifact`.
374
+
375
+ ### Phase 524: apply-plan decision command step lookup
376
+
377
+ Added selected-branch step lookup metadata under `operatorRunbook.stageSelection.decision`:
378
+
379
+ - `decision.commandStepByKey.reviewCheckReport`
380
+ - `decision.commandStepByKey.proposalPatchPreview`
381
+
382
+ Wrappers can now validate the selected optional preview branch's original command order by key without scanning `decision.commands` or reading the full `commandSequence`. The lookup currently maps `reviewCheckReport` to `2` and `proposalPatchPreview` to `3`.
383
+
384
+ ### Phase 523: apply-plan decision command step metadata
385
+
386
+ Added command-sequence step metadata under `operatorRunbook.stageSelection.decision`:
387
+
388
+ - `decision.commands[*].step`
389
+ - `decision.commandByKey.<key>.step`
390
+ - `decision.nextCommandEntry.step`
391
+ - `decision.nextCommandStep`
392
+
393
+ Wrappers can now preserve the selected optional preview branch's original command order without reading the full `commandSequence`. The selected next command currently reports `nextCommandStep: 2` for `reviewCheckReport`, after the read-only `reviewCheckJson` command at step 1.
394
+
395
+ ### Phase 522: apply-plan decision next command safety
396
+
397
+ Added selected next-command safety metadata under `operatorRunbook.stageSelection.decision`:
398
+
399
+ - `decision.nextCommandSafety`: the full safety object for the command named by `decision.nextCommandKey`
400
+
401
+ This lets wrappers that already consume `decision.nextCommand`, `decision.nextCommandArgs`, and `decision.nextCommandRunPolicy` gate the selected optional preview command without reading `decision.nextCommandEntry`. The field mirrors `decision.nextCommandEntry.safety` and keeps the existing `decision.nextCommandSafetyLevel` string for compatibility.
402
+
403
+ ### Phase 521: apply-plan decision command safety objects
404
+
405
+ Added nested command-level safety objects under `operatorRunbook.stageSelection.decision`:
406
+
407
+ - `decision.commands[*].safety`
408
+ - `decision.commandByKey.<key>.safety`
409
+ - `decision.nextCommandEntry.safety`
410
+
411
+ Wrappers can now inspect `level`, local-output writes, mutation boundaries, external-AI usage, clean-workspace requirements, and the command-specific `reason` directly from the selected decision command object. The older `safetyLevel` and flattened boolean flags remain for compatibility, while `commandSequenceByKey` remains the canonical full-command lookup.
412
+
413
+ ### Phase 520: apply-plan decision next command entry
414
+
415
+ Added a compact full command object under `operatorRunbook.stageSelection.decision`:
416
+
417
+ - `nextCommandEntry`: the first selected optional preview command object, currently `reviewCheckReport`
418
+
419
+ Wrappers should prefer `decision.nextCommandEntry` when rendering or running the first optional preview handoff because it carries the command string, structured args, run policy, safety level, write/mutation flags, external-AI flags, and clean-workspace requirement in one object. The separate `decision.nextCommand*` fields remain for compatibility, while `decision.commandByKey` remains the lookup surface for explicit operator command choice.
420
+
421
+ ### Phase 519: apply-plan decision command lookup
422
+
423
+ Added direct lookup fields under `operatorRunbook.stageSelection.decision`:
424
+
425
+ - `commandByKey`: compact lookup for selected-branch commands
426
+ - `nextCommandKey`: currently `reviewCheckReport`
427
+ - `nextCommand` / `nextCommandArgs`: executable first optional preview command handoff
428
+ - `nextCommandRunPolicy` / `nextCommandSafetyLevel`: quick gate metadata for the first command
429
+
430
+ Wrappers should use `decision.nextCommand*` when offering the first optional preview command and `decision.commandByKey` when the operator chooses a specific preview artifact. The full canonical command contract remains `commandSequenceByKey`.
431
+
432
+ ### Phase 518: apply-plan decision command handoff
433
+
434
+ Added compact selected-branch command handoffs under `operatorRunbook.stageSelection.decision`:
435
+
436
+ - `commandCount`: currently `2`
437
+ - `commandKeys`: `reviewCheckReport`, `proposalPatchPreview`
438
+ - `commands`: compact command objects with command string, structured args, run policy, safety level, write/mutation flags, and external-AI flags
439
+
440
+ Wrappers can now branch on `decision.action`, gate on `decision.safety`, then offer or execute `decision.commands` for optional local preview artifacts. `commandSequenceByKey` remains the full canonical command lookup for later gates.
441
+
442
+ ### Phase 517: apply-plan decision safety summary
443
+
444
+ Added `operatorRunbook.stageSelection.decision.safety` so wrappers can gate the selected decision directly:
445
+
446
+ - `level`: currently `local-output`
447
+ - `writesLocalFiles` / `writesOutputArtifacts`: true for optional preview artifacts
448
+ - `mutatesProfile` / `mutatesReviewFile` / `mutatesSkillFiles`: false
449
+ - `callsExternalAiApis`: false
450
+ - `requiresCleanWorkspace`: false
451
+
452
+ Wrappers should branch on `decision.action`, then inspect `decision.safety` before executing or offering commands. The selected-stage summaries remain available for fuller detail, but the decision object is now self-contained for first-branch gating.
453
+
454
+ ### Phase 516: apply-plan stage decision enum
455
+
456
+ Added `operatorRunbook.stageSelection.decision` as the first branch decision for apply-plan wrappers:
457
+
458
+ - `action`: currently `offer-optional-preview`
459
+ - `stageKey` / `stageKind`: the selected optional preview branch
460
+ - `commandKeys` / `runPolicy`: the commands and execution policy for that branch
461
+ - `nextRequiredStageKey` / `nextRequiredCommandStageKey`: the mandatory path after optional preview
462
+ - `requiresOperatorActionBeforeRequiredCommands`: currently `true`, because accepted skill deltas remain manual
463
+
464
+ Wrappers should branch on `decision.action` before reading the selected-stage summaries. The decision enum is the routing surface; the summaries are the safety/detail surface.
465
+
466
+ ### Phase 515: apply-plan selected stage summaries
467
+
468
+ Added compact selected-stage summaries under `operatorRunbook.stageSelection`:
469
+
470
+ - `nextStage`: the optional selected preview branch, currently `previewArtifacts`
471
+ - `nextRequiredStage`: the first mandatory branch, currently `manualSkillEdit`
472
+ - `nextRequiredCommandStage`: the first mandatory command-bearing branch, currently `reviewReadiness`
473
+
474
+ Each summary includes command count, command keys, optional/required state, stage kind, local-output flags, mutation flags, external-AI flags, clean-workspace requirement, and reason. Wrappers should use these summaries for branch safety checks before consulting `stageByKey` for full stage details.
475
+
476
+ ### Phase 514: apply-plan stage selection summary
477
+
478
+ Added `operatorRunbook.stageSelection` to group the stage-selection policy in one object:
479
+
480
+ - `strategy`: currently `optional-preview-before-required-manual-edit`
481
+ - `stageOrder`: stable operator stage order
482
+ - `nextStageKey` / `nextStageCommandKeys`: optional preview artifacts
483
+ - `nextRequiredStageKey` / `nextRequiredStageCommandKeys`: required manual skill edit stage
484
+ - `nextRequiredCommandStageKey` / `nextRequiredCommandStageCommandKeys`: required read-only review gate
485
+
486
+ Wrappers should use this object when they need a single branch point for optional previews versus mandatory operator work. The top-level fields remain for backward compatibility, and invalid command contracts still return an empty `stageSelection` object.
487
+
488
+ ### Phase 513: apply-plan required stage handoff
489
+
490
+ Added required-stage handoff fields to `operatorRunbook` so local AI/agent wrappers can distinguish optional local preview artifacts from required operator work:
491
+
492
+ - `nextRequiredStageKey`: the first required stage, currently `manualSkillEdit`
493
+ - `nextRequiredStageCommandKeys`: commands on that required stage, currently empty because skill-file edits remain manual
494
+ - `nextRequiredCommandStageKey`: the first required stage that has commands, currently `reviewReadiness`
495
+ - `nextRequiredCommandStageCommandKeys`: commands for that stage, currently `reviewCheckJson`
496
+
497
+ This lets automation offer optional `previewArtifacts` while still routing the mandatory path through manual skill edits and read-only review gates. Invalid command contracts stay fail-closed with empty required-stage fields.
498
+
499
+ ### Phase 512: apply-plan runbook stage index
500
+
501
+ Added `operatorRunbook.stageKeys` and `operatorRunbook.stageByKey` to `design-ai learn --propose-skills --review-file skill-proposals.review.json --apply-plan` so local AI/agent wrappers can retrieve runbook stages by stable key without scanning the ordered `stages` array.
502
+
503
+ The index exposes the same four runbook stages:
504
+
505
+ - `previewArtifacts`
506
+ - `manualSkillEdit`
507
+ - `reviewReadiness`
508
+ - `strictGate`
509
+
510
+ Invalid command contracts stay fail-closed with an empty `stageKeys` list and empty `stageByKey` map. This mirrors the command-level `commandSequenceKeys` / `commandSequenceByKey` contract at the operator-runbook layer while preserving the same no-mutation boundary for learning profiles, review files, skill files, external AI APIs, embeddings, and fine-tuning jobs.
511
+
512
+ ### Phase 511: apply-plan operator runbook
513
+
514
+ Added `operatorRunbook` to `design-ai learn --propose-skills --review-file skill-proposals.review.json --apply-plan` so local AI/agent wrappers can follow the accepted-proposal handoff at the operator stage level.
515
+
516
+ The runbook exposes four deterministic stages:
517
+
518
+ - `previewArtifacts`: optional local-output previews for `reviewCheckReport` and `proposalPatchPreview`
519
+ - `manualSkillEdit`: required manual review/edit of accepted skill deltas
520
+ - `reviewReadiness`: required read-only `reviewCheckJson` validation after manual edits
521
+ - `strictGate`: required read-only strict gate before marking proposals applied
522
+
523
+ Invalid command contracts stay fail-closed with `blocked: true`, zero stages, and no next stage. The runbook is additive and preserves the existing boundary: preview artifact commands may write explicit `--out` files, but apply-plan output still does not mutate `learning.json`, review files, skill files, external AI APIs, embeddings, or fine-tuning jobs.
524
+
525
+ ### Phase 510: apply-plan sequence key index
526
+
527
+ Added `commandSequenceKeys` and `commandSequenceByKey` to `design-ai learn --propose-skills --review-file skill-proposals.review.json --apply-plan` so local AI/agent wrappers can retrieve named follow-up commands without scanning the ordered `commandSequence` array.
528
+
529
+ The index preserves the same validated command items:
530
+
531
+ - `reviewCheckJson`
532
+ - `reviewCheckReport`
533
+ - `proposalPatchPreview`
534
+ - `strictGate`
535
+
536
+ Invalid command contracts stay fail-closed with an empty key list and empty key map. The key index is additive and keeps the same boundary as the ordered sequence: local output previews may write requested `--out` artifacts, but the apply plan still does not mutate `learning.json`, review files, skill files, external AI APIs, embeddings, or fine-tuning jobs.
537
+
538
+ ### Phase 509: apply-plan sequence safety summary
539
+
540
+ Added `commandSequenceSummary` to `design-ai learn --propose-skills --review-file skill-proposals.review.json --apply-plan` so local AI/agent wrappers can branch on the full follow-up handoff without reducing the full `commandSequence` array.
541
+
542
+ The summary reports:
543
+
544
+ - whether the sequence is executable or blocked
545
+ - total step count
546
+ - read-only vs local-output step counts
547
+ - local write/output artifact flags
548
+ - profile, review-file, and skill-file mutation flags
549
+ - external AI API and clean-workspace boundaries
550
+ - aggregate run policy
551
+
552
+ This keeps the apply-plan handoff deterministic and explicit: preview/report/patch artifacts may write local output files when requested with `--out`, but the sequence still does not mutate `learning.json`, review files, skill files, external AI APIs, embeddings, or fine-tuning jobs.
553
+
554
+ ### Phase 275: Website Console MCP probes
555
+
556
+ Implemented `design-ai site --mcp-check --probes` and `design-ai site --mcp-plan --probes` as optional read-only probe overlays for the existing Website Console MCP readiness matrix:
557
+
558
+ - GitHub repo reference parseable through `github.com/<owner>/<repo>` or an existing local repo path
559
+ - Figma URL parseable for `design`, `file`, `board`, `slides`, or `make` handoff references
560
+ - Browser smoke target available from a valid live URL plus configured viewport set
561
+ - deployment provider reference configured with a valid live URL
562
+
563
+ The probes report as a separate `probes` JSON block so the default `--mcp-check` contract stays stable. They remain deterministic, local, and read-only: no external MCP calls, no writes to GitHub/Figma/deploy providers, no crawling, no Lighthouse/axe automation, and no new dependencies.
564
+
565
+ ### Phase 276: workflow graph export
566
+
567
+ Implemented `design-ai site --graph [--json]` so website improvement workspaces and agent plans can be exported as portable graphs that are renderable later in the static console.
568
+
569
+ The graph includes deterministic nodes for:
570
+
571
+ - workspace intake
572
+ - site profile
573
+ - audit categories
574
+ - MCP readiness
575
+ - generated and retained refactor tasks
576
+ - prompt templates
577
+ - handoff report, local bundle, and target website repo boundary
578
+
579
+ Edges connect profile context, audit findings, MCP readiness, task execution, prompt generation, and handoff flow. The export remains deterministic, local, and read-only: no external MCP calls, no target-repo mutation, no workflow runtime dependency, no Lighthouse/axe/crawling, and no new dependencies.
580
+
581
+ ### Phase 277: static workflow graph rendering
582
+
583
+ Implemented the static Website Console `Workflow Graph` tab so operators can inspect the workflow graph in the browser before exporting JSON or handing prompts to a target website repo.
584
+
585
+ The view renders:
586
+
587
+ - summary metrics for graph nodes, edges, tasks, and required MCPs
588
+ - lane-based node groups for intake, audit, MCP readiness, tasks, prompts, and handoff
589
+ - deterministic edge rows matching the portable graph contract
590
+ - boundary markers for local execution, no external MCP calls, no target-repo mutation, and no new dependencies
591
+ - copy/export actions for `website-workflow-graph.json`
592
+
593
+ This keeps the useful part of visual workflow builders in a dependency-free, local/read-only console. It does not add a workflow runtime, backend sync, crawling, Lighthouse/axe automation, or live MCP connection checks.
594
+
595
+ ### Phase 278: handoff evidence tracking
596
+
597
+ Implemented browser-local Website Console evidence tracking for the handoff phase:
598
+
599
+ - executed target-repo work
600
+ - verification results from lint/typecheck/build, Browser QA, deployment checks, or manual QA
601
+ - remaining risks
602
+ - next actions
603
+
604
+ The Handoff Report tab stores those fields in the workspace JSON, shows compact evidence counts, and injects the evidence into copied/exported Markdown reports. This keeps the closed loop between generated prompts and final operator evidence without mutating the target repo, calling external MCPs, adding a backend, or adding dependencies.
605
+
606
+ ### Phase 279: CLI handoff evidence export
607
+
608
+ Implemented `implementationEvidence` support in `design-ai site` so browser-captured evidence survives the file-first CLI workflow:
609
+
610
+ - `--json` reports evidence counts
611
+ - `--tasks` preserves the evidence block
612
+ - `--report` renders executed work, verification results, remaining risks, and next actions
613
+ - `--bundle` stores evidence in `website-workspace.tasks.json`, `website-handoff.md`, and `summary.json`
614
+
615
+ The CLI validates malformed evidence array shapes, but it does not verify target-repo claims automatically. Evidence remains operator-entered, deterministic, local, and dependency-free.
616
+
617
+ ### Phase 280: evidence package smoke expansion
618
+
619
+ Expanded packed-tarball smoke coverage for Website Console evidence preservation:
620
+
621
+ - installed-bin `design-ai site --stdin --report` preserves non-empty handoff evidence in Markdown
622
+ - installed-bin `design-ai site --stdin --tasks` preserves the `implementationEvidence` JSON block
623
+ - installed-bin `design-ai site --stdin --bundle --out <dir>` preserves evidence in `summary.json`, `website-workspace.tasks.json`, and `website-handoff.md`
624
+ - one-shot `npm exec --package <tarball>` covers the same report, tasks, and bundle paths
625
+ - `package-smoke.py --self-test` now includes evidence payload and Markdown drift fixtures
626
+
627
+ This turns the Website Console evidence loop into a release-smoked distribution contract without adding dependencies, calling external MCPs, mutating target repos, or claiming that target-repo evidence is automatically verified.
628
+
629
+ ## Current MVP boundary
630
+
631
+ In scope:
632
+
633
+ - deterministic route, prompt, learning, and site evals
634
+ - local JSON state
635
+ - explicit preview/apply boundaries
636
+ - release smoke coverage
637
+ - skill and command documentation
638
+
639
+ Out of scope:
640
+
641
+ - embeddings
642
+ - fine-tuning
643
+ - autonomous background learning
644
+ - external telemetry
645
+ - hosted sync
646
+ - provider/API relay management
647
+ - copying third-party system prompts
648
+
649
+ ## Verification checklist
650
+
651
+ For every agent/AI phase:
652
+
653
+ - `node --test` for touched CLI modules
654
+ - `design-ai <command> --help` for public CLI surface
655
+ - JSON round-trip check for every machine-readable report
656
+ - strict-mode failure fixture for every eval
657
+ - `git diff --check`
658
+ - release metadata update only when the public smoke surface changes