evals.json 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. {
  2. "skill_name": "shadcn",
  3. "evals": [
  4. {
  5. "id": 1,
  6. "prompt": "I'm building a Next.js app with shadcn/ui (base-nova preset, lucide icons). Create a settings form component with fields for: full name, email address, and notification preferences (email, SMS, push notifications as toggle options). Add validation states for required fields.",
  7. "expected_output": "A React component using FieldGroup, Field, ToggleGroup, data-invalid/aria-invalid validation, gap-* spacing, and semantic colors.",
  8. "files": [],
  9. "expectations": [
  10. "Uses FieldGroup and Field components for form layout instead of raw div with space-y",
  11. "Uses Switch for independent on/off notification toggles (not looping Button with manual active state)",
  12. "Uses data-invalid on Field and aria-invalid on the input control for validation states",
  13. "Uses gap-* (e.g. gap-4, gap-6) instead of space-y-* or space-x-* for spacing",
  14. "Uses semantic color tokens (e.g. bg-background, text-muted-foreground, text-destructive) instead of raw colors like bg-red-500",
  15. "No manual dark: color overrides"
  16. ]
  17. },
  18. {
  19. "id": 2,
  20. "prompt": "Create a dialog component for editing a user profile. It should have the user's avatar at the top, input fields for name and bio, and Save/Cancel buttons with appropriate icons. Using shadcn/ui with radix-nova preset and tabler icons.",
  21. "expected_output": "A React component with DialogTitle, Avatar+AvatarFallback, data-icon on icon buttons, no icon sizing classes, tabler icon imports.",
  22. "files": [],
  23. "expectations": [
  24. "Includes DialogTitle for accessibility (visible or with sr-only class)",
  25. "Avatar component includes AvatarFallback",
  26. "Icons on buttons use the data-icon attribute (data-icon=\"inline-start\" or data-icon=\"inline-end\")",
  27. "No sizing classes on icons inside components (no size-4, w-4, h-4, etc.)",
  28. "Uses tabler icons (@tabler/icons-react) instead of lucide-react",
  29. "Uses asChild for custom triggers (radix preset)"
  30. ]
  31. },
  32. {
  33. "id": 3,
  34. "prompt": "Create a dashboard component that shows 4 stat cards in a grid. Each card has a title, large number, percentage change badge, and a loading skeleton state. Using shadcn/ui with base-nova preset and lucide icons.",
  35. "expected_output": "A React component with full Card composition, Skeleton for loading, Badge for changes, semantic colors, gap-* spacing.",
  36. "files": [],
  37. "expectations": [
  38. "Uses full Card composition with CardHeader, CardTitle, CardContent (not dumping everything into CardContent)",
  39. "Uses Skeleton component for loading placeholders instead of custom animate-pulse divs",
  40. "Uses Badge component for percentage change instead of custom styled spans",
  41. "Uses semantic color tokens instead of raw color values like bg-green-500 or text-red-600",
  42. "Uses gap-* instead of space-y-* or space-x-* for spacing",
  43. "Uses size-* when width and height are equal instead of separate w-* h-*"
  44. ]
  45. }
  46. ]
  47. }