@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.
- package/DESIGN.md +26 -4
- package/README.md +40 -1
- package/SKILL.md +46 -4
- package/dist/catalog.json +7136 -0
- package/dist/materials/component-accordion.md +42 -0
- package/dist/materials/component-alert-dialog.md +46 -0
- package/dist/materials/component-alert.md +41 -0
- package/dist/materials/component-aspect-ratio.md +36 -0
- package/dist/materials/component-avatar-group.md +39 -0
- package/dist/materials/component-avatar.md +40 -0
- package/dist/materials/component-badge.md +37 -0
- package/dist/materials/component-blockquote.md +35 -0
- package/dist/materials/component-breadcrumb.md +36 -0
- package/dist/materials/component-button-group.md +39 -0
- package/dist/materials/component-button.md +43 -0
- package/dist/materials/component-calendar.md +59 -0
- package/dist/materials/component-card.md +46 -0
- package/dist/materials/component-center.md +39 -0
- package/dist/materials/component-character-count.md +42 -0
- package/dist/materials/component-check-card.md +39 -0
- package/dist/materials/component-checkbox-group.md +48 -0
- package/dist/materials/component-checkbox.md +37 -0
- package/dist/materials/component-code-snippet.md +37 -0
- package/dist/materials/component-collapsible.md +40 -0
- package/dist/materials/component-color-picker.md +49 -0
- package/dist/materials/component-color-swatch.md +35 -0
- package/dist/materials/component-combobox.md +50 -0
- package/dist/materials/component-command-list.md +48 -0
- package/dist/materials/component-container.md +36 -0
- package/dist/materials/component-context-menu.md +43 -0
- package/dist/materials/component-copy-button.md +42 -0
- package/dist/materials/component-data-list-item.md +40 -0
- package/dist/materials/component-data-list.md +38 -0
- package/dist/materials/component-data-table.md +58 -0
- package/dist/materials/component-date-field.md +57 -0
- package/dist/materials/component-date-picker.md +66 -0
- package/dist/materials/component-date-range-field.md +62 -0
- package/dist/materials/component-date-range-picker.md +72 -0
- package/dist/materials/component-date-time-picker.md +60 -0
- package/dist/materials/component-date-time-range-picker.md +66 -0
- package/dist/materials/component-description-list.md +42 -0
- package/dist/materials/component-dialog.md +45 -0
- package/dist/materials/component-divider.md +37 -0
- package/dist/materials/component-drawer.md +50 -0
- package/dist/materials/component-dropzone.md +45 -0
- package/dist/materials/component-editable.md +57 -0
- package/dist/materials/component-empty-state.md +41 -0
- package/dist/materials/component-error-summary.md +40 -0
- package/dist/materials/component-field.md +46 -0
- package/dist/materials/component-fieldset.md +46 -0
- package/dist/materials/component-figure.md +36 -0
- package/dist/materials/component-file-input.md +45 -0
- package/dist/materials/component-file-item.md +48 -0
- package/dist/materials/component-file-list.md +39 -0
- package/dist/materials/component-file-meta.md +36 -0
- package/dist/materials/component-flood-root.md +33 -0
- package/dist/materials/component-grid.md +38 -0
- package/dist/materials/component-heading.md +38 -0
- package/dist/materials/component-hover-card.md +48 -0
- package/dist/materials/component-icon-button.md +41 -0
- package/dist/materials/component-icon-slot.md +37 -0
- package/dist/materials/component-image-preview.md +50 -0
- package/dist/materials/component-image.md +37 -0
- package/dist/materials/component-inline-code.md +36 -0
- package/dist/materials/component-inline.md +39 -0
- package/dist/materials/component-input-group.md +43 -0
- package/dist/materials/component-input.md +39 -0
- package/dist/materials/component-kbd.md +34 -0
- package/dist/materials/component-label.md +37 -0
- package/dist/materials/component-link.md +35 -0
- package/dist/materials/component-list-box.md +57 -0
- package/dist/materials/component-list.md +40 -0
- package/dist/materials/component-menu.md +54 -0
- package/dist/materials/component-meter.md +43 -0
- package/dist/materials/component-metric.md +39 -0
- package/dist/materials/component-multi-select.md +52 -0
- package/dist/materials/component-navigation-list.md +38 -0
- package/dist/materials/component-navigation-tree.md +43 -0
- package/dist/materials/component-number-input.md +47 -0
- package/dist/materials/component-pagination.md +44 -0
- package/dist/materials/component-password-input.md +43 -0
- package/dist/materials/component-pin-input.md +45 -0
- package/dist/materials/component-popover.md +47 -0
- package/dist/materials/component-progress.md +42 -0
- package/dist/materials/component-radio-card.md +43 -0
- package/dist/materials/component-radio-group.md +49 -0
- package/dist/materials/component-radio.md +39 -0
- package/dist/materials/component-range-calendar.md +58 -0
- package/dist/materials/component-rating.md +46 -0
- package/dist/materials/component-resizable-panels.md +48 -0
- package/dist/materials/component-scroll-area.md +42 -0
- package/dist/materials/component-search-input.md +40 -0
- package/dist/materials/component-section.md +42 -0
- package/dist/materials/component-segmented-control.md +51 -0
- package/dist/materials/component-select.md +45 -0
- package/dist/materials/component-skeleton.md +42 -0
- package/dist/materials/component-skip-link.md +37 -0
- package/dist/materials/component-slider.md +51 -0
- package/dist/materials/component-spinner.md +37 -0
- package/dist/materials/component-split.md +40 -0
- package/dist/materials/component-stack.md +37 -0
- package/dist/materials/component-status-indicator.md +38 -0
- package/dist/materials/component-steps.md +40 -0
- package/dist/materials/component-surface.md +37 -0
- package/dist/materials/component-switch.md +35 -0
- package/dist/materials/component-table.md +46 -0
- package/dist/materials/component-tabs.md +43 -0
- package/dist/materials/component-tag-input.md +46 -0
- package/dist/materials/component-tag.md +40 -0
- package/dist/materials/component-text.md +39 -0
- package/dist/materials/component-textarea.md +38 -0
- package/dist/materials/component-time-field.md +56 -0
- package/dist/materials/component-time-picker.md +60 -0
- package/dist/materials/component-timeline.md +38 -0
- package/dist/materials/component-toast-region.md +42 -0
- package/dist/materials/component-toggle-group.md +44 -0
- package/dist/materials/component-toggle.md +39 -0
- package/dist/materials/component-toolbar.md +42 -0
- package/dist/materials/component-tooltip.md +40 -0
- package/dist/materials/component-tree-select.md +56 -0
- package/dist/materials/component-tree.md +52 -0
- package/dist/materials/component-upload-item.md +52 -0
- package/dist/materials/component-upload-list.md +40 -0
- package/dist/materials/component-visually-hidden.md +37 -0
- package/dist/materials/guide-agent-knowledge.md +88 -0
- package/dist/materials/guide-agents.md +96 -0
- package/dist/materials/guide-faq.md +84 -0
- package/dist/materials/guide-foundations.md +232 -0
- package/dist/materials/guide-installation.md +79 -0
- package/dist/materials/guide-interface-content.md +76 -0
- package/dist/materials/guide-introduction.md +40 -0
- package/dist/materials/guide-layout.md +193 -0
- package/dist/materials/guide-privacy.md +23 -0
- package/dist/materials/guide-project-ui.md +127 -0
- package/dist/materials/guide-skills.md +108 -0
- package/dist/materials/guide-theming.md +73 -0
- package/dist/materials/recipe-command-palette.md +66 -0
- package/dist/materials/recipe-filter-bar.md +59 -0
- package/dist/materials/recipe-form-submission.md +39 -0
- package/dist/materials/recipe-grouped-form.md +66 -0
- package/dist/materials/recipe-select-all.md +31 -0
- package/dist/materials/recipe-split-button.md +26 -0
- package/dist/materials/recipe-table-bulk-actions.md +88 -0
- package/dist/materials/recipe-workspace-review.md +134 -0
- package/dist/materials/token-sys.color.accent.content.json +41 -0
- package/dist/materials/token-sys.color.action.danger.content.json +42 -0
- package/dist/materials/token-sys.color.action.ghost.content.json +41 -0
- package/dist/materials/token-sys.color.action.ghost.disabled-content.json +41 -0
- package/dist/materials/token-sys.color.action.ghost.disabled.json +41 -0
- package/dist/materials/token-sys.color.action.ghost.hover.json +41 -0
- package/dist/materials/token-sys.color.action.ghost.pressed.json +41 -0
- package/dist/materials/token-sys.color.action.ghost.rest.json +41 -0
- package/dist/materials/token-sys.color.action.on-surface.content.json +39 -0
- package/dist/materials/token-sys.color.action.on-surface.disabled-content.json +39 -0
- package/dist/materials/token-sys.color.action.on-surface.disabled.json +39 -0
- package/dist/materials/token-sys.color.action.on-surface.hover.json +39 -0
- package/dist/materials/token-sys.color.action.on-surface.pressed.json +39 -0
- package/dist/materials/token-sys.color.action.on-surface.rest.json +39 -0
- package/dist/materials/token-sys.color.action.primary.content.json +39 -0
- package/dist/materials/token-sys.color.action.primary.disabled-content.json +39 -0
- package/dist/materials/token-sys.color.action.primary.disabled.json +39 -0
- package/dist/materials/token-sys.color.action.primary.hover.json +39 -0
- package/dist/materials/token-sys.color.action.primary.pressed.json +39 -0
- package/dist/materials/token-sys.color.action.primary.rest.json +39 -0
- package/dist/materials/token-sys.color.action.subtle.content.json +39 -0
- package/dist/materials/token-sys.color.action.subtle.disabled-content.json +39 -0
- package/dist/materials/token-sys.color.action.subtle.disabled.json +39 -0
- package/dist/materials/token-sys.color.action.subtle.hover.json +39 -0
- package/dist/materials/token-sys.color.action.subtle.pressed.json +39 -0
- package/dist/materials/token-sys.color.action.subtle.rest.json +39 -0
- package/dist/materials/token-sys.color.border.decorative.json +42 -0
- package/dist/materials/token-sys.color.border.default.json +39 -0
- package/dist/materials/token-sys.color.border.floating.json +39 -0
- package/dist/materials/token-sys.color.border.strong.json +39 -0
- package/dist/materials/token-sys.color.content.default.json +41 -0
- package/dist/materials/token-sys.color.content.helper.json +39 -0
- package/dist/materials/token-sys.color.content.subtle.json +43 -0
- package/dist/materials/token-sys.color.divider.decorative.json +41 -0
- package/dist/materials/token-sys.color.feedback.error.json +39 -0
- package/dist/materials/token-sys.color.feedback.info.json +39 -0
- package/dist/materials/token-sys.color.feedback.success.json +39 -0
- package/dist/materials/token-sys.color.feedback.warning.json +39 -0
- package/dist/materials/token-sys.color.field.background.json +39 -0
- package/dist/materials/token-sys.color.field.border.json +39 -0
- package/dist/materials/token-sys.color.field.boundary.json +39 -0
- package/dist/materials/token-sys.color.field.content.json +39 -0
- package/dist/materials/token-sys.color.field.disabled-content.json +39 -0
- package/dist/materials/token-sys.color.field.disabled.json +39 -0
- package/dist/materials/token-sys.color.field.placeholder.json +39 -0
- package/dist/materials/token-sys.color.focus.ring.json +39 -0
- package/dist/materials/token-sys.color.indicator.accent.json +39 -0
- package/dist/materials/token-sys.color.indicator.fill.json +39 -0
- package/dist/materials/token-sys.color.indicator.track.json +39 -0
- package/dist/materials/token-sys.color.loading.placeholder.json +42 -0
- package/dist/materials/token-sys.color.scrollbar.thumb-hover.json +39 -0
- package/dist/materials/token-sys.color.scrollbar.thumb.json +39 -0
- package/dist/materials/token-sys.color.selection.background.json +39 -0
- package/dist/materials/token-sys.color.selection.content.json +39 -0
- package/dist/materials/token-sys.color.selection.floating.json +39 -0
- package/dist/materials/token-sys.color.shadow.floating.json +39 -0
- package/dist/materials/token-sys.color.surface.canvas.json +39 -0
- package/dist/materials/token-sys.color.surface.default.json +39 -0
- package/dist/materials/token-sys.color.surface.floating-translucent.json +39 -0
- package/dist/materials/token-sys.color.surface.floating.json +39 -0
- package/dist/materials/token-sys.color.surface.overlay.json +39 -0
- package/dist/materials/token-sys.color.surface.raised.json +39 -0
- package/dist/materials/token-sys.control.2xl.gap.json +34 -0
- package/dist/materials/token-sys.control.2xl.height.json +34 -0
- package/dist/materials/token-sys.control.2xl.icon-size.json +34 -0
- package/dist/materials/token-sys.control.2xl.line-height.json +31 -0
- package/dist/materials/token-sys.control.2xl.padding-inline.json +34 -0
- package/dist/materials/token-sys.control.2xl.text-size.json +34 -0
- package/dist/materials/token-sys.control.2xs.gap.json +34 -0
- package/dist/materials/token-sys.control.2xs.height.json +34 -0
- package/dist/materials/token-sys.control.2xs.icon-size.json +34 -0
- package/dist/materials/token-sys.control.2xs.line-height.json +31 -0
- package/dist/materials/token-sys.control.2xs.padding-inline.json +34 -0
- package/dist/materials/token-sys.control.2xs.text-size.json +34 -0
- package/dist/materials/token-sys.control.lg.gap.json +34 -0
- package/dist/materials/token-sys.control.lg.height.json +34 -0
- package/dist/materials/token-sys.control.lg.icon-size.json +34 -0
- package/dist/materials/token-sys.control.lg.line-height.json +31 -0
- package/dist/materials/token-sys.control.lg.padding-inline.json +34 -0
- package/dist/materials/token-sys.control.lg.text-size.json +34 -0
- package/dist/materials/token-sys.control.md.gap.json +34 -0
- package/dist/materials/token-sys.control.md.height.json +34 -0
- package/dist/materials/token-sys.control.md.icon-size.json +34 -0
- package/dist/materials/token-sys.control.md.line-height.json +31 -0
- package/dist/materials/token-sys.control.md.padding-inline.json +34 -0
- package/dist/materials/token-sys.control.md.text-size.json +34 -0
- package/dist/materials/token-sys.control.sm.gap.json +34 -0
- package/dist/materials/token-sys.control.sm.height.json +34 -0
- package/dist/materials/token-sys.control.sm.icon-size.json +34 -0
- package/dist/materials/token-sys.control.sm.line-height.json +31 -0
- package/dist/materials/token-sys.control.sm.padding-inline.json +34 -0
- package/dist/materials/token-sys.control.sm.text-size.json +34 -0
- package/dist/materials/token-sys.control.xl.gap.json +34 -0
- package/dist/materials/token-sys.control.xl.height.json +34 -0
- package/dist/materials/token-sys.control.xl.icon-size.json +34 -0
- package/dist/materials/token-sys.control.xl.line-height.json +31 -0
- package/dist/materials/token-sys.control.xl.padding-inline.json +34 -0
- package/dist/materials/token-sys.control.xl.text-size.json +34 -0
- package/dist/materials/token-sys.control.xs.gap.json +34 -0
- package/dist/materials/token-sys.control.xs.height.json +34 -0
- package/dist/materials/token-sys.control.xs.icon-size.json +34 -0
- package/dist/materials/token-sys.control.xs.line-height.json +31 -0
- package/dist/materials/token-sys.control.xs.padding-inline.json +34 -0
- package/dist/materials/token-sys.control.xs.text-size.json +34 -0
- package/dist/materials/token-sys.effect.floating.blur.json +34 -0
- package/dist/materials/token-sys.effect.floating.saturation.json +31 -0
- package/dist/materials/token-sys.effect.floating.shadow-blur.json +34 -0
- package/dist/materials/token-sys.effect.floating.shadow-offset.json +34 -0
- package/dist/materials/token-sys.focus.offset.json +34 -0
- package/dist/materials/token-sys.focus.width.json +34 -0
- package/dist/materials/token-sys.font.mono.json +36 -0
- package/dist/materials/token-sys.font.sans.json +35 -0
- package/dist/materials/token-sys.layer.base.json +31 -0
- package/dist/materials/token-sys.layer.modal.json +31 -0
- package/dist/materials/token-sys.layer.popover.json +31 -0
- package/dist/materials/token-sys.layer.sticky.json +31 -0
- package/dist/materials/token-sys.layer.toast.json +31 -0
- package/dist/materials/token-sys.motion.duration-fast.json +34 -0
- package/dist/materials/token-sys.motion.duration-normal.json +34 -0
- package/dist/materials/token-sys.motion.duration-reduced.json +34 -0
- package/dist/materials/token-sys.motion.easing.json +36 -0
- package/dist/materials/token-sys.radius.action.json +34 -0
- package/dist/materials/token-sys.radius.block.json +34 -0
- package/dist/materials/token-sys.radius.field.json +34 -0
- package/dist/materials/token-sys.radius.indicator.json +34 -0
- package/dist/materials/token-sys.radius.surface.json +34 -0
- package/dist/materials/token-sys.scrollbar.inset.json +34 -0
- package/dist/materials/token-sys.scrollbar.min-thumb.json +34 -0
- package/dist/materials/token-sys.scrollbar.size.json +34 -0
- package/dist/materials/token-sys.size.choice.json +34 -0
- package/dist/materials/token-sys.size.container.lg.json +37 -0
- package/dist/materials/token-sys.size.container.md.json +37 -0
- package/dist/materials/token-sys.size.container.sm.json +37 -0
- package/dist/materials/token-sys.size.grid.min-item.json +37 -0
- package/dist/materials/token-sys.size.indicator.lg.json +34 -0
- package/dist/materials/token-sys.size.indicator.md.json +34 -0
- package/dist/materials/token-sys.size.indicator.sm.json +34 -0
- package/dist/materials/token-sys.size.keycap.lg.json +34 -0
- package/dist/materials/token-sys.size.keycap.md.json +34 -0
- package/dist/materials/token-sys.size.keycap.sm.json +34 -0
- package/dist/materials/token-sys.size.switch-height.json +34 -0
- package/dist/materials/token-sys.size.switch-thumb.json +34 -0
- package/dist/materials/token-sys.size.switch-width.json +34 -0
- package/dist/materials/token-sys.size.touch.json +34 -0
- package/dist/materials/token-sys.space.0.json +34 -0
- package/dist/materials/token-sys.space.1.json +34 -0
- package/dist/materials/token-sys.space.12.json +34 -0
- package/dist/materials/token-sys.space.2.json +34 -0
- package/dist/materials/token-sys.space.3.json +34 -0
- package/dist/materials/token-sys.space.4.json +34 -0
- package/dist/materials/token-sys.space.6.json +34 -0
- package/dist/materials/token-sys.space.8.json +34 -0
- package/dist/materials/token-sys.stroke.width.json +34 -0
- package/dist/materials/token-sys.type.body.line-height.json +31 -0
- package/dist/materials/token-sys.type.body.size.json +34 -0
- package/dist/materials/token-sys.type.body.tracking.json +34 -0
- package/dist/materials/token-sys.type.body.weight.json +31 -0
- package/dist/materials/token-sys.type.compact.line-height.json +31 -0
- package/dist/materials/token-sys.type.compact.size.json +34 -0
- package/dist/materials/token-sys.type.compact.tracking.json +34 -0
- package/dist/materials/token-sys.type.compact.weight.json +31 -0
- package/dist/materials/token-sys.type.control.line-height.json +31 -0
- package/dist/materials/token-sys.type.control.size.json +34 -0
- package/dist/materials/token-sys.type.control.tracking.json +34 -0
- package/dist/materials/token-sys.type.control.weight.json +31 -0
- package/dist/materials/token-sys.type.dialog-title.line-height.json +33 -0
- package/dist/materials/token-sys.type.dialog-title.size.json +36 -0
- package/dist/materials/token-sys.type.dialog-title.tracking.json +36 -0
- package/dist/materials/token-sys.type.dialog-title.weight.json +33 -0
- package/dist/materials/token-sys.type.display.line-height.json +31 -0
- package/dist/materials/token-sys.type.display.size.json +34 -0
- package/dist/materials/token-sys.type.display.tracking.json +34 -0
- package/dist/materials/token-sys.type.display.weight.json +31 -0
- package/dist/materials/token-sys.type.field-label.line-height.json +33 -0
- package/dist/materials/token-sys.type.field-label.size.json +36 -0
- package/dist/materials/token-sys.type.field-label.tracking.json +36 -0
- package/dist/materials/token-sys.type.field-label.weight.json +33 -0
- package/dist/materials/token-sys.type.group-title.line-height.json +33 -0
- package/dist/materials/token-sys.type.group-title.size.json +36 -0
- package/dist/materials/token-sys.type.group-title.tracking.json +36 -0
- package/dist/materials/token-sys.type.group-title.weight.json +33 -0
- package/dist/materials/token-sys.type.helper.line-height.json +31 -0
- package/dist/materials/token-sys.type.helper.size.json +34 -0
- package/dist/materials/token-sys.type.helper.tracking.json +34 -0
- package/dist/materials/token-sys.type.helper.weight.json +31 -0
- package/dist/materials/token-sys.type.label.line-height.json +31 -0
- package/dist/materials/token-sys.type.label.size.json +34 -0
- package/dist/materials/token-sys.type.label.tracking.json +34 -0
- package/dist/materials/token-sys.type.label.weight.json +31 -0
- package/dist/materials/token-sys.type.large.line-height.json +31 -0
- package/dist/materials/token-sys.type.large.size.json +34 -0
- package/dist/materials/token-sys.type.large.tracking.json +34 -0
- package/dist/materials/token-sys.type.large.weight.json +31 -0
- package/dist/materials/token-sys.type.lead.line-height.json +31 -0
- package/dist/materials/token-sys.type.lead.size.json +34 -0
- package/dist/materials/token-sys.type.lead.tracking.json +34 -0
- package/dist/materials/token-sys.type.lead.weight.json +31 -0
- package/dist/materials/token-sys.type.page.line-height.json +31 -0
- package/dist/materials/token-sys.type.page.size.json +34 -0
- package/dist/materials/token-sys.type.page.tracking.json +34 -0
- package/dist/materials/token-sys.type.page.weight.json +31 -0
- package/dist/materials/token-sys.type.section.line-height.json +31 -0
- package/dist/materials/token-sys.type.section.size.json +34 -0
- package/dist/materials/token-sys.type.section.tracking.json +34 -0
- package/dist/materials/token-sys.type.section.weight.json +31 -0
- package/knowledge.json +409 -0
- package/lib/index.d.ts +33 -0
- package/lib/index.mjs +144 -0
- package/lib/inspect.d.ts +12 -0
- package/lib/inspect.mjs +187 -0
- package/manifest.json +91 -1
- package/package.json +9 -1
- package/references/flood-accessibility/SKILL.md +40 -0
- package/references/flood-composition/SKILL.md +30 -0
- package/references/flood-data-display/SKILL.md +69 -0
- package/references/flood-feedback/SKILL.md +58 -0
- package/references/flood-forms/SKILL.md +94 -0
- package/references/flood-foundations/SKILL.md +44 -0
- package/references/flood-hierarchy/SKILL.md +87 -0
- package/references/flood-interface-content/SKILL.md +142 -0
- package/references/flood-navigation/SKILL.md +35 -0
- package/references/flood-overlays/SKILL.md +52 -0
- package/references/flood-records/SKILL.md +108 -0
- package/references/flood-spacing/SKILL.md +62 -0
- package/references/flood-verification/SKILL.md +99 -0
- package/references/interface-content-examples.md +47 -0
- package/references/knowledge.md +49 -0
- package/references/record-decisions.md +25 -0
- package/references/rendered-review.md +97 -0
- package/references/routing.md +1 -0
- package/rules.json +454 -2
- 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.
|
package/references/routing.md
CHANGED
|
@@ -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 |
|