nubos-pilot 0.7.2 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/agents/np-executor.md +1 -0
  2. package/bin/install.js +2 -0
  3. package/bin/np-tools/_commands.cjs +98 -64
  4. package/bin/np-tools/dashboard.cjs +11 -5
  5. package/bin/np-tools/dashboard.test.cjs +80 -0
  6. package/bin/np-tools/help.cjs +16 -7
  7. package/bin/np-tools/help.test.cjs +63 -0
  8. package/bin/np-tools/stats.cjs +99 -3
  9. package/bin/np-tools/stats.test.cjs +65 -0
  10. package/lib/dashboard.cjs +41 -10
  11. package/lib/dashboard.test.cjs +83 -0
  12. package/lib/install/runtime-assets.cjs +50 -1
  13. package/lib/install/runtime-assets.test.cjs +190 -0
  14. package/lib/install/runtimes-registry.cjs +1 -0
  15. package/lib/runtime/_readline.cjs +49 -11
  16. package/lib/runtime/_readline.test.cjs +59 -0
  17. package/lib/runtime/claude.cjs +8 -1
  18. package/package.json +2 -1
  19. package/skills/np-composition-patterns/AGENTS.md +946 -0
  20. package/skills/np-composition-patterns/README.md +60 -0
  21. package/skills/np-composition-patterns/SKILL.md +89 -0
  22. package/skills/np-composition-patterns/metadata.json +11 -0
  23. package/skills/np-composition-patterns/rules/_sections.md +29 -0
  24. package/skills/np-composition-patterns/rules/_template.md +24 -0
  25. package/skills/np-composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
  26. package/skills/np-composition-patterns/rules/architecture-compound-components.md +112 -0
  27. package/skills/np-composition-patterns/rules/patterns-children-over-render-props.md +87 -0
  28. package/skills/np-composition-patterns/rules/patterns-explicit-variants.md +100 -0
  29. package/skills/np-composition-patterns/rules/react19-no-forwardref.md +42 -0
  30. package/skills/np-composition-patterns/rules/state-context-interface.md +191 -0
  31. package/skills/np-composition-patterns/rules/state-decouple-implementation.md +113 -0
  32. package/skills/np-composition-patterns/rules/state-lift-state.md +125 -0
  33. package/skills/np-council/SKILL.md +300 -0
  34. package/skills/np-design/SKILL.md +679 -0
  35. package/skills/np-frontend-design/LICENSE.txt +177 -0
  36. package/skills/np-frontend-design/SKILL.md +42 -0
  37. package/skills/np-high-end-visual-design/SKILL.md +98 -0
  38. package/skills/np-impeccable/SKILL.md +152 -0
  39. package/skills/np-impeccable/agents/openai.yaml +4 -0
  40. package/skills/np-impeccable/reference/adapt.md +190 -0
  41. package/skills/np-impeccable/reference/animate.md +173 -0
  42. package/skills/np-impeccable/reference/audit.md +134 -0
  43. package/skills/np-impeccable/reference/bolder.md +113 -0
  44. package/skills/np-impeccable/reference/brand.md +104 -0
  45. package/skills/np-impeccable/reference/clarify.md +174 -0
  46. package/skills/np-impeccable/reference/cognitive-load.md +106 -0
  47. package/skills/np-impeccable/reference/color-and-contrast.md +105 -0
  48. package/skills/np-impeccable/reference/colorize.md +154 -0
  49. package/skills/np-impeccable/reference/craft.md +138 -0
  50. package/skills/np-impeccable/reference/critique.md +213 -0
  51. package/skills/np-impeccable/reference/delight.md +302 -0
  52. package/skills/np-impeccable/reference/distill.md +111 -0
  53. package/skills/np-impeccable/reference/document.md +427 -0
  54. package/skills/np-impeccable/reference/extract.md +70 -0
  55. package/skills/np-impeccable/reference/harden.md +347 -0
  56. package/skills/np-impeccable/reference/heuristics-scoring.md +234 -0
  57. package/skills/np-impeccable/reference/interaction-design.md +195 -0
  58. package/skills/np-impeccable/reference/layout.md +141 -0
  59. package/skills/np-impeccable/reference/live.md +513 -0
  60. package/skills/np-impeccable/reference/motion-design.md +99 -0
  61. package/skills/np-impeccable/reference/onboard.md +234 -0
  62. package/skills/np-impeccable/reference/optimize.md +258 -0
  63. package/skills/np-impeccable/reference/overdrive.md +130 -0
  64. package/skills/np-impeccable/reference/personas.md +178 -0
  65. package/skills/np-impeccable/reference/polish.md +232 -0
  66. package/skills/np-impeccable/reference/product.md +62 -0
  67. package/skills/np-impeccable/reference/quieter.md +99 -0
  68. package/skills/np-impeccable/reference/responsive-design.md +114 -0
  69. package/skills/np-impeccable/reference/shape.md +136 -0
  70. package/skills/np-impeccable/reference/spatial-design.md +100 -0
  71. package/skills/np-impeccable/reference/teach.md +137 -0
  72. package/skills/np-impeccable/reference/typeset.md +124 -0
  73. package/skills/np-impeccable/reference/typography.md +159 -0
  74. package/skills/np-impeccable/reference/ux-writing.md +107 -0
  75. package/skills/np-impeccable/scripts/cleanup-deprecated.mjs +284 -0
  76. package/skills/np-impeccable/scripts/command-metadata.json +94 -0
  77. package/skills/np-impeccable/scripts/design-parser.mjs +820 -0
  78. package/skills/np-impeccable/scripts/detect-csp.mjs +198 -0
  79. package/skills/np-impeccable/scripts/is-generated.mjs +69 -0
  80. package/skills/np-impeccable/scripts/live-accept.mjs +465 -0
  81. package/skills/np-impeccable/scripts/live-browser.js +4684 -0
  82. package/skills/np-impeccable/scripts/live-inject.mjs +436 -0
  83. package/skills/np-impeccable/scripts/live-poll.mjs +187 -0
  84. package/skills/np-impeccable/scripts/live-server.mjs +679 -0
  85. package/skills/np-impeccable/scripts/live-wrap.mjs +395 -0
  86. package/skills/np-impeccable/scripts/live.mjs +247 -0
  87. package/skills/np-impeccable/scripts/load-context.mjs +93 -0
  88. package/skills/np-impeccable/scripts/modern-screenshot.umd.js +14 -0
  89. package/skills/np-impeccable/scripts/pin.mjs +214 -0
  90. package/skills/np-industrial-brutalist-ui/SKILL.md +92 -0
  91. package/skills/np-minimalist-ui/SKILL.md +85 -0
  92. package/skills/np-react-best-practices/AGENTS.md +3810 -0
  93. package/skills/np-react-best-practices/README.md +123 -0
  94. package/skills/np-react-best-practices/SKILL.md +149 -0
  95. package/skills/np-react-best-practices/metadata.json +15 -0
  96. package/skills/np-react-best-practices/rules/_sections.md +46 -0
  97. package/skills/np-react-best-practices/rules/_template.md +28 -0
  98. package/skills/np-react-best-practices/rules/advanced-effect-event-deps.md +56 -0
  99. package/skills/np-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  100. package/skills/np-react-best-practices/rules/advanced-init-once.md +42 -0
  101. package/skills/np-react-best-practices/rules/advanced-use-latest.md +39 -0
  102. package/skills/np-react-best-practices/rules/async-api-routes.md +38 -0
  103. package/skills/np-react-best-practices/rules/async-cheap-condition-before-await.md +37 -0
  104. package/skills/np-react-best-practices/rules/async-defer-await.md +82 -0
  105. package/skills/np-react-best-practices/rules/async-dependencies.md +51 -0
  106. package/skills/np-react-best-practices/rules/async-parallel.md +28 -0
  107. package/skills/np-react-best-practices/rules/async-suspense-boundaries.md +99 -0
  108. package/skills/np-react-best-practices/rules/bundle-analyzable-paths.md +63 -0
  109. package/skills/np-react-best-practices/rules/bundle-barrel-imports.md +60 -0
  110. package/skills/np-react-best-practices/rules/bundle-conditional.md +31 -0
  111. package/skills/np-react-best-practices/rules/bundle-defer-third-party.md +49 -0
  112. package/skills/np-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  113. package/skills/np-react-best-practices/rules/bundle-preload.md +50 -0
  114. package/skills/np-react-best-practices/rules/client-event-listeners.md +74 -0
  115. package/skills/np-react-best-practices/rules/client-localstorage-schema.md +71 -0
  116. package/skills/np-react-best-practices/rules/client-passive-event-listeners.md +48 -0
  117. package/skills/np-react-best-practices/rules/client-swr-dedup.md +56 -0
  118. package/skills/np-react-best-practices/rules/js-batch-dom-css.md +107 -0
  119. package/skills/np-react-best-practices/rules/js-cache-function-results.md +80 -0
  120. package/skills/np-react-best-practices/rules/js-cache-property-access.md +28 -0
  121. package/skills/np-react-best-practices/rules/js-cache-storage.md +70 -0
  122. package/skills/np-react-best-practices/rules/js-combine-iterations.md +32 -0
  123. package/skills/np-react-best-practices/rules/js-early-exit.md +50 -0
  124. package/skills/np-react-best-practices/rules/js-flatmap-filter.md +60 -0
  125. package/skills/np-react-best-practices/rules/js-hoist-regexp.md +45 -0
  126. package/skills/np-react-best-practices/rules/js-index-maps.md +37 -0
  127. package/skills/np-react-best-practices/rules/js-length-check-first.md +49 -0
  128. package/skills/np-react-best-practices/rules/js-min-max-loop.md +82 -0
  129. package/skills/np-react-best-practices/rules/js-request-idle-callback.md +105 -0
  130. package/skills/np-react-best-practices/rules/js-set-map-lookups.md +24 -0
  131. package/skills/np-react-best-practices/rules/js-tosorted-immutable.md +57 -0
  132. package/skills/np-react-best-practices/rules/rendering-activity.md +26 -0
  133. package/skills/np-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  134. package/skills/np-react-best-practices/rules/rendering-conditional-render.md +40 -0
  135. package/skills/np-react-best-practices/rules/rendering-content-visibility.md +38 -0
  136. package/skills/np-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  137. package/skills/np-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  138. package/skills/np-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  139. package/skills/np-react-best-practices/rules/rendering-resource-hints.md +85 -0
  140. package/skills/np-react-best-practices/rules/rendering-script-defer-async.md +68 -0
  141. package/skills/np-react-best-practices/rules/rendering-svg-precision.md +28 -0
  142. package/skills/np-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  143. package/skills/np-react-best-practices/rules/rerender-defer-reads.md +39 -0
  144. package/skills/np-react-best-practices/rules/rerender-dependencies.md +45 -0
  145. package/skills/np-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  146. package/skills/np-react-best-practices/rules/rerender-derived-state.md +29 -0
  147. package/skills/np-react-best-practices/rules/rerender-functional-setstate.md +74 -0
  148. package/skills/np-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  149. package/skills/np-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  150. package/skills/np-react-best-practices/rules/rerender-memo.md +44 -0
  151. package/skills/np-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  152. package/skills/np-react-best-practices/rules/rerender-no-inline-components.md +82 -0
  153. package/skills/np-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  154. package/skills/np-react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
  155. package/skills/np-react-best-practices/rules/rerender-transitions.md +40 -0
  156. package/skills/np-react-best-practices/rules/rerender-use-deferred-value.md +59 -0
  157. package/skills/np-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  158. package/skills/np-react-best-practices/rules/server-after-nonblocking.md +73 -0
  159. package/skills/np-react-best-practices/rules/server-auth-actions.md +96 -0
  160. package/skills/np-react-best-practices/rules/server-cache-lru.md +41 -0
  161. package/skills/np-react-best-practices/rules/server-cache-react.md +76 -0
  162. package/skills/np-react-best-practices/rules/server-dedup-props.md +65 -0
  163. package/skills/np-react-best-practices/rules/server-hoist-static-io.md +149 -0
  164. package/skills/np-react-best-practices/rules/server-no-shared-module-state.md +50 -0
  165. package/skills/np-react-best-practices/rules/server-parallel-fetching.md +83 -0
  166. package/skills/np-react-best-practices/rules/server-parallel-nested-fetching.md +34 -0
  167. package/skills/np-react-best-practices/rules/server-serialization.md +38 -0
  168. package/skills/np-react-native-skills/AGENTS.md +2897 -0
  169. package/skills/np-react-native-skills/README.md +165 -0
  170. package/skills/np-react-native-skills/SKILL.md +121 -0
  171. package/skills/np-react-native-skills/metadata.json +16 -0
  172. package/skills/np-react-native-skills/rules/_sections.md +86 -0
  173. package/skills/np-react-native-skills/rules/_template.md +28 -0
  174. package/skills/np-react-native-skills/rules/animation-derived-value.md +53 -0
  175. package/skills/np-react-native-skills/rules/animation-gesture-detector-press.md +95 -0
  176. package/skills/np-react-native-skills/rules/animation-gpu-properties.md +65 -0
  177. package/skills/np-react-native-skills/rules/design-system-compound-components.md +66 -0
  178. package/skills/np-react-native-skills/rules/fonts-config-plugin.md +71 -0
  179. package/skills/np-react-native-skills/rules/imports-design-system-folder.md +68 -0
  180. package/skills/np-react-native-skills/rules/js-hoist-intl.md +61 -0
  181. package/skills/np-react-native-skills/rules/list-performance-callbacks.md +44 -0
  182. package/skills/np-react-native-skills/rules/list-performance-function-references.md +132 -0
  183. package/skills/np-react-native-skills/rules/list-performance-images.md +53 -0
  184. package/skills/np-react-native-skills/rules/list-performance-inline-objects.md +97 -0
  185. package/skills/np-react-native-skills/rules/list-performance-item-expensive.md +94 -0
  186. package/skills/np-react-native-skills/rules/list-performance-item-memo.md +82 -0
  187. package/skills/np-react-native-skills/rules/list-performance-item-types.md +104 -0
  188. package/skills/np-react-native-skills/rules/list-performance-virtualize.md +67 -0
  189. package/skills/np-react-native-skills/rules/monorepo-native-deps-in-app.md +46 -0
  190. package/skills/np-react-native-skills/rules/monorepo-single-dependency-versions.md +63 -0
  191. package/skills/np-react-native-skills/rules/navigation-native-navigators.md +188 -0
  192. package/skills/np-react-native-skills/rules/react-compiler-destructure-functions.md +50 -0
  193. package/skills/np-react-native-skills/rules/react-compiler-reanimated-shared-values.md +48 -0
  194. package/skills/np-react-native-skills/rules/react-state-dispatcher.md +91 -0
  195. package/skills/np-react-native-skills/rules/react-state-fallback.md +56 -0
  196. package/skills/np-react-native-skills/rules/react-state-minimize.md +65 -0
  197. package/skills/np-react-native-skills/rules/rendering-no-falsy-and.md +74 -0
  198. package/skills/np-react-native-skills/rules/rendering-text-in-text-component.md +36 -0
  199. package/skills/np-react-native-skills/rules/scroll-position-no-state.md +82 -0
  200. package/skills/np-react-native-skills/rules/state-ground-truth.md +80 -0
  201. package/skills/np-react-native-skills/rules/ui-expo-image.md +66 -0
  202. package/skills/np-react-native-skills/rules/ui-image-gallery.md +104 -0
  203. package/skills/np-react-native-skills/rules/ui-measure-views.md +78 -0
  204. package/skills/np-react-native-skills/rules/ui-menus.md +174 -0
  205. package/skills/np-react-native-skills/rules/ui-native-modals.md +77 -0
  206. package/skills/np-react-native-skills/rules/ui-pressable.md +61 -0
  207. package/skills/np-react-native-skills/rules/ui-safe-area-scroll.md +65 -0
  208. package/skills/np-react-native-skills/rules/ui-scrollview-content-inset.md +45 -0
  209. package/skills/np-react-native-skills/rules/ui-styling.md +87 -0
  210. package/skills/np-react-view-transitions/AGENTS.md +955 -0
  211. package/skills/np-react-view-transitions/README.md +42 -0
  212. package/skills/np-react-view-transitions/SKILL.md +320 -0
  213. package/skills/np-react-view-transitions/metadata.json +12 -0
  214. package/skills/np-react-view-transitions/references/css-recipes.md +242 -0
  215. package/skills/np-react-view-transitions/references/implementation.md +182 -0
  216. package/skills/np-react-view-transitions/references/nextjs.md +176 -0
  217. package/skills/np-react-view-transitions/references/patterns.md +262 -0
  218. package/skills/np-redesign-existing-projects/SKILL.md +178 -0
  219. package/skills/np-shadcn/SKILL.md +250 -0
  220. package/skills/np-shadcn/agents/openai.yml +5 -0
  221. package/skills/np-shadcn/assets/shadcn-small.png +0 -0
  222. package/skills/np-shadcn/assets/shadcn.png +0 -0
  223. package/skills/np-shadcn/cli.md +276 -0
  224. package/skills/np-shadcn/customization.md +209 -0
  225. package/skills/np-shadcn/evals/evals.json +47 -0
  226. package/skills/np-shadcn/mcp.md +94 -0
  227. package/skills/np-shadcn/rules/base-vs-radix.md +306 -0
  228. package/skills/np-shadcn/rules/composition.md +195 -0
  229. package/skills/np-shadcn/rules/forms.md +192 -0
  230. package/skills/np-shadcn/rules/icons.md +101 -0
  231. package/skills/np-shadcn/rules/styling.md +162 -0
  232. package/skills/np-stitch-design-taste/DESIGN.md +121 -0
  233. package/skills/np-stitch-design-taste/SKILL.md +184 -0
  234. package/skills/np-web-design-guidelines/SKILL.md +39 -0
  235. package/workflows/add-todo.md +5 -0
  236. package/workflows/discuss-phase.md +2 -0
  237. package/workflows/execute-phase.md +27 -0
  238. package/workflows/note.md +5 -0
  239. package/workflows/plan-phase.md +12 -0
  240. package/workflows/stats.md +27 -90
  241. package/workflows/verify-work.md +12 -0
@@ -0,0 +1,101 @@
1
+ # Icons
2
+
3
+ **Always use the project's configured `iconLibrary` for imports.** Check the `iconLibrary` field from project context: `lucide` → `lucide-react`, `tabler` → `@tabler/icons-react`, etc. Never assume `lucide-react`.
4
+
5
+ ---
6
+
7
+ ## Icons in Button use data-icon attribute
8
+
9
+ Add `data-icon="inline-start"` (prefix) or `data-icon="inline-end"` (suffix) to the icon. No sizing classes on the icon.
10
+
11
+ **Incorrect:**
12
+
13
+ ```tsx
14
+ <Button>
15
+ <SearchIcon className="mr-2 size-4" />
16
+ Search
17
+ </Button>
18
+ ```
19
+
20
+ **Correct:**
21
+
22
+ ```tsx
23
+ <Button>
24
+ <SearchIcon data-icon="inline-start"/>
25
+ Search
26
+ </Button>
27
+
28
+ <Button>
29
+ Next
30
+ <ArrowRightIcon data-icon="inline-end"/>
31
+ </Button>
32
+ ```
33
+
34
+ ---
35
+
36
+ ## No sizing classes on icons inside components
37
+
38
+ Components handle icon sizing via CSS. Don't add `size-4`, `w-4 h-4`, or other sizing classes to icons inside `Button`, `DropdownMenuItem`, `Alert`, `Sidebar*`, or other shadcn components. Unless the user explicitly asks for custom icon sizes.
39
+
40
+ **Incorrect:**
41
+
42
+ ```tsx
43
+ <Button>
44
+ <SearchIcon className="size-4" data-icon="inline-start" />
45
+ Search
46
+ </Button>
47
+
48
+ <DropdownMenuItem>
49
+ <SettingsIcon className="mr-2 size-4" />
50
+ Settings
51
+ </DropdownMenuItem>
52
+ ```
53
+
54
+ **Correct:**
55
+
56
+ ```tsx
57
+ <Button>
58
+ <SearchIcon data-icon="inline-start" />
59
+ Search
60
+ </Button>
61
+
62
+ <DropdownMenuItem>
63
+ <SettingsIcon />
64
+ Settings
65
+ </DropdownMenuItem>
66
+ ```
67
+
68
+ ---
69
+
70
+ ## Pass icons as component objects, not string keys
71
+
72
+ Use `icon={CheckIcon}`, not a string key to a lookup map.
73
+
74
+ **Incorrect:**
75
+
76
+ ```tsx
77
+ const iconMap = {
78
+ check: CheckIcon,
79
+ alert: AlertIcon,
80
+ }
81
+
82
+ function StatusBadge({ icon }: { icon: string }) {
83
+ const Icon = iconMap[icon]
84
+ return <Icon />
85
+ }
86
+
87
+ <StatusBadge icon="check" />
88
+ ```
89
+
90
+ **Correct:**
91
+
92
+ ```tsx
93
+ // Import from the project's configured iconLibrary (e.g. lucide-react, @tabler/icons-react).
94
+ import { CheckIcon } from "lucide-react"
95
+
96
+ function StatusBadge({ icon: Icon }: { icon: React.ComponentType }) {
97
+ return <Icon />
98
+ }
99
+
100
+ <StatusBadge icon={CheckIcon} />
101
+ ```
@@ -0,0 +1,162 @@
1
+ # Styling & Customization
2
+
3
+ See [customization.md](../customization.md) for theming, CSS variables, and adding custom colors.
4
+
5
+ ## Contents
6
+
7
+ - Semantic colors
8
+ - Built-in variants first
9
+ - className for layout only
10
+ - No space-x-* / space-y-*
11
+ - Prefer size-* over w-* h-* when equal
12
+ - Prefer truncate shorthand
13
+ - No manual dark: color overrides
14
+ - Use cn() for conditional classes
15
+ - No manual z-index on overlay components
16
+
17
+ ---
18
+
19
+ ## Semantic colors
20
+
21
+ **Incorrect:**
22
+
23
+ ```tsx
24
+ <div className="bg-blue-500 text-white">
25
+ <p className="text-gray-600">Secondary text</p>
26
+ </div>
27
+ ```
28
+
29
+ **Correct:**
30
+
31
+ ```tsx
32
+ <div className="bg-primary text-primary-foreground">
33
+ <p className="text-muted-foreground">Secondary text</p>
34
+ </div>
35
+ ```
36
+
37
+ ---
38
+
39
+ ## No raw color values for status/state indicators
40
+
41
+ For positive, negative, or status indicators, use Badge variants, semantic tokens like `text-destructive`, or define custom CSS variables — don't reach for raw Tailwind colors.
42
+
43
+ **Incorrect:**
44
+
45
+ ```tsx
46
+ <span className="text-emerald-600">+20.1%</span>
47
+ <span className="text-green-500">Active</span>
48
+ <span className="text-red-600">-3.2%</span>
49
+ ```
50
+
51
+ **Correct:**
52
+
53
+ ```tsx
54
+ <Badge variant="secondary">+20.1%</Badge>
55
+ <Badge>Active</Badge>
56
+ <span className="text-destructive">-3.2%</span>
57
+ ```
58
+
59
+ If you need a success/positive color that doesn't exist as a semantic token, use a Badge variant or ask the user about adding a custom CSS variable to the theme (see [customization.md](../customization.md)).
60
+
61
+ ---
62
+
63
+ ## Built-in variants first
64
+
65
+ **Incorrect:**
66
+
67
+ ```tsx
68
+ <Button className="border border-input bg-transparent hover:bg-accent">
69
+ Click me
70
+ </Button>
71
+ ```
72
+
73
+ **Correct:**
74
+
75
+ ```tsx
76
+ <Button variant="outline">Click me</Button>
77
+ ```
78
+
79
+ ---
80
+
81
+ ## className for layout only
82
+
83
+ Use `className` for layout (e.g. `max-w-md`, `mx-auto`, `mt-4`), **not** for overriding component colors or typography. To change colors, use semantic tokens, built-in variants, or CSS variables.
84
+
85
+ **Incorrect:**
86
+
87
+ ```tsx
88
+ <Card className="bg-blue-100 text-blue-900 font-bold">
89
+ <CardContent>Dashboard</CardContent>
90
+ </Card>
91
+ ```
92
+
93
+ **Correct:**
94
+
95
+ ```tsx
96
+ <Card className="max-w-md mx-auto">
97
+ <CardContent>Dashboard</CardContent>
98
+ </Card>
99
+ ```
100
+
101
+ To customize a component's appearance, prefer these approaches in order:
102
+ 1. **Built-in variants** — `variant="outline"`, `variant="destructive"`, etc.
103
+ 2. **Semantic color tokens** — `bg-primary`, `text-muted-foreground`.
104
+ 3. **CSS variables** — define custom colors in the global CSS file (see [customization.md](../customization.md)).
105
+
106
+ ---
107
+
108
+ ## No space-x-* / space-y-*
109
+
110
+ Use `gap-*` instead. `space-y-4` → `flex flex-col gap-4`. `space-x-2` → `flex gap-2`.
111
+
112
+ ```tsx
113
+ <div className="flex flex-col gap-4">
114
+ <Input />
115
+ <Input />
116
+ <Button>Submit</Button>
117
+ </div>
118
+ ```
119
+
120
+ ---
121
+
122
+ ## Prefer size-* over w-* h-* when equal
123
+
124
+ `size-10` not `w-10 h-10`. Applies to icons, avatars, skeletons, etc.
125
+
126
+ ---
127
+
128
+ ## Prefer truncate shorthand
129
+
130
+ `truncate` not `overflow-hidden text-ellipsis whitespace-nowrap`.
131
+
132
+ ---
133
+
134
+ ## No manual dark: color overrides
135
+
136
+ Use semantic tokens — they handle light/dark via CSS variables. `bg-background text-foreground` not `bg-white dark:bg-gray-950`.
137
+
138
+ ---
139
+
140
+ ## Use cn() for conditional classes
141
+
142
+ Use the `cn()` utility from the project for conditional or merged class names. Don't write manual ternaries in className strings.
143
+
144
+ **Incorrect:**
145
+
146
+ ```tsx
147
+ <div className={`flex items-center ${isActive ? "bg-primary text-primary-foreground" : "bg-muted"}`}>
148
+ ```
149
+
150
+ **Correct:**
151
+
152
+ ```tsx
153
+ import { cn } from "@/lib/utils"
154
+
155
+ <div className={cn("flex items-center", isActive ? "bg-primary text-primary-foreground" : "bg-muted")}>
156
+ ```
157
+
158
+ ---
159
+
160
+ ## No manual z-index on overlay components
161
+
162
+ `Dialog`, `Sheet`, `Drawer`, `AlertDialog`, `DropdownMenu`, `Popover`, `Tooltip`, `HoverCard` handle their own stacking. Never add `z-50` or `z-[999]`.
@@ -0,0 +1,121 @@
1
+ # Design System: Taste Standard
2
+ **Skill:** stitch-design-taste
3
+
4
+ ---
5
+
6
+ ## Configuration — Set Your Style
7
+ Adjust these dials before using this design system. They control how creative, dense, and animated the output should be. Pick the level that fits your project.
8
+
9
+ | Dial | Level | Description |
10
+ |------|-------|-------------|
11
+ | **Creativity** | `8` | `1` = Ultra-minimal, Swiss, silent, monochrome. `5` = Balanced, clean but with personality. `10` = Expressive, editorial, bold typography experiments, inline images in headlines, strong asymmetry. Default: `8` |
12
+ | **Density** | `4` | `1` = Gallery-airy, massive whitespace. `5` = Balanced sections. `10` = Cockpit-dense, data-heavy. Default: `4` |
13
+ | **Variance** | `8` | `1` = Predictable, symmetric grids. `5` = Subtle offsets. `10` = Artsy chaotic, no two sections alike. Default: `8` |
14
+ | **Motion Intent** | `6` | `1` = Static, no animation noted. `5` = Subtle hover/entrance cues. `10` = Cinematic orchestration noted in every component. Default: `6` |
15
+
16
+ > **How to use:** Change the numbers above to match your project's vibe. At **Creativity 1–3**, the system produces clean, quiet, Notion-like interfaces. At **Creativity 7–10**, expect inline image typography, dramatic scale contrast, and strong editorial layouts. The rest of the rules below adapt to your chosen levels.
17
+
18
+ ---
19
+
20
+ ## 1. Visual Theme & Atmosphere
21
+ A restrained, gallery-airy interface with confident asymmetric layouts and fluid spring-physics motion. The atmosphere is clinical yet warm — like a well-lit architecture studio where every element earns its place through function. Density is balanced (Level 4), variance runs high (Level 8) to prevent symmetrical boredom, and motion is fluid but never theatrical (Level 6). The overall impression: expensive, intentional, alive.
22
+
23
+ ## 2. Color Palette & Roles
24
+ - **Canvas White** (#F9FAFB) — Primary background surface. Warm-neutral, never clinical blue-white
25
+ - **Pure Surface** (#FFFFFF) — Card and container fill. Used with whisper shadow for elevation
26
+ - **Charcoal Ink** (#18181B) — Primary text. Zinc-950 depth — never pure black
27
+ - **Steel Secondary** (#71717A) — Body text, descriptions, metadata. Zinc-500 warmth
28
+ - **Muted Slate** (#94A3B8) — Tertiary text, timestamps, disabled states
29
+ - **Whisper Border** (rgba(226,232,240,0.5)) — Card borders, structural 1px lines. Semi-transparent for depth
30
+ - **Diffused Shadow** (rgba(0,0,0,0.05)) — Card elevation. Wide-spreading, 40px blur, -15px offset. Never harsh
31
+
32
+ ### Accent Selection (Pick ONE per project)
33
+ - **Emerald Signal** (#10B981) — For growth, success, positive data dashboards
34
+ - **Electric Blue** (#3B82F6) — For productivity, SaaS, developer tools
35
+ - **Deep Rose** (#E11D48) — For creative, editorial, fashion-adjacent projects
36
+ - **Amber Warmth** (#F59E0B) — For community, social, warm-toned products
37
+
38
+ ### Banned Colors
39
+ - Purple/Violet neon gradients — the "AI Purple" aesthetic
40
+ - Pure Black (#000000) — always Off-Black or Zinc-950
41
+ - Oversaturated accents above 80% saturation
42
+ - Mixed warm/cool gray systems within one project
43
+
44
+ ## 3. Typography Rules
45
+ - **Display:** `Geist`, `Satoshi`, `Cabinet Grotesk`, or `Outfit` — Track-tight (`-0.025em`), controlled fluid scale, weight-driven hierarchy (700–900). Not screaming. Leading compressed (`1.1`). Alternatives forced — `Inter` is BANNED for premium contexts
46
+ - **Body:** Same family at weight 400 — Relaxed leading (`1.65`), 65ch max-width, Steel Secondary color (#71717A)
47
+ - **Mono:** `Geist Mono` or `JetBrains Mono` — For code blocks, metadata, timestamps. When density exceeds Level 7, all numbers switch to monospace
48
+ - **Scale:** Display at `clamp(2.25rem, 5vw, 3.75rem)`. Body at `1rem/1.125rem`. Mono metadata at `0.8125rem`
49
+
50
+ ### Banned Fonts
51
+ - `Inter` — banned everywhere in premium/creative contexts
52
+ - Generic serif fonts (`Times New Roman`, `Georgia`, `Garamond`, `Palatino`) — BANNED. If serif is needed for editorial/creative, use only distinctive modern serifs like `Fraunces`, `Gambarino`, `Editorial New`, or `Instrument Serif`. Never use default browser serif stacks. Serif is always BANNED in dashboards or software UIs regardless
53
+
54
+ ## 4. Component Stylings
55
+ * **Buttons:** Flat surface, no outer glow. Primary: accent fill with white text. Secondary: ghost/outline. Active state: `-1px translateY` or `scale(0.98)` for tactile push. Hover: subtle background shift, never glow
56
+ * **Cards/Containers:** Generously rounded corners (`2.5rem`). Pure white fill. Whisper border (`1px`, semi-transparent). Diffused shadow (`0 20px 40px -15px rgba(0,0,0,0.05)`). Internal padding `2rem–2.5rem`. Used ONLY when elevation communicates hierarchy — high-density layouts replace cards with `border-top` dividers or negative space
57
+ * **Inputs/Forms:** Label positioned above input. Helper text optional. Error text below in Deep Rose. Focus ring in accent color, `2px` offset. No floating labels. Standard `0.5rem` gap between label-input-error stack
58
+ * **Navigation:** Sleek, sticky. Icons scale on hover (Dock Magnification optional). No hamburger on desktop. Clean horizontal with generous spacing
59
+ * **Loaders:** Skeletal shimmer matching exact layout dimensions and rounded corners. Shifting light reflection across placeholder shapes. Never circular spinners
60
+ * **Empty States:** Composed illustration or icon composition with guidance text. Never just "No data found"
61
+ * **Error States:** Inline, contextual. Red accent underline or border. Clear recovery action
62
+
63
+ ## 5. Hero Section
64
+ The Hero is the first impression — it must be striking, creative, and never generic.
65
+ - **Inline Image Typography:** Embed small, contextual photos or visuals directly between words or letters in the headline. Example: "We build [photo of hands typing] digital [photo of screen] products" — images sit inline at type-height, rounded, acting as visual punctuation between words. This is the signature creative technique
66
+ - **No Overlapping Elements:** Text must never overlap images or other text. Every element has its own clear spatial zone. No z-index stacking of content layers, no absolute-positioned headlines over images. Clean separation always
67
+ - **No Filler Text:** "Scroll to explore", "Swipe down", scroll arrow icons, bouncing chevrons, and any instructional UI chrome are BANNED. The user knows how to scroll. Let the content pull them in naturally
68
+ - **Asymmetric Structure:** Centered Hero layouts are BANNED at this variance level. Use Split Screen (50/50), Left-Aligned text / Right visual, or Asymmetric Whitespace with large empty zones
69
+ - **CTA Restraint:** Maximum one primary CTA button. No secondary "Learn more" links. No redundant micro-copy below the headline
70
+
71
+ ## 6. Layout Principles
72
+ - **Grid-First:** CSS Grid for all structural layouts. Never flexbox percentage math (`calc(33% - 1rem)` is BANNED)
73
+ - **No Overlapping:** Elements must never overlap each other. No absolute-positioned layers stacking content on content. Every element occupies its own grid cell or flow position. Clean, separated spatial zones
74
+ - **Feature Sections:** The "3 equal cards in a row" pattern is BANNED. Use 2-column Zig-Zag, asymmetric Bento grids (2fr 1fr 1fr), or horizontal scroll galleries
75
+ - **Containment:** All content within `max-width: 1400px`, centered. Generous horizontal padding (`1rem` mobile, `2rem` tablet, `4rem` desktop)
76
+ - **Full-Height:** Use `min-height: 100dvh` — never `height: 100vh` (iOS Safari address bar jump)
77
+ - **Bento Architecture:** For feature grids, use Row 1: 3 columns | Row 2: 2 columns (70/30 split). Each tile contains a perpetual micro-animation
78
+
79
+ ## 7. Responsive Rules
80
+ Every screen must work flawlessly across all viewports. **Responsive is not optional — it is a hard requirement. Every single element must be tested at 375px, 768px, and 1440px.**
81
+ - **Mobile-First Collapse (< 768px):** All multi-column layouts collapse to a strict single column. `width: 100%`, `padding: 1rem`, `gap: 1.5rem`. No exceptions
82
+ - **No Horizontal Scroll:** Horizontal overflow on mobile is a critical failure. All elements must fit within viewport width. If any element causes horizontal scroll, the design is broken
83
+ - **Typography Scaling:** Headlines scale down gracefully via `clamp()`. Body text stays `1rem` minimum. Never shrink body below `14px`. Headlines must remain readable on 375px screens
84
+ - **Touch Targets:** All interactive elements minimum `44px` tap target. Generous spacing between clickable items. Buttons must be full-width on mobile
85
+ - **Image Behavior:** Hero and inline images scale proportionally. Inline typography images (photos between words) stack below the headline on mobile instead of inline
86
+ - **Navigation:** Desktop horizontal nav collapses to a clean mobile menu (slide-in or full-screen overlay). No tiny hamburger icons without labels
87
+ - **Cards & Grids:** Bento grids and asymmetric layouts revert to stacked single-column cards with full-width. Maintain internal padding (`1rem`)
88
+ - **Spacing Consistency:** Vertical section gaps reduce proportionally on mobile (`clamp(3rem, 8vw, 6rem)`). Never cramped, never excessively airy
89
+ - **Testing Viewports:** Designs must be verified at: `375px` (iPhone SE), `390px` (iPhone 14), `768px` (iPad), `1024px` (small laptop), `1440px` (desktop)
90
+
91
+ ## 8. Motion & Interaction (Code-Phase Intent)
92
+ > **Note:** Stitch generates static screens — it does not animate. This section documents the **intended motion behavior** so that the coding agent (Antigravity, Cursor, etc.) knows exactly how to implement animations when building the exported design into a live product.
93
+
94
+ - **Physics Engine:** Spring-based exclusively. `stiffness: 100, damping: 20`. No linear easing anywhere. Premium, weighty feel on all interactive elements
95
+ - **Perpetual Micro-Loops:** Every active dashboard component has an infinite-loop state — Pulse on status dots, Typewriter on search bars, Float on feature icons, Shimmer on loading states
96
+ - **Staggered Orchestration:** Lists and grids mount with cascaded delays (`animation-delay: calc(var(--index) * 100ms)`). Waterfall reveals, never instant mount
97
+ - **Layout Transitions:** Smooth re-ordering via shared element IDs. Items swap positions with physics, simulating real-time intelligence
98
+ - **Hardware Rules:** Animate ONLY `transform` and `opacity`. Never `top`, `left`, `width`, `height`. Grain/noise filters on fixed, pointer-events-none pseudo-elements only
99
+ - **Performance:** CPU-heavy perpetual animations isolated in microscopic leaf components. Never trigger parent re-renders. Target 60fps minimum
100
+
101
+ ## 9. Anti-Patterns (Banned)
102
+ - No emojis — anywhere in UI, code, or alt text
103
+ - No `Inter` font — use `Geist`, `Outfit`, `Cabinet Grotesk`, `Satoshi`
104
+ - No generic serif fonts (`Times New Roman`, `Georgia`, `Garamond`) — if serif is needed, use distinctive modern serifs only (`Fraunces`, `Instrument Serif`)
105
+ - No pure black (`#000000`) — Off-Black or Zinc-950 only
106
+ - No neon outer glows or default box-shadow glows
107
+ - No oversaturated accent colors above 80%
108
+ - No excessive gradient text on large headers
109
+ - No custom mouse cursors
110
+ - No overlapping elements — text never overlaps images or other content. Clean spatial separation always
111
+ - No 3-column equal card layouts for features
112
+ - No centered Hero sections (at this variance level)
113
+ - No filler UI text: "Scroll to explore", "Swipe down", "Discover more below", scroll arrows, bouncing chevrons — all BANNED
114
+ - No generic names: "John Doe", "Sarah Chan", "Acme", "Nexus", "SmartFlow"
115
+ - No fake round numbers: `99.99%`, `50%`, `1234567` — use organic data: `47.2%`, `+1 (312) 847-1928`
116
+ - No AI copywriting clichés: "Elevate", "Seamless", "Unleash", "Next-Gen", "Revolutionize"
117
+ - No broken Unsplash links — use `picsum.photos/seed/{id}/800/600` or SVG UI Avatars
118
+ - No generic `shadcn/ui` defaults — customize radii, colors, shadows to match this system
119
+ - No `z-index` spam — use only for Navbar, Modal, Overlay layer contexts
120
+ - No `h-screen` — always `min-h-[100dvh]`
121
+ - No circular loading spinners — skeletal shimmer only
@@ -0,0 +1,184 @@
1
+ ---
2
+ name: np-stitch-design-taste
3
+ description: Semantic Design System Skill for Google Stitch. Generates agent-friendly DESIGN.md files that enforce premium, anti-generic UI standards — strict typography, calibrated color, asymmetric layouts, perpetual micro-motion, and hardware-accelerated performance.
4
+ ---
5
+
6
+ # Stitch Design Taste — Semantic Design System Skill
7
+
8
+ ## Overview
9
+ This skill generates `DESIGN.md` files optimized for Google Stitch screen generation. It translates the battle-tested anti-slop frontend engineering directives into Stitch's native semantic design language — descriptive, natural-language rules paired with precise values that Stitch's AI agent can interpret to produce premium, non-generic interfaces.
10
+
11
+ The generated `DESIGN.md` serves as the **single source of truth** for prompting Stitch to generate new screens that align with a curated, high-agency design language. Stitch interprets design through **"Visual Descriptions"** supported by specific color values, typography specs, and component behaviors.
12
+
13
+ ## Prerequisites
14
+ - Access to Google Stitch via [labs.google.com/stitch](https://labs.google.com/stitch)
15
+ - Optionally: Stitch MCP Server for programmatic integration with Cursor, Antigravity, or Gemini CLI
16
+
17
+ ## The Goal
18
+ Generate a `DESIGN.md` file that encodes:
19
+ 1. **Visual atmosphere** — the mood, density, and design philosophy
20
+ 2. **Color calibration** — neutrals, accents, and banned patterns with hex codes
21
+ 3. **Typographic architecture** — font stacks, scale hierarchy, and anti-patterns
22
+ 4. **Component behaviors** — buttons, cards, inputs with interaction states
23
+ 5. **Layout principles** — grid systems, spacing philosophy, responsive strategy
24
+ 6. **Motion philosophy** — animation engine specs, spring physics, perpetual micro-interactions
25
+ 7. **Anti-patterns** — explicit list of banned AI design clichés
26
+
27
+ ## Analysis & Synthesis Instructions
28
+
29
+ ### 1. Define the Atmosphere
30
+ Evaluate the target project's intent. Use evocative adjectives from the taste spectrum:
31
+ - **Density:** "Art Gallery Airy" (1–3) → "Daily App Balanced" (4–7) → "Cockpit Dense" (8–10)
32
+ - **Variance:** "Predictable Symmetric" (1–3) → "Offset Asymmetric" (4–7) → "Artsy Chaotic" (8–10)
33
+ - **Motion:** "Static Restrained" (1–3) → "Fluid CSS" (4–7) → "Cinematic Choreography" (8–10)
34
+
35
+ Default baseline: Variance 8, Motion 6, Density 4. Adapt dynamically based on user's vibe description.
36
+
37
+ ### 2. Map the Color Palette
38
+ For each color provide: **Descriptive Name** + **Hex Code** + **Functional Role**.
39
+
40
+ **Mandatory constraints:**
41
+ - Maximum 1 accent color. Saturation below 80%
42
+ - The "AI Purple/Blue Neon" aesthetic is strictly BANNED — no purple button glows, no neon gradients
43
+ - Use absolute neutral bases (Zinc/Slate) with high-contrast singular accents
44
+ - Stick to one palette for the entire output — no warm/cool gray fluctuation
45
+ - Never use pure black (`#000000`) — use Off-Black, Zinc-950, or Charcoal
46
+
47
+ ### 3. Establish Typography Rules
48
+ - **Display/Headlines:** Track-tight, controlled scale. Not screaming. Hierarchy through weight and color, not just massive size
49
+ - **Body:** Relaxed leading, max 65 characters per line
50
+ - **Font Selection:** `Inter` is BANNED for premium/creative contexts. Force unique character: `Geist`, `Outfit`, `Cabinet Grotesk`, or `Satoshi`
51
+ - **Serif Ban:** Generic serif fonts (`Times New Roman`, `Georgia`, `Garamond`, `Palatino`) are BANNED. If serif is needed for editorial/creative contexts, use only distinctive modern serifs: `Fraunces`, `Gambarino`, `Editorial New`, or `Instrument Serif`. Serif is always BANNED in dashboards or software UIs
52
+ - **Dashboard Constraint:** Use Sans-Serif pairings exclusively (`Geist` + `Geist Mono` or `Satoshi` + `JetBrains Mono`)
53
+ - **High-Density Override:** When density exceeds 7, all numbers must use Monospace
54
+
55
+ ### 4. Define the Hero Section
56
+ The Hero is the first impression and must be creative, striking, and never generic:
57
+ - **Inline Image Typography:** Embed small, contextual photos or visuals directly between words or letters in the headline. Images sit inline at type-height, rounded, acting as visual punctuation. This is the signature creative technique
58
+ - **No Overlapping:** Text must never overlap images or other text. Every element occupies its own clean spatial zone
59
+ - **No Filler Text:** "Scroll to explore", "Swipe down", scroll arrow icons, bouncing chevrons are BANNED. The content should pull users in naturally
60
+ - **Asymmetric Structure:** Centered Hero layouts BANNED when variance exceeds 4
61
+ - **CTA Restraint:** Maximum one primary CTA. No secondary "Learn more" links
62
+
63
+ ### 5. Describe Component Stylings
64
+ For each component type, describe shape, color, shadow depth, and interaction behavior:
65
+ - **Buttons:** Tactile push feedback on active state. No neon outer glows. No custom mouse cursors
66
+ - **Cards:** Use ONLY when elevation communicates hierarchy. Tint shadows to background hue. For high-density layouts, replace cards with border-top dividers or negative space
67
+ - **Inputs/Forms:** Label above input, helper text optional, error text below. Standard gap spacing
68
+ - **Loading States:** Skeletal loaders matching layout dimensions — no generic circular spinners
69
+ - **Empty States:** Composed compositions indicating how to populate data
70
+ - **Error States:** Clear, inline error reporting
71
+
72
+ ### 6. Define Layout Principles
73
+ - No overlapping elements — every element occupies its own clear spatial zone. No absolute-positioned content stacking
74
+ - Centered Hero sections are BANNED when variance exceeds 4 — force Split Screen, Left-Aligned, or Asymmetric Whitespace
75
+ - The generic "3 equal cards horizontally" feature row is BANNED — use 2-column Zig-Zag, asymmetric grid, or horizontal scroll
76
+ - CSS Grid over Flexbox math — never use `calc()` percentage hacks
77
+ - Contain layouts using max-width constraints (e.g., 1400px centered)
78
+ - Full-height sections must use `min-h-[100dvh]` — never `h-screen` (iOS Safari catastrophic jump)
79
+
80
+ ### 7. Define Responsive Rules
81
+ Every design must work across all viewports:
82
+ - **Mobile-First Collapse (< 768px):** All multi-column layouts collapse to single column. No exceptions
83
+ - **No Horizontal Scroll:** Horizontal overflow on mobile is a critical failure
84
+ - **Typography Scaling:** Headlines scale via `clamp()`. Body text minimum `1rem`/`14px`
85
+ - **Touch Targets:** All interactive elements minimum `44px` tap target
86
+ - **Image Behavior:** Inline typography images (photos between words) stack below headline on mobile
87
+ - **Navigation:** Desktop horizontal nav collapses to clean mobile menu
88
+ - **Spacing:** Vertical section gaps reduce proportionally (`clamp(3rem, 8vw, 6rem)`)
89
+
90
+ ### 8. Encode Motion Philosophy
91
+ - **Spring Physics default:** `stiffness: 100, damping: 20` — premium, weighty feel. No linear easing
92
+ - **Perpetual Micro-Interactions:** Every active component should have an infinite loop state (Pulse, Typewriter, Float, Shimmer)
93
+ - **Staggered Orchestration:** Never mount lists instantly — use cascade delays for waterfall reveals
94
+ - **Performance:** Animate exclusively via `transform` and `opacity`. Never animate `top`, `left`, `width`, `height`. Grain/noise filters on fixed pseudo-elements only
95
+
96
+ ### 9. List Anti-Patterns (AI Tells)
97
+ Encode these as explicit "NEVER DO" rules in the DESIGN.md:
98
+ - No emojis anywhere
99
+ - No `Inter` font
100
+ - No generic serif fonts (`Times New Roman`, `Georgia`, `Garamond`) — distinctive modern serifs only if needed
101
+ - No pure black (`#000000`)
102
+ - No neon/outer glow shadows
103
+ - No oversaturated accents
104
+ - No excessive gradient text on large headers
105
+ - No custom mouse cursors
106
+ - No overlapping elements — clean spatial separation always
107
+ - No 3-column equal card layouts
108
+ - No generic names ("John Doe", "Acme", "Nexus")
109
+ - No fake round numbers (`99.99%`, `50%`)
110
+ - No AI copywriting clichés ("Elevate", "Seamless", "Unleash", "Next-Gen")
111
+ - No filler UI text: "Scroll to explore", "Swipe down", scroll arrows, bouncing chevrons
112
+ - No broken Unsplash links — use `picsum.photos` or SVG avatars
113
+ - No centered Hero sections (for high-variance projects)
114
+
115
+ ## Output Format (DESIGN.md Structure)
116
+
117
+ ```markdown
118
+ # Design System: [Project Title]
119
+
120
+ ## 1. Visual Theme & Atmosphere
121
+ (Evocative description of the mood, density, variance, and motion intensity.
122
+ Example: "A restrained, gallery-airy interface with confident asymmetric layouts
123
+ and fluid spring-physics motion. The atmosphere is clinical yet warm — like a
124
+ well-lit architecture studio.")
125
+
126
+ ## 2. Color Palette & Roles
127
+ - **Canvas White** (#F9FAFB) — Primary background surface
128
+ - **Pure Surface** (#FFFFFF) — Card and container fill
129
+ - **Charcoal Ink** (#18181B) — Primary text, Zinc-950 depth
130
+ - **Muted Steel** (#71717A) — Secondary text, descriptions, metadata
131
+ - **Whisper Border** (rgba(226,232,240,0.5)) — Card borders, 1px structural lines
132
+ - **[Accent Name]** (#XXXXXX) — Single accent for CTAs, active states, focus rings
133
+ (Max 1 accent. Saturation < 80%. No purple/neon.)
134
+
135
+ ## 3. Typography Rules
136
+ - **Display:** [Font Name] — Track-tight, controlled scale, weight-driven hierarchy
137
+ - **Body:** [Font Name] — Relaxed leading, 65ch max-width, neutral secondary color
138
+ - **Mono:** [Font Name] — For code, metadata, timestamps, high-density numbers
139
+ - **Banned:** Inter, generic system fonts for premium contexts. Serif fonts banned in dashboards.
140
+
141
+ ## 4. Component Stylings
142
+ * **Buttons:** Flat, no outer glow. Tactile -1px translate on active. Accent fill for primary, ghost/outline for secondary.
143
+ * **Cards:** Generously rounded corners (2.5rem). Diffused whisper shadow. Used only when elevation serves hierarchy. High-density: replace with border-top dividers.
144
+ * **Inputs:** Label above, error below. Focus ring in accent color. No floating labels.
145
+ * **Loaders:** Skeletal shimmer matching exact layout dimensions. No circular spinners.
146
+ * **Empty States:** Composed, illustrated compositions — not just "No data" text.
147
+
148
+ ## 5. Layout Principles
149
+ (Grid-first responsive architecture. Asymmetric splits for Hero sections.
150
+ Strict single-column collapse below 768px. Max-width containment.
151
+ No flexbox percentage math. Generous internal padding.)
152
+
153
+ ## 6. Motion & Interaction
154
+ (Spring physics for all interactive elements. Staggered cascade reveals.
155
+ Perpetual micro-loops on active dashboard components. Hardware-accelerated
156
+ transforms only. Isolated Client Components for CPU-heavy animations.)
157
+
158
+ ## 7. Anti-Patterns (Banned)
159
+ (Explicit list of forbidden patterns: no emojis, no Inter, no pure black,
160
+ no neon glows, no 3-column equal grids, no AI copywriting clichés,
161
+ no generic placeholder names, no broken image links.)
162
+ ```
163
+
164
+ ## Best Practices
165
+ - **Be Descriptive:** "Deep Charcoal Ink (#18181B)" — not just "dark text"
166
+ - **Be Functional:** Explain what each element is used for
167
+ - **Be Consistent:** Same terminology throughout the document
168
+ - **Be Precise:** Include exact hex codes, rem values, pixel values in parentheses
169
+ - **Be Opinionated:** This is not a neutral template — it enforces a specific, premium aesthetic
170
+
171
+ ## Tips for Success
172
+ 1. Start with the atmosphere — understand the vibe before detailing tokens
173
+ 2. Look for patterns — identify consistent spacing, sizing, and styling
174
+ 3. Think semantically — name colors by purpose, not just appearance
175
+ 4. Consider hierarchy — document how visual weight communicates importance
176
+ 5. Encode the bans — anti-patterns are as important as the rules themselves
177
+
178
+ ## Common Pitfalls to Avoid
179
+ - Using technical jargon without translation ("rounded-xl" instead of "generously rounded corners")
180
+ - Omitting hex codes or using only descriptive names
181
+ - Forgetting functional roles of design elements
182
+ - Being too vague in atmosphere descriptions
183
+ - Ignoring the anti-pattern list — these are what make the output premium
184
+ - Defaulting to generic "safe" designs instead of enforcing the curated aesthetic
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: np-web-design-guidelines
3
+ description: Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my site against best practices".
4
+ metadata:
5
+ author: vercel
6
+ version: "1.0.0"
7
+ argument-hint: <file-or-pattern>
8
+ ---
9
+
10
+ # Web Interface Guidelines
11
+
12
+ Review files for compliance with Web Interface Guidelines.
13
+
14
+ ## How It Works
15
+
16
+ 1. Fetch the latest guidelines from the source URL below
17
+ 2. Read the specified files (or prompt user for files/pattern)
18
+ 3. Check against all rules in the fetched guidelines
19
+ 4. Output findings in the terse `file:line` format
20
+
21
+ ## Guidelines Source
22
+
23
+ Fetch fresh guidelines before each review:
24
+
25
+ ```
26
+ https://raw.githubusercontent.com/vercel-labs/web-interface-guidelines/main/command.md
27
+ ```
28
+
29
+ Use WebFetch to retrieve the latest rules. The fetched content contains all the rules and output format instructions.
30
+
31
+ ## Usage
32
+
33
+ When a user provides a file or pattern argument:
34
+ 1. Fetch guidelines from the source URL above
35
+ 2. Read the specified files
36
+ 3. Apply all rules from the fetched guidelines
37
+ 4. Output findings using the format specified in the guidelines
38
+
39
+ If no files specified, ask the user which files to review.
@@ -23,6 +23,7 @@ Plan 10-05). All interactive prompts route through
23
23
  ## Initialize
24
24
 
25
25
  ```bash
26
+ LANG_DIRECTIVE=$(node .nubos-pilot/bin/np-tools.cjs lang-directive)
26
27
  DESCRIPTION="$*"
27
28
  if [[ -z "$DESCRIPTION" ]]; then
28
29
  echo "Usage: /np:add-todo <description>" >&2
@@ -47,6 +48,10 @@ through `lib/layout.cjs.slugify` (strips to `[a-z0-9-]` only;
47
48
  filename-injection mitigation) and validates the description length
48
49
  (<= 500 chars) before any filesystem write occurs.
49
50
 
51
+ **Language (SSOT = `.nubos-pilot/config.json` → `response_language`).**
52
+ `$LANG_DIRECTIVE` is authoritative. Obey it for all askuser prompt texts,
53
+ status updates, and the final report block.
54
+
50
55
  **Askuser routing.** Every `node .nubos-pilot/bin/np-tools.cjs askuser …` block below is a spec, not a literal command. Pick the path once at Initialize:
51
56
  - **Claude Code** (native `AskUserQuestion` tool is available): parse the JSON spec and call `AskUserQuestion` directly. `select` → `multiSelect: false`; `multiselect` → `multiSelect: true`; `confirm` → `options: [{label: "Yes"}, {label: "No"}]`; `input` → ask free-form in chat. Use a short `header` (≤12 chars).
52
57
  - **`text_mode == true`** (INIT payload): skip every askuser block and render questions as plain-text numbered lists. Opt-in via `.nubos-pilot/config.json` → `workflow.text_mode`.
@@ -245,6 +245,8 @@ For each selected area, ask 2–4 focused questions. Every prompt routes
245
245
  through `np-tools.cjs askuser` — never through the runtime-native structured
246
246
  question tool directly (SC-5 enforcement from Phase 3).
247
247
 
248
+ **Skill trigger — `np-council` (`.claude/skills/np-council/SKILL.md`).** When an area surfaces a real decision with stakes (multiple valid options, irreversible-ish, user explicitly torn or asks "what would you do"), pressure-test with the council skill **before** writing the decision into CONTEXT.md. Capture the council's verdict + dissents into the area's decision text — downstream planner reads them. Skip the council for trivial picks (e.g. "tabs vs spaces in copy", icon library choice with no real tradeoff) — it adds noise.
249
+
248
250
  Per area, the recommended flow is:
249
251
 
250
252
  ```bash