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:
switchfor toggle/on-off/slide UI,checkboxfor a normal checkbox,checkbox-groupfor multiple selections, andradioorradio-groupfor 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
createRegistrydoes not contain inline JSX for custom UI.- Custom UI is imported into registry from component files.
FluiKitprops do not contain inline async handlers.FluiKitFormprops do not contain inline async handlers.- Table row actions use VibeFlui
actions.rowand 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 thandata/total), the handler ordataPath/totalPathexplicitly 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: 200unless specifically explaining REST creation semantics. status: falsewith a400..499code 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