@flood-md/agent 0.2.9 → 0.2.11

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 (451) hide show
  1. package/DESIGN.md +33 -8
  2. package/README.md +35 -4
  3. package/SKILL.md +42 -0
  4. package/dist/catalog.json +8716 -0
  5. package/dist/materials/component-accordion.md +42 -0
  6. package/dist/materials/component-alert-dialog.md +46 -0
  7. package/dist/materials/component-alert.md +41 -0
  8. package/dist/materials/component-app-shell.md +47 -0
  9. package/dist/materials/component-app-top-bar.md +36 -0
  10. package/dist/materials/component-aspect-ratio.md +36 -0
  11. package/dist/materials/component-autocomplete.md +54 -0
  12. package/dist/materials/component-avatar-group.md +39 -0
  13. package/dist/materials/component-avatar.md +40 -0
  14. package/dist/materials/component-badge.md +37 -0
  15. package/dist/materials/component-blockquote.md +35 -0
  16. package/dist/materials/component-breadcrumb.md +36 -0
  17. package/dist/materials/component-bulk-action-bar.md +52 -0
  18. package/dist/materials/component-button-group.md +39 -0
  19. package/dist/materials/component-button.md +44 -0
  20. package/dist/materials/component-calendar.md +59 -0
  21. package/dist/materials/component-card.md +46 -0
  22. package/dist/materials/component-center.md +39 -0
  23. package/dist/materials/component-character-count.md +42 -0
  24. package/dist/materials/component-check-card.md +39 -0
  25. package/dist/materials/component-checkbox-group.md +48 -0
  26. package/dist/materials/component-checkbox.md +37 -0
  27. package/dist/materials/component-code-snippet.md +37 -0
  28. package/dist/materials/component-collapsible.md +41 -0
  29. package/dist/materials/component-collection-toolbar.md +68 -0
  30. package/dist/materials/component-collection-view-switcher.md +49 -0
  31. package/dist/materials/component-color-picker.md +49 -0
  32. package/dist/materials/component-color-swatch.md +35 -0
  33. package/dist/materials/component-combobox.md +60 -0
  34. package/dist/materials/component-command-list.md +48 -0
  35. package/dist/materials/component-command-palette.md +53 -0
  36. package/dist/materials/component-container.md +36 -0
  37. package/dist/materials/component-context-menu.md +43 -0
  38. package/dist/materials/component-copy-button.md +43 -0
  39. package/dist/materials/component-data-list-item.md +40 -0
  40. package/dist/materials/component-data-list.md +38 -0
  41. package/dist/materials/component-data-table.md +70 -0
  42. package/dist/materials/component-date-field.md +57 -0
  43. package/dist/materials/component-date-picker.md +67 -0
  44. package/dist/materials/component-date-range-field.md +62 -0
  45. package/dist/materials/component-date-range-picker.md +73 -0
  46. package/dist/materials/component-date-time-picker.md +62 -0
  47. package/dist/materials/component-date-time-range-picker.md +70 -0
  48. package/dist/materials/component-description-list.md +42 -0
  49. package/dist/materials/component-dialog.md +45 -0
  50. package/dist/materials/component-divider.md +37 -0
  51. package/dist/materials/component-drawer.md +51 -0
  52. package/dist/materials/component-dropzone.md +45 -0
  53. package/dist/materials/component-editable.md +57 -0
  54. package/dist/materials/component-empty-state.md +41 -0
  55. package/dist/materials/component-error-summary.md +40 -0
  56. package/dist/materials/component-field.md +46 -0
  57. package/dist/materials/component-fieldset.md +46 -0
  58. package/dist/materials/component-figure.md +36 -0
  59. package/dist/materials/component-file-input.md +45 -0
  60. package/dist/materials/component-file-item.md +48 -0
  61. package/dist/materials/component-file-list.md +39 -0
  62. package/dist/materials/component-file-meta.md +36 -0
  63. package/dist/materials/component-filter-condition.md +53 -0
  64. package/dist/materials/component-filter-group.md +55 -0
  65. package/dist/materials/component-flood-root.md +33 -0
  66. package/dist/materials/component-grid.md +38 -0
  67. package/dist/materials/component-heading.md +38 -0
  68. package/dist/materials/component-hover-card.md +48 -0
  69. package/dist/materials/component-icon-button.md +43 -0
  70. package/dist/materials/component-icon-slot.md +37 -0
  71. package/dist/materials/component-image-preview.md +50 -0
  72. package/dist/materials/component-image.md +37 -0
  73. package/dist/materials/component-inline-code.md +36 -0
  74. package/dist/materials/component-inline.md +39 -0
  75. package/dist/materials/component-input-group.md +43 -0
  76. package/dist/materials/component-input.md +39 -0
  77. package/dist/materials/component-kbd.md +34 -0
  78. package/dist/materials/component-label.md +37 -0
  79. package/dist/materials/component-link.md +35 -0
  80. package/dist/materials/component-list-box.md +57 -0
  81. package/dist/materials/component-list.md +40 -0
  82. package/dist/materials/component-menu.md +54 -0
  83. package/dist/materials/component-menubar.md +41 -0
  84. package/dist/materials/component-meter.md +43 -0
  85. package/dist/materials/component-metric.md +39 -0
  86. package/dist/materials/component-multi-select.md +62 -0
  87. package/dist/materials/component-navigation-group.md +51 -0
  88. package/dist/materials/component-navigation-item.md +59 -0
  89. package/dist/materials/component-navigation-list.md +38 -0
  90. package/dist/materials/component-navigation-tree.md +51 -0
  91. package/dist/materials/component-number-input.md +47 -0
  92. package/dist/materials/component-overflow-actions.md +47 -0
  93. package/dist/materials/component-page-header.md +40 -0
  94. package/dist/materials/component-pagination.md +44 -0
  95. package/dist/materials/component-password-input.md +43 -0
  96. package/dist/materials/component-pin-input.md +45 -0
  97. package/dist/materials/component-popover.md +48 -0
  98. package/dist/materials/component-progress.md +42 -0
  99. package/dist/materials/component-radio-card.md +43 -0
  100. package/dist/materials/component-radio-group.md +49 -0
  101. package/dist/materials/component-radio.md +39 -0
  102. package/dist/materials/component-range-calendar.md +58 -0
  103. package/dist/materials/component-rating.md +46 -0
  104. package/dist/materials/component-resizable-panels.md +48 -0
  105. package/dist/materials/component-scroll-area.md +42 -0
  106. package/dist/materials/component-search-input.md +40 -0
  107. package/dist/materials/component-section.md +42 -0
  108. package/dist/materials/component-segmented-control.md +53 -0
  109. package/dist/materials/component-select.md +45 -0
  110. package/dist/materials/component-sidebar.md +64 -0
  111. package/dist/materials/component-skeleton.md +42 -0
  112. package/dist/materials/component-skip-link.md +37 -0
  113. package/dist/materials/component-slider.md +51 -0
  114. package/dist/materials/component-spinner.md +37 -0
  115. package/dist/materials/component-split.md +40 -0
  116. package/dist/materials/component-stack.md +37 -0
  117. package/dist/materials/component-status-indicator.md +38 -0
  118. package/dist/materials/component-steps.md +40 -0
  119. package/dist/materials/component-surface.md +37 -0
  120. package/dist/materials/component-switch.md +35 -0
  121. package/dist/materials/component-table.md +46 -0
  122. package/dist/materials/component-tabs.md +45 -0
  123. package/dist/materials/component-tag-input.md +46 -0
  124. package/dist/materials/component-tag.md +40 -0
  125. package/dist/materials/component-text.md +39 -0
  126. package/dist/materials/component-textarea.md +38 -0
  127. package/dist/materials/component-time-field.md +56 -0
  128. package/dist/materials/component-time-picker.md +60 -0
  129. package/dist/materials/component-timeline.md +38 -0
  130. package/dist/materials/component-toast-region.md +42 -0
  131. package/dist/materials/component-toggle-group.md +44 -0
  132. package/dist/materials/component-toggle.md +40 -0
  133. package/dist/materials/component-toolbar.md +46 -0
  134. package/dist/materials/component-tooltip.md +40 -0
  135. package/dist/materials/component-tree-select.md +56 -0
  136. package/dist/materials/component-tree.md +52 -0
  137. package/dist/materials/component-upload-item.md +52 -0
  138. package/dist/materials/component-upload-list.md +40 -0
  139. package/dist/materials/component-visually-hidden.md +37 -0
  140. package/dist/materials/guide-agent-knowledge.md +95 -0
  141. package/dist/materials/guide-agents.md +103 -0
  142. package/dist/materials/guide-faq.md +84 -0
  143. package/dist/materials/guide-foundations.md +275 -0
  144. package/dist/materials/guide-installation.md +79 -0
  145. package/dist/materials/guide-interface-content.md +76 -0
  146. package/dist/materials/guide-introduction.md +42 -0
  147. package/dist/materials/guide-layout.md +222 -0
  148. package/dist/materials/guide-motion.md +69 -0
  149. package/dist/materials/guide-privacy.md +23 -0
  150. package/dist/materials/guide-project-ui.md +127 -0
  151. package/dist/materials/guide-skills.md +117 -0
  152. package/dist/materials/guide-theming.md +73 -0
  153. package/dist/materials/recipe-collection-views.md +648 -0
  154. package/dist/materials/recipe-command-palette.md +45 -0
  155. package/dist/materials/recipe-filter-bar.md +68 -0
  156. package/dist/materials/recipe-form-submission.md +39 -0
  157. package/dist/materials/recipe-grouped-form.md +71 -0
  158. package/dist/materials/recipe-navigation-workspace.md +222 -0
  159. package/dist/materials/recipe-record-management.md +296 -0
  160. package/dist/materials/recipe-record-workspace.md +207 -0
  161. package/dist/materials/recipe-select-all.md +31 -0
  162. package/dist/materials/recipe-settings-workspace.md +232 -0
  163. package/dist/materials/recipe-split-button.md +26 -0
  164. package/dist/materials/recipe-table-bulk-actions.md +88 -0
  165. package/dist/materials/recipe-workspace-review.md +134 -0
  166. package/dist/materials/token-sys.color.accent.content.json +41 -0
  167. package/dist/materials/token-sys.color.action.danger.content.json +42 -0
  168. package/dist/materials/token-sys.color.action.ghost.content.json +41 -0
  169. package/dist/materials/token-sys.color.action.ghost.disabled-content.json +41 -0
  170. package/dist/materials/token-sys.color.action.ghost.disabled.json +41 -0
  171. package/dist/materials/token-sys.color.action.ghost.hover.json +41 -0
  172. package/dist/materials/token-sys.color.action.ghost.pressed.json +41 -0
  173. package/dist/materials/token-sys.color.action.ghost.rest.json +41 -0
  174. package/dist/materials/token-sys.color.action.on-surface.content.json +39 -0
  175. package/dist/materials/token-sys.color.action.on-surface.disabled-content.json +39 -0
  176. package/dist/materials/token-sys.color.action.on-surface.disabled.json +39 -0
  177. package/dist/materials/token-sys.color.action.on-surface.hover.json +39 -0
  178. package/dist/materials/token-sys.color.action.on-surface.pressed.json +39 -0
  179. package/dist/materials/token-sys.color.action.on-surface.rest.json +39 -0
  180. package/dist/materials/token-sys.color.action.primary.content.json +39 -0
  181. package/dist/materials/token-sys.color.action.primary.disabled-content.json +39 -0
  182. package/dist/materials/token-sys.color.action.primary.disabled.json +39 -0
  183. package/dist/materials/token-sys.color.action.primary.hover.json +39 -0
  184. package/dist/materials/token-sys.color.action.primary.pressed.json +39 -0
  185. package/dist/materials/token-sys.color.action.primary.rest.json +39 -0
  186. package/dist/materials/token-sys.color.action.subtle.content.json +39 -0
  187. package/dist/materials/token-sys.color.action.subtle.disabled-content.json +39 -0
  188. package/dist/materials/token-sys.color.action.subtle.disabled.json +39 -0
  189. package/dist/materials/token-sys.color.action.subtle.hover.json +39 -0
  190. package/dist/materials/token-sys.color.action.subtle.pressed.json +39 -0
  191. package/dist/materials/token-sys.color.action.subtle.rest.json +39 -0
  192. package/dist/materials/token-sys.color.border.decorative.json +42 -0
  193. package/dist/materials/token-sys.color.border.default.json +39 -0
  194. package/dist/materials/token-sys.color.border.floating.json +39 -0
  195. package/dist/materials/token-sys.color.border.strong.json +39 -0
  196. package/dist/materials/token-sys.color.content.default.json +41 -0
  197. package/dist/materials/token-sys.color.content.helper.json +39 -0
  198. package/dist/materials/token-sys.color.content.subtle.json +43 -0
  199. package/dist/materials/token-sys.color.context.base.action-disabled.json +41 -0
  200. package/dist/materials/token-sys.color.context.base.action-hover.json +41 -0
  201. package/dist/materials/token-sys.color.context.base.action-pressed.json +41 -0
  202. package/dist/materials/token-sys.color.context.base.action-rest.json +41 -0
  203. package/dist/materials/token-sys.color.context.base.avatar-background.json +41 -0
  204. package/dist/materials/token-sys.color.context.base.border-decorative.json +41 -0
  205. package/dist/materials/token-sys.color.context.base.divider-decorative.json +41 -0
  206. package/dist/materials/token-sys.color.context.base.field-background.json +41 -0
  207. package/dist/materials/token-sys.color.context.base.field-border.json +41 -0
  208. package/dist/materials/token-sys.color.context.base.field-disabled.json +41 -0
  209. package/dist/materials/token-sys.color.context.base.field-readonly.json +41 -0
  210. package/dist/materials/token-sys.color.context.base.indicator-track.json +41 -0
  211. package/dist/materials/token-sys.color.context.base.loading-placeholder.json +41 -0
  212. package/dist/materials/token-sys.color.context.base.muted-background.json +41 -0
  213. package/dist/materials/token-sys.color.context.base.on-surface-action-disabled.json +41 -0
  214. package/dist/materials/token-sys.color.context.base.on-surface-action-hover.json +41 -0
  215. package/dist/materials/token-sys.color.context.base.on-surface-action-pressed.json +41 -0
  216. package/dist/materials/token-sys.color.context.base.on-surface-action-rest.json +41 -0
  217. package/dist/materials/token-sys.color.context.base.selection-background.json +41 -0
  218. package/dist/materials/token-sys.color.context.base.supporting-background.json +41 -0
  219. package/dist/materials/token-sys.color.context.filled.action-disabled.json +41 -0
  220. package/dist/materials/token-sys.color.context.filled.action-hover.json +41 -0
  221. package/dist/materials/token-sys.color.context.filled.action-pressed.json +41 -0
  222. package/dist/materials/token-sys.color.context.filled.action-rest.json +41 -0
  223. package/dist/materials/token-sys.color.context.filled.avatar-background.json +41 -0
  224. package/dist/materials/token-sys.color.context.filled.border-decorative.json +41 -0
  225. package/dist/materials/token-sys.color.context.filled.divider-decorative.json +41 -0
  226. package/dist/materials/token-sys.color.context.filled.field-background.json +41 -0
  227. package/dist/materials/token-sys.color.context.filled.field-border.json +41 -0
  228. package/dist/materials/token-sys.color.context.filled.field-disabled.json +41 -0
  229. package/dist/materials/token-sys.color.context.filled.field-readonly.json +41 -0
  230. package/dist/materials/token-sys.color.context.filled.indicator-track.json +41 -0
  231. package/dist/materials/token-sys.color.context.filled.loading-placeholder.json +41 -0
  232. package/dist/materials/token-sys.color.context.filled.muted-background.json +41 -0
  233. package/dist/materials/token-sys.color.context.filled.selection-background.json +41 -0
  234. package/dist/materials/token-sys.color.context.filled.supporting-background.json +41 -0
  235. package/dist/materials/token-sys.color.divider.decorative.json +41 -0
  236. package/dist/materials/token-sys.color.feedback.error.json +39 -0
  237. package/dist/materials/token-sys.color.feedback.info.json +39 -0
  238. package/dist/materials/token-sys.color.feedback.success.json +39 -0
  239. package/dist/materials/token-sys.color.feedback.warning.json +39 -0
  240. package/dist/materials/token-sys.color.field.background.json +39 -0
  241. package/dist/materials/token-sys.color.field.border.json +39 -0
  242. package/dist/materials/token-sys.color.field.boundary.json +39 -0
  243. package/dist/materials/token-sys.color.field.content.json +39 -0
  244. package/dist/materials/token-sys.color.field.disabled-content.json +39 -0
  245. package/dist/materials/token-sys.color.field.disabled.json +39 -0
  246. package/dist/materials/token-sys.color.field.placeholder.json +39 -0
  247. package/dist/materials/token-sys.color.field.readonly.json +41 -0
  248. package/dist/materials/token-sys.color.focus.ring.json +39 -0
  249. package/dist/materials/token-sys.color.indicator.accent.json +39 -0
  250. package/dist/materials/token-sys.color.indicator.fill.json +39 -0
  251. package/dist/materials/token-sys.color.indicator.track.json +39 -0
  252. package/dist/materials/token-sys.color.loading.placeholder.json +42 -0
  253. package/dist/materials/token-sys.color.scrollbar.thumb-hover.json +39 -0
  254. package/dist/materials/token-sys.color.scrollbar.thumb.json +39 -0
  255. package/dist/materials/token-sys.color.selection.background.json +39 -0
  256. package/dist/materials/token-sys.color.selection.content.json +39 -0
  257. package/dist/materials/token-sys.color.selection.floating.json +39 -0
  258. package/dist/materials/token-sys.color.shadow.floating.json +39 -0
  259. package/dist/materials/token-sys.color.surface.avatar.json +41 -0
  260. package/dist/materials/token-sys.color.surface.canvas.json +39 -0
  261. package/dist/materials/token-sys.color.surface.current.json +41 -0
  262. package/dist/materials/token-sys.color.surface.default.json +39 -0
  263. package/dist/materials/token-sys.color.surface.floating-translucent.json +39 -0
  264. package/dist/materials/token-sys.color.surface.floating.json +39 -0
  265. package/dist/materials/token-sys.color.surface.muted.json +41 -0
  266. package/dist/materials/token-sys.color.surface.overlay.json +39 -0
  267. package/dist/materials/token-sys.color.surface.raised.json +39 -0
  268. package/dist/materials/token-sys.color.surface.supporting.json +41 -0
  269. package/dist/materials/token-sys.control.2xl.gap.json +34 -0
  270. package/dist/materials/token-sys.control.2xl.height.json +34 -0
  271. package/dist/materials/token-sys.control.2xl.icon-size.json +34 -0
  272. package/dist/materials/token-sys.control.2xl.line-height.json +31 -0
  273. package/dist/materials/token-sys.control.2xl.padding-inline.json +34 -0
  274. package/dist/materials/token-sys.control.2xl.text-size.json +34 -0
  275. package/dist/materials/token-sys.control.2xs.gap.json +34 -0
  276. package/dist/materials/token-sys.control.2xs.height.json +34 -0
  277. package/dist/materials/token-sys.control.2xs.icon-size.json +34 -0
  278. package/dist/materials/token-sys.control.2xs.line-height.json +31 -0
  279. package/dist/materials/token-sys.control.2xs.padding-inline.json +34 -0
  280. package/dist/materials/token-sys.control.2xs.text-size.json +34 -0
  281. package/dist/materials/token-sys.control.lg.gap.json +34 -0
  282. package/dist/materials/token-sys.control.lg.height.json +34 -0
  283. package/dist/materials/token-sys.control.lg.icon-size.json +34 -0
  284. package/dist/materials/token-sys.control.lg.line-height.json +31 -0
  285. package/dist/materials/token-sys.control.lg.padding-inline.json +34 -0
  286. package/dist/materials/token-sys.control.lg.text-size.json +34 -0
  287. package/dist/materials/token-sys.control.md.gap.json +34 -0
  288. package/dist/materials/token-sys.control.md.height.json +34 -0
  289. package/dist/materials/token-sys.control.md.icon-size.json +34 -0
  290. package/dist/materials/token-sys.control.md.line-height.json +31 -0
  291. package/dist/materials/token-sys.control.md.padding-inline.json +34 -0
  292. package/dist/materials/token-sys.control.md.text-size.json +34 -0
  293. package/dist/materials/token-sys.control.sm.gap.json +34 -0
  294. package/dist/materials/token-sys.control.sm.height.json +34 -0
  295. package/dist/materials/token-sys.control.sm.icon-size.json +34 -0
  296. package/dist/materials/token-sys.control.sm.line-height.json +31 -0
  297. package/dist/materials/token-sys.control.sm.padding-inline.json +34 -0
  298. package/dist/materials/token-sys.control.sm.text-size.json +34 -0
  299. package/dist/materials/token-sys.control.xl.gap.json +34 -0
  300. package/dist/materials/token-sys.control.xl.height.json +34 -0
  301. package/dist/materials/token-sys.control.xl.icon-size.json +34 -0
  302. package/dist/materials/token-sys.control.xl.line-height.json +31 -0
  303. package/dist/materials/token-sys.control.xl.padding-inline.json +34 -0
  304. package/dist/materials/token-sys.control.xl.text-size.json +34 -0
  305. package/dist/materials/token-sys.control.xs.gap.json +34 -0
  306. package/dist/materials/token-sys.control.xs.height.json +34 -0
  307. package/dist/materials/token-sys.control.xs.icon-size.json +34 -0
  308. package/dist/materials/token-sys.control.xs.line-height.json +31 -0
  309. package/dist/materials/token-sys.control.xs.padding-inline.json +34 -0
  310. package/dist/materials/token-sys.control.xs.text-size.json +34 -0
  311. package/dist/materials/token-sys.effect.floating.blur.json +34 -0
  312. package/dist/materials/token-sys.effect.floating.saturation.json +31 -0
  313. package/dist/materials/token-sys.effect.floating.shadow-blur.json +34 -0
  314. package/dist/materials/token-sys.effect.floating.shadow-offset.json +34 -0
  315. package/dist/materials/token-sys.focus.offset.json +34 -0
  316. package/dist/materials/token-sys.focus.width.json +34 -0
  317. package/dist/materials/token-sys.font.mono.json +36 -0
  318. package/dist/materials/token-sys.font.sans.json +35 -0
  319. package/dist/materials/token-sys.layer.base.json +31 -0
  320. package/dist/materials/token-sys.layer.modal.json +31 -0
  321. package/dist/materials/token-sys.layer.popover.json +31 -0
  322. package/dist/materials/token-sys.layer.sticky.json +31 -0
  323. package/dist/materials/token-sys.layer.toast.json +31 -0
  324. package/dist/materials/token-sys.motion.distance-panel.json +36 -0
  325. package/dist/materials/token-sys.motion.distance-small.json +36 -0
  326. package/dist/materials/token-sys.motion.duration-enter.json +36 -0
  327. package/dist/materials/token-sys.motion.duration-exit.json +36 -0
  328. package/dist/materials/token-sys.motion.duration-fast.json +34 -0
  329. package/dist/materials/token-sys.motion.duration-layer.json +36 -0
  330. package/dist/materials/token-sys.motion.duration-loop.json +36 -0
  331. package/dist/materials/token-sys.motion.duration-normal.json +34 -0
  332. package/dist/materials/token-sys.motion.duration-press.json +36 -0
  333. package/dist/materials/token-sys.motion.duration-reduced.json +34 -0
  334. package/dist/materials/token-sys.motion.easing-enter.json +38 -0
  335. package/dist/materials/token-sys.motion.easing-exit.json +38 -0
  336. package/dist/materials/token-sys.motion.easing.json +36 -0
  337. package/dist/materials/token-sys.radius.action.json +34 -0
  338. package/dist/materials/token-sys.radius.block.json +34 -0
  339. package/dist/materials/token-sys.radius.field.json +34 -0
  340. package/dist/materials/token-sys.radius.indicator.json +34 -0
  341. package/dist/materials/token-sys.radius.surface.json +34 -0
  342. package/dist/materials/token-sys.scrollbar.inset.json +34 -0
  343. package/dist/materials/token-sys.scrollbar.min-thumb.json +34 -0
  344. package/dist/materials/token-sys.scrollbar.size.json +34 -0
  345. package/dist/materials/token-sys.size.choice.json +34 -0
  346. package/dist/materials/token-sys.size.container.lg.json +37 -0
  347. package/dist/materials/token-sys.size.container.md.json +37 -0
  348. package/dist/materials/token-sys.size.container.sm.json +37 -0
  349. package/dist/materials/token-sys.size.grid.min-item.json +37 -0
  350. package/dist/materials/token-sys.size.indicator.lg.json +34 -0
  351. package/dist/materials/token-sys.size.indicator.md.json +34 -0
  352. package/dist/materials/token-sys.size.indicator.sm.json +34 -0
  353. package/dist/materials/token-sys.size.keycap.lg.json +34 -0
  354. package/dist/materials/token-sys.size.keycap.md.json +34 -0
  355. package/dist/materials/token-sys.size.keycap.sm.json +34 -0
  356. package/dist/materials/token-sys.size.switch-height.json +34 -0
  357. package/dist/materials/token-sys.size.switch-thumb.json +34 -0
  358. package/dist/materials/token-sys.size.switch-width.json +34 -0
  359. package/dist/materials/token-sys.size.touch.json +34 -0
  360. package/dist/materials/token-sys.space.0.json +34 -0
  361. package/dist/materials/token-sys.space.1.json +34 -0
  362. package/dist/materials/token-sys.space.12.json +34 -0
  363. package/dist/materials/token-sys.space.2.json +34 -0
  364. package/dist/materials/token-sys.space.3.json +34 -0
  365. package/dist/materials/token-sys.space.4.json +34 -0
  366. package/dist/materials/token-sys.space.6.json +34 -0
  367. package/dist/materials/token-sys.space.8.json +34 -0
  368. package/dist/materials/token-sys.stroke.width.json +34 -0
  369. package/dist/materials/token-sys.type.body.line-height.json +31 -0
  370. package/dist/materials/token-sys.type.body.size.json +34 -0
  371. package/dist/materials/token-sys.type.body.tracking.json +34 -0
  372. package/dist/materials/token-sys.type.body.weight.json +31 -0
  373. package/dist/materials/token-sys.type.compact.line-height.json +31 -0
  374. package/dist/materials/token-sys.type.compact.size.json +34 -0
  375. package/dist/materials/token-sys.type.compact.tracking.json +34 -0
  376. package/dist/materials/token-sys.type.compact.weight.json +31 -0
  377. package/dist/materials/token-sys.type.control.line-height.json +31 -0
  378. package/dist/materials/token-sys.type.control.size.json +34 -0
  379. package/dist/materials/token-sys.type.control.tracking.json +34 -0
  380. package/dist/materials/token-sys.type.control.weight.json +31 -0
  381. package/dist/materials/token-sys.type.dialog-title.line-height.json +33 -0
  382. package/dist/materials/token-sys.type.dialog-title.size.json +36 -0
  383. package/dist/materials/token-sys.type.dialog-title.tracking.json +36 -0
  384. package/dist/materials/token-sys.type.dialog-title.weight.json +33 -0
  385. package/dist/materials/token-sys.type.display.line-height.json +31 -0
  386. package/dist/materials/token-sys.type.display.size.json +34 -0
  387. package/dist/materials/token-sys.type.display.tracking.json +34 -0
  388. package/dist/materials/token-sys.type.display.weight.json +31 -0
  389. package/dist/materials/token-sys.type.field-label.line-height.json +33 -0
  390. package/dist/materials/token-sys.type.field-label.size.json +36 -0
  391. package/dist/materials/token-sys.type.field-label.tracking.json +36 -0
  392. package/dist/materials/token-sys.type.field-label.weight.json +33 -0
  393. package/dist/materials/token-sys.type.group-title.line-height.json +33 -0
  394. package/dist/materials/token-sys.type.group-title.size.json +36 -0
  395. package/dist/materials/token-sys.type.group-title.tracking.json +36 -0
  396. package/dist/materials/token-sys.type.group-title.weight.json +33 -0
  397. package/dist/materials/token-sys.type.helper.line-height.json +31 -0
  398. package/dist/materials/token-sys.type.helper.size.json +34 -0
  399. package/dist/materials/token-sys.type.helper.tracking.json +34 -0
  400. package/dist/materials/token-sys.type.helper.weight.json +31 -0
  401. package/dist/materials/token-sys.type.label.line-height.json +31 -0
  402. package/dist/materials/token-sys.type.label.size.json +34 -0
  403. package/dist/materials/token-sys.type.label.tracking.json +34 -0
  404. package/dist/materials/token-sys.type.label.weight.json +31 -0
  405. package/dist/materials/token-sys.type.large.line-height.json +31 -0
  406. package/dist/materials/token-sys.type.large.size.json +34 -0
  407. package/dist/materials/token-sys.type.large.tracking.json +34 -0
  408. package/dist/materials/token-sys.type.large.weight.json +31 -0
  409. package/dist/materials/token-sys.type.lead.line-height.json +31 -0
  410. package/dist/materials/token-sys.type.lead.size.json +34 -0
  411. package/dist/materials/token-sys.type.lead.tracking.json +34 -0
  412. package/dist/materials/token-sys.type.lead.weight.json +31 -0
  413. package/dist/materials/token-sys.type.page.line-height.json +31 -0
  414. package/dist/materials/token-sys.type.page.size.json +34 -0
  415. package/dist/materials/token-sys.type.page.tracking.json +34 -0
  416. package/dist/materials/token-sys.type.page.weight.json +31 -0
  417. package/dist/materials/token-sys.type.section.line-height.json +31 -0
  418. package/dist/materials/token-sys.type.section.size.json +34 -0
  419. package/dist/materials/token-sys.type.section.tracking.json +34 -0
  420. package/dist/materials/token-sys.type.section.weight.json +31 -0
  421. package/knowledge.json +522 -0
  422. package/lib/index.d.ts +33 -0
  423. package/lib/index.mjs +144 -0
  424. package/lib/inspect.d.ts +12 -0
  425. package/lib/inspect.mjs +187 -0
  426. package/manifest.json +51 -1
  427. package/package.json +13 -1
  428. package/references/component-families.md +146 -0
  429. package/references/composition.md +4 -4
  430. package/references/customization.md +14 -0
  431. package/references/flood-composition/SKILL.md +34 -0
  432. package/references/flood-data-display/SKILL.md +149 -0
  433. package/references/flood-feedback/SKILL.md +49 -3
  434. package/references/flood-forms/SKILL.md +82 -2
  435. package/references/flood-foundations/SKILL.md +43 -0
  436. package/references/flood-hierarchy/SKILL.md +103 -0
  437. package/references/flood-interface-content/SKILL.md +163 -0
  438. package/references/flood-motion/SKILL.md +44 -0
  439. package/references/flood-navigation/SKILL.md +195 -0
  440. package/references/flood-overlays/SKILL.md +42 -0
  441. package/references/flood-records/SKILL.md +148 -0
  442. package/references/flood-spacing/SKILL.md +54 -0
  443. package/references/flood-verification/SKILL.md +72 -0
  444. package/references/interface-content-examples.md +51 -0
  445. package/references/knowledge.md +49 -0
  446. package/references/record-decisions.md +25 -0
  447. package/references/rendered-review.md +102 -0
  448. package/references/routing.md +1 -0
  449. package/references/spacing.md +30 -0
  450. package/rules.json +242 -6
  451. package/workflows.json +171 -10
@@ -7,12 +7,19 @@ description: Diagnose Flood spacing, density, nested radii and alignment from re
7
7
 
8
8
  Read the [spacing reference](../spacing.md), installed component anatomy and
9
9
  host content requirements. Existing user-approved geometry governs the task.
10
+ Use the [visible spacing review](../spacing.md#judge-the-space-you-can-see)
11
+ when a rendered relationship feels crowded or loose despite matching tokens.
10
12
 
11
13
  Identify what a gap separates: indicator/text, title/description, related choices,
12
14
  independent actions, sections, or nested surfaces. Do not propagate one gap to
13
15
  every wrapper. Stack and Inline organize relationships; component padding and
14
16
  line height still contribute to the visible distance.
15
17
 
18
+ Named fields use space-1 between label and control. This inner association
19
+ is distinct from the parent gap between fields: use the
20
+ [hierarchy workflow](../flood-hierarchy/SKILL.md) for task/group/field rhythm.
21
+ Do not stack a host spacer on top of the Dialog-owned body inset.
22
+
16
23
  ## Find the owner
17
24
 
18
25
  Inspect bounding rectangles plus computed padding, margin, gap, minimum height
@@ -27,10 +34,52 @@ For a nested surface, compare its radius with the outer radius minus the actual
27
34
  inset/stroke. Do not force unrelated actions to follow that formula. Compare
28
35
  top/bottom and start/end insets around a nested InputGroup action optically.
29
36
 
37
+ Rounded cards need a content-safe inset as well as compatible nested radii.
38
+ Inspect the nearest curved edge around corner text and icons, not only distance
39
+ from the rectangular bounding box. Use supported surface padding and radius
40
+ choices together; increase the inset or reduce the radius when corners look
41
+ crowded. Do not impose a universal padding-equals-radius formula on all cards.
42
+
43
+ Give sibling sections an explicit parent-owned gap. An optional summary, message
44
+ or toolbar must not be the only source of separation between its neighbours.
45
+ For split panes, the full-height divider belongs to the stretching layout owner;
46
+ a shorter sticky or scrolling child must not determine the divider's length.
47
+
30
48
  Distinguish a real component from its preview scene. Fixed preview height and
31
49
  reserved feedback space can prevent a demo from jumping; they should not impose
32
50
  an empty message row or fixed height on every production field.
33
51
 
52
+ ## Establish shared alignment tracks
53
+
54
+ Before composing repeated rows, define the logical start inset, leading glyph
55
+ column, text start and trailing action center. Header, group label, body rows and
56
+ footer that belong to one navigation/record surface must inherit those tracks;
57
+ independent local padding on every row is not a shared grid. Reserve a missing
58
+ icon column when peer rows have icons. Align badges and disclosure controls by
59
+ their centers even when their visible shapes and hit areas differ.
60
+
61
+ Nested content needs a deliberate rule: an iconless child can begin on its
62
+ parent's text track; a deeper hierarchy may have another consistent indent.
63
+ Do not let a child start between the parent icon and label merely because a
64
+ generic padding token happened to fit. Larger brand art is an intentional size
65
+ exception, not permission to move its label off the shared text track.
66
+
67
+ Keep alignment stable when a scrollbar appears. Budget its clearance once at the
68
+ surface owner; use existing edge spacing when it safely contains the track rather
69
+ than adding a permanent empty column to every slot. Sidebar uses that edge lane.
70
+ Generic ScrollArea still needs contentInset="scrollbar" when content would reach
71
+ under its track. Do not disable that protection globally.
72
+ Compare outer start/end clearance against the actual container in both expanded
73
+ and compact states. Center an icon-only rail against the full rail, not the
74
+ remainder after a one-sided gutter. A scrollbar appearing must not shift body
75
+ tracks relative to the fixed header/footer. Full-viewport workspaces without
76
+ document overflow must not reserve a document scrollbar strip.
77
+ Test expanded/compact, missing icons, badges/disclosures, long labels, RTL and
78
+ enlarged text. Measure rendered glyph centers, text starts and action centers
79
+ across distant rows; include the header and footer. Correct the owning primitive
80
+ or parent track instead of adding per-item offsets, transforms or replacement UI.
81
+ A build, equal row height or zero overflow does not prove these axes align.
82
+
34
83
  ## Evidence
35
84
 
36
85
  Check short/wrapping labels, optional descriptions/messages/actions, all relevant
@@ -44,3 +93,8 @@ remaining copy width and body height after padding, title/description, fixed
44
93
  actions and scrollbar space. A thin scrolling slot or words broken into fragments
45
94
  is a failure even when every rectangle technically fits. Correct the owning
46
95
  container's responsive budget without shrinking the user's enlarged text.
96
+ For settings and detail drawers, measure title-to-description,
97
+ description-to-body, and the pitch between visible controls independently.
98
+ An optional description should sit in the header slot. Separate that group
99
+ from the body with more space than the gap inside it. For repeated switches,
100
+ count their existing hit-area height before adding row gaps.
@@ -11,34 +11,106 @@ rule IDs; it is an index of guidance, not an automatic pass/fail policy engine.
11
11
 
12
12
  ## Bound the coverage
13
13
 
14
+ Run the screen's task trace with real interactions. Check the starting state,
15
+ the accepted result and a relevant refusal or empty result. After rejection,
16
+ verify that the user can find the correction, keep their input and try again.
17
+ After success, inspect the updated data and the next focus target. For read-only
18
+ screens, use a reachable navigation or recovery path where one applies.
19
+
14
20
  Record the affected primitive, its real consumers, supported states and ownership.
15
21
  Mark an inapplicable check with a reason rather than forcing keyboard behavior
16
22
  onto decoration or readOnly onto every control. Distinguish existing test coverage
17
23
  from checks actually run for this source revision.
18
24
 
25
+ Honor the task's declared evaluation scope. A desktop-only test host does not
26
+ require new mobile product work. Record excluded targets instead of quietly
27
+ expanding the task. When visible copy changes, apply the
28
+ [interface content workflow](../flood-interface-content/SKILL.md); type checks
29
+ and screenshots alone do not establish that its wording is necessary or accurate.
30
+ Desktop-only scope still includes enlarged text in the desktop viewport. Do not
31
+ freeze the whole application behind a rem-based minimum width and call resulting
32
+ page overflow a mobile limitation. Keep dense table overflow in its local owner
33
+ and let the surrounding desktop form use its available width.
34
+ For the Flood desktop baseline, include a 1280px viewport with a 24px root font
35
+ (150% of the usual 16px default), alongside normal 1280/1440px views. Testing only
36
+ 20px does not cover that target. This is a text-enlargement check, not a request
37
+ to implement a mobile product. Report any deliberate host-specific exclusion.
38
+
19
39
  Check the public contract at the boundary: installed exports/types, actual form
20
40
  values, controlled acceptance/refusal, reset, names/focus and semantic state. For
21
41
  visual changes inspect rendered geometry, long/optional content, narrow/wide,
22
42
  enlarged text and the relevant pointer/RTL/forced-color modes. A CSS declaration
23
43
  or component count is not evidence that the user-visible relationship works.
24
44
 
45
+ Check that key controls have usable visible space. For search, read the
46
+ placeholder and enter a realistic query at each relevant layout breakpoint.
47
+ Inspect the field and text area width, including when a clear action appears.
48
+ Check computed layout if a host class changes an existing layout primitive.
49
+
25
50
  For geometry and screenshots, wait for fonts, pending animations and a settled
26
51
  rendering frame. A zero running-animation count alone may precede final
27
52
  presentation. Preserve real motion and strict geometry tolerances; distinguish
28
53
  an entry frame from the final layout rather than accepting either as proof.
29
54
 
55
+ For a spacing or typography decision, keep two settled renders of the same
56
+ state and compare them at the working size. State which visible relationship
57
+ improved and use measurements to explain why. Test enlarged text separately
58
+ from the user's line, paragraph, letter and word spacing overrides.
59
+
30
60
  During local iteration run focused checks and show the result promptly. A shared
31
61
  primitive correction also checks its consumers. At a consolidated Flood source
32
62
  candidate run npm run verify and the required applicable browser matrix; use the
33
63
  host's equivalent gates in a consuming app. Do not continually repeat a full
34
64
  release gate for every reversible visual adjustment.
35
65
 
66
+ When hierarchy changes, apply the [hierarchy workflow](../flood-hierarchy/SKILL.md)
67
+ and compare actual title/group/label roles and corresponding control edges. A
68
+ zero-overflow or zero-inspector result alone does not establish those relations.
69
+
70
+ For record composition, apply the [records workflow](../flood-records/SKILL.md):
71
+ compare several varied rows, their copy width and scan positions, then review the
72
+ detail and empty/filter states. Passing an overflow check or presenting valid
73
+ metadata is not evidence that all those values belong at the same visual level.
74
+ When the same table has a view selector, use the keyboard to change its value.
75
+ Verify the selected state, matching rows, surviving query and focus. Read the
76
+ shell, toolbar, list and opened detail together and record one concrete decision
77
+ about repeated copy or metadata in the verification notes.
78
+
36
79
  ## Report a usable result
37
80
 
81
+ Use the [rendered review observer](../rendered-review.md) when local browser
82
+ tooling is available. Inspect findings and exceptions, then review hierarchy and
83
+ copy separately; no findings is not an editorial or visual-quality pass.
84
+ Review host JSX/CSS with inspectSourceUI from that entry too, then resolve the
85
+ actual owner at each candidate location. Include layout and cancel/confirmation
86
+ paths, not just fields. A native browser dialog can be absent from a DOM snapshot;
87
+ trigger its path. If a custom layout duplicates Grid, use the installed owner
88
+ instead of silencing a finding or declaring a missing capability without checking.
89
+
90
+ Keep a small coverage inventory outside the interface: route/view, visible state,
91
+ copy decision, geometry check and unverified limits. Review the initial/empty
92
+ surface before adding records, the populated surface, editor, preview and actual
93
+ error/recovery surfaces where present. Running the observer only in the editor
94
+ or an open popup leaves the other views unreviewed. Never extend a zero-findings
95
+ claim to states that were not inspected. Review optional empty-state descriptions
96
+ against the visible primary action too; they do not automatically need an
97
+ instruction restating that action.
98
+ For a newly composed screen, check two outcomes separately from build success:
99
+ the visible roles use the owners chosen from the installed catalog, and supporting
100
+ copy adds necessary information. Open the real date/selection popup to verify
101
+ that a native browser control was not mistaken for a Flood component. Inspect
102
+ mixed editable table rows, not only overflow. Report skipped applicable workflows
103
+ or unverified owner choices instead of treating a list of imports as proof.
104
+
38
105
  For a failure preserve the source revision, affected state and actual trace or
39
106
  measurement; distinguish library, host recipe, assertion and infrastructure causes.
40
107
  Correct the responsible owner without weakening a meaningful assertion to get
41
108
  green. Add regression coverage for demonstrated risks rather than mirroring CSS.
109
+ After exercising a failure, verify its exit paths as well as retry: explicitly
110
+ discard the affected draft, return to the list and open a saved record. Check that
111
+ record-scoped feedback ends with its operation while global unresolved failures
112
+ remain correctly represented. A screenshot of the error alone does not verify
113
+ its lifecycle; apply the feedback workflow.
42
114
 
43
115
  State what ran, results, manual observations and remaining limits. A source scan,
44
116
  agent instruction, screenshot or accessibility scanner cannot independently prove
@@ -0,0 +1,51 @@
1
+ # Interface content decisions
2
+
3
+ These examples explain context, not a forbidden-word list or fixed word budget.
4
+ Keep the user's language, task and domain vocabulary.
5
+
6
+ | Situation | Decision | Reason |
7
+ | --- | --- | --- |
8
+ | Invoice list begins with “DOCUMENTS”, “Invoices”, and “Create, check and save invoices in one place” | Keep the page title; remove the other layers unless one makes a real distinction | The repeated explanation adds no decision |
9
+ | The same heading pattern introduces documents from several departments | Keep a category or breadcrumb when it identifies that scope | Similar words can supply different navigation context |
10
+ | Invoice preview ends with “Selectable PDF text · embedded font” | Remove from the ordinary preview; describe it in export documentation if needed | Rendering details do not help edit the invoice |
11
+ | Export-format chooser compares scanned images with selectable text | Keep the meaningful format distinction beside the choices | It changes the export decision |
12
+ | Sidebar card says “Your documents, in your browser. Work without signup” | Remove promotional framing from a working editor | The sidebar is for destinations, not a product pitch |
13
+ | Clearing browser data would delete the only editable copy | Explain the consequence at the relevant storage/clearing decision | Concision must not conceal a loss of data |
14
+ | An ordinary record list permanently says “Stored only in this browser. Clearing site data deletes it” | Remove the standing caption; keep storage limits in documentation/help | No storage or clearing decision is being made on this screen |
15
+ | The user invokes “Clear saved records” | Keep the deletion consequence in that confirmation | The fact now changes an immediate decision; it is not interface narration |
16
+ | Every field has “Enter…” beneath its visible label | Remove repeated instructions; keep useful format or unit guidance | A required label is not an explanation slot to fill |
17
+ | “Tax included” changes the total without adding tax | Keep the choice and a needed distinction from “Add tax” | Similar short labels can conceal materially different calculations |
18
+ | “Something went wrong. Please try again” appears after storage is full | Name the failed save and a supported recovery action | The next step must fit the actual cause |
19
+ | “Verified and sent” appears after local syntax validation | Replace with the completed operation, such as “Invoice prepared” | Validation is not expert verification or delivery |
20
+ | Empty search says “Welcome! Start your journey…” | State that there are no matches and offer a relevant reset | The collection already exists; this is a filtered result |
21
+ | A test host repeatedly explains that its records are samples | Remove redundant disclaimers when the test context is already established | Test provenance can live in the test brief |
22
+ | An explicitly requested local prototype has a permanent Demo badge in its sidebar | Remove the badge and its otherwise empty wrapper; retain provenance in README/test handoff | Development context is not an operational state or decision |
23
+ | A working interface switches between simulated output and real external effects | Keep an accurate distinction at the choice or affected action, if this capability exists | The environment changes what the action does; do not invent a mode solely to justify a label |
24
+ | A record is Draft or a camera is Offline inside a prototype | Keep the meaningful record state | Removing prototype narration is not permission to strip operational information |
25
+ | A mixed production list includes sample records that could be mistaken for real ones | Keep a clear sample distinction on the affected records | It prevents a concrete misunderstanding |
26
+ | A printed invoice has a document title, number and party headings | Keep the meaningful document hierarchy | A document is not the application's decorative page header |
27
+ | An approval queue has a task title, an instruction to review the queue, and a workspace label that adds no scope | Keep the task title and remove the redundant supporting copy | The title, rows and available decisions already describe the task |
28
+ | The selected filter says “Reviewed 4” and the footer says “1–4 of 4” in an unpaginated list | Keep one count if useful; check both again when search or pagination changes their meaning | A total for all reviewed records and a range in the current results can serve different decisions |
29
+ | The detail pane repeats “3 receipts attached” beside three visible receipt rows | Omit the routine caption; surface a missing receipt when it affects approval | The ordinary state is visible, and the exception changes the decision |
30
+ | The page shows a queue-wide amount and the open record's amount | Keep short labels distinguishing the amounts | Nearby values alone cannot identify their scope |
31
+
32
+ ## Contextual adaptation
33
+
34
+ A bill-processing reference may group records by draft, approval and payment.
35
+ An invoice generator with local draft/ready/archive state can reuse the idea of
36
+ state-based navigation. It cannot truthfully adopt “For payment”, an approval
37
+ queue or an OCR promise without implementing those capabilities.
38
+
39
+ Choose the host's action vocabulary deliberately. In a Russian invoice editor,
40
+ “Скачать PDF” names an export and “Подготовить счёт” names a readiness action.
41
+ “Готово” is ambiguous when the same toolbar can save, export, approve or send.
42
+ In a simple selection dialog, “Готово” may be sufficient. Do not apply one label
43
+ universally or translate English word order mechanically.
44
+
45
+ ## A bounded review
46
+
47
+ For an interface-writing task, inspect the supplied surface and state the user's
48
+ task. Identify high-value decisions rather than reporting a count of deleted
49
+ words. Preserve one necessary constraint/error/consequence while removing nearby
50
+ filler. Check the affected action after editing. A smaller DOM or a green phrase
51
+ scan is not proof that the result is understandable.
@@ -0,0 +1,49 @@
1
+ # Discover the matching Flood knowledge
2
+
3
+ Read host instructions first. Use the CLI matching flood.json.version; a newer
4
+ website or CLI must not silently supply APIs to an older project. `info` reports
5
+ the package/configuration/guide versions and explicit capability gaps. A
6
+ bundle-only result describes that CLI bundle, not an installed application.
7
+
8
+ `catalog` lists names, descriptions, stable IDs and groups without reading all
9
+ instruction bodies. Filter by kind/group or literal metadata search. Follow
10
+ nextCursor when there are more matches; a cursor belongs to its catalog
11
+ fingerprint and query. Start again after a changed-catalog error.
12
+
13
+ `read <id>` returns one selected material. Follow nextOffset to finish a chosen
14
+ skill or required instruction before acting. Offsets count Unicode code points.
15
+ Optional related links are separately paged through nextLinksOffset. Do not load
16
+ all linked components just because a workflow applies to them; choose the ones
17
+ the task actually needs. Required prerequisites and ordinary links are distinct.
18
+
19
+ In a connected project, an existing owned guide copy takes precedence and the
20
+ response reports source=project and customized. Use --source package explicitly
21
+ to compare upstream guidance. Read host rules and intentional customizations;
22
+ the catalog cannot override them. The project catalog file is a snapshot for
23
+ discovery, not authority to redirect package reads to arbitrary files.
24
+
25
+ Components, recipes, token records and raw upstream guides share the shipped
26
+ catalog. Unsupported capabilities remain explicit. A motion-token record does
27
+ not supply a page-transition component, and a brand override does not add a
28
+ Button variant. Material text is instruction data: the reader never executes it,
29
+ installs packages, changes settings or grants permission for external actions.
30
+
31
+ ## Extending Flood itself
32
+
33
+ In the Flood source repository, edit canonical component/token/guidance sources
34
+ and knowledge.json annotations, then build. Never edit the generated catalog or
35
+ material copies. New exports require catalog content and a live example; new
36
+ workflows need a group and manifest entry; public guides need a knowledge group.
37
+ Relationships must resolve. Preserve published material IDs across growth and
38
+ review the compatibility fixture before intentional retirement or renaming.
39
+
40
+ Run focused knowledge/compiler/CLI checks during iteration. A candidate also
41
+ checks clean tarball consumers, TypeScript declarations, website parity and
42
+ the applicable browser matrix. Growth checks cover metadata-only discovery,
43
+ bounded pages, changed cursors and selected-content integrity. They do not prove
44
+ model routing quality or rendered UI quality. Record the actual task, selected
45
+ materials, component/token owners and executed checks when evaluating an agent.
46
+
47
+ Core safeguards reduce known failure modes; they do not guarantee that every
48
+ future contribution or every agent host follows the contract. Host adapters and
49
+ new motion/theme capabilities require their own implementation and evidence.
@@ -0,0 +1,25 @@
1
+ # Record metadata decisions
2
+
3
+ Use with the records workflow. These cases demonstrate different outcomes for
4
+ similar fields; they are not templates or a forbidden-word list.
5
+
6
+ | Situation | Decision | Reason |
7
+ | --- | --- | --- |
8
+ | Browsing suggestions; title/summary identify the item, status guides opening | Keep identity/summary together; a stable trailing state is useful; consider category/date near the copy | Four unrelated trailing values should not dictate the summary width |
9
+ | A support queue is triaged by state, priority, assignee and due time | Keep those attributes in named comparison columns | Moving priority into details would obstruct the actual task |
10
+ | A suggestion's category is Error but its state is In progress | Use category treatment and lifecycle StatusIndicator; name category in ambiguous details | Classification is not a failed save or error announcement |
11
+ | A low-priority item and high-priority item have the same state | Preserve priority if comparing urgency matters; accent only the meaningful distinction | Urgency and lifecycle are separate dimensions, not competing dots |
12
+ | A file list must compare format, size and transfer progress | Reuse FileMeta, StatusIndicator and Progress within the file owners | Generic text or a row of handmade chips would duplicate existing primitives |
13
+ | An invoice register is used to compare due amounts and payment states | Use named columns, retain units and relevant dates | These fields are core comparisons rather than optional decoration |
14
+ | Created and updated render the same day in a casual browsing detail | Consider one date if the second event adds no decision value | A short screen need not repeat equivalent visible information |
15
+ | An audit detail needs exact creation and modification times on the same day | Keep both named events with sufficient precision/timezone context | Equal formatted dates do not establish identical events |
16
+ | A first-use collection has an empty-state title and a visible create action | Omit a redundant zero counter unless another task needs it | Repeating emptiness does not help the next action |
17
+ | Filters reduce an existing collection to zero | Show the no-results state and a relevant reset; preserve needed result announcements | This is a recoverable query state, not first-use onboarding |
18
+ | Several short records align in an example but long statuses shift other values | Establish shared columns or change the record composition | Equal Inline gaps do not create common scan positions |
19
+ | An inspector flags a priority/date as unowned supporting copy | Evaluate its selection, triage or history purpose | Neither automatic removal nor semantic wrappers prove useful content |
20
+
21
+ A compact browsing row might place category and recency with its copy and keep
22
+ one state at the trailing edge. A comparison table may need several such attributes
23
+ visible together. Decide from the task before choosing presentation. Do not fix
24
+ crowding by hiding a required field, replacing Flood components or modifying user
25
+ record content. Record these choices in development notes, not as extra UI captions.
@@ -0,0 +1,102 @@
1
+ # Review the rendered interface
2
+
3
+ The optional `@flood-md/agent/inspect` export provides a self-contained, read-only
4
+ DOM observer for local browser tooling. It is separate from the Node knowledge
5
+ reader and is not an application dependency or an automatic policy engine.
6
+
7
+ With Playwright running against your local host:
8
+
9
+ ```js
10
+ import {inspectRenderedUI} from '@flood-md/agent/inspect';
11
+ await page.evaluate(() => document.fonts.ready);
12
+ const observations = await page.evaluate(inspectRenderedUI, {});
13
+ ```
14
+
15
+ Before accepting owner selection, also review host-owned source with
16
+ `inspectSourceUI` from the same entry:
17
+
18
+ ```js
19
+ import {inspectSourceUI} from '@flood-md/agent/inspect';
20
+ const jsxReview = inspectSourceUI(jsxText);
21
+ const cssReview = inspectSourceUI(cssText, {format: 'css'});
22
+ ```
23
+
24
+ The caller supplies local text; the function performs no file access, execution
25
+ or network requests. It points at native dialog calls, selected raw JSX controls
26
+ and custom grid/flex layout declarations for owner review. Read each source
27
+ location: comments, strings, examples and legitimate shell CSS can match, while
28
+ aliases, dynamic types and indirect calls can be missed. This is not an AST,
29
+ import audit or automatic ban. Use it on host source, not the implementation of
30
+ Flood itself. Inputs are limited to 500000 UTF-16 units and maxFindings defaults
31
+ to 50 (maximum 500); split larger files deliberately. Retain contextual decisions
32
+ outside the product. An empty result does not establish component reuse.
33
+ Rem-based min-width/min-inline-size declarations are also surfaced for review:
34
+ a local dense table can need one, while a whole-page floor can defeat enlarged
35
+ text. Confirm the selector and actual 24px-root desktop geometry.
36
+
37
+ Inspect representative pages and actual interaction states, including a populated
38
+ editable row and an open date/selection popup. Set rootSelector only when that
39
+ scope is intended; a popup portalled elsewhere will then be excluded. The function
40
+ does not open controls or wait for layout on your behalf. It traverses the current
41
+ document, not iframes or shadow roots. It performs no network requests or writes.
42
+ Keep reports local: labels and copy inventories may contain the host's user data.
43
+
44
+ For a visual layout change, compare screenshots of the same content, viewport
45
+ and settled state. Name what should stand out and which elements should read
46
+ together. Use measured boxes to explain the difference. The observer cannot
47
+ judge painted glyph edges, perceived contrast or the balance of empty space.
48
+
49
+ Observations include likely text glyphs used as button icons, unslotted SVGs,
50
+ passive cells offset from neighbouring input centres and complete cell blocks in
51
+ record/action rows, supporting copy echoing a visible action label, a copy inventory
52
+ and field/group rectangles. They are review findings with selectors/labels and
53
+ measured offsets, not proof of a defect in every context. Arithmetic labels or
54
+ custom artwork can be intentional; explain exceptions rather than deleting data
55
+ to obtain an empty report. maxElements bounds each selected category (default 500,
56
+ maximum 2000) and the total findings list; truncated means coverage is incomplete.
57
+
58
+ forms.track-drift compares stacked multi-column form grids with the same outer
59
+ frame. Different gutters or track counts need review against the grouping plan;
60
+ some different contexts can legitimately use different tracks. Tables and nested
61
+ ancestor/descendant grids are excluded. It is an observable geometry check, not
62
+ an automatic judgement of semantic hierarchy.
63
+
64
+ forms.content-track-drift compares actual Flood field-owner rectangles across
65
+ stacked grids in the same form, even when nested Surface padding makes their
66
+ outer Grid frames differ. It requires matching overall content edges and one
67
+ consistent field width per track. Tables, ancestor/descendant grids and ambiguous
68
+ spanning arrangements are excluded; this is selected coverage, not proof that
69
+ all form alignment is correct. Review the reported offset in context.
70
+
71
+ copy.unowned-support asks for review of supporting text outside a field, actual
72
+ operation state, navigation or structured document. This intentionally includes
73
+ free-standing implementation captions. Potential usefulness is not a reason to
74
+ keep one: name the user's current decision or recovery need. Actual storage errors
75
+ and deletion confirmations are different contexts from a static storage footer.
76
+ Contextual exceptions are possible. Never change font size, ARIA roles or wrapper
77
+ markup just to hide a finding; review the information itself.
78
+
79
+ table.word-fragment uses Intl.Segmenter and rendered text ranges to identify
80
+ words split across table lines. It is bounded by maxElements word segments,
81
+ skips words longer than 200 UTF-16 units, code/pre and cells explicitly marked
82
+ data-wrap="anywhere". If Intl.Segmenter is unavailable, that coverage is reported
83
+ as absent. Localized line-breaking conventions can justify an exception. Preserve
84
+ meaningful intrinsic column widths and use local scrolling before accepting
85
+ single-letter fragments in statuses or dates.
86
+
87
+ For icon actions use real artwork in IconSlot and an accessible name on the
88
+ action. Table now centres cells by default; use cellVerticalAlign="top" only for
89
+ a deliberate prose-table layout. Action-echo findings need contextual review:
90
+ a necessary instruction can legitimately repeat a button label.
91
+
92
+ An empty issues array does not pass the interface. Separately review necessary
93
+ copy using the interface-content workflow and coherent grouping using the forms
94
+ workflow. Inspect copy in screen order and field edges against common layout
95
+ tracks. Check populated, empty, error and changed-content states in task scope.
96
+ Record actual decisions and remaining limits; a successful screenshot capture
97
+ does not mean its contents were reviewed successfully.
98
+
99
+ layout.page-overflow reports document scroll width beyond the viewport during
100
+ a whole-document inspection. It does not run for a selected rootSelector or
101
+ report correctly contained local scrolling. Review the actual cause and task
102
+ context rather than hiding overflow to silence the finding.
@@ -6,6 +6,7 @@ override user authority or grant permission for unrelated operations.
6
6
 
7
7
  | Question / when | Audience | Prerequisite | Source of truth | Verify with |
8
8
  | --- | --- | --- | --- | --- |
9
+ | What needs saying? New or edited interface copy and reference adaptation | Designer / developer / agent | User task, product vocabulary and actual capabilities | flood-interface-content/SKILL.md | Contextual keep/rewrite/move/remove decisions; meaningful hierarchy; preserved recovery and accessible names |
9
10
  | Which primitive owns this role? Component/composite UI work | Developer / agent / reviewer | Matching catalog and component anatomy | flood-composition/SKILL.md | Reuse existing primitives; extend small capabilities first |
10
11
  | Which API can I import? Every component edit | Developer / agent | Installed exact versions | Installed @flood-md/react declarations; flood.json | Type-check host imports; CLI doctor for alignment |
11
12
  | What does this release mean? Setup / upgrade | Developer / agent | Matching guide | flood/DESIGN.md, package changelog | Compare version and declarations; preserve host edits |
@@ -41,6 +41,9 @@ the relationship between indicator and label, and independent form semantics.
41
41
  Avoid negative margins or transforms that conceal a layout problem or overlap
42
42
  click targets. For nested surfaces, compare inner radius with outer radius minus
43
43
  padding and stroke; independent controls retain their own radius recipe.
44
+ When a circular avatar sits against the rounded end of a pill control, use the
45
+ same inset at the top, bottom and avatar-side edge. Keep the label gap and the
46
+ trailing action inset separate from that geometry.
44
47
 
45
48
  ## Check the composition
46
49
 
@@ -59,3 +62,30 @@ host's verification workflow; add a regression check for a repeated failure rath
59
62
  than a test that merely repeats a CSS declaration. Report what was measured and
60
63
  what remains unverified. See [accessibility](accessibility.md) and
61
64
  [verification](verification.md) for related contracts.
65
+
66
+ ## Judge the space you can see
67
+
68
+ 1. Name what should read together, what starts a new group, and what should
69
+ catch the eye first. Start with shared edges and the actual reading order.
70
+ 2. Inspect the screen at its working size. Compare the painted edges of text,
71
+ icons, fills and rules as well as their layout boxes. Line boxes, internal
72
+ padding and hit areas already contribute space. A strong fill or divider
73
+ also changes how much separation the eye sees.
74
+ 3. Compare two plausible treatments with the same content and viewport.
75
+ Change one lever at a time: space, measure, weight, tone or a boundary.
76
+ Pick the token that makes the intended grouping read clearly, then recheck
77
+ with the actual token applied. Keep stable alignment for repeated elements.
78
+ 4. Compare short and wrapped content and the presence or absence of optional
79
+ content. Recheck narrow layouts, enlarged text and text spacing overrides.
80
+ Keep focus visible, hit areas usable and reading order intact.
81
+
82
+ For example, if a heading appears closer to the previous section than to its
83
+ own controls, inspect the heading line box and the first control's top inset
84
+ before increasing the section gap. If an icon looks off-center inside a
85
+ centered slot, compare its visible outline with a sibling icon before adjusting
86
+ the icon artwork. Keep the slot and click area on the shared track.
87
+
88
+ In review notes, name the visual problem, the competing treatments and the
89
+ reason one reads better. A passing geometry check supports that judgment.
90
+ For text beside an icon, inspect the actual baseline and visible glyphs,
91
+ including accents and wrapped labels. [CSS Inline Layout](https://www.w3.org/TR/css-inline-3/#leading-trim)