ganbatte-os 0.2.1

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 (200) hide show
  1. package/AGENTS.md +46 -0
  2. package/CLAUDE.md +31 -0
  3. package/GEMINI.md +17 -0
  4. package/LICENSE +21 -0
  5. package/README.md +141 -0
  6. package/agents/profiles/architect.md +13 -0
  7. package/agents/profiles/dev.md +13 -0
  8. package/agents/profiles/devops.md +12 -0
  9. package/agents/profiles/ganbatte-os-master.md +444 -0
  10. package/agents/profiles/index.json +14 -0
  11. package/agents/profiles/po.md +7 -0
  12. package/agents/profiles/qa.md +456 -0
  13. package/agents/profiles/sm.md +7 -0
  14. package/agents/profiles/squad-creator.md +7 -0
  15. package/agents/profiles/ux-design-expert.md +14 -0
  16. package/config.json +15 -0
  17. package/docs/curation.md +60 -0
  18. package/docs/gos_installation_guide.md +114 -0
  19. package/docs/ide-compatibility.md +20 -0
  20. package/docs/plan/plan-git-operations.md +51 -0
  21. package/docs/plan-distribuicao-publica.md +360 -0
  22. package/docs/stacks/stack-git-operations.md +154 -0
  23. package/docs/toolchain-map.md +18 -0
  24. package/integrations/README.md +42 -0
  25. package/integrations/antigravity/README.md +29 -0
  26. package/integrations/antigravity/command-map.json +29 -0
  27. package/integrations/claude/README.md +35 -0
  28. package/integrations/claude/agent-map.json +46 -0
  29. package/integrations/claude/command-map.json +32 -0
  30. package/integrations/claude/litellm-proxy.md +93 -0
  31. package/integrations/claude/mcp-specifics.md +121 -0
  32. package/integrations/codex/README.md +29 -0
  33. package/integrations/codex/command-map.json +29 -0
  34. package/integrations/cursor/README.md +8 -0
  35. package/integrations/cursor/command-map.json +11 -0
  36. package/integrations/gemini/README.md +13 -0
  37. package/integrations/gemini/command-map.json +11 -0
  38. package/integrations/kilo-code/README.md +7 -0
  39. package/integrations/kilo-code/command-map.json +11 -0
  40. package/integrations/opencode/README.md +91 -0
  41. package/integrations/opencode/command-map.json +46 -0
  42. package/integrations/registry.json +20 -0
  43. package/manifests/g-os-runtime-manifest.json +39 -0
  44. package/manifests/gos-install-manifest.json +46 -0
  45. package/opencode.json +7 -0
  46. package/package.json +51 -0
  47. package/playbooks/feature-development-playbook.md +239 -0
  48. package/playbooks/sprint-planner-playbook.md +127 -0
  49. package/playbooks/squad-pipeline-runner.md +196 -0
  50. package/playbooks/ssh-multi-account-setup.md +185 -0
  51. package/prompts/01-search.md +18 -0
  52. package/prompts/02-spec.md +19 -0
  53. package/prompts/03-tasks.md +15 -0
  54. package/prompts/04-code.md +10 -0
  55. package/prompts/05-reviews.md +11 -0
  56. package/rules/plan-mode.md +60 -0
  57. package/scripts/cli/gos-cli.js +679 -0
  58. package/scripts/hooks/pre-commit-validate.js +201 -0
  59. package/scripts/integrations/check-ide-compat.js +44 -0
  60. package/scripts/integrations/setup-ide-adapters.js +87 -0
  61. package/scripts/tools/clickup-preprocess.js +218 -0
  62. package/scripts/tools/clickup.js +1058 -0
  63. package/skills/agent-teams/SKILL.md +78 -0
  64. package/skills/agent-teams/presets/team-all.yaml +14 -0
  65. package/skills/agent-teams/presets/team-fullstack.yaml +17 -0
  66. package/skills/agent-teams/presets/team-ide-minimal.yaml +9 -0
  67. package/skills/agent-teams/presets/team-no-ui.yaml +12 -0
  68. package/skills/agent-teams/presets/team-qa-focused.yaml +83 -0
  69. package/skills/clickup/SKILL.md +151 -0
  70. package/skills/component-dedup/SKILL.md +101 -0
  71. package/skills/design-to-code/SKILL.md +255 -0
  72. package/skills/figma-implement-design/SKILL.md +227 -0
  73. package/skills/figma-make-analyzer/SKILL.md +140 -0
  74. package/skills/frontend-dev/SKILL.md +271 -0
  75. package/skills/git-ssh-setup/SKILL.md +164 -0
  76. package/skills/interface-design/SKILL.md +350 -0
  77. package/skills/interface-design/references/audit.md +76 -0
  78. package/skills/interface-design/references/craft-examples.md +134 -0
  79. package/skills/interface-design/references/critique.md +92 -0
  80. package/skills/interface-design/references/extract.md +92 -0
  81. package/skills/interface-design/references/principles.md +348 -0
  82. package/skills/interface-design/references/templates/system-precision.md +73 -0
  83. package/skills/interface-design/references/templates/system-warmth.md +67 -0
  84. package/skills/interface-design/references/validation.md +137 -0
  85. package/skills/make-code-triage/SKILL.md +135 -0
  86. package/skills/make-version-diff/SKILL.md +87 -0
  87. package/skills/plan-to-tasks/SKILL.md +136 -0
  88. package/skills/react-best-practices/AGENTS.md +2975 -0
  89. package/skills/react-best-practices/SKILL.md +151 -0
  90. package/skills/react-best-practices/metadata.json +15 -0
  91. package/skills/react-best-practices/rules/_sections.md +46 -0
  92. package/skills/react-best-practices/rules/_template.md +28 -0
  93. package/skills/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
  94. package/skills/react-best-practices/rules/advanced-init-once.md +42 -0
  95. package/skills/react-best-practices/rules/advanced-use-latest.md +39 -0
  96. package/skills/react-best-practices/rules/async-api-routes.md +38 -0
  97. package/skills/react-best-practices/rules/async-defer-await.md +80 -0
  98. package/skills/react-best-practices/rules/async-dependencies.md +51 -0
  99. package/skills/react-best-practices/rules/async-parallel.md +28 -0
  100. package/skills/react-best-practices/rules/async-suspense-boundaries.md +99 -0
  101. package/skills/react-best-practices/rules/bundle-barrel-imports.md +59 -0
  102. package/skills/react-best-practices/rules/bundle-conditional.md +31 -0
  103. package/skills/react-best-practices/rules/bundle-defer-third-party.md +49 -0
  104. package/skills/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
  105. package/skills/react-best-practices/rules/bundle-preload.md +50 -0
  106. package/skills/react-best-practices/rules/client-event-listeners.md +74 -0
  107. package/skills/react-best-practices/rules/client-localstorage-schema.md +71 -0
  108. package/skills/react-best-practices/rules/client-passive-event-listeners.md +48 -0
  109. package/skills/react-best-practices/rules/client-swr-dedup.md +56 -0
  110. package/skills/react-best-practices/rules/js-batch-dom-css.md +107 -0
  111. package/skills/react-best-practices/rules/js-cache-function-results.md +80 -0
  112. package/skills/react-best-practices/rules/js-cache-property-access.md +28 -0
  113. package/skills/react-best-practices/rules/js-cache-storage.md +70 -0
  114. package/skills/react-best-practices/rules/js-combine-iterations.md +32 -0
  115. package/skills/react-best-practices/rules/js-early-exit.md +50 -0
  116. package/skills/react-best-practices/rules/js-hoist-regexp.md +45 -0
  117. package/skills/react-best-practices/rules/js-index-maps.md +37 -0
  118. package/skills/react-best-practices/rules/js-length-check-first.md +49 -0
  119. package/skills/react-best-practices/rules/js-min-max-loop.md +82 -0
  120. package/skills/react-best-practices/rules/js-set-map-lookups.md +24 -0
  121. package/skills/react-best-practices/rules/js-tosorted-immutable.md +57 -0
  122. package/skills/react-best-practices/rules/rendering-activity.md +26 -0
  123. package/skills/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
  124. package/skills/react-best-practices/rules/rendering-conditional-render.md +40 -0
  125. package/skills/react-best-practices/rules/rendering-content-visibility.md +38 -0
  126. package/skills/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
  127. package/skills/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
  128. package/skills/react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
  129. package/skills/react-best-practices/rules/rendering-svg-precision.md +28 -0
  130. package/skills/react-best-practices/rules/rendering-usetransition-loading.md +75 -0
  131. package/skills/react-best-practices/rules/rerender-defer-reads.md +39 -0
  132. package/skills/react-best-practices/rules/rerender-dependencies.md +45 -0
  133. package/skills/react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
  134. package/skills/react-best-practices/rules/rerender-derived-state.md +29 -0
  135. package/skills/react-best-practices/rules/rerender-functional-setstate.md +74 -0
  136. package/skills/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
  137. package/skills/react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
  138. package/skills/react-best-practices/rules/rerender-memo.md +44 -0
  139. package/skills/react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
  140. package/skills/react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
  141. package/skills/react-best-practices/rules/rerender-transitions.md +40 -0
  142. package/skills/react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
  143. package/skills/react-best-practices/rules/server-after-nonblocking.md +73 -0
  144. package/skills/react-best-practices/rules/server-auth-actions.md +96 -0
  145. package/skills/react-best-practices/rules/server-cache-lru.md +41 -0
  146. package/skills/react-best-practices/rules/server-cache-react.md +76 -0
  147. package/skills/react-best-practices/rules/server-dedup-props.md +65 -0
  148. package/skills/react-best-practices/rules/server-hoist-static-io.md +142 -0
  149. package/skills/react-best-practices/rules/server-parallel-fetching.md +83 -0
  150. package/skills/react-best-practices/rules/server-serialization.md +38 -0
  151. package/skills/react-doctor/SKILL.md +74 -0
  152. package/skills/registry.json +21 -0
  153. package/skills/sprint-planner/SKILL.md +434 -0
  154. package/squads/design-delivery/README.md +10 -0
  155. package/squads/design-delivery/squad.yaml +30 -0
  156. package/squads/design-delivery/workflows/wf-design-delivery.yaml +27 -0
  157. package/squads/design-squad/README.md +31 -0
  158. package/squads/design-squad/agents/brad-frost.md +185 -0
  159. package/squads/design-squad/agents/dan-mall.md +178 -0
  160. package/squads/design-squad/agents/dave-malouf.md +198 -0
  161. package/squads/design-squad/agents/design-chief.md +109 -0
  162. package/squads/design-squad/agents/design-system-architect.md +109 -0
  163. package/squads/design-squad/agents/ui-engineer.md +102 -0
  164. package/squads/design-squad/agents/ux-designer.md +105 -0
  165. package/squads/design-squad/agents/visual-generator.md +108 -0
  166. package/squads/design-squad/checklists/output-quality.md +76 -0
  167. package/squads/design-squad/config/config.yaml +65 -0
  168. package/squads/design-squad/data/design-patterns-catalog.yaml +276 -0
  169. package/squads/design-squad/data/routing-catalog.yaml +95 -0
  170. package/squads/design-squad/squad.yaml +88 -0
  171. package/squads/design-squad/tasks/audit-design.md +174 -0
  172. package/squads/design-squad/tasks/create-component-spec.md +185 -0
  173. package/squads/design-squad/tasks/create-design-system.md +179 -0
  174. package/squads/design-squad/tasks/design-ux-flow.md +184 -0
  175. package/squads/design-squad/tasks/diagnose.md +138 -0
  176. package/squads/design-squad/tasks/generate-handoff.md +186 -0
  177. package/squads/design-squad/tasks/review.md +133 -0
  178. package/squads/design-squad/tasks/setup-design-ops.md +177 -0
  179. package/squads/design-squad/workflows/wf-design-system-creation.yaml +131 -0
  180. package/squads/design-squad/workflows/wf-feature-design.yaml +114 -0
  181. package/squads/git-operations/README.md +30 -0
  182. package/squads/git-operations/squad.yaml +27 -0
  183. package/squads/git-operations/workflows/wf-safe-commit.yaml +27 -0
  184. package/squads/git-operations/workflows/wf-ssh-setup.yaml +27 -0
  185. package/squads/sprint-planning/agents/sprint-chief.md +47 -0
  186. package/squads/sprint-planning/agents/sprint-planner-agent.md +43 -0
  187. package/squads/sprint-planning/agents/sprint-tracker.md +43 -0
  188. package/squads/sprint-planning/agents/task-importer.md +44 -0
  189. package/squads/sprint-planning/checklists/sprint-readiness.md +27 -0
  190. package/squads/sprint-planning/config/config.yaml +65 -0
  191. package/squads/sprint-planning/data/clickup-field-mapping.yaml +94 -0
  192. package/squads/sprint-planning/squad.yaml +52 -0
  193. package/squads/sprint-planning/tasks/close-sprint.md +43 -0
  194. package/squads/sprint-planning/tasks/create-sprint.md +42 -0
  195. package/squads/sprint-planning/tasks/import-tasks.md +39 -0
  196. package/squads/sprint-planning/tasks/sync-status.md +31 -0
  197. package/squads/sprint-planning/workflows/wf-sprint-creation.yaml +59 -0
  198. package/squads/sprint-planning/workflows/wf-sprint-sync.yaml +35 -0
  199. package/templates/adr-tmpl.yaml +76 -0
  200. package/templates/sprint-clickup.template.md +80 -0
@@ -0,0 +1,92 @@
1
+ # Extract Patterns
2
+
3
+ Extract design patterns from existing code to create a `.interface-design/system.md` file.
4
+
5
+ ---
6
+
7
+ ## Usage
8
+
9
+ Extract from common UI paths or a specific directory.
10
+
11
+ ---
12
+
13
+ ## What to Extract
14
+
15
+ Scan UI files (tsx, jsx, vue, svelte, css, scss) for:
16
+
17
+ ### 1. Repeated spacing values
18
+ ```
19
+ Found: 4px (12x), 8px (23x), 12px (18x), 16px (31x), 24px (8x)
20
+ Suggests: Base 4px, Scale: 4, 8, 12, 16, 24
21
+ ```
22
+
23
+ ### 2. Repeated radius values
24
+ ```
25
+ Found: 6px (28x), 8px (5x)
26
+ Suggests: Radius scale: 6px, 8px
27
+ ```
28
+
29
+ ### 3. Button patterns
30
+ ```
31
+ Found 8 buttons:
32
+ - Height: 36px (7/8), 40px (1/8)
33
+ - Padding: 12px 16px (6/8), 16px (2/8)
34
+ Suggests: Button pattern: 36px h, 12px 16px padding
35
+ ```
36
+
37
+ ### 4. Card patterns
38
+ ```
39
+ Found 12 cards:
40
+ - Border: 1px solid (10/12), none (2/12)
41
+ - Padding: 16px (9/12), 20px (3/12)
42
+ Suggests: Card pattern: 1px border, 16px padding
43
+ ```
44
+
45
+ ### 5. Depth strategy
46
+ ```
47
+ box-shadow found: 2x
48
+ border found: 34x
49
+ Suggests: Borders-only depth
50
+ ```
51
+
52
+ ### 6. Color palette
53
+ ```
54
+ Colors found:
55
+ - Gray family: slate-100 through slate-900 (dominant)
56
+ - Accent: blue-600 (12x), blue-500 (3x)
57
+ - Semantic: red-500 (4x), green-500 (3x), amber-500 (2x)
58
+ Suggests: Slate foundation, blue accent
59
+ ```
60
+
61
+ ---
62
+
63
+ ## Output Prompt
64
+
65
+ ```
66
+ Extracted patterns:
67
+
68
+ Spacing:
69
+ Base: 4px
70
+ Scale: 4, 8, 12, 16, 24, 32
71
+
72
+ Depth: Borders-only (34 borders, 2 shadows)
73
+
74
+ Radius: 6px, 8px
75
+
76
+ Patterns:
77
+ Button: 36px h, 12px 16px pad, 6px radius
78
+ Card: 1px border, 16px pad
79
+
80
+ Create .interface-design/system.md with these? (y/n/customize)
81
+ ```
82
+
83
+ ---
84
+
85
+ ## Implementation Steps
86
+
87
+ 1. Glob for UI files in target path
88
+ 2. Parse for repeated spacing, radius, shadow, border, and color values
89
+ 3. Identify dominant patterns by frequency
90
+ 4. Suggest system based on most common values
91
+ 5. Present to user for confirmation
92
+ 6. Offer customization before saving to `.interface-design/system.md`
@@ -0,0 +1,348 @@
1
+ # Design Principles — Technical Reference
2
+
3
+ Deep reference for token architecture, CSS patterns, spacing systems, and implementation details.
4
+
5
+ ---
6
+
7
+ ## Token Architecture
8
+
9
+ Every color in your interface should trace back to a small set of primitives:
10
+
11
+ - **Foreground** — text colors (primary, secondary, tertiary, muted)
12
+ - **Background** — surface colors (base, elevated, overlay)
13
+ - **Border** — edge colors (default, subtle, strong, stronger)
14
+ - **Brand** — your primary accent
15
+ - **Semantic** — functional colors (destructive, warning, success, info)
16
+
17
+ No random hex values. Everything maps to primitives.
18
+
19
+ ### The Primitive Foundation
20
+
21
+ ```css
22
+ /* Dark mode example — slate family */
23
+ :root {
24
+ /* Foreground (text hierarchy) */
25
+ --fg-primary: hsl(210 11% 93%); /* ~#e8eaed */
26
+ --fg-secondary: hsl(215 8% 62%); /* ~#959ba5 */
27
+ --fg-tertiary: hsl(215 8% 46%); /* ~#6b7280 */
28
+ --fg-muted: hsl(215 8% 34%); /* ~#4e545e */
29
+
30
+ /* Background (surface elevation) */
31
+ --bg-base: hsl(220 13% 9%); /* ~#141518 */
32
+ --bg-surface-1: hsl(220 13% 11%); /* ~#191b1f */
33
+ --bg-surface-2: hsl(220 13% 13%); /* ~#1e2025 */
34
+ --bg-surface-3: hsl(220 13% 16%); /* ~#262830 */
35
+ --bg-inset: hsl(220 13% 7%); /* ~#101114 */
36
+
37
+ /* Border (separation hierarchy) */
38
+ --border-default: rgba(255, 255, 255, 0.08);
39
+ --border-subtle: rgba(255, 255, 255, 0.05);
40
+ --border-strong: rgba(255, 255, 255, 0.12);
41
+ --border-stronger: rgba(255, 255, 255, 0.20);
42
+
43
+ /* Brand */
44
+ --accent: hsl(217 91% 60%); /* blue-500 */
45
+ --accent-hover: hsl(217 91% 55%);
46
+
47
+ /* Semantic */
48
+ --destructive: hsl(0 72% 51%);
49
+ --warning: hsl(38 92% 50%);
50
+ --success: hsl(142 71% 45%);
51
+ }
52
+ ```
53
+
54
+ ### Light Mode Equivalent
55
+
56
+ ```css
57
+ :root[data-theme="light"] {
58
+ --fg-primary: hsl(220 13% 13%);
59
+ --fg-secondary: hsl(215 16% 47%);
60
+ --fg-tertiary: hsl(215 14% 62%);
61
+ --fg-muted: hsl(215 12% 77%);
62
+
63
+ --bg-base: hsl(0 0% 100%);
64
+ --bg-surface-1: hsl(210 20% 98%);
65
+ --bg-surface-2: hsl(210 17% 95%);
66
+ --bg-surface-3: hsl(210 14% 92%);
67
+ --bg-inset: hsl(210 20% 96%);
68
+
69
+ --border-default: rgba(0, 0, 0, 0.08);
70
+ --border-subtle: rgba(0, 0, 0, 0.05);
71
+ --border-strong: rgba(0, 0, 0, 0.12);
72
+ --border-stronger: rgba(0, 0, 0, 0.20);
73
+ }
74
+ ```
75
+
76
+ ---
77
+
78
+ ## Text Hierarchy
79
+
80
+ Four levels, each with a distinct role:
81
+
82
+ | Level | Role | Example |
83
+ |-------|------|---------|
84
+ | **Primary** | Default text, highest contrast | Page titles, body text, labels |
85
+ | **Secondary** | Supporting text, slightly muted | Descriptions, helper text |
86
+ | **Tertiary** | Metadata, timestamps | "Updated 2 hours ago", table headers |
87
+ | **Muted** | Disabled, placeholder | Input placeholders, disabled labels |
88
+
89
+ Use all four consistently. Two-level hierarchy (text + gray text) is too flat.
90
+
91
+ ---
92
+
93
+ ## Border Progression
94
+
95
+ Four levels matching intensity to importance:
96
+
97
+ | Level | Opacity (dark) | Use |
98
+ |-------|---------------|-----|
99
+ | **Subtle** | 0.05 | Softest separation, visual grouping |
100
+ | **Default** | 0.08 | Standard card/panel borders |
101
+ | **Strong** | 0.12 | Emphasis, hover states, section dividers |
102
+ | **Stronger** | 0.20 | Focus rings, maximum emphasis |
103
+
104
+ Use `rgba()` not solid hex. Low-opacity borders blend with backgrounds — they define edges without demanding attention.
105
+
106
+ ---
107
+
108
+ ## Control Tokens
109
+
110
+ Form controls need dedicated tokens, not reused surface tokens:
111
+
112
+ ```css
113
+ --control-bg: hsl(220 13% 7%); /* Slightly darker than surface (inset) */
114
+ --control-border: rgba(255, 255, 255, 0.10);
115
+ --control-border-hover: rgba(255, 255, 255, 0.15);
116
+ --control-border-focus: var(--accent);
117
+ --control-ring: 0 0 0 2px rgba(59, 130, 246, 0.3);
118
+ ```
119
+
120
+ This separation lets you tune interactive elements independently from layout surfaces.
121
+
122
+ ---
123
+
124
+ ## Spacing System
125
+
126
+ Pick a base unit (4px is standard) and use only multiples:
127
+
128
+ | Context | Values | Use |
129
+ |---------|--------|-----|
130
+ | **Micro** | 2px, 4px | Icon gaps, tight element pairs |
131
+ | **Component** | 6px, 8px, 12px | Within buttons, inputs, badges |
132
+ | **Section** | 16px, 20px, 24px | Card padding, group spacing |
133
+ | **Major** | 32px, 48px, 64px | Page sections, layout gaps |
134
+
135
+ ```css
136
+ --space-1: 4px;
137
+ --space-2: 8px;
138
+ --space-3: 12px;
139
+ --space-4: 16px;
140
+ --space-6: 24px;
141
+ --space-8: 32px;
142
+ --space-12: 48px;
143
+ ```
144
+
145
+ Random values (14px, 17px, 22px) signal no system.
146
+
147
+ ### Padding Symmetry
148
+
149
+ Keep it symmetrical. TLBR must match unless content naturally requires asymmetry.
150
+
151
+ ```css
152
+ /* Good */
153
+ padding: 16px;
154
+ padding: 12px 16px; /* Only when horizontal needs more room */
155
+
156
+ /* Bad — no system */
157
+ padding: 24px 16px 12px 16px;
158
+ ```
159
+
160
+ ---
161
+
162
+ ## Depth & Elevation Strategy
163
+
164
+ Choose ONE approach and commit:
165
+
166
+ ### Borders-only (flat)
167
+ Clean, technical, dense. For utility-focused tools where information density matters.
168
+
169
+ ```css
170
+ --border: rgba(0, 0, 0, 0.08);
171
+ --border-subtle: rgba(0, 0, 0, 0.05);
172
+ border: 0.5px solid var(--border);
173
+ ```
174
+
175
+ Linear, Raycast, and developer tools use this approach.
176
+
177
+ ### Subtle single shadows
178
+ Soft lift without complexity. For approachable products that want gentle depth.
179
+
180
+ ```css
181
+ --shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
182
+ ```
183
+
184
+ ### Layered shadows
185
+ Rich, premium, dimensional. For cards that need to feel like physical objects.
186
+
187
+ ```css
188
+ --shadow-layered:
189
+ 0 0 0 0.5px rgba(0, 0, 0, 0.05),
190
+ 0 1px 2px rgba(0, 0, 0, 0.04),
191
+ 0 2px 4px rgba(0, 0, 0, 0.03),
192
+ 0 4px 8px rgba(0, 0, 0, 0.02);
193
+ ```
194
+
195
+ Stripe and Mercury use layered shadows.
196
+
197
+ ### Surface color shifts
198
+ Background tints establish hierarchy without any shadows.
199
+
200
+ ```css
201
+ /* Card on page */
202
+ background: #fff; /* card */
203
+ /* sits on */
204
+ background: #f8fafc; /* page - already feels elevated */
205
+ ```
206
+
207
+ **Never mix approaches.** Shadows + dramatic borders = visual confusion.
208
+
209
+ ---
210
+
211
+ ## Border Radius
212
+
213
+ Build a scale matching product personality:
214
+
215
+ | Product feel | Small | Medium | Large |
216
+ |-------------|-------|--------|-------|
217
+ | **Technical** | 2px | 4px | 6px |
218
+ | **Balanced** | 4px | 6px | 8px |
219
+ | **Friendly** | 6px | 8px | 12px |
220
+ | **Soft** | 8px | 12px | 16px |
221
+
222
+ Small for inputs/buttons, medium for cards, large for modals. Don't mix sharp and soft randomly.
223
+
224
+ ---
225
+
226
+ ## Typography Hierarchy
227
+
228
+ Distinct levels distinguishable at a glance:
229
+
230
+ | Level | Size | Weight | Tracking | Use |
231
+ |-------|------|--------|----------|-----|
232
+ | **Display** | 24-32px | 600-700 | -0.02em | Page hero, main title |
233
+ | **Heading** | 18-20px | 600 | -0.01em | Section headers |
234
+ | **Body** | 14-16px | 400 | normal | Content, descriptions |
235
+ | **Label** | 12-13px | 500 | 0.01em | UI labels, badges |
236
+ | **Data** | 13-14px mono | 400 | 0 | Numbers, IDs, timestamps |
237
+
238
+ Don't rely on size alone — combine size, weight, and letter-spacing.
239
+
240
+ ### Monospace for Data
241
+
242
+ Numbers, IDs, codes, timestamps belong in monospace. Use `font-variant-numeric: tabular-nums` for columnar alignment.
243
+
244
+ ---
245
+
246
+ ## Card Layouts
247
+
248
+ Design each card's internal structure for its specific content — but keep the surface treatment consistent:
249
+
250
+ - Same border weight across all cards
251
+ - Same shadow depth (or none)
252
+ - Same corner radius
253
+ - Same padding scale
254
+
255
+ A metric card doesn't have to look like a settings card. Internal structure varies; surface treatment stays consistent.
256
+
257
+ ---
258
+
259
+ ## Controls
260
+
261
+ Never use native form elements for styled UI:
262
+ - `<select>` renders OS-native dropdown — build custom trigger + positioned dropdown
263
+ - `<input type="date">` renders OS-native calendar — build custom input + calendar popover
264
+ - Custom checkbox/radio: styled div with state management
265
+
266
+ Custom select triggers must use `display: inline-flex` with `white-space: nowrap`.
267
+
268
+ ---
269
+
270
+ ## Iconography
271
+
272
+ Icons clarify, not decorate. If removing an icon loses no meaning, remove it.
273
+
274
+ - Choose one icon set (e.g., Lucide) and use it consistently
275
+ - Standalone icons: give presence with subtle background containers
276
+ - Icons next to text: align optically, not mathematically
277
+ - Icon-only buttons: always include `aria-label`
278
+
279
+ ---
280
+
281
+ ## Animation
282
+
283
+ | Context | Duration | Easing |
284
+ |---------|----------|--------|
285
+ | Hover, focus | ~150ms | ease-out |
286
+ | Dropdowns, panels | 200-250ms | ease-out |
287
+ | Page transitions | 250-350ms | ease-in-out |
288
+
289
+ Avoid spring/bounce effects in professional interfaces. They feel playful, not serious.
290
+
291
+ ---
292
+
293
+ ## Interactive States
294
+
295
+ Every interactive element needs all states:
296
+
297
+ | State | Visual treatment |
298
+ |-------|-----------------|
299
+ | **Default** | Base appearance |
300
+ | **Hover** | Subtle bg shift or border emphasis |
301
+ | **Active/Pressed** | Slightly darker than hover |
302
+ | **Focus** | Focus ring (border-stronger or accent ring) |
303
+ | **Disabled** | Reduced opacity (0.5), no pointer events |
304
+
305
+ Data elements need additional states: **loading** (skeleton/spinner), **empty** (illustration + action), **error** (message + retry).
306
+
307
+ Missing states make an interface feel like a photograph of software.
308
+
309
+ ---
310
+
311
+ ## Navigation Context
312
+
313
+ Screens need grounding — a data table floating in space feels like a component demo.
314
+
315
+ Include:
316
+ - **Navigation** — sidebar or top nav showing position in the app
317
+ - **Location indicator** — breadcrumbs, page title, or active nav state
318
+ - **User context** — who's logged in, what workspace/org
319
+
320
+ **Sidebar approach:** Same background as main content with border separation. Different colors fragment the visual space.
321
+
322
+ ---
323
+
324
+ ## Dark Mode
325
+
326
+ Dark interfaces have different needs:
327
+
328
+ - **Borders over shadows** — shadows are less visible on dark backgrounds; lean on borders for definition
329
+ - **Desaturate semantics** — success/warning/error colors often need slight desaturation for dark surfaces
330
+ - **Same hierarchy, inverted values** — higher elevation = slightly lighter (opposite of light mode)
331
+ - **Surface shifts stay subtle** — a few percentage points of lightness between levels, not dramatic jumps
332
+
333
+ ---
334
+
335
+ ## Avoid
336
+
337
+ - **Harsh borders** — if borders are the first thing you see, they're too strong
338
+ - **Dramatic surface jumps** — elevation changes should be whisper-quiet
339
+ - **Inconsistent spacing** — the clearest sign of no system
340
+ - **Mixed depth strategies** — pick one approach and commit
341
+ - **Missing interaction states** — hover, focus, disabled, loading, error
342
+ - **Dramatic drop shadows** — shadows should be subtle, not attention-grabbing
343
+ - **Large radius on small elements**
344
+ - **Pure white cards on colored backgrounds**
345
+ - **Thick decorative borders**
346
+ - **Gradients and color for decoration** — color should mean something
347
+ - **Multiple accent colors** — dilutes focus
348
+ - **Different hues for different surfaces** — keep the same hue, shift only lightness
@@ -0,0 +1,73 @@
1
+ # Design System — Precision & Density
2
+
3
+ Starter template for dashboard, admin, and data-heavy interfaces. Adapt values to your product's world — this is a starting point, not a prescription.
4
+
5
+ ## Direction
6
+
7
+ **Personality:** Precision & Density
8
+ **Foundation:** Cool (slate)
9
+ **Depth:** Borders-only
10
+
11
+ ## Tokens
12
+
13
+ ### Spacing
14
+ Base: 4px
15
+ Scale: 4, 8, 12, 16, 24, 32
16
+
17
+ ### Colors
18
+ ```
19
+ --fg-primary: slate-900
20
+ --fg-secondary: slate-600
21
+ --fg-tertiary: slate-400
22
+ --fg-muted: slate-200
23
+ --border-default: rgba(0, 0, 0, 0.08)
24
+ --border-subtle: rgba(0, 0, 0, 0.05)
25
+ --accent: blue-600
26
+ ```
27
+
28
+ ### Radius
29
+ Scale: 4px, 6px, 8px (sharp, technical)
30
+
31
+ ### Typography
32
+ Font: system-ui (fast, native feel)
33
+ Scale: 11, 12, 13, 14 (base), 16, 18
34
+ Weights: 400, 500, 600
35
+ Mono: SF Mono, Consolas (for data)
36
+
37
+ ## Patterns
38
+
39
+ ### Button
40
+ - Height: 32px (compact)
41
+ - Padding: 8px 12px
42
+ - Radius: 4px
43
+ - Font: 13px, 500 weight
44
+ - Border: 1px solid
45
+ - Usage: Actions in dense layouts
46
+
47
+ ### Card
48
+ - Border: 0.5px solid (subtle)
49
+ - Padding: 12px
50
+ - Radius: 6px
51
+ - Shadow: none
52
+ - Usage: Data containers, metric displays
53
+
54
+ ### Table Cell
55
+ - Padding: 8px 12px
56
+ - Font: 13px tabular-nums
57
+ - Border-bottom: 1px solid (subtle)
58
+
59
+ ### Input
60
+ - Height: 32px
61
+ - Padding: 6px 8px
62
+ - Radius: 4px
63
+ - Background: inset (slightly darker)
64
+ - Border: 1px solid (default)
65
+
66
+ ## Decisions
67
+
68
+ | Decision | Rationale |
69
+ |----------|-----------|
70
+ | Borders-only | Information density matters more than lift |
71
+ | Compact sizing | Power users, high information density |
72
+ | System fonts | Performance, native feel |
73
+ | Sharp radius | Technical, precise personality |
@@ -0,0 +1,67 @@
1
+ # Design System — Warmth & Approachability
2
+
3
+ Starter template for collaborative, creative, and consumer-facing apps. Adapt values to your product's world — this is a starting point, not a prescription.
4
+
5
+ ## Direction
6
+
7
+ **Personality:** Warmth & Approachability
8
+ **Foundation:** Warm (stone)
9
+ **Depth:** Subtle shadows
10
+
11
+ ## Tokens
12
+
13
+ ### Spacing
14
+ Base: 4px
15
+ Scale: 8, 12, 16, 24, 32, 48 (generous)
16
+
17
+ ### Colors
18
+ ```
19
+ --fg-primary: stone-900
20
+ --fg-secondary: stone-600
21
+ --fg-tertiary: stone-400
22
+ --fg-muted: stone-200
23
+ --accent: orange-500
24
+ --shadow: 0 1px 3px rgba(0, 0, 0, 0.08)
25
+ ```
26
+
27
+ ### Radius
28
+ Scale: 8px, 12px, 16px (soft, friendly)
29
+
30
+ ### Typography
31
+ Font: Inter (approachable, readable)
32
+ Scale: 13, 14, 15, 16 (base), 18, 20, 24
33
+ Weights: 400, 500, 600
34
+
35
+ ## Patterns
36
+
37
+ ### Button
38
+ - Height: 40px (comfortable)
39
+ - Padding: 12px 20px
40
+ - Radius: 8px
41
+ - Font: 15px, 500 weight
42
+ - Shadow: subtle
43
+ - Usage: Primary actions, comfortable click targets
44
+
45
+ ### Card
46
+ - Border: none
47
+ - Padding: 20px
48
+ - Radius: 12px
49
+ - Shadow: 0 1px 3px rgba(0,0,0,0.08)
50
+ - Background: white on stone-50
51
+ - Usage: Content containers, feature cards
52
+
53
+ ### Input
54
+ - Height: 44px
55
+ - Padding: 12px 16px
56
+ - Radius: 8px
57
+ - Border: 1.5px solid (subtle)
58
+ - Usage: Form fields, generous touch targets
59
+
60
+ ## Decisions
61
+
62
+ | Decision | Rationale |
63
+ |----------|-----------|
64
+ | Subtle shadows | Gentle depth, approachable feel |
65
+ | Generous spacing | Focused tasks, not cramming information |
66
+ | Warm foundation | Human, comfortable, inviting |
67
+ | Soft radius | Friendly, organic personality |
@@ -0,0 +1,137 @@
1
+ # Validation & Memory Management
2
+
3
+ When and how to update `.interface-design/system.md`. Rules for pattern persistence and consistency verification.
4
+
5
+ ---
6
+
7
+ ## When to Add Patterns
8
+
9
+ Add to system.md when:
10
+ - Component used **2+ times** in the project
11
+ - Pattern is **reusable** across different contexts
12
+ - Has **specific measurements** worth remembering (height, padding, radius, shadow)
13
+
14
+ ## When NOT to Add
15
+
16
+ - **One-off components** — unique to a single page/context
17
+ - **Temporary experiments** — still iterating on the design
18
+ - **Variations better handled with props** — a Button with size variants doesn't need separate patterns per size
19
+
20
+ ---
21
+
22
+ ## Pattern Format
23
+
24
+ Keep patterns concise and scannable:
25
+
26
+ ```markdown
27
+ ### Button Primary
28
+ - Height: 36px
29
+ - Padding: 12px 16px
30
+ - Radius: 6px
31
+ - Font: 14px, 500 weight
32
+ - Usage: Primary actions, form submits
33
+ ```
34
+
35
+ Include:
36
+ - Name (component + variant)
37
+ - Key measurements (height, padding, radius)
38
+ - Typography if specific (size, weight)
39
+ - Usage context (when to use this pattern)
40
+
41
+ ---
42
+
43
+ ## Pattern Reuse Rules
44
+
45
+ Before creating any component, **check system.md first:**
46
+
47
+ 1. **Pattern exists?** Use it exactly. Don't reinvent.
48
+ 2. **Need a variation?** Extend the existing pattern, don't create a new one from scratch.
49
+ 3. **New pattern type?** Build it, then add to system.md after first use.
50
+ 4. **Pattern outdated?** Update the system.md entry, don't just override silently.
51
+
52
+ Memory compounds: each pattern saved makes future work faster and more consistent.
53
+
54
+ ---
55
+
56
+ ## system.md Structure
57
+
58
+ ```markdown
59
+ # Design System
60
+
61
+ ## Direction
62
+ Personality: [Precision & Density / Warmth / etc]
63
+ Foundation: [Cool slate / Warm stone / etc]
64
+ Depth: [Borders-only / Subtle shadows / Layered]
65
+
66
+ ## Tokens
67
+ ### Spacing
68
+ Base: 4px
69
+ Scale: 4, 8, 12, 16, 24, 32
70
+
71
+ ### Colors
72
+ --foreground: [value]
73
+ --secondary: [value]
74
+ --accent: [value]
75
+
76
+ ### Radius
77
+ Scale: [values]
78
+
79
+ ### Typography
80
+ Font: [family]
81
+ Scale: [sizes]
82
+ Weights: [values]
83
+
84
+ ## Patterns
85
+ ### [Component Name]
86
+ - [Key properties]
87
+ - Usage: [when to use]
88
+
89
+ ## Decisions
90
+ | Decision | Rationale | Date |
91
+ |----------|-----------|------|
92
+ | [choice] | [why] | [when] |
93
+ ```
94
+
95
+ ---
96
+
97
+ ## Consistency Checks
98
+
99
+ If system.md defines values, verify against them:
100
+
101
+ | Check | Rule |
102
+ |-------|------|
103
+ | **Spacing** | All values multiples of defined base unit |
104
+ | **Depth** | Using declared strategy throughout (borders-only = no shadows) |
105
+ | **Colors** | Using defined palette, no random hex codes |
106
+ | **Patterns** | Reusing documented patterns instead of creating new |
107
+ | **Radius** | Using defined scale, not ad-hoc values |
108
+ | **Typography** | Using defined font stack and size scale |
109
+
110
+ ---
111
+
112
+ ## When to Update system.md
113
+
114
+ | Trigger | Action |
115
+ |---------|--------|
116
+ | New reusable component built | Add pattern after confirmation |
117
+ | Existing pattern modified | Update pattern entry |
118
+ | Direction change | Update Direction section, verify cascading consistency |
119
+ | New token added | Add to Tokens section |
120
+ | Design decision made | Add to Decisions table with rationale |
121
+
122
+ ---
123
+
124
+ ## Offering to Save
125
+
126
+ After completing any UI building task, always offer:
127
+
128
+ ```
129
+ "Want me to save these patterns for future sessions?"
130
+ ```
131
+
132
+ If yes, write or update `.interface-design/system.md` with:
133
+ - Direction and feel (if new project)
134
+ - Depth strategy
135
+ - Spacing base unit
136
+ - Any new component patterns
137
+ - Key decisions with rationale