heraspec 0.1.12 → 0.1.14

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 (129) hide show
  1. package/LICENSE +22 -22
  2. package/README.md +188 -103
  3. package/bin/heraspec.js +4805 -1122
  4. package/bin/heraspec.js.map +4 -4
  5. package/dist/core/templates/skills/CHANGELOG.md +117 -117
  6. package/dist/core/templates/skills/README-template.md +58 -58
  7. package/dist/core/templates/skills/README.md +38 -38
  8. package/dist/core/templates/skills/content-optimization-skill.md +104 -104
  9. package/dist/core/templates/skills/data/design-systems.csv +54 -0
  10. package/dist/core/templates/skills/data/pages-proposed.csv +21 -21
  11. package/dist/core/templates/skills/data/pages.csv +9 -9
  12. package/dist/core/templates/skills/data/typography.csv +57 -57
  13. package/dist/core/templates/skills/deploy-documentation-skill.md +408 -0
  14. package/dist/core/templates/skills/design-system-skill.md +176 -0
  15. package/dist/core/templates/skills/documents/templates/documentation-landing-page.html +63 -63
  16. package/dist/core/templates/skills/documents/templates/documentation.html +49 -49
  17. package/dist/core/templates/skills/documents/templates/landing-script.js +38 -38
  18. package/dist/core/templates/skills/documents/templates/landing-style.css +158 -158
  19. package/dist/core/templates/skills/documents/templates/script.js +56 -56
  20. package/dist/core/templates/skills/documents/templates/style.css +155 -155
  21. package/dist/core/templates/skills/documents/templates/technical-doc-template.md +16 -16
  22. package/dist/core/templates/skills/documents/templates/user-guide-template.md +16 -16
  23. package/dist/core/templates/skills/documents-skill.md +104 -104
  24. package/dist/core/templates/skills/e2e-test-skill.md +119 -119
  25. package/dist/core/templates/skills/git-embed-skill.md +57 -0
  26. package/dist/core/templates/skills/integration-test-skill.md +118 -118
  27. package/dist/core/templates/skills/knowledge/README.md +63 -0
  28. package/dist/core/templates/skills/knowledge/design-systems/airbnb/DESIGN.md +246 -0
  29. package/dist/core/templates/skills/knowledge/design-systems/airtable/DESIGN.md +89 -0
  30. package/dist/core/templates/skills/knowledge/design-systems/apple/DESIGN.md +313 -0
  31. package/dist/core/templates/skills/knowledge/design-systems/bmw/DESIGN.md +180 -0
  32. package/dist/core/templates/skills/knowledge/design-systems/cal/DESIGN.md +259 -0
  33. package/dist/core/templates/skills/knowledge/design-systems/claude/DESIGN.md +312 -0
  34. package/dist/core/templates/skills/knowledge/design-systems/clay/DESIGN.md +304 -0
  35. package/dist/core/templates/skills/knowledge/design-systems/clickhouse/DESIGN.md +281 -0
  36. package/dist/core/templates/skills/knowledge/design-systems/cohere/DESIGN.md +266 -0
  37. package/dist/core/templates/skills/knowledge/design-systems/coinbase/DESIGN.md +129 -0
  38. package/dist/core/templates/skills/knowledge/design-systems/composio/DESIGN.md +307 -0
  39. package/dist/core/templates/skills/knowledge/design-systems/cursor/DESIGN.md +309 -0
  40. package/dist/core/templates/skills/knowledge/design-systems/elevenlabs/DESIGN.md +265 -0
  41. package/dist/core/templates/skills/knowledge/design-systems/expo/DESIGN.md +281 -0
  42. package/dist/core/templates/skills/knowledge/design-systems/figma/DESIGN.md +220 -0
  43. package/dist/core/templates/skills/knowledge/design-systems/framer/DESIGN.md +246 -0
  44. package/dist/core/templates/skills/knowledge/design-systems/hashicorp/DESIGN.md +278 -0
  45. package/dist/core/templates/skills/knowledge/design-systems/ibm/DESIGN.md +332 -0
  46. package/dist/core/templates/skills/knowledge/design-systems/index.json +72 -0
  47. package/dist/core/templates/skills/knowledge/design-systems/intercom/DESIGN.md +146 -0
  48. package/dist/core/templates/skills/knowledge/design-systems/kraken/DESIGN.md +125 -0
  49. package/dist/core/templates/skills/knowledge/design-systems/linear.app/DESIGN.md +367 -0
  50. package/dist/core/templates/skills/knowledge/design-systems/lovable/DESIGN.md +298 -0
  51. package/dist/core/templates/skills/knowledge/design-systems/minimax/DESIGN.md +257 -0
  52. package/dist/core/templates/skills/knowledge/design-systems/mintlify/DESIGN.md +326 -0
  53. package/dist/core/templates/skills/knowledge/design-systems/miro/DESIGN.md +108 -0
  54. package/dist/core/templates/skills/knowledge/design-systems/mistral.ai/DESIGN.md +261 -0
  55. package/dist/core/templates/skills/knowledge/design-systems/mongodb/DESIGN.md +266 -0
  56. package/dist/core/templates/skills/knowledge/design-systems/notion/DESIGN.md +309 -0
  57. package/dist/core/templates/skills/knowledge/design-systems/nvidia/DESIGN.md +293 -0
  58. package/dist/core/templates/skills/knowledge/design-systems/ollama/DESIGN.md +267 -0
  59. package/dist/core/templates/skills/knowledge/design-systems/opencode.ai/DESIGN.md +281 -0
  60. package/dist/core/templates/skills/knowledge/design-systems/pinterest/DESIGN.md +230 -0
  61. package/dist/core/templates/skills/knowledge/design-systems/posthog/DESIGN.md +256 -0
  62. package/dist/core/templates/skills/knowledge/design-systems/raycast/DESIGN.md +268 -0
  63. package/dist/core/templates/skills/knowledge/design-systems/replicate/DESIGN.md +261 -0
  64. package/dist/core/templates/skills/knowledge/design-systems/resend/DESIGN.md +303 -0
  65. package/dist/core/templates/skills/knowledge/design-systems/revolut/DESIGN.md +185 -0
  66. package/dist/core/templates/skills/knowledge/design-systems/runwayml/DESIGN.md +244 -0
  67. package/dist/core/templates/skills/knowledge/design-systems/sanity/DESIGN.md +357 -0
  68. package/dist/core/templates/skills/knowledge/design-systems/sentry/DESIGN.md +262 -0
  69. package/dist/core/templates/skills/knowledge/design-systems/spacex/DESIGN.md +194 -0
  70. package/dist/core/templates/skills/knowledge/design-systems/spotify/DESIGN.md +246 -0
  71. package/dist/core/templates/skills/knowledge/design-systems/stripe/DESIGN.md +322 -0
  72. package/dist/core/templates/skills/knowledge/design-systems/supabase/DESIGN.md +255 -0
  73. package/dist/core/templates/skills/knowledge/design-systems/superhuman/DESIGN.md +252 -0
  74. package/dist/core/templates/skills/knowledge/design-systems/together.ai/DESIGN.md +263 -0
  75. package/dist/core/templates/skills/knowledge/design-systems/uber/DESIGN.md +295 -0
  76. package/dist/core/templates/skills/knowledge/design-systems/vercel/DESIGN.md +310 -0
  77. package/dist/core/templates/skills/knowledge/design-systems/voltagent/DESIGN.md +323 -0
  78. package/dist/core/templates/skills/knowledge/design-systems/warp/DESIGN.md +253 -0
  79. package/dist/core/templates/skills/knowledge/design-systems/webflow/DESIGN.md +92 -0
  80. package/dist/core/templates/skills/knowledge/design-systems/wise/DESIGN.md +173 -0
  81. package/dist/core/templates/skills/knowledge/design-systems/x.ai/DESIGN.md +257 -0
  82. package/dist/core/templates/skills/knowledge/design-systems/zapier/DESIGN.md +328 -0
  83. package/dist/core/templates/skills/knowledge/frameworks/php/codeigniter/rise-cms/profile.json +27 -0
  84. package/dist/core/templates/skills/knowledge/frameworks/php/codeigniter/rise-cms/structure.md +137 -0
  85. package/dist/core/templates/skills/knowledge/frameworks/php/laravel/botble/profile.json +39 -0
  86. package/dist/core/templates/skills/knowledge/frameworks/php/laravel/botble/structure.md +208 -0
  87. package/dist/core/templates/skills/knowledge/frameworks/php/wordpress/core/profile.json +51 -0
  88. package/dist/core/templates/skills/knowledge/frameworks/php/wordpress/core/structure.md +369 -0
  89. package/dist/core/templates/skills/knowledge/index.json +65 -0
  90. package/dist/core/templates/skills/module-codebase-skill.md +110 -110
  91. package/dist/core/templates/skills/plugin-directory-skill.md +396 -396
  92. package/dist/core/templates/skills/project-memory-skill.md +222 -0
  93. package/dist/core/templates/skills/project-memory-skill.vi.md +223 -0
  94. package/dist/core/templates/skills/scripts/CODE_EXPLANATION.md +394 -394
  95. package/dist/core/templates/skills/scripts/SEARCH_ALGORITHMS_COMPARISON.md +421 -421
  96. package/dist/core/templates/skills/scripts/SEARCH_MODES_GUIDE.md +238 -238
  97. package/dist/core/templates/skills/scripts/__pycache__/core.cpython-311.pyc +0 -0
  98. package/dist/core/templates/skills/scripts/core.py +391 -385
  99. package/dist/core/templates/skills/scripts/search.py +1 -1
  100. package/dist/core/templates/skills/smart-explore-skill.md +141 -0
  101. package/dist/core/templates/skills/sourcecode-analyzer-skill.md +210 -0
  102. package/dist/core/templates/skills/sourcecode-analyzer-skill.vi.md +210 -0
  103. package/dist/core/templates/skills/suggestion-skill.md +118 -118
  104. package/dist/core/templates/skills/templates/accessibility-checklist.md +40 -40
  105. package/dist/core/templates/skills/templates/example-prompt-full-theme.md +333 -333
  106. package/dist/core/templates/skills/templates/page-types-guide.md +338 -338
  107. package/dist/core/templates/skills/templates/pages-proposed-summary.md +273 -273
  108. package/dist/core/templates/skills/templates/pre-delivery-checklist.md +42 -42
  109. package/dist/core/templates/skills/templates/prompt-template-full-theme.md +313 -313
  110. package/dist/core/templates/skills/templates/responsive-design.md +40 -40
  111. package/dist/core/templates/skills/ui-ux-skill.md +595 -584
  112. package/dist/core/templates/skills/unit-test-skill.md +111 -111
  113. package/dist/core/templates/skills/ux-element/templates/Controller.php +50 -50
  114. package/dist/core/templates/skills/ux-element/templates/Shortcode.php +23 -23
  115. package/dist/core/templates/skills/ux-element/templates/Template.html +20 -20
  116. package/dist/core/templates/skills/ux-element/templates/Thumbnail.svg +8 -8
  117. package/dist/core/templates/skills/ux-element/templates/View.php +21 -21
  118. package/dist/core/templates/skills/ux-element-skill.md +83 -83
  119. package/dist/core/templates/skills/wordpress-plugin-check-skill.md +151 -76
  120. package/dist/core/templates/skills/wordpress-plugin-standard/templates/admin-dashboard.php +47 -47
  121. package/dist/core/templates/skills/wordpress-plugin-standard/templates/admin-settings.php +60 -60
  122. package/dist/core/templates/skills/wordpress-plugin-standard/templates/assets/admin-css.css +22 -22
  123. package/dist/core/templates/skills/wordpress-plugin-standard/templates/assets/admin-js.js +15 -15
  124. package/dist/core/templates/skills/wordpress-plugin-standard/templates/plugin-main.php +169 -169
  125. package/dist/core/templates/skills/wordpress-plugin-standard/templates/readme.txt +41 -41
  126. package/dist/core/templates/skills/wordpress-plugin-standard/templates/uninstall.php +21 -21
  127. package/dist/core/templates/skills/wordpress-plugin-standard-skill.md +100 -100
  128. package/dist/index.js +4068 -278
  129. package/package.json +75 -72
@@ -0,0 +1,267 @@
1
+ # Design System: Ollama
2
+
3
+ ## 1. Visual Theme & Atmosphere
4
+
5
+ Ollama's interface is radical minimalism taken to its logical conclusion — a pure-white void where content floats without decoration, shadow, or color. The design philosophy mirrors the product itself: strip away everything unnecessary until only the essential tool remains. This is the digital equivalent of a Dieter Rams object — every pixel earns its place, and the absence of design IS the design.
6
+
7
+ The entire page exists in pure grayscale. There is zero chromatic color in the interface — no brand blue, no accent green, no semantic red. The only colors that exist are shades between pure black (`#000000`) and pure white (`#ffffff`), creating a monochrome environment that lets the user's mental model of "open models" remain uncolored by brand opinion. The Ollama llama mascot, rendered in simple black line art, is the only illustration — and even it's monochrome.
8
+
9
+ What makes Ollama distinctive is the combination of SF Pro Rounded (Apple's rounded system font) with an exclusively pill-shaped geometry (9999px radius on everything interactive). The rounded letterforms + rounded buttons + rounded containers create a cohesive "softness language" that makes a developer CLI tool feel approachable and friendly rather than intimidating. This is minimalism with warmth — not cold Swiss-style grid minimalism, but the kind where the edges are literally softened.
10
+
11
+ **Key Characteristics:**
12
+ - Pure white canvas with zero chromatic color — completely grayscale
13
+ - SF Pro Rounded headlines creating a distinctively Apple-like softness
14
+ - Binary border-radius system: 12px (containers) or 9999px (everything interactive)
15
+ - Zero shadows — depth comes exclusively from background color shifts and borders
16
+ - Pill-shaped geometry on all interactive elements (buttons, tabs, inputs, tags)
17
+ - The Ollama llama as the sole illustration — black line art, no color
18
+ - Extreme content restraint — the homepage is short, focused, and uncluttered
19
+
20
+ ## 2. Color Palette & Roles
21
+
22
+ ### Primary
23
+ - **Pure Black** (`#000000`): Primary headlines, primary links, and the darkest text. The only "color" that demands attention.
24
+ - **Near Black** (`#262626`): Button text on light surfaces, secondary headline weight.
25
+ - **Darkest Surface** (`#090909`): The darkest possible surface — barely distinguishable from pure black, used for footer or dark containers.
26
+
27
+ ### Surface & Background
28
+ - **Pure White** (`#ffffff`): The primary page background — not off-white, not cream, pure white. Button surfaces for secondary actions.
29
+ - **Snow** (`#fafafa`): The subtlest possible surface distinction from white — used for section backgrounds and barely-elevated containers.
30
+ - **Light Gray** (`#e5e5e5`): Button backgrounds, borders, and the primary containment color. The workhorse neutral.
31
+
32
+ ### Neutrals & Text
33
+ - **Stone** (`#737373`): Secondary body text, footer links, and de-emphasized content. The primary "muted" tone.
34
+ - **Mid Gray** (`#525252`): Emphasized secondary text, slightly darker than Stone.
35
+ - **Silver** (`#a3a3a3`): Tertiary text, placeholders, and deeply de-emphasized metadata.
36
+ - **Button Text Dark** (`#404040`): Specific to white-surface button text.
37
+
38
+ ### Semantic & Accent
39
+ - **Ring Blue** (`#3b82f6` at 50%): The ONLY non-gray color in the entire system — Tailwind's default focus ring, used exclusively for keyboard accessibility. Never visible in normal interaction flow.
40
+ - **Border Light** (`#d4d4d4`): A slightly darker gray for white-surface button borders.
41
+
42
+ ### Gradient System
43
+ - **None.** Ollama uses absolutely no gradients. Visual separation comes from flat color blocks and single-pixel borders. This is a deliberate, almost philosophical design choice.
44
+
45
+ ## 3. Typography Rules
46
+
47
+ ### Font Family
48
+ - **Display**: `SF Pro Rounded`, with fallbacks: `system-ui, -apple-system, system-ui`
49
+ - **Body / UI**: `ui-sans-serif`, with fallbacks: `system-ui, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji`
50
+ - **Monospace**: `ui-monospace`, with fallbacks: `SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New`
51
+
52
+ *Note: SF Pro Rounded is Apple's system font — it renders with rounded terminals on macOS/iOS and falls back to the system sans-serif on other platforms.*
53
+
54
+ ### Hierarchy
55
+
56
+ | Role | Font | Size | Weight | Line Height | Letter Spacing | Notes |
57
+ |------|------|------|--------|-------------|----------------|-------|
58
+ | Display / Hero | SF Pro Rounded | 48px (3rem) | 500 | 1.00 (tight) | normal | Maximum impact, rounded letterforms |
59
+ | Section Heading | SF Pro Rounded | 36px (2.25rem) | 500 | 1.11 (tight) | normal | Feature section titles |
60
+ | Sub-heading | SF Pro Rounded / ui-sans-serif | 30px (1.88rem) | 400–500 | 1.20 (tight) | normal | Card headings, feature names |
61
+ | Card Title | ui-sans-serif | 24px (1.5rem) | 400 | 1.33 | normal | Medium emphasis headings |
62
+ | Body Large | ui-sans-serif | 18px (1.13rem) | 400–500 | 1.56 | normal | Hero descriptions, button text |
63
+ | Body / Link | ui-sans-serif | 16px (1rem) | 400–500 | 1.50 | normal | Standard body text, navigation |
64
+ | Caption | ui-sans-serif | 14px (0.88rem) | 400 | 1.43 | normal | Metadata, descriptions |
65
+ | Small | ui-sans-serif | 12px (0.75rem) | 400 | 1.33 | normal | Smallest sans-serif text |
66
+ | Code Body | ui-monospace | 16px (1rem) | 400 | 1.50 | normal | Inline code, commands |
67
+ | Code Caption | ui-monospace | 14px (0.88rem) | 400 | 1.43 | normal | Code snippets, secondary |
68
+ | Code Small | ui-monospace | 12px (0.75rem) | 400–700 | 1.63 | normal | Tags, labels |
69
+
70
+ ### Principles
71
+ - **Rounded display, standard body**: SF Pro Rounded carries display headlines with its distinctive rounded terminals, while the standard system sans handles all body text. The rounded font IS the brand expression.
72
+ - **Weight restraint**: Only two weights matter — 400 (regular) for body and 500 (medium) for headings. No bold, no light, no black weight. This extreme restraint reinforces the minimal philosophy.
73
+ - **Tight display, comfortable body**: Headlines compress to 1.0 line-height, while body text relaxes to 1.43–1.56. The contrast creates clear hierarchy without needing weight contrast.
74
+ - **Monospace for developer identity**: Code blocks and terminal commands appear throughout as primary content, using the system monospace stack.
75
+
76
+ ## 4. Component Stylings
77
+
78
+ ### Buttons
79
+
80
+ **Gray Pill (Primary)**
81
+ - Background: Light Gray (`#e5e5e5`)
82
+ - Text: Near Black (`#262626`)
83
+ - Padding: 10px 24px
84
+ - Border: thin solid Light Gray (`1px solid #e5e5e5`)
85
+ - Radius: pill-shaped (9999px)
86
+ - The primary action button — understated, grayscale, always pill-shaped
87
+
88
+ **White Pill (Secondary)**
89
+ - Background: Pure White (`#ffffff`)
90
+ - Text: Button Text Dark (`#404040`)
91
+ - Padding: 10px 24px
92
+ - Border: thin solid Border Light (`1px solid #d4d4d4`)
93
+ - Radius: pill-shaped (9999px)
94
+ - Secondary action — visually lighter than Gray Pill
95
+
96
+ **Black Pill (CTA)**
97
+ - Background: Pure Black (`#000000`)
98
+ - Text: Pure White (`#ffffff`)
99
+ - Radius: pill-shaped (9999px)
100
+ - Inferred from "Create account" and "Explore" buttons
101
+ - Maximum emphasis — black on white
102
+
103
+ ### Cards & Containers
104
+ - Background: Pure White or Snow (`#fafafa`)
105
+ - Border: thin solid Light Gray (`1px solid #e5e5e5`) when needed
106
+ - Radius: comfortably rounded (12px) — the ONLY non-pill radius in the system
107
+ - Shadow: **none** — zero shadows on any element
108
+ - Hover: likely subtle background shift or border darkening
109
+
110
+ ### Inputs & Forms
111
+ - Background: Pure White
112
+ - Border: `1px solid #e5e5e5`
113
+ - Radius: pill-shaped (9999px) — search inputs and form fields are pill-shaped
114
+ - Focus: Ring Blue (`#3b82f6` at 50%) ring
115
+ - Placeholder: Silver (`#a3a3a3`)
116
+
117
+ ### Navigation
118
+ - Clean horizontal nav with minimal elements
119
+ - Logo: Ollama llama icon + wordmark in black
120
+ - Links: "Models", "Docs", "Pricing" in black at 16px, weight 400
121
+ - Search bar: pill-shaped with placeholder text
122
+ - Right side: "Sign in" link + "Download" black pill CTA
123
+ - No borders, no background — transparent nav on white page
124
+
125
+ ### Image Treatment
126
+ - The Ollama llama mascot is the only illustration — black line art on white
127
+ - Code screenshots/terminal outputs shown in bordered containers (12px radius)
128
+ - Integration logos displayed as simple icons in a grid
129
+ - No photographs, no gradients, no decorative imagery
130
+
131
+ ### Distinctive Components
132
+
133
+ **Tab Pills**
134
+ - Pill-shaped tab selectors (e.g., "Coding" | "OpenClaw")
135
+ - Active: Light Gray bg; Inactive: transparent
136
+ - All pill-shaped (9999px)
137
+
138
+ **Model Tags**
139
+ - Small pill-shaped tags (e.g., "ollama", "launch", "claude")
140
+ - Light Gray background, dark text
141
+ - The primary way to browse models
142
+
143
+ **Terminal Command Block**
144
+ - Monospace code showing `ollama run` commands
145
+ - Minimal styling — just a bordered 12px-radius container
146
+ - Copy button integrated
147
+
148
+ **Integration Grid**
149
+ - Grid of integration logos (Codex, Claude Code, OpenCode, LangChain, etc.)
150
+ - Each in a bordered pill or card with icon + name
151
+ - Tabbed by category (Coding, Documents & RAG, Automation, Chat)
152
+
153
+ ## 5. Layout Principles
154
+
155
+ ### Spacing System
156
+ - Base unit: 8px
157
+ - Scale: 4px, 6px, 8px, 9px, 10px, 12px, 14px, 16px, 20px, 24px, 32px, 40px, 48px, 88px, 112px
158
+ - Button padding: 10px 24px (consistent across all buttons)
159
+ - Card internal padding: approximately 24–32px
160
+ - Section vertical spacing: very generous (88px–112px)
161
+
162
+ ### Grid & Container
163
+ - Max container width: approximately 1024–1280px, centered
164
+ - Hero: centered single-column with llama illustration
165
+ - Feature sections: 2-column layout (text left, code right)
166
+ - Integration grid: responsive multi-column
167
+ - Footer: clean single-row
168
+
169
+ ### Whitespace Philosophy
170
+ - **Emptiness as luxury**: The page is remarkably short and sparse — no feature section overstays its welcome. Each concept gets minimal but sufficient space.
171
+ - **Content density is low by design**: Where other AI companies pack feature after feature, Ollama presents three ideas (run models, use with apps, integrations) and stops.
172
+ - **The white space IS the brand**: Pure white space with zero decoration communicates "this tool gets out of your way."
173
+
174
+ ### Border Radius Scale
175
+ - Comfortably rounded (12px): The sole container radius — code blocks, cards, panels
176
+ - Pill-shaped (9999px): Everything interactive — buttons, tabs, inputs, tags, badges
177
+
178
+ *This binary system is extreme and distinctive. There is no 4px, no 8px, no gradient of roundness. Elements are either containers (12px) or interactive (pill).*
179
+
180
+ ## 6. Depth & Elevation
181
+
182
+ | Level | Treatment | Use |
183
+ |-------|-----------|-----|
184
+ | Flat (Level 0) | No shadow, no border | Page background, most content |
185
+ | Bordered (Level 1) | `1px solid #e5e5e5` | Cards, code blocks, buttons |
186
+
187
+ **Shadow Philosophy**: Ollama uses **zero shadows**. This is not an oversight — it's a deliberate design decision. Every other major AI product site uses at least subtle shadows. Ollama's flat, shadowless approach creates a paper-like experience where elements are distinguished purely by background color and single-pixel borders. Depth is communicated through **content hierarchy and typography weight**, not visual layering.
188
+
189
+ ## 7. Do's and Don'ts
190
+
191
+ ### Do
192
+ - Use pure white (`#ffffff`) as the page background — never off-white or cream
193
+ - Use pill-shaped (9999px) radius on all interactive elements — buttons, tabs, inputs, tags
194
+ - Use 12px radius on all non-interactive containers — code blocks, cards, panels
195
+ - Keep the palette strictly grayscale — no chromatic colors except the blue focus ring
196
+ - Use SF Pro Rounded at weight 500 for display headings — the rounded terminals are the brand expression
197
+ - Maintain zero shadows — depth comes from borders and background shifts only
198
+ - Keep content density low — each section should present one clear idea
199
+ - Use monospace for terminal commands and code — it's primary content, not decoration
200
+ - Keep all buttons at 10px 24px padding with pill shape — consistency is absolute
201
+
202
+ ### Don't
203
+ - Don't introduce any chromatic color — no brand blue, no accent green, no warm tones
204
+ - Don't use border-radius between 12px and 9999px — the system is binary
205
+ - Don't add shadows to any element — the flat aesthetic is intentional
206
+ - Don't use font weights above 500 — no bold, no black weight
207
+ - Don't add decorative illustrations beyond the llama mascot
208
+ - Don't use gradients anywhere — flat blocks and borders only
209
+ - Don't overcomplicate the layout — two columns maximum, no complex grids
210
+ - Don't use borders heavier than 1px — containment is always the lightest possible touch
211
+ - Don't add hover animations or transitions — interactions should feel instant and direct
212
+
213
+ ## 8. Responsive Behavior
214
+
215
+ ### Breakpoints
216
+ | Name | Width | Key Changes |
217
+ |------|-------|-------------|
218
+ | Mobile | <640px | Single column, stacked everything, hamburger nav |
219
+ | Small Tablet | 640–768px | Minor adjustments to spacing |
220
+ | Tablet | 768–850px | 2-column layouts begin |
221
+ | Desktop | 850–1024px | Standard layout, expanded features |
222
+ | Large Desktop | 1024–1280px | Maximum content width |
223
+
224
+ ### Touch Targets
225
+ - All buttons are pill-shaped with generous padding (10px 24px)
226
+ - Navigation links at comfortable 16px size
227
+ - Minimum touch area easily exceeds 44x44px
228
+
229
+ ### Collapsing Strategy
230
+ - **Navigation**: Collapses to hamburger menu on mobile
231
+ - **Feature sections**: 2-column → stacked single column
232
+ - **Hero text**: 48px → 36px → 30px progressive scaling
233
+ - **Integration grid**: Multi-column → 2-column → single column
234
+ - **Code blocks**: Horizontal scroll maintained
235
+
236
+ ### Image Behavior
237
+ - Llama mascot scales proportionally
238
+ - Code blocks maintain monospace formatting
239
+ - Integration icons reflow to fewer columns
240
+ - No art direction changes
241
+
242
+ ## 9. Agent Prompt Guide
243
+
244
+ ### Quick Color Reference
245
+ - Primary Text: "Pure Black (#000000)"
246
+ - Page Background: "Pure White (#ffffff)"
247
+ - Secondary Text: "Stone (#737373)"
248
+ - Button Background: "Light Gray (#e5e5e5)"
249
+ - Borders: "Light Gray (#e5e5e5)"
250
+ - Muted Text: "Silver (#a3a3a3)"
251
+ - Dark Text: "Near Black (#262626)"
252
+ - Subtle Surface: "Snow (#fafafa)"
253
+
254
+ ### Example Component Prompts
255
+ - "Create a hero section on pure white (#ffffff) with an illustration centered above a headline at 48px SF Pro Rounded weight 500, line-height 1.0. Use Pure Black (#000000) text. Below, add a black pill-shaped CTA button (9999px radius, 10px 24px padding) and a gray pill button."
256
+ - "Design a code block with a 12px border-radius, 1px solid Light Gray (#e5e5e5) border on white background. Use ui-monospace at 16px for the terminal command. No shadow."
257
+ - "Build a tab bar with pill-shaped tabs (9999px radius). Active tab: Light Gray (#e5e5e5) background, Near Black (#262626) text. Inactive: transparent background, Stone (#737373) text."
258
+ - "Create an integration card grid. Each card is a bordered pill (9999px radius) or a 12px-radius card with 1px solid #e5e5e5 border. Icon + name inside. Grid of 4 columns on desktop."
259
+ - "Design a navigation bar: transparent background, no border. Ollama logo on the left, 3 text links (Pure Black, 16px, weight 400), pill search input in the center, 'Sign in' text link and black pill 'Download' button on the right."
260
+
261
+ ### Iteration Guide
262
+ 1. Focus on ONE component at a time
263
+ 2. Keep all values grayscale — "Stone (#737373)" not "use a light color"
264
+ 3. Always specify pill (9999px) or container (12px) radius — nothing in between
265
+ 4. Shadows are always zero — never add them
266
+ 5. Weight is always 400 or 500 — never bold
267
+ 6. If something feels too decorated, remove it — less is always more for Ollama
@@ -0,0 +1,281 @@
1
+ # Design System: OpenCode
2
+
3
+ ## 1. Visual Theme & Atmosphere
4
+
5
+ OpenCode's website embodies a terminal-native, monospace-first aesthetic that reflects its identity as an open source AI coding agent. The entire visual system is built on a stark dark-on-light contrast using a near-black background (`#201d1d`) with warm off-white text (`#fdfcfc`). This isn't a generic dark theme -- it's a warm, slightly reddish-brown dark that feels like a sophisticated terminal emulator rather than a cold IDE. The warm undertone in both the darks and lights (notice the subtle red channel in `#201d1d` -- rgb(32, 29, 29)) creates a cohesive, lived-in quality.
6
+
7
+ Berkeley Mono is the sole typeface, establishing an unapologetic monospace identity. Every element -- headings, body text, buttons, navigation -- shares this single font family, creating a unified "everything is code" philosophy. The heading at 38px bold with 1.50 line-height is generous and readable, while body text at 16px with weight 500 provides a slightly heavier-than-normal reading weight that enhances legibility on screen. The monospace grid naturally enforces alignment and rhythm across the layout.
8
+
9
+ The color system is deliberately minimal. The primary palette consists of just three functional tones: the warm near-black (`#201d1d`), a medium warm gray (`#9a9898`), and a bright off-white (`#fdfcfc`). Semantic colors borrow from the Apple HIG palette -- blue accent (`#007aff`), red danger (`#ff3b30`), green success (`#30d158`), orange warning (`#ff9f0a`) -- giving the interface familiar, trustworthy signal colors without adding brand complexity. Borders use a subtle warm transparency (`rgba(15, 0, 0, 0.12)`) that ties into the warm undertone of the entire system.
10
+
11
+ **Key Characteristics:**
12
+ - Berkeley Mono as the sole typeface -- monospace everywhere, no sans-serif or serif voices
13
+ - Warm near-black primary (`#201d1d`) with reddish-brown undertone, not pure black
14
+ - Off-white text (`#fdfcfc`) with warm tint, not pure white
15
+ - Minimal 4px border radius throughout -- sharp, utilitarian corners
16
+ - 8px base spacing system scaling up to 96px
17
+ - Apple HIG-inspired semantic colors (blue, red, green, orange)
18
+ - Transparent warm borders using `rgba(15, 0, 0, 0.12)`
19
+ - Email input with generous 20px padding and 6px radius -- the most generous component radius
20
+ - Single button variant: dark background, light text, tight vertical padding (4px 20px)
21
+ - Underlined links as default link style, reinforcing the text-centric identity
22
+
23
+ ## 2. Color Palette & Roles
24
+
25
+ ### Primary
26
+ - **OpenCode Dark** (`#201d1d`): Primary background, button fills, link text. A warm near-black with subtle reddish-brown warmth -- rgb(32, 29, 29).
27
+ - **OpenCode Light** (`#fdfcfc`): Primary text on dark surfaces, button text. A barely-warm off-white that avoids clinical pure white.
28
+ - **Mid Gray** (`#9a9898`): Secondary text, muted links. A neutral warm gray that bridges dark and light.
29
+
30
+ ### Secondary
31
+ - **Dark Surface** (`#302c2c`): Slightly lighter than primary dark, used for elevated surfaces and subtle differentiation.
32
+ - **Border Gray** (`#646262`): Stronger borders, outline rings on interactive elements.
33
+ - **Light Surface** (`#f1eeee`): Light mode surface, subtle background variation.
34
+
35
+ ### Accent
36
+ - **Accent Blue** (`#007aff`): Primary accent, links, interactive highlights. Apple system blue.
37
+ - **Accent Blue Hover** (`#0056b3`): Darker blue for hover states.
38
+ - **Accent Blue Active** (`#004085`): Deepest blue for pressed/active states.
39
+
40
+ ### Semantic
41
+ - **Danger Red** (`#ff3b30`): Error states, destructive actions. Apple system red.
42
+ - **Danger Hover** (`#d70015`): Darker red for hover on danger elements.
43
+ - **Danger Active** (`#a50011`): Deepest red for pressed danger states.
44
+ - **Success Green** (`#30d158`): Success states, positive feedback. Apple system green.
45
+ - **Warning Orange** (`#ff9f0a`): Warning states, caution signals. Apple system orange.
46
+ - **Warning Hover** (`#cc7f08`): Darker orange for hover on warning elements.
47
+ - **Warning Active** (`#995f06`): Deepest orange for pressed warning states.
48
+
49
+ ### Text Scale
50
+ - **Text Muted** (`#6e6e73`): Muted labels, disabled text, placeholder content.
51
+ - **Text Secondary** (`#424245`): Secondary text on light backgrounds, captions.
52
+
53
+ ### Border
54
+ - **Border Warm** (`rgba(15, 0, 0, 0.12)`): Primary border color, warm transparent black with red tint.
55
+ - **Border Tab** (`#9a9898`): Tab underline border, 2px solid bottom.
56
+ - **Border Outline** (`#646262`): 1px solid outline border for containers.
57
+
58
+ ## 3. Typography Rules
59
+
60
+ ### Font Family
61
+ - **Universal**: `Berkeley Mono`, with fallbacks: `IBM Plex Mono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace`
62
+
63
+ ### Hierarchy
64
+
65
+ | Role | Size | Weight | Line Height | Notes |
66
+ |------|------|--------|-------------|-------|
67
+ | Heading 1 | 38px (2.38rem) | 700 | 1.50 | Hero headlines, page titles |
68
+ | Heading 2 | 16px (1.00rem) | 700 | 1.50 | Section titles, bold emphasis |
69
+ | Body | 16px (1.00rem) | 400 | 1.50 | Standard body text, paragraphs |
70
+ | Body Medium | 16px (1.00rem) | 500 | 1.50 | Links, button text, nav items |
71
+ | Body Tight | 16px (1.00rem) | 500 | 1.00 (tight) | Compact labels, tab items |
72
+ | Caption | 14px (0.88rem) | 400 | 2.00 (relaxed) | Footnotes, metadata, small labels |
73
+
74
+ ### Principles
75
+ - **One font, one voice**: Berkeley Mono is used exclusively. There is no typographic variation between display, body, and code -- everything speaks in the same monospace register. Hierarchy is achieved through size and weight alone.
76
+ - **Weight as hierarchy**: 700 for headings, 500 for interactive/medium emphasis, 400 for body text. Three weight levels create the entire hierarchy.
77
+ - **Generous line-height**: 1.50 as the standard line-height gives text room to breathe within the monospace grid. The relaxed 2.00 line-height on captions creates clear visual separation.
78
+ - **Tight for interaction**: Interactive elements (tabs, compact labels) use 1.00 line-height for dense, clickable targets.
79
+
80
+ ## 4. Component Stylings
81
+
82
+ ### Buttons
83
+
84
+ **Primary (Dark Fill)**
85
+ - Background: `#201d1d` (OpenCode Dark)
86
+ - Text: `#fdfcfc` (OpenCode Light)
87
+ - Padding: 4px 20px
88
+ - Radius: 4px
89
+ - Font: 16px Berkeley Mono, weight 500, line-height 2.00 (relaxed)
90
+ - Outline: `rgb(253, 252, 252) none 0px`
91
+ - Use: Primary CTAs, main actions
92
+
93
+ ### Inputs
94
+
95
+ **Email Input**
96
+ - Background: `#f8f7f7` (light neutral)
97
+ - Text: `#201d1d`
98
+ - Border: `1px solid rgba(15, 0, 0, 0.12)`
99
+ - Padding: 20px
100
+ - Radius: 6px
101
+ - Font: Berkeley Mono, standard size
102
+ - Use: Form fields, email capture
103
+
104
+ ### Links
105
+
106
+ **Default Link**
107
+ - Color: `#201d1d`
108
+ - Decoration: underline 1px
109
+ - Font-weight: 500
110
+ - Use: Primary text links in body content
111
+
112
+ **Light Link**
113
+ - Color: `#fdfcfc`
114
+ - Decoration: none
115
+ - Use: Links on dark backgrounds, navigation
116
+
117
+ **Muted Link**
118
+ - Color: `#9a9898`
119
+ - Decoration: none
120
+ - Use: Footer links, secondary navigation
121
+
122
+ ### Tabs
123
+
124
+ **Tab Navigation**
125
+ - Border-bottom: `2px solid #9a9898` (active tab indicator)
126
+ - Font: 16px, weight 500, line-height 1.00
127
+ - Use: Section switching, content filtering
128
+
129
+ ### Navigation
130
+ - Clean horizontal layout with Berkeley Mono throughout
131
+ - Brand logotype left-aligned in monospace
132
+ - Links at 16px weight 500 with underline decoration
133
+ - Dark background matching page background
134
+ - No backdrop blur or transparency -- solid surfaces only
135
+
136
+ ### Image Treatment
137
+ - Terminal/code screenshots as hero imagery
138
+ - Dark terminal aesthetic with monospace type
139
+ - Minimal borders, content speaks for itself
140
+
141
+ ### Distinctive Components
142
+
143
+ **Terminal Hero**
144
+ - Full-width dark terminal window as hero element
145
+ - ASCII art / stylized logo within terminal frame
146
+ - Monospace command examples with syntax highlighting
147
+ - Reinforces the CLI-first identity of the product
148
+
149
+ **Feature List**
150
+ - Bulleted feature items with Berkeley Mono text
151
+ - Weight 500 for feature names, 400 for descriptions
152
+ - Tight vertical spacing between items
153
+ - No cards or borders -- pure text layout
154
+
155
+ **Email Capture**
156
+ - Light background input (`#f8f7f7`) contrasting dark page
157
+ - Generous 20px padding for comfortable typing
158
+ - 6px radius -- the roundest element in the system
159
+ - Newsletter/waitlist pattern
160
+
161
+ ## 5. Layout Principles
162
+
163
+ ### Spacing System
164
+ - Base unit: 8px
165
+ - Fine scale: 1px, 2px, 4px (sub-8px for borders and micro-adjustments)
166
+ - Standard scale: 8px, 12px, 16px, 20px, 24px
167
+ - Extended scale: 32px, 40px, 48px, 64px, 80px, 96px
168
+ - The system follows a clean 4/8px grid with consistent doubling
169
+
170
+ ### Grid & Container
171
+ - Max content width: approximately 800-900px (narrow, reading-optimized)
172
+ - Single-column layout as the primary pattern
173
+ - Centered content with generous horizontal margins
174
+ - Hero section: full-width dark terminal element
175
+ - Feature sections: single-column text blocks
176
+ - Footer: multi-column link grid
177
+
178
+ ### Whitespace Philosophy
179
+ - **Monospace rhythm**: The fixed-width nature of Berkeley Mono creates a natural vertical grid. Line-heights of 1.50 and 2.00 maintain consistent rhythm.
180
+ - **Narrow and focused**: Content is constrained to a narrow column, creating generous side margins that focus attention on the text.
181
+ - **Sections through spacing**: No decorative dividers. Sections are separated by generous vertical spacing (48-96px) rather than borders or background changes.
182
+
183
+ ### Border Radius Scale
184
+ - Micro (4px): Default for all elements -- buttons, containers, badges
185
+ - Input (6px): Form inputs get slightly more roundness
186
+ - The entire system uses just two radius values, reinforcing the utilitarian aesthetic
187
+
188
+ ## 6. Depth & Elevation
189
+
190
+ | Level | Treatment | Use |
191
+ |-------|-----------|-----|
192
+ | Flat (Level 0) | No shadow, no border | Default state for most elements |
193
+ | Border Subtle (Level 1) | `1px solid rgba(15, 0, 0, 0.12)` | Section dividers, input borders, horizontal rules |
194
+ | Border Tab (Level 2) | `2px solid #9a9898` bottom only | Active tab indicator |
195
+ | Border Outline (Level 3) | `1px solid #646262` | Container outlines, elevated elements |
196
+
197
+ **Shadow Philosophy**: OpenCode's depth system is intentionally flat. There are no box-shadows in the extracted tokens -- zero shadow values were detected. Depth is communicated exclusively through border treatments and background color shifts. This flatness is consistent with the terminal aesthetic: terminals don't have shadows, and neither does OpenCode. The three border levels (transparent warm, tab indicator, solid outline) create sufficient visual hierarchy without any elevation illusion.
198
+
199
+ ### Decorative Depth
200
+ - Background color shifts between `#201d1d` and `#302c2c` create subtle surface differentiation
201
+ - Transparent borders at 12% opacity provide barely-visible structure
202
+ - The warm reddish tint in border colors (`rgba(15, 0, 0, 0.12)`) ties borders to the overall warm dark palette
203
+ - No gradients, no blurs, no ambient effects -- pure flat terminal aesthetic
204
+
205
+ ## 7. Interaction & Motion
206
+
207
+ ### Hover States
208
+ - Links: color shift from default to accent blue (`#007aff`) or underline style change
209
+ - Buttons: subtle background lightening or border emphasis
210
+ - Accent blue provides a three-stage hover sequence: `#007aff` → `#0056b3` → `#004085` (default → hover → active)
211
+ - Danger red: `#ff3b30` → `#d70015` → `#a50011`
212
+ - Warning orange: `#ff9f0a` → `#cc7f08` → `#995f06`
213
+
214
+ ### Focus States
215
+ - Border-based focus: increased border opacity or solid border color
216
+ - No shadow-based focus rings -- consistent with the flat, no-shadow aesthetic
217
+ - Keyboard focus likely uses outline or border color shift to accent blue
218
+
219
+ ### Transitions
220
+ - Minimal transitions expected -- terminal-inspired interfaces favor instant state changes
221
+ - Color transitions: 100-150ms for subtle state feedback
222
+ - No scale, rotate, or complex transform animations
223
+
224
+ ## 8. Responsive Behavior
225
+
226
+ ### Breakpoints
227
+ | Name | Width | Key Changes |
228
+ |------|-------|-------------|
229
+ | Mobile | <640px | Single column, reduced padding, heading scales down |
230
+ | Tablet | 640-1024px | Content width expands, slight padding increase |
231
+ | Desktop | >1024px | Full content width (~800-900px centered), maximum whitespace |
232
+
233
+ ### Touch Targets
234
+ - Buttons with 4px 20px padding provide adequate horizontal touch area
235
+ - Input fields with 20px padding ensure comfortable mobile typing
236
+ - Tab items at 16px with tight line-height may need mobile adaptation
237
+
238
+ ### Collapsing Strategy
239
+ - Hero heading: 38px → 28px → 24px on smaller screens
240
+ - Navigation: horizontal links → hamburger/drawer on mobile
241
+ - Feature lists: maintain single-column, reduce horizontal padding
242
+ - Terminal hero: maintain full-width, reduce internal padding
243
+ - Footer columns: multi-column → stacked single column
244
+ - Section spacing: 96px → 64px → 48px on mobile
245
+
246
+ ### Image Behavior
247
+ - Terminal screenshots maintain aspect ratio and border treatment
248
+ - Full-width elements scale proportionally
249
+ - Monospace type maintains readability at all sizes due to fixed-width nature
250
+
251
+ ## 9. Agent Prompt Guide
252
+
253
+ ### Quick Color Reference
254
+ - Page background: `#201d1d` (warm near-black)
255
+ - Primary text: `#fdfcfc` (warm off-white)
256
+ - Secondary text: `#9a9898` (warm gray)
257
+ - Muted text: `#6e6e73`
258
+ - Accent: `#007aff` (blue)
259
+ - Danger: `#ff3b30` (red)
260
+ - Success: `#30d158` (green)
261
+ - Warning: `#ff9f0a` (orange)
262
+ - Button bg: `#201d1d`, button text: `#fdfcfc`
263
+ - Border: `rgba(15, 0, 0, 0.12)` (warm transparent)
264
+ - Input bg: `#f8f7f7`, input border: `rgba(15, 0, 0, 0.12)`
265
+
266
+ ### Example Component Prompts
267
+ - "Create a hero section on `#201d1d` warm dark background. Headline at 38px Berkeley Mono weight 700, line-height 1.50, color `#fdfcfc`. Subtitle at 16px weight 400, color `#9a9898`. Primary CTA button (`#201d1d` bg with `1px solid #646262` border, 4px radius, 4px 20px padding, `#fdfcfc` text at weight 500)."
268
+ - "Design a feature list: single-column on `#201d1d` background. Feature name at 16px Berkeley Mono weight 700, color `#fdfcfc`. Description at 16px weight 400, color `#9a9898`. No cards, no borders -- pure text with 16px vertical gap between items."
269
+ - "Build an email capture form: `#f8f7f7` background input, `1px solid rgba(15, 0, 0, 0.12)` border, 6px radius, 20px padding. Adjacent dark button (`#201d1d` bg, `#fdfcfc` text, 4px radius, 4px 20px padding). Berkeley Mono throughout."
270
+ - "Create navigation: sticky `#201d1d` background. 16px Berkeley Mono weight 500 for links, `#fdfcfc` text. Brand name left-aligned in monospace. Links with underline decoration. No blur, no transparency -- solid dark surface."
271
+ - "Design a footer: `#201d1d` background, multi-column link grid. Links at 16px Berkeley Mono weight 400, color `#9a9898`. Section headers at weight 700. Border-top `1px solid rgba(15, 0, 0, 0.12)` separator."
272
+
273
+ ### Iteration Guide
274
+ 1. Berkeley Mono is the only font -- never introduce a second typeface. Size and weight create all hierarchy.
275
+ 2. Keep surfaces flat: no shadows, no gradients, no blur effects. Use borders and background shifts only.
276
+ 3. The warm undertone matters: use `#201d1d` not `#000000`, use `#fdfcfc` not `#ffffff`. The reddish warmth is subtle but essential.
277
+ 4. Border radius is 4px everywhere except inputs (6px). Never use rounded pills or large radii.
278
+ 5. Semantic colors follow Apple HIG: `#007aff` blue, `#ff3b30` red, `#30d158` green, `#ff9f0a` orange. Each has hover and active darkened variants.
279
+ 6. Three-stage interaction: default → hover (darkened) → active (deeply darkened) for all semantic colors.
280
+ 7. Borders use `rgba(15, 0, 0, 0.12)` -- a warm transparent dark, not neutral gray. This ties borders to the warm palette.
281
+ 8. Spacing follows an 8px grid: 8, 16, 24, 32, 40, 48, 64, 80, 96px. Use 4px for fine adjustments only.