gspec 1.7.0 → 1.10.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 (72) hide show
  1. package/bin/gspec.js +275 -8
  2. package/commands/gspec.analyze.md +1 -1
  3. package/commands/gspec.implement.md +3 -3
  4. package/commands/gspec.practices.md +3 -1
  5. package/commands/gspec.stack.md +11 -6
  6. package/commands/gspec.style.md +18 -23
  7. package/dist/antigravity/gspec-analyze/SKILL.md +1 -1
  8. package/dist/antigravity/gspec-architect/SKILL.md +1 -1
  9. package/dist/antigravity/gspec-feature/SKILL.md +1 -1
  10. package/dist/antigravity/gspec-implement/SKILL.md +4 -4
  11. package/dist/antigravity/gspec-migrate/SKILL.md +5 -5
  12. package/dist/antigravity/gspec-practices/SKILL.md +4 -2
  13. package/dist/antigravity/gspec-profile/SKILL.md +1 -1
  14. package/dist/antigravity/gspec-research/SKILL.md +3 -3
  15. package/dist/antigravity/gspec-stack/SKILL.md +12 -7
  16. package/dist/antigravity/gspec-style/SKILL.md +19 -24
  17. package/dist/claude/gspec-analyze/SKILL.md +1 -1
  18. package/dist/claude/gspec-architect/SKILL.md +1 -1
  19. package/dist/claude/gspec-feature/SKILL.md +1 -1
  20. package/dist/claude/gspec-implement/SKILL.md +4 -4
  21. package/dist/claude/gspec-migrate/SKILL.md +5 -5
  22. package/dist/claude/gspec-practices/SKILL.md +4 -2
  23. package/dist/claude/gspec-profile/SKILL.md +1 -1
  24. package/dist/claude/gspec-research/SKILL.md +3 -3
  25. package/dist/claude/gspec-stack/SKILL.md +12 -7
  26. package/dist/claude/gspec-style/SKILL.md +19 -24
  27. package/dist/codex/gspec-analyze/SKILL.md +1 -1
  28. package/dist/codex/gspec-architect/SKILL.md +1 -1
  29. package/dist/codex/gspec-feature/SKILL.md +1 -1
  30. package/dist/codex/gspec-implement/SKILL.md +4 -4
  31. package/dist/codex/gspec-migrate/SKILL.md +5 -5
  32. package/dist/codex/gspec-practices/SKILL.md +4 -2
  33. package/dist/codex/gspec-profile/SKILL.md +1 -1
  34. package/dist/codex/gspec-research/SKILL.md +3 -3
  35. package/dist/codex/gspec-stack/SKILL.md +12 -7
  36. package/dist/codex/gspec-style/SKILL.md +19 -24
  37. package/dist/cursor/gspec-analyze.mdc +1 -1
  38. package/dist/cursor/gspec-architect.mdc +1 -1
  39. package/dist/cursor/gspec-feature.mdc +1 -1
  40. package/dist/cursor/gspec-implement.mdc +4 -4
  41. package/dist/cursor/gspec-migrate.mdc +5 -5
  42. package/dist/cursor/gspec-practices.mdc +4 -2
  43. package/dist/cursor/gspec-profile.mdc +1 -1
  44. package/dist/cursor/gspec-research.mdc +3 -3
  45. package/dist/cursor/gspec-stack.mdc +12 -7
  46. package/dist/cursor/gspec-style.mdc +19 -24
  47. package/dist/opencode/gspec-analyze/SKILL.md +168 -0
  48. package/dist/opencode/gspec-architect/SKILL.md +361 -0
  49. package/dist/opencode/gspec-feature/SKILL.md +204 -0
  50. package/dist/opencode/gspec-implement/SKILL.md +200 -0
  51. package/dist/opencode/gspec-migrate/SKILL.md +118 -0
  52. package/dist/opencode/gspec-practices/SKILL.md +137 -0
  53. package/dist/opencode/gspec-profile/SKILL.md +221 -0
  54. package/dist/opencode/gspec-research/SKILL.md +302 -0
  55. package/dist/opencode/gspec-stack/SKILL.md +305 -0
  56. package/dist/opencode/gspec-style/SKILL.md +224 -0
  57. package/package.json +3 -1
  58. package/starters/features/about-page.md +98 -0
  59. package/starters/features/contact-form.md +147 -0
  60. package/starters/features/contact-page.md +103 -0
  61. package/starters/features/home-page.md +103 -0
  62. package/starters/features/responsive-navbar.md +113 -0
  63. package/starters/features/services-page.md +103 -0
  64. package/starters/features/site-footer.md +121 -0
  65. package/starters/features/theme-switcher.md +124 -0
  66. package/starters/practices/tdd-pipeline-first.md +192 -0
  67. package/starters/stacks/astro-tailwind-github-pages.md +283 -0
  68. package/starters/stacks/nextjs-supabase-vercel.md +319 -0
  69. package/starters/stacks/nextjs-vercel-typescript.md +264 -0
  70. package/starters/styles/clean-professional.md +316 -0
  71. package/starters/styles/dark-minimal-developer.md +442 -0
  72. package/templates/spec-sync.md +1 -1
@@ -0,0 +1,316 @@
1
+ ---
2
+ gspec-version: 1.8.0
3
+ description: Clean, professional design with restrained palette and clear typography
4
+ ---
5
+
6
+ # Visual Style Guide
7
+
8
+ ## 1. Overview
9
+
10
+ - **Design Vision**: A clean, professional interface that communicates expertise and trustworthiness. The design recedes to let content take center stage — clear typography, generous whitespace, and purposeful color usage.
11
+ - **Target Platforms**: Responsive web (Mobile-First, scaling to Desktop/Tablet).
12
+ - **Visual Personality**: Professional, Approachable, Reliable, Pragmatic.
13
+ - **Design Rationale**: A professional services site must project competence and trustworthiness at a glance. The restrained palette and clear typography let the content speak, while strategic use of color draws attention to key actions. The minimal aesthetic avoids visual noise that could undermine credibility.
14
+
15
+ ## 2. Color Palette
16
+
17
+ High-contrast and professional, designed for readability across devices and lighting conditions.
18
+
19
+ ### Primary Colors
20
+
21
+ | Color Name | Hex | Usage |
22
+ | :--- | :--- | :--- |
23
+ | **Primary** | `#2563EB` | Primary action color. Used for primary buttons, active states, and key highlights. |
24
+ | **Primary Dark** | `#1D4ED8` | Hover states for primary actions. |
25
+ | **Primary Light** | `#60A5FA` | Accents on dark backgrounds. |
26
+
27
+ ### Secondary Colors
28
+
29
+ | Color Name | Hex | Usage |
30
+ | :--- | :--- | :--- |
31
+ | **Slate Dark** | `#0F172A` | Dark mode background. |
32
+ | **Slate Surface** | `#1E293B` | Dark mode cards/surfaces. |
33
+ | **Paper White** | `#FFFFFF` | Light mode background. |
34
+
35
+ ### Neutral Colors
36
+
37
+ | Role | Light Mode | Dark Mode | Usage |
38
+ | :--- | :--- | :--- | :--- |
39
+ | **Text Primary** | `#0F172A` | `#F8FAFC` | Headings, main body text. |
40
+ | **Text Secondary** | `#64748B` | `#94A3B8` | Labels, helper text, supporting content. |
41
+ | **Text Disabled** | `#CBD5E1` | `#475569` | Disabled fields, placeholders. |
42
+ | **Border** | `#E2E8F0` | `#334155` | Dividers, input borders. |
43
+
44
+ ### Semantic Colors
45
+
46
+ | State | Color | Hex | Usage |
47
+ | :--- | :--- | :--- | :--- |
48
+ | **Success** | Emerald | `#10B981` | Success confirmations, positive feedback. |
49
+ | **Error** | Red | `#EF4444` | Validation errors, destructive actions. |
50
+ | **Warning** | Amber | `#F59E0B` | Non-critical alerts, warnings. |
51
+ | **Info** | Sky | `#0EA5E9` | Informational tooltips, notes. |
52
+
53
+ ---
54
+
55
+ ## 3. Typography
56
+
57
+ Typography is the primary interface element. It must be legible and convey professionalism.
58
+
59
+ ### Font Families
60
+
61
+ - **Primary (UI & Headings)**: **Inter** (Google Fonts). Clean, highly legible, with a tall x-height.
62
+ - **Monospace (Code & Data)**: **JetBrains Mono** or system monospace fallback. Used for code snippets or technical content if needed.
63
+
64
+ ### Type Scale (Mobile-First)
65
+
66
+ | Level | Size (rem/px) | Line Height | Weight | Usage |
67
+ | :--- | :--- | :--- | :--- | :--- |
68
+ | **H1** | `1.875rem` (30px) | `1.2` | Bold (700) | Page titles |
69
+ | **H2** | `1.5rem` (24px) | `1.3` | SemiBold (600) | Section headers |
70
+ | **H3** | `1.25rem` (20px) | `1.4` | Medium (500) | Sub-sections, card titles |
71
+ | **Body Lg** | `1.125rem` (18px) | `1.5` | Regular (400) | Featured text, hero subtitles |
72
+ | **Body Base** | `1rem` (16px) | `1.5` | Regular (400) | Default text, descriptions |
73
+ | **Body Sm** | `0.875rem` (14px) | `1.4` | Regular (400) | Metadata, captions |
74
+ | **Caption** | `0.75rem` (12px) | `1.4` | Medium (500) | Tiny labels, tags |
75
+
76
+ ---
77
+
78
+ ## 4. Spacing & Layout
79
+
80
+ Standard 4px grid system.
81
+
82
+ ### Spacing Scale
83
+
84
+ - **xs**: `4px` (0.25rem) — Tight grouping (tags, icon+text)
85
+ - **sm**: `8px` (0.5rem) — Component internal spacing
86
+ - **md**: `16px` (1rem) — Standard separation between elements
87
+ - **lg**: `24px` (1.5rem) — Section separation
88
+ - **xl**: `32px` (2rem) — Major layout breaks
89
+
90
+ ### Grid System
91
+
92
+ - **Container**: Max-width 1152px centered with horizontal padding for comfortable reading width.
93
+ - **Columns**: Single-column layout on mobile. Multi-column grids on desktop where appropriate.
94
+
95
+ ### Layout Patterns
96
+
97
+ - **Mobile-first**: Single-column stacked layout.
98
+ - **Desktop**: Multi-column grids for cards and feature sections.
99
+ - **Flex containers**: Always apply `min-width: 0` on flex children that wrap content to prevent the flexbox `min-width: auto` default from causing horizontal overflow on mobile.
100
+ - **Content wrappers**: Use `overflow: hidden` on bounded containers (cards, main content area) to clip any remaining overflow.
101
+
102
+ ---
103
+
104
+ ## 5. Themes
105
+
106
+ ### Light Mode (Default)
107
+ - **Background**: `#FFFFFF`
108
+ - **Surface**: `#F8FAFC` or `#FFFFFF` with borders.
109
+ - **Text**: `#0F172A`
110
+
111
+ ### Dark Mode
112
+ - **Background**: `#0F172A` (Not pure black, reduces contrast strain).
113
+ - **Surface**: `#1E293B`
114
+ - **Primary Action**: `#2563EB` stands out vividly.
115
+ - **Text**: `#F8FAFC` for high legibility.
116
+
117
+ ### Theme Token Mapping
118
+ - Light and dark themes share the same token names. Switching themes swaps the values of `--color-background`, `--color-surface`, `--color-text-primary`, `--color-text-secondary`, `--color-text-disabled`, and `--color-border`.
119
+
120
+ ---
121
+
122
+ ## 6. Component Styling
123
+
124
+ > **This section defines visual styling only** — colors, borders, typography, and spacing for common UI elements. Component structure, behavior, and layout patterns are defined in feature PRDs.
125
+
126
+ ### Buttons
127
+
128
+ - **Primary**: Background `#2563EB`, text white, border-radius 6px.
129
+ - **Primary Hover**: Background `#1D4ED8`.
130
+ - **Secondary**: Background transparent, border 1px `#CBD5E1` (Light) / `#475569` (Dark), text `#334155` (Light) / `#CBD5E1` (Dark).
131
+ - **Ghost**: No border, no background. Hover: subtle background fill.
132
+ - **Disabled**: 50% opacity, `cursor: not-allowed`.
133
+ - **Sizes**: Default 40px height, Large 48px height. Minimum touch target 44x44px.
134
+
135
+ ### Form Elements
136
+
137
+ - **Input Background**: Transparent (Light) / Transparent (Dark).
138
+ - **Input Border**: 1px `#CBD5E1` (Light) / `#334155` (Dark), border-radius 6px.
139
+ - **Focus**: Border `#2563EB` (2px), ring `rgba(37, 99, 235, 0.2)`.
140
+ - **Error**: Border `#EF4444`, helper text in `#EF4444`.
141
+ - **Disabled**: 50% opacity.
142
+
143
+ ### Cards & Containers
144
+
145
+ - **Background**: `#FFFFFF` (Light) / `#1E293B` (Dark).
146
+ - **Border**: 1px solid `#E2E8F0` (Light) / `#334155` (Dark).
147
+ - **Border-radius**: 8px.
148
+ - **Shadow**: `--shadow-sm` or none. Heavy shadows are avoided for a clean look.
149
+
150
+ ### Navigation Elements
151
+
152
+ - **Link Color**: `--color-text-secondary` default, `--color-text-primary` on hover.
153
+ - **Active Link**: `--color-primary` text color.
154
+ - **Nav Background**: `--color-background` with optional `--shadow-md` for sticky positioning.
155
+
156
+ ---
157
+
158
+ ## 7. Visual Effects
159
+
160
+ ### Shadows & Elevation
161
+ Minimalist approach.
162
+ - **None**: Most elements.
163
+ - **sm**: `0 1px 2px rgba(0, 0, 0, 0.05)` for cards to lift slightly off background.
164
+ - **md**: `0 4px 6px rgba(0, 0, 0, 0.07)` for floating elements or sticky headers.
165
+
166
+ ### Border Radius
167
+ - **Standard**: 6px for inputs/buttons.
168
+ - **Large**: 8px for cards/containers.
169
+ - **Pills**: 9999px for status tags.
170
+
171
+ ### Transitions & Animations
172
+ - **Speed**: Fast (150ms or 200ms).
173
+ - **Ease**: `cubic-bezier(0, 0, 0.2, 1)` (ease-out).
174
+ - **Feedback**: Immediate visual feedback on interaction (hover color shift, subtle scale reduction on press for buttons).
175
+ - **Loading States**: Skeleton screens or spinner indicators for async operations.
176
+
177
+ ---
178
+
179
+ ## 8. Iconography
180
+
181
+ ### Icon Library
182
+ - **Library**: [HeroIcons](https://heroicons.com/) — MIT-licensed, SVG-based, tree-shakeable inline imports. Maintained by the Tailwind team for consistent pairing with utility-first CSS.
183
+ - **Style**: Outlined, 2px stroke.
184
+ - **Size**:
185
+ - Small: 16px.
186
+ - Standard: 20px.
187
+ - Navigation: 24px.
188
+
189
+ ### Usage Guidelines
190
+ - Pair icons with text labels in navigation for accessibility.
191
+ - Use familiar metaphors for common actions.
192
+
193
+ ---
194
+
195
+ ## 9. Imagery & Media
196
+
197
+ ### Photography Style
198
+ Not applicable for initial launch. If marketing imagery is added later, it should be authentic and professional — not generic stock photography.
199
+
200
+ ### Illustrations
201
+ Not applicable — the UI relies on typography, spacing, and iconography rather than illustrations. Empty states use icon + text patterns.
202
+
203
+ ---
204
+
205
+ ## 10. Accessibility
206
+
207
+ ### Contrast Requirements
208
+ - Maintain WCAG AA standard (4.5:1) for normal text.
209
+ - Large text (18px+ or 14px+ bold) requires 3:1 minimum.
210
+
211
+ ### Focus States
212
+ - Visible focus rings for keyboard/screen reader navigation.
213
+ - Focus ring style: 2px offset ring in primary color.
214
+
215
+ ### Text Accessibility
216
+ - **Touch**: All interactive elements must have at least 44px hit areas.
217
+ - Minimum body font size: 16px (1rem).
218
+
219
+ ---
220
+
221
+ ## 11. Responsive Design
222
+
223
+ ### Breakpoints
224
+ - **Mobile First**: Design for 375px width base.
225
+ - **sm**: 640px (Large phones)
226
+ - **md**: 768px (Tablets)
227
+ - **lg**: 1024px (Desktop)
228
+
229
+ ### Mobile-Specific Patterns
230
+ - Touch targets: minimum 44x44px on all interactive elements.
231
+ - Mobile navigation: Hamburger menu pattern (see Components > Navigation).
232
+
233
+ ---
234
+
235
+ ## 12. Usage Examples
236
+
237
+ ### Design Tokens
238
+
239
+ Tokens are defined as framework-agnostic CSS custom properties.
240
+
241
+ - Naming convention: `--color-*`, `--font-*`, `--spacing-*`, `--shadow-*`, `--radius-*`, `--duration-*`
242
+
243
+ ```css
244
+ :root {
245
+ /* Colors — Primary */
246
+ --color-primary: #2563EB;
247
+ --color-primary-dark: #1D4ED8;
248
+ --color-primary-light: #60A5FA;
249
+ --color-primary-foreground: #FFFFFF;
250
+
251
+ /* Colors — Semantic */
252
+ --color-success: #10B981;
253
+ --color-error: #EF4444;
254
+ --color-warning: #F59E0B;
255
+ --color-info: #0EA5E9;
256
+
257
+ /* Colors — Light Mode (default) */
258
+ --color-background: #FFFFFF;
259
+ --color-surface: #F8FAFC;
260
+ --color-text-primary: #0F172A;
261
+ --color-text-secondary: #64748B;
262
+ --color-text-disabled: #CBD5E1;
263
+ --color-border: #E2E8F0;
264
+
265
+ /* Typography */
266
+ --font-family-sans: 'Inter', sans-serif;
267
+ --font-family-mono: 'JetBrains Mono', monospace;
268
+ --font-size-h1: 1.875rem;
269
+ --font-size-h2: 1.5rem;
270
+ --font-size-h3: 1.25rem;
271
+ --font-size-body-lg: 1.125rem;
272
+ --font-size-body: 1rem;
273
+ --font-size-body-sm: 0.875rem;
274
+ --font-size-caption: 0.75rem;
275
+ --font-weight-regular: 400;
276
+ --font-weight-medium: 500;
277
+ --font-weight-semibold: 600;
278
+ --font-weight-bold: 700;
279
+
280
+ /* Spacing */
281
+ --spacing-xs: 0.25rem;
282
+ --spacing-sm: 0.5rem;
283
+ --spacing-md: 1rem;
284
+ --spacing-lg: 1.5rem;
285
+ --spacing-xl: 2rem;
286
+
287
+ /* Border Radius */
288
+ --radius-md: 0.375rem;
289
+ --radius-lg: 0.5rem;
290
+ --radius-full: 9999px;
291
+
292
+ /* Shadows */
293
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
294
+ --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.07);
295
+
296
+ /* Transitions */
297
+ --duration-fast: 150ms;
298
+ --duration-medium: 200ms;
299
+ --ease-out: cubic-bezier(0, 0, 0.2, 1);
300
+ }
301
+
302
+ /* Dark Mode */
303
+ [data-theme="dark"],
304
+ .dark {
305
+ --color-background: #0F172A;
306
+ --color-surface: #1E293B;
307
+ --color-text-primary: #F8FAFC;
308
+ --color-text-secondary: #94A3B8;
309
+ --color-text-disabled: #475569;
310
+ --color-border: #334155;
311
+ }
312
+ ```
313
+
314
+ ### Component Combinations
315
+
316
+ To be defined.