@flood-md/agent 0.2.8 → 0.2.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/DESIGN.md +26 -4
  2. package/README.md +40 -1
  3. package/SKILL.md +46 -4
  4. package/dist/catalog.json +7136 -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-aspect-ratio.md +36 -0
  9. package/dist/materials/component-avatar-group.md +39 -0
  10. package/dist/materials/component-avatar.md +40 -0
  11. package/dist/materials/component-badge.md +37 -0
  12. package/dist/materials/component-blockquote.md +35 -0
  13. package/dist/materials/component-breadcrumb.md +36 -0
  14. package/dist/materials/component-button-group.md +39 -0
  15. package/dist/materials/component-button.md +43 -0
  16. package/dist/materials/component-calendar.md +59 -0
  17. package/dist/materials/component-card.md +46 -0
  18. package/dist/materials/component-center.md +39 -0
  19. package/dist/materials/component-character-count.md +42 -0
  20. package/dist/materials/component-check-card.md +39 -0
  21. package/dist/materials/component-checkbox-group.md +48 -0
  22. package/dist/materials/component-checkbox.md +37 -0
  23. package/dist/materials/component-code-snippet.md +37 -0
  24. package/dist/materials/component-collapsible.md +40 -0
  25. package/dist/materials/component-color-picker.md +49 -0
  26. package/dist/materials/component-color-swatch.md +35 -0
  27. package/dist/materials/component-combobox.md +50 -0
  28. package/dist/materials/component-command-list.md +48 -0
  29. package/dist/materials/component-container.md +36 -0
  30. package/dist/materials/component-context-menu.md +43 -0
  31. package/dist/materials/component-copy-button.md +42 -0
  32. package/dist/materials/component-data-list-item.md +40 -0
  33. package/dist/materials/component-data-list.md +38 -0
  34. package/dist/materials/component-data-table.md +58 -0
  35. package/dist/materials/component-date-field.md +57 -0
  36. package/dist/materials/component-date-picker.md +66 -0
  37. package/dist/materials/component-date-range-field.md +62 -0
  38. package/dist/materials/component-date-range-picker.md +72 -0
  39. package/dist/materials/component-date-time-picker.md +60 -0
  40. package/dist/materials/component-date-time-range-picker.md +66 -0
  41. package/dist/materials/component-description-list.md +42 -0
  42. package/dist/materials/component-dialog.md +45 -0
  43. package/dist/materials/component-divider.md +37 -0
  44. package/dist/materials/component-drawer.md +50 -0
  45. package/dist/materials/component-dropzone.md +45 -0
  46. package/dist/materials/component-editable.md +57 -0
  47. package/dist/materials/component-empty-state.md +41 -0
  48. package/dist/materials/component-error-summary.md +40 -0
  49. package/dist/materials/component-field.md +46 -0
  50. package/dist/materials/component-fieldset.md +46 -0
  51. package/dist/materials/component-figure.md +36 -0
  52. package/dist/materials/component-file-input.md +45 -0
  53. package/dist/materials/component-file-item.md +48 -0
  54. package/dist/materials/component-file-list.md +39 -0
  55. package/dist/materials/component-file-meta.md +36 -0
  56. package/dist/materials/component-flood-root.md +33 -0
  57. package/dist/materials/component-grid.md +38 -0
  58. package/dist/materials/component-heading.md +38 -0
  59. package/dist/materials/component-hover-card.md +48 -0
  60. package/dist/materials/component-icon-button.md +41 -0
  61. package/dist/materials/component-icon-slot.md +37 -0
  62. package/dist/materials/component-image-preview.md +50 -0
  63. package/dist/materials/component-image.md +37 -0
  64. package/dist/materials/component-inline-code.md +36 -0
  65. package/dist/materials/component-inline.md +39 -0
  66. package/dist/materials/component-input-group.md +43 -0
  67. package/dist/materials/component-input.md +39 -0
  68. package/dist/materials/component-kbd.md +34 -0
  69. package/dist/materials/component-label.md +37 -0
  70. package/dist/materials/component-link.md +35 -0
  71. package/dist/materials/component-list-box.md +57 -0
  72. package/dist/materials/component-list.md +40 -0
  73. package/dist/materials/component-menu.md +54 -0
  74. package/dist/materials/component-meter.md +43 -0
  75. package/dist/materials/component-metric.md +39 -0
  76. package/dist/materials/component-multi-select.md +52 -0
  77. package/dist/materials/component-navigation-list.md +38 -0
  78. package/dist/materials/component-navigation-tree.md +43 -0
  79. package/dist/materials/component-number-input.md +47 -0
  80. package/dist/materials/component-pagination.md +44 -0
  81. package/dist/materials/component-password-input.md +43 -0
  82. package/dist/materials/component-pin-input.md +45 -0
  83. package/dist/materials/component-popover.md +47 -0
  84. package/dist/materials/component-progress.md +42 -0
  85. package/dist/materials/component-radio-card.md +43 -0
  86. package/dist/materials/component-radio-group.md +49 -0
  87. package/dist/materials/component-radio.md +39 -0
  88. package/dist/materials/component-range-calendar.md +58 -0
  89. package/dist/materials/component-rating.md +46 -0
  90. package/dist/materials/component-resizable-panels.md +48 -0
  91. package/dist/materials/component-scroll-area.md +42 -0
  92. package/dist/materials/component-search-input.md +40 -0
  93. package/dist/materials/component-section.md +42 -0
  94. package/dist/materials/component-segmented-control.md +51 -0
  95. package/dist/materials/component-select.md +45 -0
  96. package/dist/materials/component-skeleton.md +42 -0
  97. package/dist/materials/component-skip-link.md +37 -0
  98. package/dist/materials/component-slider.md +51 -0
  99. package/dist/materials/component-spinner.md +37 -0
  100. package/dist/materials/component-split.md +40 -0
  101. package/dist/materials/component-stack.md +37 -0
  102. package/dist/materials/component-status-indicator.md +38 -0
  103. package/dist/materials/component-steps.md +40 -0
  104. package/dist/materials/component-surface.md +37 -0
  105. package/dist/materials/component-switch.md +35 -0
  106. package/dist/materials/component-table.md +46 -0
  107. package/dist/materials/component-tabs.md +43 -0
  108. package/dist/materials/component-tag-input.md +46 -0
  109. package/dist/materials/component-tag.md +40 -0
  110. package/dist/materials/component-text.md +39 -0
  111. package/dist/materials/component-textarea.md +38 -0
  112. package/dist/materials/component-time-field.md +56 -0
  113. package/dist/materials/component-time-picker.md +60 -0
  114. package/dist/materials/component-timeline.md +38 -0
  115. package/dist/materials/component-toast-region.md +42 -0
  116. package/dist/materials/component-toggle-group.md +44 -0
  117. package/dist/materials/component-toggle.md +39 -0
  118. package/dist/materials/component-toolbar.md +42 -0
  119. package/dist/materials/component-tooltip.md +40 -0
  120. package/dist/materials/component-tree-select.md +56 -0
  121. package/dist/materials/component-tree.md +52 -0
  122. package/dist/materials/component-upload-item.md +52 -0
  123. package/dist/materials/component-upload-list.md +40 -0
  124. package/dist/materials/component-visually-hidden.md +37 -0
  125. package/dist/materials/guide-agent-knowledge.md +88 -0
  126. package/dist/materials/guide-agents.md +96 -0
  127. package/dist/materials/guide-faq.md +84 -0
  128. package/dist/materials/guide-foundations.md +232 -0
  129. package/dist/materials/guide-installation.md +79 -0
  130. package/dist/materials/guide-interface-content.md +76 -0
  131. package/dist/materials/guide-introduction.md +40 -0
  132. package/dist/materials/guide-layout.md +193 -0
  133. package/dist/materials/guide-privacy.md +23 -0
  134. package/dist/materials/guide-project-ui.md +127 -0
  135. package/dist/materials/guide-skills.md +108 -0
  136. package/dist/materials/guide-theming.md +73 -0
  137. package/dist/materials/recipe-command-palette.md +66 -0
  138. package/dist/materials/recipe-filter-bar.md +59 -0
  139. package/dist/materials/recipe-form-submission.md +39 -0
  140. package/dist/materials/recipe-grouped-form.md +66 -0
  141. package/dist/materials/recipe-select-all.md +31 -0
  142. package/dist/materials/recipe-split-button.md +26 -0
  143. package/dist/materials/recipe-table-bulk-actions.md +88 -0
  144. package/dist/materials/recipe-workspace-review.md +134 -0
  145. package/dist/materials/token-sys.color.accent.content.json +41 -0
  146. package/dist/materials/token-sys.color.action.danger.content.json +42 -0
  147. package/dist/materials/token-sys.color.action.ghost.content.json +41 -0
  148. package/dist/materials/token-sys.color.action.ghost.disabled-content.json +41 -0
  149. package/dist/materials/token-sys.color.action.ghost.disabled.json +41 -0
  150. package/dist/materials/token-sys.color.action.ghost.hover.json +41 -0
  151. package/dist/materials/token-sys.color.action.ghost.pressed.json +41 -0
  152. package/dist/materials/token-sys.color.action.ghost.rest.json +41 -0
  153. package/dist/materials/token-sys.color.action.on-surface.content.json +39 -0
  154. package/dist/materials/token-sys.color.action.on-surface.disabled-content.json +39 -0
  155. package/dist/materials/token-sys.color.action.on-surface.disabled.json +39 -0
  156. package/dist/materials/token-sys.color.action.on-surface.hover.json +39 -0
  157. package/dist/materials/token-sys.color.action.on-surface.pressed.json +39 -0
  158. package/dist/materials/token-sys.color.action.on-surface.rest.json +39 -0
  159. package/dist/materials/token-sys.color.action.primary.content.json +39 -0
  160. package/dist/materials/token-sys.color.action.primary.disabled-content.json +39 -0
  161. package/dist/materials/token-sys.color.action.primary.disabled.json +39 -0
  162. package/dist/materials/token-sys.color.action.primary.hover.json +39 -0
  163. package/dist/materials/token-sys.color.action.primary.pressed.json +39 -0
  164. package/dist/materials/token-sys.color.action.primary.rest.json +39 -0
  165. package/dist/materials/token-sys.color.action.subtle.content.json +39 -0
  166. package/dist/materials/token-sys.color.action.subtle.disabled-content.json +39 -0
  167. package/dist/materials/token-sys.color.action.subtle.disabled.json +39 -0
  168. package/dist/materials/token-sys.color.action.subtle.hover.json +39 -0
  169. package/dist/materials/token-sys.color.action.subtle.pressed.json +39 -0
  170. package/dist/materials/token-sys.color.action.subtle.rest.json +39 -0
  171. package/dist/materials/token-sys.color.border.decorative.json +42 -0
  172. package/dist/materials/token-sys.color.border.default.json +39 -0
  173. package/dist/materials/token-sys.color.border.floating.json +39 -0
  174. package/dist/materials/token-sys.color.border.strong.json +39 -0
  175. package/dist/materials/token-sys.color.content.default.json +41 -0
  176. package/dist/materials/token-sys.color.content.helper.json +39 -0
  177. package/dist/materials/token-sys.color.content.subtle.json +43 -0
  178. package/dist/materials/token-sys.color.divider.decorative.json +41 -0
  179. package/dist/materials/token-sys.color.feedback.error.json +39 -0
  180. package/dist/materials/token-sys.color.feedback.info.json +39 -0
  181. package/dist/materials/token-sys.color.feedback.success.json +39 -0
  182. package/dist/materials/token-sys.color.feedback.warning.json +39 -0
  183. package/dist/materials/token-sys.color.field.background.json +39 -0
  184. package/dist/materials/token-sys.color.field.border.json +39 -0
  185. package/dist/materials/token-sys.color.field.boundary.json +39 -0
  186. package/dist/materials/token-sys.color.field.content.json +39 -0
  187. package/dist/materials/token-sys.color.field.disabled-content.json +39 -0
  188. package/dist/materials/token-sys.color.field.disabled.json +39 -0
  189. package/dist/materials/token-sys.color.field.placeholder.json +39 -0
  190. package/dist/materials/token-sys.color.focus.ring.json +39 -0
  191. package/dist/materials/token-sys.color.indicator.accent.json +39 -0
  192. package/dist/materials/token-sys.color.indicator.fill.json +39 -0
  193. package/dist/materials/token-sys.color.indicator.track.json +39 -0
  194. package/dist/materials/token-sys.color.loading.placeholder.json +42 -0
  195. package/dist/materials/token-sys.color.scrollbar.thumb-hover.json +39 -0
  196. package/dist/materials/token-sys.color.scrollbar.thumb.json +39 -0
  197. package/dist/materials/token-sys.color.selection.background.json +39 -0
  198. package/dist/materials/token-sys.color.selection.content.json +39 -0
  199. package/dist/materials/token-sys.color.selection.floating.json +39 -0
  200. package/dist/materials/token-sys.color.shadow.floating.json +39 -0
  201. package/dist/materials/token-sys.color.surface.canvas.json +39 -0
  202. package/dist/materials/token-sys.color.surface.default.json +39 -0
  203. package/dist/materials/token-sys.color.surface.floating-translucent.json +39 -0
  204. package/dist/materials/token-sys.color.surface.floating.json +39 -0
  205. package/dist/materials/token-sys.color.surface.overlay.json +39 -0
  206. package/dist/materials/token-sys.color.surface.raised.json +39 -0
  207. package/dist/materials/token-sys.control.2xl.gap.json +34 -0
  208. package/dist/materials/token-sys.control.2xl.height.json +34 -0
  209. package/dist/materials/token-sys.control.2xl.icon-size.json +34 -0
  210. package/dist/materials/token-sys.control.2xl.line-height.json +31 -0
  211. package/dist/materials/token-sys.control.2xl.padding-inline.json +34 -0
  212. package/dist/materials/token-sys.control.2xl.text-size.json +34 -0
  213. package/dist/materials/token-sys.control.2xs.gap.json +34 -0
  214. package/dist/materials/token-sys.control.2xs.height.json +34 -0
  215. package/dist/materials/token-sys.control.2xs.icon-size.json +34 -0
  216. package/dist/materials/token-sys.control.2xs.line-height.json +31 -0
  217. package/dist/materials/token-sys.control.2xs.padding-inline.json +34 -0
  218. package/dist/materials/token-sys.control.2xs.text-size.json +34 -0
  219. package/dist/materials/token-sys.control.lg.gap.json +34 -0
  220. package/dist/materials/token-sys.control.lg.height.json +34 -0
  221. package/dist/materials/token-sys.control.lg.icon-size.json +34 -0
  222. package/dist/materials/token-sys.control.lg.line-height.json +31 -0
  223. package/dist/materials/token-sys.control.lg.padding-inline.json +34 -0
  224. package/dist/materials/token-sys.control.lg.text-size.json +34 -0
  225. package/dist/materials/token-sys.control.md.gap.json +34 -0
  226. package/dist/materials/token-sys.control.md.height.json +34 -0
  227. package/dist/materials/token-sys.control.md.icon-size.json +34 -0
  228. package/dist/materials/token-sys.control.md.line-height.json +31 -0
  229. package/dist/materials/token-sys.control.md.padding-inline.json +34 -0
  230. package/dist/materials/token-sys.control.md.text-size.json +34 -0
  231. package/dist/materials/token-sys.control.sm.gap.json +34 -0
  232. package/dist/materials/token-sys.control.sm.height.json +34 -0
  233. package/dist/materials/token-sys.control.sm.icon-size.json +34 -0
  234. package/dist/materials/token-sys.control.sm.line-height.json +31 -0
  235. package/dist/materials/token-sys.control.sm.padding-inline.json +34 -0
  236. package/dist/materials/token-sys.control.sm.text-size.json +34 -0
  237. package/dist/materials/token-sys.control.xl.gap.json +34 -0
  238. package/dist/materials/token-sys.control.xl.height.json +34 -0
  239. package/dist/materials/token-sys.control.xl.icon-size.json +34 -0
  240. package/dist/materials/token-sys.control.xl.line-height.json +31 -0
  241. package/dist/materials/token-sys.control.xl.padding-inline.json +34 -0
  242. package/dist/materials/token-sys.control.xl.text-size.json +34 -0
  243. package/dist/materials/token-sys.control.xs.gap.json +34 -0
  244. package/dist/materials/token-sys.control.xs.height.json +34 -0
  245. package/dist/materials/token-sys.control.xs.icon-size.json +34 -0
  246. package/dist/materials/token-sys.control.xs.line-height.json +31 -0
  247. package/dist/materials/token-sys.control.xs.padding-inline.json +34 -0
  248. package/dist/materials/token-sys.control.xs.text-size.json +34 -0
  249. package/dist/materials/token-sys.effect.floating.blur.json +34 -0
  250. package/dist/materials/token-sys.effect.floating.saturation.json +31 -0
  251. package/dist/materials/token-sys.effect.floating.shadow-blur.json +34 -0
  252. package/dist/materials/token-sys.effect.floating.shadow-offset.json +34 -0
  253. package/dist/materials/token-sys.focus.offset.json +34 -0
  254. package/dist/materials/token-sys.focus.width.json +34 -0
  255. package/dist/materials/token-sys.font.mono.json +36 -0
  256. package/dist/materials/token-sys.font.sans.json +35 -0
  257. package/dist/materials/token-sys.layer.base.json +31 -0
  258. package/dist/materials/token-sys.layer.modal.json +31 -0
  259. package/dist/materials/token-sys.layer.popover.json +31 -0
  260. package/dist/materials/token-sys.layer.sticky.json +31 -0
  261. package/dist/materials/token-sys.layer.toast.json +31 -0
  262. package/dist/materials/token-sys.motion.duration-fast.json +34 -0
  263. package/dist/materials/token-sys.motion.duration-normal.json +34 -0
  264. package/dist/materials/token-sys.motion.duration-reduced.json +34 -0
  265. package/dist/materials/token-sys.motion.easing.json +36 -0
  266. package/dist/materials/token-sys.radius.action.json +34 -0
  267. package/dist/materials/token-sys.radius.block.json +34 -0
  268. package/dist/materials/token-sys.radius.field.json +34 -0
  269. package/dist/materials/token-sys.radius.indicator.json +34 -0
  270. package/dist/materials/token-sys.radius.surface.json +34 -0
  271. package/dist/materials/token-sys.scrollbar.inset.json +34 -0
  272. package/dist/materials/token-sys.scrollbar.min-thumb.json +34 -0
  273. package/dist/materials/token-sys.scrollbar.size.json +34 -0
  274. package/dist/materials/token-sys.size.choice.json +34 -0
  275. package/dist/materials/token-sys.size.container.lg.json +37 -0
  276. package/dist/materials/token-sys.size.container.md.json +37 -0
  277. package/dist/materials/token-sys.size.container.sm.json +37 -0
  278. package/dist/materials/token-sys.size.grid.min-item.json +37 -0
  279. package/dist/materials/token-sys.size.indicator.lg.json +34 -0
  280. package/dist/materials/token-sys.size.indicator.md.json +34 -0
  281. package/dist/materials/token-sys.size.indicator.sm.json +34 -0
  282. package/dist/materials/token-sys.size.keycap.lg.json +34 -0
  283. package/dist/materials/token-sys.size.keycap.md.json +34 -0
  284. package/dist/materials/token-sys.size.keycap.sm.json +34 -0
  285. package/dist/materials/token-sys.size.switch-height.json +34 -0
  286. package/dist/materials/token-sys.size.switch-thumb.json +34 -0
  287. package/dist/materials/token-sys.size.switch-width.json +34 -0
  288. package/dist/materials/token-sys.size.touch.json +34 -0
  289. package/dist/materials/token-sys.space.0.json +34 -0
  290. package/dist/materials/token-sys.space.1.json +34 -0
  291. package/dist/materials/token-sys.space.12.json +34 -0
  292. package/dist/materials/token-sys.space.2.json +34 -0
  293. package/dist/materials/token-sys.space.3.json +34 -0
  294. package/dist/materials/token-sys.space.4.json +34 -0
  295. package/dist/materials/token-sys.space.6.json +34 -0
  296. package/dist/materials/token-sys.space.8.json +34 -0
  297. package/dist/materials/token-sys.stroke.width.json +34 -0
  298. package/dist/materials/token-sys.type.body.line-height.json +31 -0
  299. package/dist/materials/token-sys.type.body.size.json +34 -0
  300. package/dist/materials/token-sys.type.body.tracking.json +34 -0
  301. package/dist/materials/token-sys.type.body.weight.json +31 -0
  302. package/dist/materials/token-sys.type.compact.line-height.json +31 -0
  303. package/dist/materials/token-sys.type.compact.size.json +34 -0
  304. package/dist/materials/token-sys.type.compact.tracking.json +34 -0
  305. package/dist/materials/token-sys.type.compact.weight.json +31 -0
  306. package/dist/materials/token-sys.type.control.line-height.json +31 -0
  307. package/dist/materials/token-sys.type.control.size.json +34 -0
  308. package/dist/materials/token-sys.type.control.tracking.json +34 -0
  309. package/dist/materials/token-sys.type.control.weight.json +31 -0
  310. package/dist/materials/token-sys.type.dialog-title.line-height.json +33 -0
  311. package/dist/materials/token-sys.type.dialog-title.size.json +36 -0
  312. package/dist/materials/token-sys.type.dialog-title.tracking.json +36 -0
  313. package/dist/materials/token-sys.type.dialog-title.weight.json +33 -0
  314. package/dist/materials/token-sys.type.display.line-height.json +31 -0
  315. package/dist/materials/token-sys.type.display.size.json +34 -0
  316. package/dist/materials/token-sys.type.display.tracking.json +34 -0
  317. package/dist/materials/token-sys.type.display.weight.json +31 -0
  318. package/dist/materials/token-sys.type.field-label.line-height.json +33 -0
  319. package/dist/materials/token-sys.type.field-label.size.json +36 -0
  320. package/dist/materials/token-sys.type.field-label.tracking.json +36 -0
  321. package/dist/materials/token-sys.type.field-label.weight.json +33 -0
  322. package/dist/materials/token-sys.type.group-title.line-height.json +33 -0
  323. package/dist/materials/token-sys.type.group-title.size.json +36 -0
  324. package/dist/materials/token-sys.type.group-title.tracking.json +36 -0
  325. package/dist/materials/token-sys.type.group-title.weight.json +33 -0
  326. package/dist/materials/token-sys.type.helper.line-height.json +31 -0
  327. package/dist/materials/token-sys.type.helper.size.json +34 -0
  328. package/dist/materials/token-sys.type.helper.tracking.json +34 -0
  329. package/dist/materials/token-sys.type.helper.weight.json +31 -0
  330. package/dist/materials/token-sys.type.label.line-height.json +31 -0
  331. package/dist/materials/token-sys.type.label.size.json +34 -0
  332. package/dist/materials/token-sys.type.label.tracking.json +34 -0
  333. package/dist/materials/token-sys.type.label.weight.json +31 -0
  334. package/dist/materials/token-sys.type.large.line-height.json +31 -0
  335. package/dist/materials/token-sys.type.large.size.json +34 -0
  336. package/dist/materials/token-sys.type.large.tracking.json +34 -0
  337. package/dist/materials/token-sys.type.large.weight.json +31 -0
  338. package/dist/materials/token-sys.type.lead.line-height.json +31 -0
  339. package/dist/materials/token-sys.type.lead.size.json +34 -0
  340. package/dist/materials/token-sys.type.lead.tracking.json +34 -0
  341. package/dist/materials/token-sys.type.lead.weight.json +31 -0
  342. package/dist/materials/token-sys.type.page.line-height.json +31 -0
  343. package/dist/materials/token-sys.type.page.size.json +34 -0
  344. package/dist/materials/token-sys.type.page.tracking.json +34 -0
  345. package/dist/materials/token-sys.type.page.weight.json +31 -0
  346. package/dist/materials/token-sys.type.section.line-height.json +31 -0
  347. package/dist/materials/token-sys.type.section.size.json +34 -0
  348. package/dist/materials/token-sys.type.section.tracking.json +34 -0
  349. package/dist/materials/token-sys.type.section.weight.json +31 -0
  350. package/knowledge.json +409 -0
  351. package/lib/index.d.ts +33 -0
  352. package/lib/index.mjs +144 -0
  353. package/lib/inspect.d.ts +12 -0
  354. package/lib/inspect.mjs +187 -0
  355. package/manifest.json +91 -1
  356. package/package.json +9 -1
  357. package/references/flood-accessibility/SKILL.md +40 -0
  358. package/references/flood-composition/SKILL.md +30 -0
  359. package/references/flood-data-display/SKILL.md +69 -0
  360. package/references/flood-feedback/SKILL.md +58 -0
  361. package/references/flood-forms/SKILL.md +94 -0
  362. package/references/flood-foundations/SKILL.md +44 -0
  363. package/references/flood-hierarchy/SKILL.md +87 -0
  364. package/references/flood-interface-content/SKILL.md +142 -0
  365. package/references/flood-navigation/SKILL.md +35 -0
  366. package/references/flood-overlays/SKILL.md +52 -0
  367. package/references/flood-records/SKILL.md +108 -0
  368. package/references/flood-spacing/SKILL.md +62 -0
  369. package/references/flood-verification/SKILL.md +99 -0
  370. package/references/interface-content-examples.md +47 -0
  371. package/references/knowledge.md +49 -0
  372. package/references/record-decisions.md +25 -0
  373. package/references/rendered-review.md +97 -0
  374. package/references/routing.md +1 -0
  375. package/rules.json +454 -2
  376. package/workflows.json +152 -0
@@ -0,0 +1,108 @@
1
+ ---
2
+ name: flood-records
3
+ description: Compose record lists and detail views with a clear metadata hierarchy. Use for crowded status/category/priority/date rows, drifting scan positions or deciding between a list and a comparison table.
4
+ ---
5
+
6
+ # Select information for the current decision
7
+
8
+ Read the task and installed DataListItem, Table/DataTable, DescriptionList and
9
+ feedback contracts relevant to it. Start with what the user needs to recognize,
10
+ compare or act on before opening a record. A record's available schema is not the
11
+ content specification for every surface. Use the
12
+ [interface-content workflow](../flood-interface-content/SKILL.md) for wording and
13
+ [hierarchy workflow](../flood-hierarchy/SKILL.md) for visual relationships.
14
+
15
+ Before JSX, make a short field -> decision -> list/detail placement record in
16
+ development notes. Include the reason for an omitted field; do not place this
17
+ planning text in the interface. Read the
18
+ [decision examples](../record-decisions.md) when meanings or placement are unclear.
19
+
20
+ ## Choose the record structure
21
+
22
+ - Use DataList/DataListItem when identity, a useful summary and opening the record
23
+ are primary. Keep the title and summary as one readable unit. Give secondary
24
+ attributes a subordinate relationship rather than filling every trailing slot.
25
+ - If users compare several independent attributes across records, use Table or
26
+ DataTable with actual named columns. A long Inline of unrelated values at each
27
+ row end is not a substitute for comparison columns.
28
+ - Use DescriptionList for named values in details. A detail view can expose more
29
+ information than a list; it does not need to repeat the list's chip arrangement.
30
+ - Selection is not navigation. A record list does not become ListBox merely
31
+ because users click its entries. Retain a real Link and independent actions.
32
+
33
+ When a scan signal is useful at the trailing edge, keep its position stable
34
+ across sibling records. Test the longest and missing values, not only equal sample
35
+ strings. Multiple right-justified values with variable lengths produce shifting
36
+ pseudo-columns even when their gaps match. Use an explicit common comparison
37
+ structure or move secondary attributes into the copy area.
38
+
39
+ ## Distinguish metadata roles before styling
40
+
41
+ | Meaning | Existing owner / treatment |
42
+ | --- | --- |
43
+ | Lifecycle or operation state | StatusIndicator with accurate text; color is supplementary |
44
+ | Category, type or membership | Badge when a tag-shaped marker helps recognition; otherwise named/subordinate text |
45
+ | Priority or urgency | Keep visible when it drives triage/comparison; use an explicit column or named value if needed |
46
+ | Creation, update, due or event time | Identify the event and appropriate precision; do not treat every date as a status |
47
+ | An available operation | Button/IconButton/Menu; do not make an informational badge look actionable |
48
+
49
+ A category named Error is not necessarily a failed operation. Do not choose
50
+ error styling or an announcement from that word alone. Use clear labels in
51
+ ambiguous contexts, especially details with several similar-looking values.
52
+ A priority is not a second lifecycle status. Do not make all attributes colorful
53
+ chips or interchangeable status dots. Keep StatusIndicator rather than hand-drawing
54
+ its state text/dot to fit a preferred arrangement.
55
+
56
+ There is no universal badge limit. For a browsing list, start with identity and
57
+ one useful scan signal; admit further visible metadata when it changes selection
58
+ or action. For triage, priority may be essential even when every item is normal.
59
+ Do not hide necessary comparisons just to make a screenshot quieter. Conversely,
60
+ a default low/medium priority does not automatically need a separate visual accent.
61
+
62
+ ## Distribute information between list and details
63
+
64
+ Protect enough width for the identity and useful summary. Category and recency
65
+ can read as secondary information near the title; status may stay in a stable
66
+ trailing position. This is one pattern, not a required arrangement. DataListItem
67
+ slots accept composition from supported Flood primitives; check their actual
68
+ content types before using them. Do not override private slot layout or wrap
69
+ ordinary metadata in invented semantics merely to silence an inspector.
70
+
71
+ In details, group named attributes by purpose. Place the principal state where it
72
+ informs action; avoid an unlabeled strip of state, category and priority that asks
73
+ the user to infer their meanings. User descriptions remain content, not interface
74
+ copy to shorten. A heading or Surface around a description must earn its role;
75
+ it is not mandatory for every text field.
76
+
77
+ Creation and modification describe different events. Keep both when history or
78
+ recency matters. If displayed values repeat and the distinction adds no current
79
+ value, one visible date may suffice; if exact time matters, use adequate precision
80
+ instead of suppressing the distinction based only on equal formatted dates.
81
+
82
+ ## Compose collection states deliberately
83
+
84
+ First-use empty, filtered no-results, loading and read failure are different
85
+ states. Keep a relevant reset/action and meaningful feedback. A result count can
86
+ help filtering or pagination; do not automatically add Found: 0 beside an empty
87
+ collection message that already establishes there are no records. Never remove
88
+ an accessible update announcement merely to remove a duplicate visible sentence;
89
+ check announcement ownership in the feedback workflow.
90
+
91
+ A product header, page title and section heading must answer different questions.
92
+ Do not add a generic product/category eyebrow plus a title plus a sentence restating
93
+ it just because the shell has slots. Real branding and navigation context can
94
+ justify persistent chrome; preserve that purpose rather than applying a text ban.
95
+
96
+ ## Verify across several records and states
97
+
98
+ Use isolated fixtures, not fictional records persisted into the user's app. Check
99
+ several short and long titles, every meaningful state, differing category/priority
100
+ lengths, missing metadata and long dates. Inspect scan positions and copy width
101
+ at normal and enlarged text, including 1280px/root24px for the desktop baseline.
102
+ No page overflow alone does not prove that the title has readable width.
103
+
104
+ Open details and return; exercise filters, no-results/reset and row actions.
105
+ Check reading order, Link names and action focus separately from visual alignment.
106
+ Review each visible attribute's decision value outside the product UI. An optional
107
+ observer may flag useful metadata or miss a crowded row; record the contextual
108
+ keep/move/name/omit decision rather than treating its output as editorial approval.
@@ -0,0 +1,62 @@
1
+ ---
2
+ name: flood-spacing
3
+ description: Diagnose Flood spacing, density, nested radii and alignment from rendered geometry. Use for large gaps, crowded rows or shifting compositions.
4
+ ---
5
+
6
+ # Measure the relationship
7
+
8
+ Read the [spacing reference](../spacing.md), installed component anatomy and
9
+ host content requirements. Existing user-approved geometry governs the task.
10
+
11
+ Identify what a gap separates: indicator/text, title/description, related choices,
12
+ independent actions, sections, or nested surfaces. Do not propagate one gap to
13
+ every wrapper. Stack and Inline organize relationships; component padding and
14
+ line height still contribute to the visible distance.
15
+
16
+ Named fields use space-1 between label and control. This inner association
17
+ is distinct from the parent gap between fields: use the
18
+ [hierarchy workflow](../flood-hierarchy/SKILL.md) for task/group/field rhythm.
19
+ Do not stack a host spacer on top of the Dialog-owned body inset.
20
+
21
+ ## Find the owner
22
+
23
+ Inspect bounding rectangles plus computed padding, margin, gap, minimum height
24
+ and line height. For centered repeated rows, visible glyph separation includes
25
+ row height minus glyph height plus the row gap. A zero gap can still be spacious.
26
+
27
+ Remove redundant space at the layer that creates it. Preserve the choice glyph
28
+ and label pair, explicit icon dimensions and nonoverlapping click targets. Avoid
29
+ negative margins or transforms that merely hide a bad parent relationship.
30
+
31
+ For a nested surface, compare its radius with the outer radius minus the actual
32
+ inset/stroke. Do not force unrelated actions to follow that formula. Compare
33
+ top/bottom and start/end insets around a nested InputGroup action optically.
34
+
35
+ Rounded cards need a content-safe inset as well as compatible nested radii.
36
+ Inspect the nearest curved edge around corner text and icons, not only distance
37
+ from the rectangular bounding box. Use supported surface padding and radius
38
+ choices together; increase the inset or reduce the radius when corners look
39
+ crowded. Do not impose a universal padding-equals-radius formula on all cards.
40
+
41
+ Give sibling sections an explicit parent-owned gap. An optional summary, message
42
+ or toolbar must not be the only source of separation between its neighbours.
43
+ For split panes, the full-height divider belongs to the stretching layout owner;
44
+ a shorter sticky or scrolling child must not determine the divider's length.
45
+
46
+ Distinguish a real component from its preview scene. Fixed preview height and
47
+ reserved feedback space can prevent a demo from jumping; they should not impose
48
+ an empty message row or fixed height on every production field.
49
+
50
+ ## Evidence
51
+
52
+ Check short/wrapping labels, optional descriptions/messages/actions, all relevant
53
+ sizes, narrow width, enlarged text and both pointer modes. Rows can grow for
54
+ content; compact spacing must not clip text or overlap touch targets. Check a
55
+ sibling using the same recipe after a shared correction. Report actual measures
56
+ and rendered evidence, not only the declaration that was changed.
57
+
58
+ No horizontal overflow does not prove a readable layout. Inspect the actual
59
+ remaining copy width and body height after padding, title/description, fixed
60
+ actions and scrollbar space. A thin scrolling slot or words broken into fragments
61
+ is a failure even when every rectangle technically fits. Correct the owning
62
+ container's responsive budget without shrinking the user's enlarged text.
@@ -0,0 +1,99 @@
1
+ ---
2
+ name: flood-verification
3
+ description: Verify Flood component or composed-interface changes against applicable contracts and actual evidence. Use for stabilization, regression or completion review.
4
+ ---
5
+
6
+ # Turn a rule into an observation
7
+
8
+ Read [verification](../verification.md), the host's scripts and the changed
9
+ component's contract. Use project-root flood/rules.json to identify applicable
10
+ rule IDs; it is an index of guidance, not an automatic pass/fail policy engine.
11
+
12
+ ## Bound the coverage
13
+
14
+ Record the affected primitive, its real consumers, supported states and ownership.
15
+ Mark an inapplicable check with a reason rather than forcing keyboard behavior
16
+ onto decoration or readOnly onto every control. Distinguish existing test coverage
17
+ from checks actually run for this source revision.
18
+
19
+ Honor the task's declared evaluation scope. A desktop-only test host does not
20
+ require new mobile product work. Record excluded targets instead of quietly
21
+ expanding the task. When visible copy changes, apply the
22
+ [interface content workflow](../flood-interface-content/SKILL.md); type checks
23
+ and screenshots alone do not establish that its wording is necessary or accurate.
24
+ Desktop-only scope still includes enlarged text in the desktop viewport. Do not
25
+ freeze the whole application behind a rem-based minimum width and call resulting
26
+ page overflow a mobile limitation. Keep dense table overflow in its local owner
27
+ and let the surrounding desktop form use its available width.
28
+ For the Flood desktop baseline, include a 1280px viewport with a 24px root font
29
+ (150% of the usual 16px default), alongside normal 1280/1440px views. Testing only
30
+ 20px does not cover that target. This is a text-enlargement check, not a request
31
+ to implement a mobile product. Report any deliberate host-specific exclusion.
32
+
33
+ Check the public contract at the boundary: installed exports/types, actual form
34
+ values, controlled acceptance/refusal, reset, names/focus and semantic state. For
35
+ visual changes inspect rendered geometry, long/optional content, narrow/wide,
36
+ enlarged text and the relevant pointer/RTL/forced-color modes. A CSS declaration
37
+ or component count is not evidence that the user-visible relationship works.
38
+
39
+ For geometry and screenshots, wait for fonts, pending animations and a settled
40
+ rendering frame. A zero running-animation count alone may precede final
41
+ presentation. Preserve real motion and strict geometry tolerances; distinguish
42
+ an entry frame from the final layout rather than accepting either as proof.
43
+
44
+ During local iteration run focused checks and show the result promptly. A shared
45
+ primitive correction also checks its consumers. At a consolidated Flood source
46
+ candidate run npm run verify and the required applicable browser matrix; use the
47
+ host's equivalent gates in a consuming app. Do not continually repeat a full
48
+ release gate for every reversible visual adjustment.
49
+
50
+ When hierarchy changes, apply the [hierarchy workflow](../flood-hierarchy/SKILL.md)
51
+ and compare actual title/group/label roles and corresponding control edges. A
52
+ zero-overflow or zero-inspector result alone does not establish those relations.
53
+
54
+ For record composition, apply the [records workflow](../flood-records/SKILL.md):
55
+ compare several varied rows, their copy width and scan positions, then review the
56
+ detail and empty/filter states. Passing an overflow check or presenting valid
57
+ metadata is not evidence that all those values belong at the same visual level.
58
+
59
+ ## Report a usable result
60
+
61
+ Use the [rendered review observer](../rendered-review.md) when local browser
62
+ tooling is available. Inspect findings and exceptions, then review hierarchy and
63
+ copy separately; no findings is not an editorial or visual-quality pass.
64
+ Review host JSX/CSS with inspectSourceUI from that entry too, then resolve the
65
+ actual owner at each candidate location. Include layout and cancel/confirmation
66
+ paths, not just fields. A native browser dialog can be absent from a DOM snapshot;
67
+ trigger its path. If a custom layout duplicates Grid, use the installed owner
68
+ instead of silencing a finding or declaring a missing capability without checking.
69
+
70
+ Keep a small coverage inventory outside the interface: route/view, visible state,
71
+ copy decision, geometry check and unverified limits. Review the initial/empty
72
+ surface before adding records, the populated surface, editor, preview and actual
73
+ error/recovery surfaces where present. Running the observer only in the editor
74
+ or an open popup leaves the other views unreviewed. Never extend a zero-findings
75
+ claim to states that were not inspected. Review optional empty-state descriptions
76
+ against the visible primary action too; they do not automatically need an
77
+ instruction restating that action.
78
+ For a newly composed screen, check two outcomes separately from build success:
79
+ the visible roles use the owners chosen from the installed catalog, and supporting
80
+ copy adds necessary information. Open the real date/selection popup to verify
81
+ that a native browser control was not mistaken for a Flood component. Inspect
82
+ mixed editable table rows, not only overflow. Report skipped applicable workflows
83
+ or unverified owner choices instead of treating a list of imports as proof.
84
+
85
+ For a failure preserve the source revision, affected state and actual trace or
86
+ measurement; distinguish library, host recipe, assertion and infrastructure causes.
87
+ Correct the responsible owner without weakening a meaningful assertion to get
88
+ green. Add regression coverage for demonstrated risks rather than mirroring CSS.
89
+ After exercising a failure, verify its exit paths as well as retry: explicitly
90
+ discard the affected draft, return to the list and open a saved record. Check that
91
+ record-scoped feedback ends with its operation while global unresolved failures
92
+ remain correctly represented. A screenshot of the error alone does not verify
93
+ its lifecycle; apply the feedback workflow.
94
+
95
+ State what ran, results, manual observations and remaining limits. A source scan,
96
+ agent instruction, screenshot or accessibility scanner cannot independently prove
97
+ all behavior or certify conformance. A local build does not prove registry
98
+ publication, website deployment or a host backend save. Keep installation upgrades
99
+ deliberate and preserve customized/linked destination protections.
@@ -0,0 +1,47 @@
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
+
28
+ ## Contextual adaptation
29
+
30
+ A bill-processing reference may group records by draft, approval and payment.
31
+ An invoice generator with local draft/ready/archive state can reuse the idea of
32
+ state-based navigation. It cannot truthfully adopt “For payment”, an approval
33
+ queue or an OCR promise without implementing those capabilities.
34
+
35
+ Choose the host's action vocabulary deliberately. In a Russian invoice editor,
36
+ “Скачать PDF” names an export and “Подготовить счёт” names a readiness action.
37
+ “Готово” is ambiguous when the same toolbar can save, export, approve or send.
38
+ In a simple selection dialog, “Готово” may be sufficient. Do not apply one label
39
+ universally or translate English word order mechanically.
40
+
41
+ ## A bounded review
42
+
43
+ For an interface-writing task, inspect the supplied surface and state the user's
44
+ task. Identify high-value decisions rather than reporting a count of deleted
45
+ words. Preserve one necessary constraint/error/consequence while removing nearby
46
+ filler. Check the affected action after editing. A smaller DOM or a green phrase
47
+ 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,97 @@
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
+ Observations include likely text glyphs used as button icons, unslotted SVGs,
45
+ passive cells offset from neighbouring input centres and complete cell blocks in
46
+ record/action rows, supporting copy echoing a visible action label, a copy inventory
47
+ and field/group rectangles. They are review findings with selectors/labels and
48
+ measured offsets, not proof of a defect in every context. Arithmetic labels or
49
+ custom artwork can be intentional; explain exceptions rather than deleting data
50
+ to obtain an empty report. maxElements bounds each selected category (default 500,
51
+ maximum 2000) and the total findings list; truncated means coverage is incomplete.
52
+
53
+ forms.track-drift compares stacked multi-column form grids with the same outer
54
+ frame. Different gutters or track counts need review against the grouping plan;
55
+ some different contexts can legitimately use different tracks. Tables and nested
56
+ ancestor/descendant grids are excluded. It is an observable geometry check, not
57
+ an automatic judgement of semantic hierarchy.
58
+
59
+ forms.content-track-drift compares actual Flood field-owner rectangles across
60
+ stacked grids in the same form, even when nested Surface padding makes their
61
+ outer Grid frames differ. It requires matching overall content edges and one
62
+ consistent field width per track. Tables, ancestor/descendant grids and ambiguous
63
+ spanning arrangements are excluded; this is selected coverage, not proof that
64
+ all form alignment is correct. Review the reported offset in context.
65
+
66
+ copy.unowned-support asks for review of supporting text outside a field, actual
67
+ operation state, navigation or structured document. This intentionally includes
68
+ free-standing implementation captions. Potential usefulness is not a reason to
69
+ keep one: name the user's current decision or recovery need. Actual storage errors
70
+ and deletion confirmations are different contexts from a static storage footer.
71
+ Contextual exceptions are possible. Never change font size, ARIA roles or wrapper
72
+ markup just to hide a finding; review the information itself.
73
+
74
+ table.word-fragment uses Intl.Segmenter and rendered text ranges to identify
75
+ words split across table lines. It is bounded by maxElements word segments,
76
+ skips words longer than 200 UTF-16 units, code/pre and cells explicitly marked
77
+ data-wrap="anywhere". If Intl.Segmenter is unavailable, that coverage is reported
78
+ as absent. Localized line-breaking conventions can justify an exception. Preserve
79
+ meaningful intrinsic column widths and use local scrolling before accepting
80
+ single-letter fragments in statuses or dates.
81
+
82
+ For icon actions use real artwork in IconSlot and an accessible name on the
83
+ action. Table now centres cells by default; use cellVerticalAlign="top" only for
84
+ a deliberate prose-table layout. Action-echo findings need contextual review:
85
+ a necessary instruction can legitimately repeat a button label.
86
+
87
+ An empty issues array does not pass the interface. Separately review necessary
88
+ copy using the interface-content workflow and coherent grouping using the forms
89
+ workflow. Inspect copy in screen order and field edges against common layout
90
+ tracks. Check populated, empty, error and changed-content states in task scope.
91
+ Record actual decisions and remaining limits; a successful screenshot capture
92
+ does not mean its contents were reviewed successfully.
93
+
94
+ layout.page-overflow reports document scroll width beyond the viewport during
95
+ a whole-document inspection. It does not run for a selected rootSelector or
96
+ report correctly contained local scrolling. Review the actual cause and task
97
+ 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 |