Imported from rishiashar/Personapilot (
AGENTS.md). Install upstream withnpx skills add rishiashar/Personapilot. Copyright stays with the author.
This is NOT the Next.js you know
This version has breaking changes — APIs, conventions, and file structure may all differ from your training data. Read the relevant guide in node_modules/next/dist/docs/ before writing any code. Heed deprecation notices.
BoardUI design rules
This project uses BoardUI (React + Tailwind CSS v4, source-owned components under components/). These rules always apply when writing UI code. MCP tools are on demand; these rules are not optional context.
Components first
- Before hand-building any UI element, check for an installed BoardUI component under
components/base/andcomponents/application/, and prefer it. - Missing a component? Install it (BoardUI MCP
install_components, ornpx boardui@latest add <name>) instead of writing a lookalike. - Import through the
@/alias, e.g.import { Button } from "@/components/base/buttons/button".
Color: semantic tokens only
- Never use raw palette classes (
text-gray-500,bg-white,border-neutral-200) or hex/oklch literals. Every color rides a BoardUI semantic token, which also makes dark mode automatic. - Text:
text-text-primary,text-text-secondary,text-text-tertiary,text-text-placeholder, errorstext-text-error-primary. - Surfaces:
bg-background-primary-default,bg-background-secondary-default/-hover,bg-background-tertiary-default, page groundbg-background-full. - Borders:
border-border-button-default/-hover, hairlinesborder-separator-border, tablesborder-border-table, errorsborder-border-error-default. - Icons:
text-foreground-icon-primarythroughtext-foreground-icon-quaternary. - Charts: the
chart-1…chart-5tokens (plus-activevariants). CTAs and selection states: theaccent-50…accent-950ramp. - Dark mode flips tokens via the
.darkclass on<html>. Do not writedark:overrides with raw colors; if a token pair looks wrong in dark mode, pick a different token, not a literal.
Typography: composite utilities only
- Use BoardUI's composite type utilities:
text-title-1-medium,text-title-2-medium,text-title-3-semibold,text-headline-medium,text-body-medium,text-body-regular,text-body-2-*,text-caption-1-semibold, and friends. Each sets size, weight, line-height, and letter-spacing together. - Never rebuild type by stacking
text-sm font-medium leading-5; if a style seems missing, look instyles/typography.cssbefore inventing one.
Spacing and shape
- Stay on Tailwind's spacing scale (
gap-2,p-4,mt-6); prefer flex/gridgapover per-child margins. Arbitrary values (p-[13px]) only when matching an existing BoardUI component exactly. - Cards and panels:
rounded-3xlwithborder-border-button-default. Inputs and menu rows:rounded-mdtorounded-xl. Pills:rounded-full.
Mechanics
- Merge classes with
cx()from@/utils/cx(tailwind-merge aware of BoardUI's composite text styles). No string concatenation, no plainclsx. - Icons come from
@remixicon/react, passed as component references (leadingIcon={RiAddLine}), not rendered elements. - Form components build on
react-aria-components; extend the installed BoardUI form components rather than raw<input>/<select>. - Focus states:
outline-none focus-visible:ring-2 focus-visible:ring-border-focus-ring.
When unsure about a token, a component's API, or working example code, ask the BoardUI MCP server: get_theme, get_component, get_usage_examples.