All Skills

Use when writing, editing, or creating components, pages, routes, forms, tables, modals, queries, hooks, loaders, or actions in packages/app-builder or packages/ui-design-system. Covers React patterns, TanStack Query/Form, Radix UI, virtual tables, MenuCommand, Tailwind color tokens, file organization, and TypeScript standards. Basic conventions (imports, styling, i18n, resource route middleware) are in .claude/rules/ — this skill provides the deep reference patterns and code examples.

M
$npx skills add checkmarble/marble-frontend --skill frontend-dev-guidelines

Frontend Development Guidelines

Deep reference guide for complex React patterns in the Marble monorepo. For basic conventions (imports, styling, routes, i18n), see .claude/rules/.

Core Conventions

Components

// Plain function declarations - NOT React.FC or FunctionComponent
// Named exports only - NO default exports
// Props via interface (or type)

interface CaseCardProps {
  caseData: Case;
  onSelect?: (id: string) => void;
  className?: string;
}

export function CaseCard({ caseData, onSelect, className }: CaseCardProps) {
  return (
    <div className={cn('rounded-lg border border-grey-border p-4', className)}>
      <h3 className="text-l font-semibold text-grey-primary">{caseData.name}</h3>
      <Button onClick={() => onSelect?.(caseData.id)}>Select</Button>
    </div>
  );
}

Query Hook (one file per query)

// queries/cases/get-case.ts
import { useQuery } from '@tanstack/react-query';
import { getRoute } from '@app-builder/utils/routes';

export function useGetCaseQuery(caseId: string) {
  return useQuery({
    queryKey: ['cases', 'get-case', caseId],
    queryFn: async () => {
      const response = await fetch(
        getRoute('/ressources/cases/:caseId', { caseId }),
      );
      return response.json() as Promise<CaseDetail>;
    },
    enabled: !!caseId,
  });
}

Topic Guides

Read these when working on specific areas:

TopicResourceWhen to read
Component patternscomponent-patterns.mdWriting/editing components
Data fetchingdata-fetching.mdQueries, mutations, loaders, actions
Routingrouting-guide.mdRoutes, breadcrumbs, navigation
Stylingstyling-guide.mdColor tokens, surface tokens, dark mode
Tables & selectstables-and-selects.mdVirtual tables, MenuCommand dropdowns
Forms & modalsforms-and-modals.mdTanStack Form, Modal, Panel
Common patternscommon-patterns.mdts-pattern, remeda, icons, toasts, dates
File organizationfile-organization.mdArchitecture layers, naming
TypeScripttypescript-standards.mdTypes, Zod v4, model adapters