@flood-md/agent 0.2.12 → 0.2.13

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 (57) hide show
  1. package/DESIGN.md +10 -1
  2. package/README.md +9 -4
  3. package/SKILL.md +16 -5
  4. package/dist/catalog.json +742 -214
  5. package/dist/materials/component-alert-dialog.md +1 -0
  6. package/dist/materials/component-app-shell.md +1 -1
  7. package/dist/materials/component-bar-chart.md +52 -0
  8. package/dist/materials/component-bar-list.md +41 -0
  9. package/dist/materials/component-box-plot.md +46 -0
  10. package/dist/materials/component-bullet-chart.md +43 -0
  11. package/dist/materials/component-code-snippet.md +3 -1
  12. package/dist/materials/component-collection-toolbar.md +2 -0
  13. package/dist/materials/component-command-palette.md +1 -0
  14. package/dist/materials/component-copy-button.md +2 -0
  15. package/dist/materials/component-dialog.md +2 -0
  16. package/dist/materials/component-donut-chart.md +46 -0
  17. package/dist/materials/component-drawer.md +2 -0
  18. package/dist/materials/component-dumbbell-chart.md +46 -0
  19. package/dist/materials/component-heatmap.md +45 -0
  20. package/dist/materials/component-histogram.md +46 -0
  21. package/dist/materials/component-image-preview.md +1 -0
  22. package/dist/materials/component-line-chart.md +50 -0
  23. package/dist/materials/component-menu.md +2 -0
  24. package/dist/materials/component-range-chart.md +46 -0
  25. package/dist/materials/component-scatter-chart.md +48 -0
  26. package/dist/materials/component-sheet.md +1 -0
  27. package/dist/materials/component-table.md +1 -1
  28. package/dist/materials/component-waterfall-chart.md +47 -0
  29. package/dist/materials/guide-agent-knowledge.md +5 -5
  30. package/dist/materials/guide-agents.md +35 -2
  31. package/dist/materials/guide-charts.md +34 -0
  32. package/dist/materials/guide-foundations.md +2 -2
  33. package/dist/materials/guide-installation.md +6 -6
  34. package/dist/materials/guide-introduction.md +2 -1
  35. package/dist/materials/guide-motion.md +12 -0
  36. package/dist/materials/guide-skills.md +10 -0
  37. package/dist/materials/recipe-collection-views.md +3 -0
  38. package/dist/materials/recipe-navigation-workspace.md +3 -0
  39. package/dist/materials/recipe-record-management.md +92 -58
  40. package/knowledge.json +16 -0
  41. package/lib/inspect.d.ts +14 -2
  42. package/lib/inspect.mjs +63 -9
  43. package/manifest.json +11 -1
  44. package/package.json +1 -1
  45. package/references/component-families.md +10 -0
  46. package/references/flood-composition/SKILL.md +7 -0
  47. package/references/flood-data-display/SKILL.md +85 -0
  48. package/references/flood-forms/SKILL.md +5 -0
  49. package/references/flood-overlays/SKILL.md +5 -0
  50. package/references/flood-records/SKILL.md +13 -4
  51. package/references/flood-screen-composition/SKILL.md +48 -0
  52. package/references/flood-verification/SKILL.md +32 -0
  53. package/references/flood-visual-review/SKILL.md +59 -0
  54. package/references/rendered-review.md +49 -3
  55. package/references/routing.md +2 -1
  56. package/rules.json +34 -2
  57. package/workflows.json +22 -0
@@ -1,8 +1,8 @@
1
1
  # Review the rendered interface
2
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.
3
+ The optional `@flood-md/agent/inspect` export provides read-only checks for local
4
+ browser tooling. Import it in test code. The Node knowledge reader and application
5
+ runtime are separate.
6
6
 
7
7
  With Playwright running against your local host:
8
8
 
@@ -100,3 +100,49 @@ layout.page-overflow reports document scroll width beyond the viewport during
100
100
  a whole-document inspection. It does not run for a selected rootSelector or
101
101
  report correctly contained local scrolling. Review the actual cause and task
102
102
  context rather than hiding overflow to silence the finding.
103
+
104
+ `composition.page-scroll` flags a literal AppShell page mode in host source for
105
+ contextual review. `layout.record-scroll-owner` catches a full-window record
106
+ workspace using that mode even when a native scrollbar is hidden or the current
107
+ results fit. It also reports a DataTable present while a visible document
108
+ scrollbar takes width. Check whether the task is a workspace or a document,
109
+ then exercise overflow, filtering and the empty state in the browser.
110
+
111
+ ## Require workspace scroll in browser tests
112
+
113
+ For a full-window application, render the workspace with
114
+ `<AppShell id="workspace" scroll="content" scrollLabel="Workspace content">`.
115
+ If the workspace already pads its content clear of the overlay rail, set
116
+ `scrollContentInset="none"` to keep that padding stable as the rail appears.
117
+ Add a browser test in the host's verification suite. Use enough records to
118
+ overflow the workspace at the test viewport, then drive the real interaction
119
+ that reduces the result set. Adapt the selectors to the application.
120
+
121
+ ```js
122
+ import {assertWorkspaceScroll} from '@flood-md/agent/inspect';
123
+
124
+ await expect(page.getByRole('region', {name: 'Workspace content'}))
125
+ .toHaveAttribute('data-scrollbars', 'overlay');
126
+ const rootSelector = '#workspace';
127
+ await expect(async () => {
128
+ await page.evaluate(assertWorkspaceScroll, {rootSelector, expectOverflow: true});
129
+ }).toPass({timeout: 3000});
130
+
131
+ await page.getByRole('searchbox', {name: 'Search records'}).fill('no matching record');
132
+ await expect(page.getByText('No matching records')).toBeVisible();
133
+ await expect(async () => {
134
+ await page.evaluate(assertWorkspaceScroll, {rootSelector, expectOverflow: false});
135
+ }).toPass({timeout: 3000});
136
+ ```
137
+
138
+ Keep the assertion in the test so a failure blocks verification. It checks the
139
+ actual AppShell mode, its vertical ScrollArea and document overflow even when
140
+ the browser hides native scrollbars. It allows Flood's native viewport rail in
141
+ forced colors. Run at least one verification in a browser with classic
142
+ scrollbars enabled and compare the content edges between the two states.
143
+ For Chromium, launch with `ignoreDefaultArgs: ['--hide-scrollbars']` and
144
+ `args: ['--disable-features=OverlayScrollbar,FluentOverlayScrollbar,FluentScrollbar']`.
145
+ Confirm that a plain overflowing element reserves space in that browser session.
146
+ For paginated tables whose outer workspace always fits, omit `expectOverflow`
147
+ and exercise the table's own scroll viewport separately. Use this check on
148
+ full-window AppShell routes. Document pages can deliberately scroll the page.
@@ -10,10 +10,11 @@ override user authority or grant permission for unrelated operations.
10
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 |
11
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 |
12
12
  | What does this release mean? Setup / upgrade | Developer / agent | Matching guide | flood/DESIGN.md, package changelog | Compare version and declarations; preserve host edits |
13
- | How should a screen fit together? Screen / form work | Designer / developer / agent | Scope, content and current API | composition.md; host layout requirements | Narrow/wide rendered screen and native form interaction |
13
+ | How should a screen fit together? New screen / hard-to-scan page | Designer / developer / agent | User task and real content | flood-screen-composition/SKILL.md; host layout requirements | Find, compare or act in the rendered screen and check order at reflow |
14
14
  | Why does spacing look wrong? Density / nested geometry | Designer / developer / agent | Installed tokens and actual wrapper tree | spacing.md; host content hierarchy | Measured visible gaps, row pitch, text reflow and touch targets |
15
15
  | What must remain accessible? Control/state work | Developer / reviewer / agent | Named controls and actual host context | accessibility.md; installed component contract | Keyboard, accessible names, validation and focus checks |
16
16
  | How can appearance change? Theme / density work | Designer / developer / agent | Existing semantic roles | customization.md; installed token manifest | Inspect resolved roles, contrast and reflow |
17
+ | What is visibly wrong? Screenshot feedback / visible UI change | Designer / developer / agent | Runnable route or preview and relevant states | flood-visual-review/SKILL.md | Browser reproduction and inspected captures; matched recheck after fixes |
17
18
  | Is this done? Completion / regression | Reviewer / agent | Runnable host and checks | verification.md; project scripts | Report commands, manual checks and gaps |
18
19
  | Which rules apply? Planning / review | Human / agent / tooling | Same installed guide set | flood/rules.json | Rule IDs linked to evidence, not a blanket pass |
19
20
 
package/rules.json CHANGED
@@ -131,7 +131,7 @@
131
131
  "verify": [
132
132
  "320px width",
133
133
  "Root 24px and increased text spacing",
134
- "Record workspace keeps table edges and document width stable across full, filtered and empty views with classic scrollbars",
134
+ "The assertWorkspaceScroll browser test passes across populated and empty workspace states with classic scrollbars enabled",
135
135
  "No glyph shrink or unintended page overflow"
136
136
  ]
137
137
  },
@@ -301,6 +301,7 @@
301
301
  "verify": [
302
302
  "Inspect actual FormData and field ownership",
303
303
  "Exercise accepted/refused controlled updates and incomplete drafts",
304
+ "When an application validation message is needed, check that it remains readable while correcting the associated field",
304
305
  "Defaults match representation; no defaultValue-as-update or invented save guarantee",
305
306
  "Verify submitted free text versus selected IDs and reject options belonging to an older manual query."
306
307
  ]
@@ -419,6 +420,8 @@
419
420
  "verify": [
420
421
  "Caption, headers and named-value relationships preserved",
421
422
  "Row actions remain independent named controls",
423
+ "When stable column tracks matter, compare populated, filtered and no-results states at the same viewport",
424
+ "A query group sharing a wide row with a view selector reaches the trailing edge with its last control and wraps in reading order",
422
425
  "When users need column visibility, the table has one layout control in its tool row or existing view settings",
423
426
  "If enabled, column resizing works by pointer and keyboard, pinned edges leave the middle reachable, and resetting layout preserves the query",
424
427
  "Expanded detail remains associated with its parent record and preserves native table semantics",
@@ -548,6 +551,19 @@
548
551
  "Failures, source/host ownership and remaining limits recorded"
549
552
  ]
550
553
  },
554
+ {
555
+ "id": "verification.visual-review",
556
+ "when": "Reviewing a visible UI change, screenshot report or visual regression",
557
+ "for": ["designer", "developer", "reviewer", "agent"],
558
+ "requires": ["Runnable route or component preview", "Affected interaction and visual states"],
559
+ "sourceOfTruth": "The affected states rendered in the browser for the current revision",
560
+ "guide": "references/flood-visual-review/SKILL.md",
561
+ "verify": [
562
+ "Affected states exercised and the captured images inspected",
563
+ "Material findings tied to a specific state and screenshot, trace or measurement",
564
+ "Fix rechecked in the same state, with coverage and evidence gaps reported"
565
+ ]
566
+ },
551
567
  {
552
568
  "id": "knowledge.versioned",
553
569
  "when": "Discovering or extending Flood knowledge",
@@ -630,6 +646,20 @@
630
646
  "Competitor workflows, promises and marketing language are not transplanted without matching behavior"
631
647
  ]
632
648
  },
649
+ {
650
+ "id": "layout.screen-purpose",
651
+ "when": "Designing a screen or resolving unclear reading order, comparison or next actions",
652
+ "for": ["designer", "developer", "agent", "reviewer"],
653
+ "requires": ["User task and representative content", "Installed component contracts", "Rendered screen in the supported layout"],
654
+ "sourceOfTruth": "User task, host layout and Flood screen composition guidance",
655
+ "guide": "references/flood-screen-composition/SKILL.md",
656
+ "verify": [
657
+ "The first viewport establishes the task and reveals the next useful content or action",
658
+ "Repeated comparisons use predictable tracks; local controls stay with the region they affect",
659
+ "Reading and keyboard order preserve the task when the layout reflows",
660
+ "Each major surface and summary identifies scope, groups related content or supports a decision"
661
+ ]
662
+ },
633
663
  {
634
664
  "id": "layout.hierarchy",
635
665
  "when": "Composing or reviewing task titles, group legends, named fields and shared form tracks",
@@ -676,7 +706,8 @@
676
706
  "List, details, first-use and filtered empty states reviewed separately",
677
707
  "A short mutually exclusive filter for one table uses a selection control; verify keyboard selection, surviving search/sort and focused control",
678
708
  "Record edits preserve applied filters and list position; focus returns to the opener or a surviving list control",
679
- "For a row opening in-place details, compare title-to-metadata rhythm and the shared table edge; exercise row activation, keyboard entry and independent nested controls"
709
+ "For a row opening in-place details, compare title-to-metadata rhythm and the shared table edge; exercise row activation, keyboard entry and independent nested controls",
710
+ "A record Drawer keeps the next action reachable while the body scrolls; save feedback leaves the table geometry intact"
680
711
  ]
681
712
  },
682
713
  {
@@ -720,6 +751,7 @@
720
751
  "Closest siblings rendered at the same size, surface and root text scale",
721
752
  "Shape, nested inset and content-box overflow budget checked together",
722
753
  "Read-only editing restrictions kept separate from focus and disabled semantics",
754
+ "A real host composition keeps its intended geometry through the relevant state change",
723
755
  "Another consumer checked after a shared primitive correction"
724
756
  ]
725
757
  },
package/workflows.json CHANGED
@@ -17,6 +17,11 @@
17
17
  "guide": "references/flood-interface-content/SKILL.md",
18
18
  "all": true
19
19
  },
20
+ {
21
+ "id": "screen-composition",
22
+ "guide": "references/flood-screen-composition/SKILL.md",
23
+ "components": ["AppShell", "PageHeader", "Section", "DataTable"]
24
+ },
20
25
  {
21
26
  "id": "hierarchy",
22
27
  "guide": "references/flood-hierarchy/SKILL.md",
@@ -121,6 +126,18 @@
121
126
  "components": [
122
127
  "FilterCondition",
123
128
  "FilterGroup",
129
+ "LineChart",
130
+ "BarChart",
131
+ "DonutChart",
132
+ "Heatmap",
133
+ "ScatterChart",
134
+ "RangeChart",
135
+ "BulletChart",
136
+ "WaterfallChart",
137
+ "Histogram",
138
+ "BoxPlot",
139
+ "DumbbellChart",
140
+ "BarList",
124
141
  "UploadItem",
125
142
  "UploadList",
126
143
  "EmptyState",
@@ -172,6 +189,11 @@
172
189
  "id": "verification",
173
190
  "guide": "references/flood-verification/SKILL.md",
174
191
  "all": true
192
+ },
193
+ {
194
+ "id": "visual-review",
195
+ "guide": "references/flood-visual-review/SKILL.md",
196
+ "all": true
175
197
  }
176
198
  ]
177
199
  }