@flood-md/agent 0.2.11 → 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.
- package/DESIGN.md +10 -1
- package/README.md +9 -4
- package/SKILL.md +16 -5
- package/dist/catalog.json +816 -232
- package/dist/materials/component-alert-dialog.md +1 -0
- package/dist/materials/component-app-shell.md +3 -1
- package/dist/materials/component-bar-chart.md +52 -0
- package/dist/materials/component-bar-list.md +41 -0
- package/dist/materials/component-box-plot.md +46 -0
- package/dist/materials/component-bullet-chart.md +43 -0
- package/dist/materials/component-code-snippet.md +3 -1
- package/dist/materials/component-collection-toolbar.md +4 -1
- package/dist/materials/component-command-palette.md +1 -0
- package/dist/materials/component-copy-button.md +2 -0
- package/dist/materials/component-data-table.md +21 -3
- package/dist/materials/component-dialog.md +2 -0
- package/dist/materials/component-donut-chart.md +46 -0
- package/dist/materials/component-drawer.md +2 -0
- package/dist/materials/component-dumbbell-chart.md +46 -0
- package/dist/materials/component-editable.md +4 -0
- package/dist/materials/component-heading.md +1 -1
- package/dist/materials/component-heatmap.md +45 -0
- package/dist/materials/component-histogram.md +46 -0
- package/dist/materials/component-image-preview.md +1 -0
- package/dist/materials/component-line-chart.md +50 -0
- package/dist/materials/component-menu.md +2 -0
- package/dist/materials/component-range-chart.md +46 -0
- package/dist/materials/component-scatter-chart.md +48 -0
- package/dist/materials/component-section.md +1 -1
- package/dist/materials/component-sheet.md +50 -0
- package/dist/materials/component-sparkline.md +41 -0
- package/dist/materials/component-table.md +3 -1
- package/dist/materials/component-toolbar.md +1 -0
- package/dist/materials/component-waterfall-chart.md +47 -0
- package/dist/materials/guide-agent-knowledge.md +5 -5
- package/dist/materials/guide-agents.md +35 -2
- package/dist/materials/guide-charts.md +34 -0
- package/dist/materials/guide-foundations.md +2 -2
- package/dist/materials/guide-installation.md +6 -6
- package/dist/materials/guide-introduction.md +2 -1
- package/dist/materials/guide-motion.md +19 -10
- package/dist/materials/guide-skills.md +10 -0
- package/dist/materials/recipe-collection-views.md +72 -47
- package/dist/materials/recipe-navigation-workspace.md +3 -0
- package/dist/materials/recipe-record-management.md +109 -61
- package/knowledge.json +16 -0
- package/lib/inspect.d.ts +14 -2
- package/lib/inspect.mjs +65 -0
- package/manifest.json +11 -1
- package/package.json +1 -1
- package/references/component-families.md +14 -0
- package/references/composition.md +12 -0
- package/references/flood-composition/SKILL.md +7 -0
- package/references/flood-data-display/SKILL.md +114 -0
- package/references/flood-feedback/SKILL.md +12 -0
- package/references/flood-forms/SKILL.md +5 -0
- package/references/flood-hierarchy/SKILL.md +4 -0
- package/references/flood-interface-content/SKILL.md +7 -0
- package/references/flood-motion/SKILL.md +3 -0
- package/references/flood-overlays/SKILL.md +11 -0
- package/references/flood-records/SKILL.md +32 -0
- package/references/flood-screen-composition/SKILL.md +48 -0
- package/references/flood-spacing/SKILL.md +7 -0
- package/references/flood-verification/SKILL.md +32 -0
- package/references/flood-visual-review/SKILL.md +59 -0
- package/references/rendered-review.md +49 -3
- package/references/routing.md +2 -1
- package/rules.json +37 -1
- package/workflows.json +22 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: flood-visual-review
|
|
3
|
+
description: Review rendered Flood UI with Playwright or equivalent browser tooling. Use for visual bugs, screenshot feedback, new or changed UI, and visual regressions across interaction states.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Review the UI in the browser
|
|
7
|
+
|
|
8
|
+
Open the actual route or component preview with representative data. For a
|
|
9
|
+
reported issue, reproduce its state with the user's viewport, input and browser
|
|
10
|
+
engine when relevant and available. For a new or changed UI, start with the user's
|
|
11
|
+
main task and exercise the affected states. A visual review request can produce
|
|
12
|
+
findings alone. When implementing a fix, repeat the same interaction after it.
|
|
13
|
+
|
|
14
|
+
## Capture and inspect
|
|
15
|
+
|
|
16
|
+
Use the project's Playwright setup or equivalent browser tooling. Reach states
|
|
17
|
+
with clicks, keyboard and scroll. Wait for fonts and the intended stable state
|
|
18
|
+
before a still capture. Keep motion enabled when investigating a jump or flicker;
|
|
19
|
+
use consecutive frames, video or a trace with screenshots. Confirm layout shifts
|
|
20
|
+
with measurements before and after the action when possible.
|
|
21
|
+
|
|
22
|
+
Save a screenshot of the changed region in its surrounding layout, then open the
|
|
23
|
+
image and inspect it at its intended size. Crop a detail if needed. For a fix,
|
|
24
|
+
capture before and after with the same data, viewport, scroll position and state
|
|
25
|
+
when the original is available. Keep the artifacts in the host's test output or
|
|
26
|
+
another ignored local directory and link the relevant evidence in the handoff.
|
|
27
|
+
|
|
28
|
+
| Surface | What to exercise and look for |
|
|
29
|
+
| --- | --- |
|
|
30
|
+
| Table or collection | Select and clear rows, apply a filter through to zero results, then open any affected row detail. Compare column tracks, clipping at rounded edges and whether the toolbar, scrollbar or selection actions shift the table. |
|
|
31
|
+
| Drawer, dialog or popup | Inspect the open state with real content, scroll to the last action and close it. Check the rhythm between title, description and body, internal clipping, overlay placement and visible keyboard focus. |
|
|
32
|
+
| Form or navigation | Walk the relevant keyboard path. Compare label/control gaps, peer text and icon axes, long labels and hierarchy. Exercise an affected error, expansion or selection. For failed submit, verify the message is readable during correction and check what receives focus. |
|
|
33
|
+
|
|
34
|
+
When a workspace changes height, use a browser with classic scrollbars enabled
|
|
35
|
+
and force overflow. Verify that the intended region scrolls. Compare its content
|
|
36
|
+
edges and `innerWidth - document.documentElement.clientWidth` before and after
|
|
37
|
+
filtering. A browser with hidden or overlay system rails can mask the gutter.
|
|
38
|
+
Use the [workspace scroll assertion](../rendered-review.md#require-workspace-scroll-in-browser-tests)
|
|
39
|
+
in both states so the browser test fails if the document takes over scrolling.
|
|
40
|
+
|
|
41
|
+
Check the affected scope at the normal viewport and at a supported narrow or
|
|
42
|
+
enlarged-text setting when space is part of the risk. Read the rendered copy as
|
|
43
|
+
part of the task. Look for duplicated labels, decorative status and instructions
|
|
44
|
+
that repeat what the surrounding UI already says. Use the existing [rendered
|
|
45
|
+
review observer](../rendered-review.md) for additional clues if available.
|
|
46
|
+
|
|
47
|
+
## Resolve and verify
|
|
48
|
+
|
|
49
|
+
For each material finding, record the route and state, the action to reproduce
|
|
50
|
+
it, the visible symptom, and a screenshot or measurement. Start with problems
|
|
51
|
+
that block the task, hide content or confuse the next action. If a bug repeats,
|
|
52
|
+
locate its shared owner using the [component family contract](../component-families.md)
|
|
53
|
+
and check another affected use after the fix.
|
|
54
|
+
|
|
55
|
+
Use browser assertions for stable invariants such as bounds, focus or scroll
|
|
56
|
+
position. A passing assertion still leaves visual hierarchy, copy and balance
|
|
57
|
+
to inspect. Report the states actually reviewed and any missing evidence. If the
|
|
58
|
+
target cannot run, or images cannot be inspected, say which visual checks remain
|
|
59
|
+
open and report the evidence you could obtain.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Review the rendered interface
|
|
2
2
|
|
|
3
|
-
The optional `@flood-md/agent/inspect` export provides
|
|
4
|
-
|
|
5
|
-
|
|
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.
|
package/references/routing.md
CHANGED
|
@@ -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?
|
|
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,6 +131,7 @@
|
|
|
131
131
|
"verify": [
|
|
132
132
|
"320px width",
|
|
133
133
|
"Root 24px and increased text spacing",
|
|
134
|
+
"The assertWorkspaceScroll browser test passes across populated and empty workspace states with classic scrollbars enabled",
|
|
134
135
|
"No glyph shrink or unintended page overflow"
|
|
135
136
|
]
|
|
136
137
|
},
|
|
@@ -300,6 +301,7 @@
|
|
|
300
301
|
"verify": [
|
|
301
302
|
"Inspect actual FormData and field ownership",
|
|
302
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",
|
|
303
305
|
"Defaults match representation; no defaultValue-as-update or invented save guarantee",
|
|
304
306
|
"Verify submitted free text versus selected IDs and reject options belonging to an older manual query."
|
|
305
307
|
]
|
|
@@ -418,6 +420,11 @@
|
|
|
418
420
|
"verify": [
|
|
419
421
|
"Caption, headers and named-value relationships preserved",
|
|
420
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",
|
|
425
|
+
"When users need column visibility, the table has one layout control in its tool row or existing view settings",
|
|
426
|
+
"If enabled, column resizing works by pointer and keyboard, pinned edges leave the middle reachable, and resetting layout preserves the query",
|
|
427
|
+
"Expanded detail remains associated with its parent record and preserves native table semantics",
|
|
421
428
|
"File metadata/status/progress reuse their existing primitives",
|
|
422
429
|
"Test one supplied server page without local slicing/sorting; declare and validate page/dataset selection scope."
|
|
423
430
|
]
|
|
@@ -544,6 +551,19 @@
|
|
|
544
551
|
"Failures, source/host ownership and remaining limits recorded"
|
|
545
552
|
]
|
|
546
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
|
+
},
|
|
547
567
|
{
|
|
548
568
|
"id": "knowledge.versioned",
|
|
549
569
|
"when": "Discovering or extending Flood knowledge",
|
|
@@ -626,6 +646,20 @@
|
|
|
626
646
|
"Competitor workflows, promises and marketing language are not transplanted without matching behavior"
|
|
627
647
|
]
|
|
628
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
|
+
},
|
|
629
663
|
{
|
|
630
664
|
"id": "layout.hierarchy",
|
|
631
665
|
"when": "Composing or reviewing task titles, group legends, named fields and shared form tracks",
|
|
@@ -672,7 +706,8 @@
|
|
|
672
706
|
"List, details, first-use and filtered empty states reviewed separately",
|
|
673
707
|
"A short mutually exclusive filter for one table uses a selection control; verify keyboard selection, surviving search/sort and focused control",
|
|
674
708
|
"Record edits preserve applied filters and list position; focus returns to the opener or a surviving list control",
|
|
675
|
-
"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"
|
|
676
711
|
]
|
|
677
712
|
},
|
|
678
713
|
{
|
|
@@ -716,6 +751,7 @@
|
|
|
716
751
|
"Closest siblings rendered at the same size, surface and root text scale",
|
|
717
752
|
"Shape, nested inset and content-box overflow budget checked together",
|
|
718
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",
|
|
719
755
|
"Another consumer checked after a shared primitive correction"
|
|
720
756
|
]
|
|
721
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
|
}
|