VVibeFlui

Review Checklist

Use this checklist after an AI generates or edits VibeFlui code.

File organization

  • Schema files are under <resource>.
  • Custom renderers are under Renderers.
  • Custom fields are under Fields.
  • Registry setup is under lib/vibeflui/registry.tsx.
  • Reusable demo data and handlers are under Examples.
  • Page files only wire providers, schemas, data, and handlers.

Schema safety

  • Root schema keys exist in FluiKitConfig.
  • Form keys exist in FluiKitFormConfig.
  • Field keys exist in FluiKitFieldConfig.
  • Boolean controls use official field types: switch for toggle/on-off/slide UI, checkbox for a normal checkbox, checkbox-group for multiple selections, and radio or radio-group for single selection.
  • Table keys exist in FluiKitTableConfig.
  • Action keys exist in FluiKitActionConfig.
  • Layout keys exist in FluiKitLayoutConfig.
  • Feedback keys exist in FluiKitFeedbackConfig.
  • Adapter and plugin claims are verified against the current package source.
  • Unverified features are not presented as available.

Runtime safety

  • createRegistry does not contain inline JSX for custom UI.
  • Custom UI is imported into registry from component files.
  • FluiKit props do not contain inline async handlers.
  • FluiKitForm props do not contain inline async handlers.
  • Table row actions use VibeFlui actions.row and registry handlers instead of manually recreated row action buttons.
  • Table custom filters use filter.type: "custom" and a registry component instead of field adapter syntax.
  • Action handlers return backend-style response objects.
  • When a real backend response uses different field names than status/code/message/data (or rows/count live under different keys than data/total), the handler or dataPath/totalPath explicitly maps to the backend's actual keys — it does not assume the backend already matches VibeFlui's contract.
  • Permission checks in UI are not described as backend authorization.

Example quality

  • Every code block has a file path label.
  • The file structure section matches the code blocks.
  • Sample email domains use .test.
  • Examples use code: 200 unless specifically explaining REST creation semantics.
  • status: false with a 400..499 code is described as warning feedback.

Prompt to fix generated output

TXT
Refactor this VibeFlui example into the official structure.

Move:
- schema into schemas/<resource>/<resource>.resource.schema.ts
- custom renderers into components/vibeflui/renderers/<resource>/
- custom fields into components/vibeflui/fields/
- registry into lib/vibeflui/registry.tsx
- reusable state/actions into lib/vibeflui/examples/
- page wiring into app/<resource>/page.tsx

Rules:
- no inline JSX in createRegistry
- no inline async functions in FluiKit or FluiKitForm props
- keep schema declarative
- use only current @vibeflui/core keys
- add a file path label before every code block