From 65d98428315701b188431109543764e5e101a00f Mon Sep 17 00:00:00 2001 From: Jean-Luc Makiola Date: Sun, 15 Mar 2026 17:29:43 +0100 Subject: [PATCH] restart --- .agents/skills/shadcn/SKILL.md | 240 --- .agents/skills/shadcn/agents/openai.yml | 5 - .agents/skills/shadcn/assets/shadcn-small.png | Bin 1049 -> 0 bytes .agents/skills/shadcn/assets/shadcn.png | Bin 3852 -> 0 bytes .agents/skills/shadcn/cli.md | 255 --- .agents/skills/shadcn/customization.md | 202 --- .agents/skills/shadcn/evals/evals.json | 47 - .agents/skills/shadcn/mcp.md | 94 - .agents/skills/shadcn/rules/base-vs-radix.md | 306 ---- .agents/skills/shadcn/rules/composition.md | 195 --- .agents/skills/shadcn/rules/forms.md | 192 -- .agents/skills/shadcn/rules/icons.md | 101 -- .agents/skills/shadcn/rules/styling.md | 162 -- .mcp.json | 11 - .planning/PROJECT.md | 98 -- .planning/REQUIREMENTS.md | 165 -- .planning/ROADMAP.md | 158 -- .planning/STATE.md | 100 -- .planning/codebase/ARCHITECTURE.md | 172 -- .planning/codebase/CONCERNS.md | 182 -- .planning/codebase/CONVENTIONS.md | 266 --- .planning/codebase/INTEGRATIONS.md | 119 -- .planning/codebase/STACK.md | 130 -- .planning/codebase/STRUCTURE.md | 127 -- .planning/codebase/TESTING.md | 125 -- .planning/config.json | 14 - .../01-design-token-foundation/01-01-PLAN.md | 254 --- .../01-01-SUMMARY.md | 109 -- .../01-design-token-foundation/01-02-PLAN.md | 335 ---- .../01-02-SUMMARY.md | 148 -- .../01-design-token-foundation/01-CONTEXT.md | 99 -- .../01-design-token-foundation/01-RESEARCH.md | 650 ------- .../01-VALIDATION.md | 80 - .../01-VERIFICATION.md | 183 -- .../02-01-PLAN.md | 228 --- .../02-02-PLAN.md | 205 --- .../02-RESEARCH.md | 440 ----- .../02-VALIDATION.md | 86 - .../02-VERIFICATION.md | 126 -- ...layout-and-brand-identity-02-01-SUMMARY.md | 65 - ...layout-and-brand-identity-02-02-SUMMARY.md | 119 -- .../03-00-PLAN.md | 161 -- .../03-00-SUMMARY.md | 109 -- .../03-01-PLAN.md | 184 -- .../03-01-SUMMARY.md | 71 - .../03-02-PLAN.md | 222 --- .../03-02-SUMMARY.md | 108 -- .../03-03-PLAN.md | 262 --- .../03-03-SUMMARY.md | 85 - .../03-CONTEXT.md | 93 - .../03-RESEARCH.md | 537 ------ .../03-VALIDATION.md | 90 - .../03-VERIFICATION.md | 149 -- .../04-01-PLAN.md | 103 -- .../04-01-SUMMARY.md | 109 -- .../04-02-PLAN.md | 219 --- .../04-02-SUMMARY.md | 116 -- .../04-RESEARCH.md | 340 ---- .../04-VALIDATION.md | 78 - .../04-VERIFICATION.md | 134 -- .../05-01-PLAN.md | 204 --- .../05-01-SUMMARY.md | 136 -- .../05-02-PLAN.md | 261 --- .../05-02-SUMMARY.md | 110 -- .../05-CONTEXT.md | 115 -- .../05-VERIFICATION.md | 113 -- .../06-01-PLAN.md | 275 --- .../06-01-SUMMARY.md | 126 -- .../06-02-PLAN.md | 256 --- .../06-02-SUMMARY.md | 125 -- .../06-VERIFICATION.md | 126 -- .../phases/07-quick-add-library/07-01-PLAN.md | 217 --- .../07-quick-add-library/07-01-SUMMARY.md | 107 -- .../phases/07-quick-add-library/07-02-PLAN.md | 337 ---- .../07-quick-add-library/07-02-SUMMARY.md | 111 -- .../07-quick-add-library/07-VERIFICATION.md | 130 -- .planning/research/ARCHITECTURE.md | 410 ----- .planning/research/FEATURES.md | 156 -- .planning/research/PITFALLS.md | 280 --- .planning/research/STACK.md | 292 ---- .planning/research/SUMMARY.md | 190 -- CLAUDE.md | 68 - Dockerfile | 26 - PRD.md | 319 ---- backend/cmd/server/main.go | 101 -- backend/go.mod | 21 - backend/go.sum | 38 - backend/internal/api/handlers.go | 750 -------- backend/internal/api/router.go | 100 -- backend/internal/auth/auth.go | 109 -- backend/internal/db/db.go | 82 - backend/internal/db/queries.go | 729 -------- backend/internal/models/models.go | 134 -- backend/migrations/001_initial.sql | 70 - backend/migrations/002_templates.sql | 27 - backend/migrations/003_quick_add_library.sql | 11 - compose.yml | 37 - frontend/.agents/skills/shadcn/SKILL.md | 240 --- .../.agents/skills/shadcn/agents/openai.yml | 5 - .../skills/shadcn/assets/shadcn-small.png | Bin 1049 -> 0 bytes .../.agents/skills/shadcn/assets/shadcn.png | Bin 3852 -> 0 bytes frontend/.agents/skills/shadcn/cli.md | 255 --- .../.agents/skills/shadcn/customization.md | 202 --- .../.agents/skills/shadcn/evals/evals.json | 47 - frontend/.agents/skills/shadcn/mcp.md | 94 - .../skills/shadcn/rules/base-vs-radix.md | 306 ---- .../skills/shadcn/rules/composition.md | 195 --- frontend/.agents/skills/shadcn/rules/forms.md | 192 -- frontend/.agents/skills/shadcn/rules/icons.md | 101 -- .../.agents/skills/shadcn/rules/styling.md | 162 -- frontend/.claude/skills/shadcn | 1 - frontend/.gitignore | 24 - frontend/README.md | 73 - frontend/bun.lock | 1551 ----------------- frontend/components.json | 25 - frontend/eslint.config.js | 23 - frontend/index.html | 13 - frontend/package.json | 49 - frontend/skills-lock.json | 10 - frontend/src/App.tsx | 47 - frontend/src/components/AppLayout.test.tsx | 95 - frontend/src/components/AppLayout.tsx | 95 - frontend/src/components/AvailableBalance.tsx | 78 - frontend/src/components/BillsTracker.test.tsx | 54 - frontend/src/components/BillsTracker.tsx | 113 -- frontend/src/components/BudgetSetup.test.tsx | 61 - frontend/src/components/BudgetSetup.tsx | 61 - frontend/src/components/DebtTracker.tsx | 113 -- frontend/src/components/EmptyState.tsx | 21 - frontend/src/components/ExpenseBreakdown.tsx | 66 - frontend/src/components/FinancialOverview.tsx | 62 - .../src/components/InlineEditCell.test.tsx | 191 -- frontend/src/components/InlineEditCell.tsx | 73 - frontend/src/components/QuickAddPicker.tsx | 114 -- frontend/src/components/VariableExpenses.tsx | 146 -- frontend/src/components/ui/alert.tsx | 76 - frontend/src/components/ui/avatar.tsx | 110 -- frontend/src/components/ui/badge.tsx | 49 - frontend/src/components/ui/button.tsx | 67 - frontend/src/components/ui/card.tsx | 103 -- frontend/src/components/ui/chart.tsx | 354 ---- frontend/src/components/ui/dialog.tsx | 165 -- frontend/src/components/ui/dropdown-menu.tsx | 269 --- frontend/src/components/ui/input.tsx | 19 - frontend/src/components/ui/scroll-area.tsx | 53 - frontend/src/components/ui/select.tsx | 192 -- frontend/src/components/ui/separator.tsx | 28 - frontend/src/components/ui/sheet.tsx | 142 -- frontend/src/components/ui/sidebar.tsx | 702 -------- frontend/src/components/ui/skeleton.tsx | 13 - frontend/src/components/ui/spinner.tsx | 10 - frontend/src/components/ui/table.tsx | 114 -- frontend/src/components/ui/tabs.tsx | 88 - frontend/src/components/ui/tooltip.tsx | 57 - frontend/src/hooks/use-mobile.ts | 19 - frontend/src/hooks/useAuth.ts | 48 - frontend/src/hooks/useBudgets.ts | 35 - frontend/src/hooks/useQuickAdd.ts | 40 - frontend/src/hooks/useTemplate.ts | 97 -- frontend/src/i18n/de.json | 120 -- frontend/src/i18n/en.json | 120 -- frontend/src/i18n/index.ts | 18 - frontend/src/index.css | 137 -- frontend/src/lib/api.ts | 193 -- frontend/src/lib/format.test.ts | 46 - frontend/src/lib/format.ts | 10 - frontend/src/lib/palette.test.ts | 137 -- frontend/src/lib/palette.ts | 102 -- frontend/src/lib/utils.ts | 6 - frontend/src/main.tsx | 10 - frontend/src/pages/CategoriesPage.test.tsx | 48 - frontend/src/pages/CategoriesPage.tsx | 203 --- frontend/src/pages/DashboardPage.test.tsx | 64 - frontend/src/pages/DashboardPage.tsx | 144 -- frontend/src/pages/LoginPage.test.tsx | 65 - frontend/src/pages/LoginPage.tsx | 100 -- frontend/src/pages/QuickAddPage.tsx | 203 --- frontend/src/pages/RegisterPage.test.tsx | 33 - frontend/src/pages/RegisterPage.tsx | 103 -- frontend/src/pages/SettingsPage.tsx | 62 - frontend/src/pages/TemplatePage.tsx | 224 --- frontend/src/test-setup.ts | 1 - frontend/tsconfig.app.json | 32 - frontend/tsconfig.json | 13 - frontend/tsconfig.node.json | 26 - frontend/vite.config.ts | 26 - scripts/build.sh | 25 - 187 files changed, 26541 deletions(-) delete mode 100644 .agents/skills/shadcn/SKILL.md delete mode 100644 .agents/skills/shadcn/agents/openai.yml delete mode 100644 .agents/skills/shadcn/assets/shadcn-small.png delete mode 100644 .agents/skills/shadcn/assets/shadcn.png delete mode 100644 .agents/skills/shadcn/cli.md delete mode 100644 .agents/skills/shadcn/customization.md delete mode 100644 .agents/skills/shadcn/evals/evals.json delete mode 100644 .agents/skills/shadcn/mcp.md delete mode 100644 .agents/skills/shadcn/rules/base-vs-radix.md delete mode 100644 .agents/skills/shadcn/rules/composition.md delete mode 100644 .agents/skills/shadcn/rules/forms.md delete mode 100644 .agents/skills/shadcn/rules/icons.md delete mode 100644 .agents/skills/shadcn/rules/styling.md delete mode 100644 .mcp.json delete mode 100644 .planning/PROJECT.md delete mode 100644 .planning/REQUIREMENTS.md delete mode 100644 .planning/ROADMAP.md delete mode 100644 .planning/STATE.md delete mode 100644 .planning/codebase/ARCHITECTURE.md delete mode 100644 .planning/codebase/CONCERNS.md delete mode 100644 .planning/codebase/CONVENTIONS.md delete mode 100644 .planning/codebase/INTEGRATIONS.md delete mode 100644 .planning/codebase/STACK.md delete mode 100644 .planning/codebase/STRUCTURE.md delete mode 100644 .planning/codebase/TESTING.md delete mode 100644 .planning/config.json delete mode 100644 .planning/phases/01-design-token-foundation/01-01-PLAN.md delete mode 100644 .planning/phases/01-design-token-foundation/01-01-SUMMARY.md delete mode 100644 .planning/phases/01-design-token-foundation/01-02-PLAN.md delete mode 100644 .planning/phases/01-design-token-foundation/01-02-SUMMARY.md delete mode 100644 .planning/phases/01-design-token-foundation/01-CONTEXT.md delete mode 100644 .planning/phases/01-design-token-foundation/01-RESEARCH.md delete mode 100644 .planning/phases/01-design-token-foundation/01-VALIDATION.md delete mode 100644 .planning/phases/01-design-token-foundation/01-VERIFICATION.md delete mode 100644 .planning/phases/02-layout-and-brand-identity/02-01-PLAN.md delete mode 100644 .planning/phases/02-layout-and-brand-identity/02-02-PLAN.md delete mode 100644 .planning/phases/02-layout-and-brand-identity/02-RESEARCH.md delete mode 100644 .planning/phases/02-layout-and-brand-identity/02-VALIDATION.md delete mode 100644 .planning/phases/02-layout-and-brand-identity/02-VERIFICATION.md delete mode 100644 .planning/phases/02-layout-and-brand-identity/02-layout-and-brand-identity-02-01-SUMMARY.md delete mode 100644 .planning/phases/02-layout-and-brand-identity/02-layout-and-brand-identity-02-02-SUMMARY.md delete mode 100644 .planning/phases/03-interaction-quality-and-completeness/03-00-PLAN.md delete mode 100644 .planning/phases/03-interaction-quality-and-completeness/03-00-SUMMARY.md delete mode 100644 .planning/phases/03-interaction-quality-and-completeness/03-01-PLAN.md delete mode 100644 .planning/phases/03-interaction-quality-and-completeness/03-01-SUMMARY.md delete mode 100644 .planning/phases/03-interaction-quality-and-completeness/03-02-PLAN.md delete mode 100644 .planning/phases/03-interaction-quality-and-completeness/03-02-SUMMARY.md delete mode 100644 .planning/phases/03-interaction-quality-and-completeness/03-03-PLAN.md delete mode 100644 .planning/phases/03-interaction-quality-and-completeness/03-03-SUMMARY.md delete mode 100644 .planning/phases/03-interaction-quality-and-completeness/03-CONTEXT.md delete mode 100644 .planning/phases/03-interaction-quality-and-completeness/03-RESEARCH.md delete mode 100644 .planning/phases/03-interaction-quality-and-completeness/03-VALIDATION.md delete mode 100644 .planning/phases/03-interaction-quality-and-completeness/03-VERIFICATION.md delete mode 100644 .planning/phases/04-chart-polish-and-bug-fixes/04-01-PLAN.md delete mode 100644 .planning/phases/04-chart-polish-and-bug-fixes/04-01-SUMMARY.md delete mode 100644 .planning/phases/04-chart-polish-and-bug-fixes/04-02-PLAN.md delete mode 100644 .planning/phases/04-chart-polish-and-bug-fixes/04-02-SUMMARY.md delete mode 100644 .planning/phases/04-chart-polish-and-bug-fixes/04-RESEARCH.md delete mode 100644 .planning/phases/04-chart-polish-and-bug-fixes/04-VALIDATION.md delete mode 100644 .planning/phases/04-chart-polish-and-bug-fixes/04-VERIFICATION.md delete mode 100644 .planning/phases/05-template-data-model-and-api/05-01-PLAN.md delete mode 100644 .planning/phases/05-template-data-model-and-api/05-01-SUMMARY.md delete mode 100644 .planning/phases/05-template-data-model-and-api/05-02-PLAN.md delete mode 100644 .planning/phases/05-template-data-model-and-api/05-02-SUMMARY.md delete mode 100644 .planning/phases/05-template-data-model-and-api/05-CONTEXT.md delete mode 100644 .planning/phases/05-template-data-model-and-api/05-VERIFICATION.md delete mode 100644 .planning/phases/06-template-frontend-and-workflow-replacement/06-01-PLAN.md delete mode 100644 .planning/phases/06-template-frontend-and-workflow-replacement/06-01-SUMMARY.md delete mode 100644 .planning/phases/06-template-frontend-and-workflow-replacement/06-02-PLAN.md delete mode 100644 .planning/phases/06-template-frontend-and-workflow-replacement/06-02-SUMMARY.md delete mode 100644 .planning/phases/06-template-frontend-and-workflow-replacement/06-VERIFICATION.md delete mode 100644 .planning/phases/07-quick-add-library/07-01-PLAN.md delete mode 100644 .planning/phases/07-quick-add-library/07-01-SUMMARY.md delete mode 100644 .planning/phases/07-quick-add-library/07-02-PLAN.md delete mode 100644 .planning/phases/07-quick-add-library/07-02-SUMMARY.md delete mode 100644 .planning/phases/07-quick-add-library/07-VERIFICATION.md delete mode 100644 .planning/research/ARCHITECTURE.md delete mode 100644 .planning/research/FEATURES.md delete mode 100644 .planning/research/PITFALLS.md delete mode 100644 .planning/research/STACK.md delete mode 100644 .planning/research/SUMMARY.md delete mode 100644 CLAUDE.md delete mode 100644 Dockerfile delete mode 100644 PRD.md delete mode 100644 backend/cmd/server/main.go delete mode 100644 backend/go.mod delete mode 100644 backend/go.sum delete mode 100644 backend/internal/api/handlers.go delete mode 100644 backend/internal/api/router.go delete mode 100644 backend/internal/auth/auth.go delete mode 100644 backend/internal/db/db.go delete mode 100644 backend/internal/db/queries.go delete mode 100644 backend/internal/models/models.go delete mode 100644 backend/migrations/001_initial.sql delete mode 100644 backend/migrations/002_templates.sql delete mode 100644 backend/migrations/003_quick_add_library.sql delete mode 100644 compose.yml delete mode 100644 frontend/.agents/skills/shadcn/SKILL.md delete mode 100644 frontend/.agents/skills/shadcn/agents/openai.yml delete mode 100644 frontend/.agents/skills/shadcn/assets/shadcn-small.png delete mode 100644 frontend/.agents/skills/shadcn/assets/shadcn.png delete mode 100644 frontend/.agents/skills/shadcn/cli.md delete mode 100644 frontend/.agents/skills/shadcn/customization.md delete mode 100644 frontend/.agents/skills/shadcn/evals/evals.json delete mode 100644 frontend/.agents/skills/shadcn/mcp.md delete mode 100644 frontend/.agents/skills/shadcn/rules/base-vs-radix.md delete mode 100644 frontend/.agents/skills/shadcn/rules/composition.md delete mode 100644 frontend/.agents/skills/shadcn/rules/forms.md delete mode 100644 frontend/.agents/skills/shadcn/rules/icons.md delete mode 100644 frontend/.agents/skills/shadcn/rules/styling.md delete mode 120000 frontend/.claude/skills/shadcn delete mode 100644 frontend/.gitignore delete mode 100644 frontend/README.md delete mode 100644 frontend/bun.lock delete mode 100644 frontend/components.json delete mode 100644 frontend/eslint.config.js delete mode 100644 frontend/index.html delete mode 100644 frontend/package.json delete mode 100644 frontend/skills-lock.json delete mode 100644 frontend/src/App.tsx delete mode 100644 frontend/src/components/AppLayout.test.tsx delete mode 100644 frontend/src/components/AppLayout.tsx delete mode 100644 frontend/src/components/AvailableBalance.tsx delete mode 100644 frontend/src/components/BillsTracker.test.tsx delete mode 100644 frontend/src/components/BillsTracker.tsx delete mode 100644 frontend/src/components/BudgetSetup.test.tsx delete mode 100644 frontend/src/components/BudgetSetup.tsx delete mode 100644 frontend/src/components/DebtTracker.tsx delete mode 100644 frontend/src/components/EmptyState.tsx delete mode 100644 frontend/src/components/ExpenseBreakdown.tsx delete mode 100644 frontend/src/components/FinancialOverview.tsx delete mode 100644 frontend/src/components/InlineEditCell.test.tsx delete mode 100644 frontend/src/components/InlineEditCell.tsx delete mode 100644 frontend/src/components/QuickAddPicker.tsx delete mode 100644 frontend/src/components/VariableExpenses.tsx delete mode 100644 frontend/src/components/ui/alert.tsx delete mode 100644 frontend/src/components/ui/avatar.tsx delete mode 100644 frontend/src/components/ui/badge.tsx delete mode 100644 frontend/src/components/ui/button.tsx delete mode 100644 frontend/src/components/ui/card.tsx delete mode 100644 frontend/src/components/ui/chart.tsx delete mode 100644 frontend/src/components/ui/dialog.tsx delete mode 100644 frontend/src/components/ui/dropdown-menu.tsx delete mode 100644 frontend/src/components/ui/input.tsx delete mode 100644 frontend/src/components/ui/scroll-area.tsx delete mode 100644 frontend/src/components/ui/select.tsx delete mode 100644 frontend/src/components/ui/separator.tsx delete mode 100644 frontend/src/components/ui/sheet.tsx delete mode 100644 frontend/src/components/ui/sidebar.tsx delete mode 100644 frontend/src/components/ui/skeleton.tsx delete mode 100644 frontend/src/components/ui/spinner.tsx delete mode 100644 frontend/src/components/ui/table.tsx delete mode 100644 frontend/src/components/ui/tabs.tsx delete mode 100644 frontend/src/components/ui/tooltip.tsx delete mode 100644 frontend/src/hooks/use-mobile.ts delete mode 100644 frontend/src/hooks/useAuth.ts delete mode 100644 frontend/src/hooks/useBudgets.ts delete mode 100644 frontend/src/hooks/useQuickAdd.ts delete mode 100644 frontend/src/hooks/useTemplate.ts delete mode 100644 frontend/src/i18n/de.json delete mode 100644 frontend/src/i18n/en.json delete mode 100644 frontend/src/i18n/index.ts delete mode 100644 frontend/src/index.css delete mode 100644 frontend/src/lib/api.ts delete mode 100644 frontend/src/lib/format.test.ts delete mode 100644 frontend/src/lib/format.ts delete mode 100644 frontend/src/lib/palette.test.ts delete mode 100644 frontend/src/lib/palette.ts delete mode 100644 frontend/src/lib/utils.ts delete mode 100644 frontend/src/main.tsx delete mode 100644 frontend/src/pages/CategoriesPage.test.tsx delete mode 100644 frontend/src/pages/CategoriesPage.tsx delete mode 100644 frontend/src/pages/DashboardPage.test.tsx delete mode 100644 frontend/src/pages/DashboardPage.tsx delete mode 100644 frontend/src/pages/LoginPage.test.tsx delete mode 100644 frontend/src/pages/LoginPage.tsx delete mode 100644 frontend/src/pages/QuickAddPage.tsx delete mode 100644 frontend/src/pages/RegisterPage.test.tsx delete mode 100644 frontend/src/pages/RegisterPage.tsx delete mode 100644 frontend/src/pages/SettingsPage.tsx delete mode 100644 frontend/src/pages/TemplatePage.tsx delete mode 100644 frontend/src/test-setup.ts delete mode 100644 frontend/tsconfig.app.json delete mode 100644 frontend/tsconfig.json delete mode 100644 frontend/tsconfig.node.json delete mode 100644 frontend/vite.config.ts delete mode 100755 scripts/build.sh diff --git a/.agents/skills/shadcn/SKILL.md b/.agents/skills/shadcn/SKILL.md deleted file mode 100644 index 022142a..0000000 --- a/.agents/skills/shadcn/SKILL.md +++ /dev/null @@ -1,240 +0,0 @@ ---- -name: shadcn -description: Manages shadcn components and projects — adding, searching, fixing, debugging, styling, and composing UI. Provides project context, component docs, and usage examples. Applies when working with shadcn/ui, component registries, presets, --preset codes, or any project with a components.json file. Also triggers for "shadcn init", "create an app with --preset", or "switch to --preset". -user-invocable: false ---- - -# shadcn/ui - -A framework for building ui, components and design systems. Components are added as source code to the user's project via the CLI. - -> **IMPORTANT:** Run all CLI commands using the project's package runner: `npx shadcn@latest`, `pnpm dlx shadcn@latest`, or `bunx --bun shadcn@latest` — based on the project's `packageManager`. Examples below use `npx shadcn@latest` but substitute the correct runner for the project. - -## Current Project Context - -```json -!`npx shadcn@latest info --json 2>/dev/null || echo '{"error": "No shadcn project found. Run shadcn init first."}'` -``` - -The JSON above contains the project config and installed components. Use `npx shadcn@latest docs ` to get documentation and example URLs for any component. - -## Principles - -1. **Use existing components first.** Use `npx shadcn@latest search` to check registries before writing custom UI. Check community registries too. -2. **Compose, don't reinvent.** Settings page = Tabs + Card + form controls. Dashboard = Sidebar + Card + Chart + Table. -3. **Use built-in variants before custom styles.** `variant="outline"`, `size="sm"`, etc. -4. **Use semantic colors.** `bg-primary`, `text-muted-foreground` — never raw values like `bg-blue-500`. - -## Critical Rules - -These rules are **always enforced**. Each links to a file with Incorrect/Correct code pairs. - -### Styling & Tailwind → [styling.md](./rules/styling.md) - -- **`className` for layout, not styling.** Never override component colors or typography. -- **No `space-x-*` or `space-y-*`.** Use `flex` with `gap-*`. For vertical stacks, `flex flex-col gap-*`. -- **Use `size-*` when width and height are equal.** `size-10` not `w-10 h-10`. -- **Use `truncate` shorthand.** Not `overflow-hidden text-ellipsis whitespace-nowrap`. -- **No manual `dark:` color overrides.** Use semantic tokens (`bg-background`, `text-muted-foreground`). -- **Use `cn()` for conditional classes.** Don't write manual template literal ternaries. -- **No manual `z-index` on overlay components.** Dialog, Sheet, Popover, etc. handle their own stacking. - -### Forms & Inputs → [forms.md](./rules/forms.md) - -- **Forms use `FieldGroup` + `Field`.** Never use raw `div` with `space-y-*` or `grid gap-*` for form layout. -- **`InputGroup` uses `InputGroupInput`/`InputGroupTextarea`.** Never raw `Input`/`Textarea` inside `InputGroup`. -- **Buttons inside inputs use `InputGroup` + `InputGroupAddon`.** -- **Option sets (2–7 choices) use `ToggleGroup`.** Don't loop `Button` with manual active state. -- **`FieldSet` + `FieldLegend` for grouping related checkboxes/radios.** Don't use a `div` with a heading. -- **Field validation uses `data-invalid` + `aria-invalid`.** `data-invalid` on `Field`, `aria-invalid` on the control. For disabled: `data-disabled` on `Field`, `disabled` on the control. - -### Component Structure → [composition.md](./rules/composition.md) - -- **Items always inside their Group.** `SelectItem` → `SelectGroup`. `DropdownMenuItem` → `DropdownMenuGroup`. `CommandItem` → `CommandGroup`. -- **Use `asChild` (radix) or `render` (base) for custom triggers.** Check `base` field from `npx shadcn@latest info`. → [base-vs-radix.md](./rules/base-vs-radix.md) -- **Dialog, Sheet, and Drawer always need a Title.** `DialogTitle`, `SheetTitle`, `DrawerTitle` required for accessibility. Use `className="sr-only"` if visually hidden. -- **Use full Card composition.** `CardHeader`/`CardTitle`/`CardDescription`/`CardContent`/`CardFooter`. Don't dump everything in `CardContent`. -- **Button has no `isPending`/`isLoading`.** Compose with `Spinner` + `data-icon` + `disabled`. -- **`TabsTrigger` must be inside `TabsList`.** Never render triggers directly in `Tabs`. -- **`Avatar` always needs `AvatarFallback`.** For when the image fails to load. - -### Use Components, Not Custom Markup → [composition.md](./rules/composition.md) - -- **Use existing components before custom markup.** Check if a component exists before writing a styled `div`. -- **Callouts use `Alert`.** Don't build custom styled divs. -- **Empty states use `Empty`.** Don't build custom empty state markup. -- **Toast via `sonner`.** Use `toast()` from `sonner`. -- **Use `Separator`** instead of `
` or `
`. -- **Use `Skeleton`** for loading placeholders. No custom `animate-pulse` divs. -- **Use `Badge`** instead of custom styled spans. - -### Icons → [icons.md](./rules/icons.md) - -- **Icons in `Button` use `data-icon`.** `data-icon="inline-start"` or `data-icon="inline-end"` on the icon. -- **No sizing classes on icons inside components.** Components handle icon sizing via CSS. No `size-4` or `w-4 h-4`. -- **Pass icons as objects, not string keys.** `icon={CheckIcon}`, not a string lookup. - -### CLI - -- **Never decode or fetch preset codes manually.** Pass them directly to `npx shadcn@latest init --preset `. - -## Key Patterns - -These are the most common patterns that differentiate correct shadcn/ui code. For edge cases, see the linked rule files above. - -```tsx -// Form layout: FieldGroup + Field, not div + Label. - - - Email - - - - -// Validation: data-invalid on Field, aria-invalid on the control. - - Email - - Invalid email. - - -// Icons in buttons: data-icon, no sizing classes. - - -// Spacing: gap-*, not space-y-*. -
// correct -
// wrong - -// Equal dimensions: size-*, not w-* h-*. - // correct - // wrong - -// Status colors: Badge variants or semantic tokens, not raw colors. -+20.1% // correct -+20.1% // wrong -``` - -## Component Selection - -| Need | Use | -| -------------------------- | --------------------------------------------------------------------------------------------------- | -| Button/action | `Button` with appropriate variant | -| Form inputs | `Input`, `Select`, `Combobox`, `Switch`, `Checkbox`, `RadioGroup`, `Textarea`, `InputOTP`, `Slider` | -| Toggle between 2–5 options | `ToggleGroup` + `ToggleGroupItem` | -| Data display | `Table`, `Card`, `Badge`, `Avatar` | -| Navigation | `Sidebar`, `NavigationMenu`, `Breadcrumb`, `Tabs`, `Pagination` | -| Overlays | `Dialog` (modal), `Sheet` (side panel), `Drawer` (bottom sheet), `AlertDialog` (confirmation) | -| Feedback | `sonner` (toast), `Alert`, `Progress`, `Skeleton`, `Spinner` | -| Command palette | `Command` inside `Dialog` | -| Charts | `Chart` (wraps Recharts) | -| Layout | `Card`, `Separator`, `Resizable`, `ScrollArea`, `Accordion`, `Collapsible` | -| Empty states | `Empty` | -| Menus | `DropdownMenu`, `ContextMenu`, `Menubar` | -| Tooltips/info | `Tooltip`, `HoverCard`, `Popover` | - -## Key Fields - -The injected project context contains these key fields: - -- **`aliases`** → use the actual alias prefix for imports (e.g. `@/`, `~/`), never hardcode. -- **`isRSC`** → when `true`, components using `useState`, `useEffect`, event handlers, or browser APIs need `"use client"` at the top of the file. Always reference this field when advising on the directive. -- **`tailwindVersion`** → `"v4"` uses `@theme inline` blocks; `"v3"` uses `tailwind.config.js`. -- **`tailwindCssFile`** → the global CSS file where custom CSS variables are defined. Always edit this file, never create a new one. -- **`style`** → component visual treatment (e.g. `nova`, `vega`). -- **`base`** → primitive library (`radix` or `base`). Affects component APIs and available props. -- **`iconLibrary`** → determines icon imports. Use `lucide-react` for `lucide`, `@tabler/icons-react` for `tabler`, etc. Never assume `lucide-react`. -- **`resolvedPaths`** → exact file-system destinations for components, utils, hooks, etc. -- **`framework`** → routing and file conventions (e.g. Next.js App Router vs Vite SPA). -- **`packageManager`** → use this for any non-shadcn dependency installs (e.g. `pnpm add date-fns` vs `npm install date-fns`). - -See [cli.md — `info` command](./cli.md) for the full field reference. - -## Component Docs, Examples, and Usage - -Run `npx shadcn@latest docs ` to get the URLs for a component's documentation, examples, and API reference. Fetch these URLs to get the actual content. - -```bash -npx shadcn@latest docs button dialog select -``` - -**When creating, fixing, debugging, or using a component, always run `npx shadcn@latest docs` and fetch the URLs first.** This ensures you're working with the correct API and usage patterns rather than guessing. - -## Workflow - -1. **Get project context** — already injected above. Run `npx shadcn@latest info` again if you need to refresh. -2. **Check installed components first** — before running `add`, always check the `components` list from project context or list the `resolvedPaths.ui` directory. Don't import components that haven't been added, and don't re-add ones already installed. -3. **Find components** — `npx shadcn@latest search`. -4. **Get docs and examples** — run `npx shadcn@latest docs ` to get URLs, then fetch them. Use `npx shadcn@latest view` to browse registry items you haven't installed. To preview changes to installed components, use `npx shadcn@latest add --diff`. -5. **Install or update** — `npx shadcn@latest add`. When updating existing components, use `--dry-run` and `--diff` to preview changes first (see [Updating Components](#updating-components) below). -6. **Fix imports in third-party components** — After adding components from community registries (e.g. `@bundui`, `@magicui`), check the added non-UI files for hardcoded import paths like `@/components/ui/...`. These won't match the project's actual aliases. Use `npx shadcn@latest info` to get the correct `ui` alias (e.g. `@workspace/ui/components`) and rewrite the imports accordingly. The CLI rewrites imports for its own UI files, but third-party registry components may use default paths that don't match the project. -7. **Review added components** — After adding a component or block from any registry, **always read the added files and verify they are correct**. Check for missing sub-components (e.g. `SelectItem` without `SelectGroup`), missing imports, incorrect composition, or violations of the [Critical Rules](#critical-rules). Also replace any icon imports with the project's `iconLibrary` from the project context (e.g. if the registry item uses `lucide-react` but the project uses `hugeicons`, swap the imports and icon names accordingly). Fix all issues before moving on. -8. **Registry must be explicit** — When the user asks to add a block or component, **do not guess the registry**. If no registry is specified (e.g. user says "add a login block" without specifying `@shadcn`, `@tailark`, etc.), ask which registry to use. Never default to a registry on behalf of the user. -9. **Switching presets** — Ask the user first: **reinstall**, **merge**, or **skip**? - - **Reinstall**: `npx shadcn@latest init --preset --force --reinstall`. Overwrites all components. - - **Merge**: `npx shadcn@latest init --preset --force --no-reinstall`, then run `npx shadcn@latest info` to list installed components, then for each installed component use `--dry-run` and `--diff` to [smart merge](#updating-components) it individually. - - **Skip**: `npx shadcn@latest init --preset --force --no-reinstall`. Only updates config and CSS, leaves components as-is. - -## Updating Components - -When the user asks to update a component from upstream while keeping their local changes, use `--dry-run` and `--diff` to intelligently merge. **NEVER fetch raw files from GitHub manually — always use the CLI.** - -1. Run `npx shadcn@latest add --dry-run` to see all files that would be affected. -2. For each file, run `npx shadcn@latest add --diff ` to see what changed upstream vs local. -3. Decide per file based on the diff: - - No local changes → safe to overwrite. - - Has local changes → read the local file, analyze the diff, and apply upstream updates while preserving local modifications. - - User says "just update everything" → use `--overwrite`, but confirm first. -4. **Never use `--overwrite` without the user's explicit approval.** - -## Quick Reference - -```bash -# Create a new project. -npx shadcn@latest init --name my-app --preset base-nova -npx shadcn@latest init --name my-app --preset a2r6bw --template vite - -# Create a monorepo project. -npx shadcn@latest init --name my-app --preset base-nova --monorepo -npx shadcn@latest init --name my-app --preset base-nova --template next --monorepo - -# Initialize existing project. -npx shadcn@latest init --preset base-nova -npx shadcn@latest init --defaults # shortcut: --template=next --preset=base-nova - -# Add components. -npx shadcn@latest add button card dialog -npx shadcn@latest add @magicui/shimmer-button -npx shadcn@latest add --all - -# Preview changes before adding/updating. -npx shadcn@latest add button --dry-run -npx shadcn@latest add button --diff button.tsx -npx shadcn@latest add @acme/form --view button.tsx - -# Search registries. -npx shadcn@latest search @shadcn -q "sidebar" -npx shadcn@latest search @tailark -q "stats" - -# Get component docs and example URLs. -npx shadcn@latest docs button dialog select - -# View registry item details (for items not yet installed). -npx shadcn@latest view @shadcn/button -``` - -**Named presets:** `base-nova`, `radix-nova` -**Templates:** `next`, `vite`, `start`, `react-router`, `astro` (all support `--monorepo`) and `laravel` (not supported for monorepo) -**Preset codes:** Base62 strings starting with `a` (e.g. `a2r6bw`), from [ui.shadcn.com](https://ui.shadcn.com). - -## Detailed References - -- [rules/forms.md](./rules/forms.md) — FieldGroup, Field, InputGroup, ToggleGroup, FieldSet, validation states -- [rules/composition.md](./rules/composition.md) — Groups, overlays, Card, Tabs, Avatar, Alert, Empty, Toast, Separator, Skeleton, Badge, Button loading -- [rules/icons.md](./rules/icons.md) — data-icon, icon sizing, passing icons as objects -- [rules/styling.md](./rules/styling.md) — Semantic colors, variants, className, spacing, size, truncate, dark mode, cn(), z-index -- [rules/base-vs-radix.md](./rules/base-vs-radix.md) — asChild vs render, Select, ToggleGroup, Slider, Accordion -- [cli.md](./cli.md) — Commands, flags, presets, templates -- [customization.md](./customization.md) — Theming, CSS variables, extending components diff --git a/.agents/skills/shadcn/agents/openai.yml b/.agents/skills/shadcn/agents/openai.yml deleted file mode 100644 index ab636da..0000000 --- a/.agents/skills/shadcn/agents/openai.yml +++ /dev/null @@ -1,5 +0,0 @@ -interface: - display_name: "shadcn/ui" - short_description: "Manages shadcn/ui components — adding, searching, fixing, debugging, styling, and composing UI." - icon_small: "./assets/shadcn-small.png" - icon_large: "./assets/shadcn.png" diff --git a/.agents/skills/shadcn/assets/shadcn-small.png b/.agents/skills/shadcn/assets/shadcn-small.png deleted file mode 100644 index 547154b97f2298335159c23eec1dac0d147a1246..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1049 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6-E$sR$z z3=CCj3=9n|3=F@3LJcn%7)lKo7+xhXFj&oCU=S~uvn$XBDAAG{;hE;^%b*2hb1<+n z3NbJPS&Tr)z$nE4G7ZRL@M4sPvx68lplX;H7}_%#SfFa6fHVkr05M1pgl1mAh%j*h z6I`{x0%imor0saV%ts)_S>O>_%)r1c48n{Iv*t(uO^eJ7i71Ki^|4CM&(%vz$xlkv ztH>0+>{umUo3Q%e#RDspr3imfVamB1>jfNYSkzLEl1NlCV?QiN}Sf^&XRs)CuG zfu4bq9hZWFf=y9MnpKdC8&o@xXRDM^Qc_^0uU}qXu2*iXmtT~wZ)j<0sc&GUZ)Btk zRH0j3nOBlnp_^B%3^4>|j!SBBa#3bMNoIbY0?6FNr2NtnTO}osMQ{LdXGvxn!lt}p zsJDO~)CbAv8|oS8!_5Y2wE>A*`4?rT0&NDFZ)a!&R*518wZ}#uWI2*!AU*|)0=;U- zWup%dHajlKxQFb(K%V94;uvBfm>Yb$>yU#$kCbgiC(9RwrlwA(rsW(``(6H=zq@!* zUB_~Trk_lTdxPh$yxDTsVY&L;b+6{tRm^+d+gl^OQcCIBok=%y)Vhx@dR1ceL3r{0 z9=2nMXx8DxEkhL{v?(>~8{qDBkfB!u-iDB`| z-5d%Ae82YI%n8Zg9$mRN?o-|V)V*=5b-R>a>}P2{=pcK^B(&B-W{C#Z!Q%b*ueK>n zK6ymYLRneebCKDSzcqHEHFopo-mkH{zIkt2Z0^086Tko7%N)NxoZYSDM1jSUwPpuS zSeq*wzrC2D(tq4pZ#s9QP@Cd8Q^wW3*2cL_519?*;#4`B;+ei#o;C{Kkamm3Jooa; zE$3K-+c(6ShTjelW_B*W5o zcS6z34IR5C-SIF8m(lui^IOy!-~We?b1?PSGniCYR=ZyR^%<1lJzf1=);T3K0RU@N BSy=!8 diff --git a/.agents/skills/shadcn/assets/shadcn.png b/.agents/skills/shadcn/assets/shadcn.png deleted file mode 100644 index b7b6814acc25073e5f48099b1fd3f70c47bfb1c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3852 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 **IMPORTANT:** Always run commands using the project's package runner: `npx shadcn@latest`, `pnpm dlx shadcn@latest`, or `bunx --bun shadcn@latest`. Check `packageManager` from project context to choose the right one. Examples below use `npx shadcn@latest` but substitute the correct runner for the project. - -> **IMPORTANT:** Only use the flags documented below. Do not invent or guess flags — if a flag isn't listed here, it doesn't exist. The CLI auto-detects the package manager from the project's lockfile; there is no `--package-manager` flag. - -## Contents - -- Commands: init, add (dry-run, smart merge), search, view, docs, info, build -- Templates: next, vite, start, react-router, astro -- Presets: named, code, URL formats and fields -- Switching presets - ---- - -## Commands - -### `init` — Initialize or create a project - -```bash -npx shadcn@latest init [components...] [options] -``` - -Initializes shadcn/ui in an existing project or creates a new project (when `--name` is provided). Optionally installs components in the same step. - -| Flag | Short | Description | Default | -| ----------------------- | ----- | --------------------------------------------------------- | ------- | -| `--template