design-protocol 1.0.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.
- package/LICENSE +21 -0
- package/README.md +225 -0
- package/agents/dp-researcher.md +239 -0
- package/agents/dp-verifier.md +207 -0
- package/bin/install.js +464 -0
- package/commands/dp-back.md +221 -0
- package/commands/dp-discuss.md +257 -0
- package/commands/dp-execute.md +513 -0
- package/commands/dp-journey.md +85 -0
- package/commands/dp-progress.md +178 -0
- package/commands/dp-roadmap.md +83 -0
- package/commands/dp-skip.md +186 -0
- package/commands/dp-start.md +510 -0
- package/commands/dp-storytell.md +94 -0
- package/commands/dp-verify.md +207 -0
- package/package.json +59 -0
- package/skills/dp-color/SKILL.md +214 -0
- package/skills/dp-color/export_tokens.py +297 -0
- package/skills/dp-color/references/apca-contrast.md +87 -0
- package/skills/dp-color/references/hue-emotions.md +109 -0
- package/skills/dp-color/references/oklch-gamut.md +79 -0
- package/skills/dp-color/references/pitfalls.md +171 -0
- package/skills/dp-color/references/scale-patterns.md +206 -0
- package/skills/dp-color/references/tool-workflows.md +200 -0
- package/skills/dp-discovery/SKILL.md +480 -0
- package/skills/dp-eng_review/SKILL.md +471 -0
- package/skills/dp-eng_review/references/code-review-checklist.md +385 -0
- package/skills/dp-eng_review/references/react-patterns.md +512 -0
- package/skills/dp-eng_review/references/shadcn-patterns.md +510 -0
- package/skills/dp-eng_review/references/tailwind-conventions.md +351 -0
- package/skills/dp-journey/SKILL.md +682 -0
- package/skills/dp-journey/references/journey-types.md +97 -0
- package/skills/dp-journey/references/map-structures.md +177 -0
- package/skills/dp-journey/references/omnichannel-patterns.md +208 -0
- package/skills/dp-journey/references/research-methods.md +125 -0
- package/skills/dp-prd/SKILL.md +201 -0
- package/skills/dp-prd/references/claude-code-spec.md +107 -0
- package/skills/dp-prd/references/interview-questions.md +158 -0
- package/skills/dp-prd/references/section-templates.md +231 -0
- package/skills/dp-research/SKILL.md +540 -0
- package/skills/dp-research/references/facilitation-guide.md +291 -0
- package/skills/dp-research/references/interview-guide-template.md +190 -0
- package/skills/dp-research/references/method-selection.md +195 -0
- package/skills/dp-research/references/question-writing.md +244 -0
- package/skills/dp-research/references/research-report-template.md +363 -0
- package/skills/dp-research/references/synthesis-methods.md +289 -0
- package/skills/dp-research/references/usability-test-template.md +260 -0
- package/skills/dp-roadmap/SKILL.md +648 -0
- package/skills/dp-roadmap/references/prioritization-frameworks.md +312 -0
- package/skills/dp-roadmap/references/roadmap-structures.md +179 -0
- package/skills/dp-roadmap/references/roadmap-workshops.md +264 -0
- package/skills/dp-roadmap/references/theme-development.md +168 -0
- package/skills/dp-storytell/SKILL.md +645 -0
- package/skills/dp-storytell/references/audience-playbooks.md +260 -0
- package/skills/dp-storytell/references/content-type-templates.md +310 -0
- package/skills/dp-storytell/references/delivery-tactics.md +228 -0
- package/skills/dp-storytell/references/narrative-frameworks.md +259 -0
- package/skills/dp-ui/SKILL.md +503 -0
- package/skills/dp-ui/references/b2b-enterprise-patterns.md +319 -0
- package/skills/dp-ui/references/data-visualization.md +304 -0
- package/skills/dp-ui/references/visual-design-principles.md +237 -0
- package/skills/dp-ux/SKILL.md +414 -0
- package/skills/dp-ux/references/accessibility-checklist.md +128 -0
- package/skills/dp-ux/references/product-excellence.md +149 -0
- package/skills/dp-ux/references/usability-principles.md +140 -0
- package/skills/dp-ux/references/ux-patterns.md +221 -0
- package/templates/config.json +55 -0
- package/templates/context.md +96 -0
- package/templates/project.md +83 -0
- package/templates/requirements.md +137 -0
- package/templates/roadmap.md +168 -0
- package/templates/state.md +107 -0
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
# Tailwind Conventions
|
|
2
|
+
|
|
3
|
+
Project-specific Tailwind CSS standards and patterns. Reference this when reviewing styling consistency.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Spacing System {#spacing}
|
|
8
|
+
|
|
9
|
+
Always use the Tailwind spacing scale. Never use arbitrary values unless absolutely necessary.
|
|
10
|
+
|
|
11
|
+
### Spacing Scale Reference
|
|
12
|
+
|
|
13
|
+
| Class | Value | Use Case |
|
|
14
|
+
|-------|-------|----------|
|
|
15
|
+
| `*-0` | 0px | Reset |
|
|
16
|
+
| `*-0.5` | 2px | Micro spacing |
|
|
17
|
+
| `*-1` | 4px | Tight spacing |
|
|
18
|
+
| `*-2` | 8px | Small gaps |
|
|
19
|
+
| `*-3` | 12px | Default gap |
|
|
20
|
+
| `*-4` | 16px | Section spacing |
|
|
21
|
+
| `*-6` | 24px | Large gaps |
|
|
22
|
+
| `*-8` | 32px | Section breaks |
|
|
23
|
+
| `*-12` | 48px | Major sections |
|
|
24
|
+
| `*-16` | 64px | Page sections |
|
|
25
|
+
|
|
26
|
+
### Spacing Anti-Patterns
|
|
27
|
+
|
|
28
|
+
```tsx
|
|
29
|
+
// BAD: Arbitrary values
|
|
30
|
+
<div className="mt-[13px] p-[7px] gap-[11px]">
|
|
31
|
+
|
|
32
|
+
// GOOD: Use scale
|
|
33
|
+
<div className="mt-3 p-2 gap-3">
|
|
34
|
+
|
|
35
|
+
// BAD: Inconsistent spacing
|
|
36
|
+
<div className="p-4">
|
|
37
|
+
<div className="p-3"> {/* Different from parent */}
|
|
38
|
+
<div className="p-5"> {/* Different again */}
|
|
39
|
+
|
|
40
|
+
// GOOD: Consistent rhythm
|
|
41
|
+
<div className="p-6">
|
|
42
|
+
<div className="p-4">
|
|
43
|
+
<div className="p-4">
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### When Arbitrary Values Are OK
|
|
47
|
+
|
|
48
|
+
```tsx
|
|
49
|
+
// OK: Matching specific design specs or logos
|
|
50
|
+
<div className="w-[120px]"> {/* Logo container with exact size */}
|
|
51
|
+
|
|
52
|
+
// OK: Complex calculations
|
|
53
|
+
<div className="h-[calc(100vh-64px)]"> {/* Full height minus header */}
|
|
54
|
+
|
|
55
|
+
// OK: Unusual aspect ratios
|
|
56
|
+
<div className="aspect-[16/9]">
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Color Usage
|
|
62
|
+
|
|
63
|
+
### Use Design Tokens
|
|
64
|
+
|
|
65
|
+
```tsx
|
|
66
|
+
// BAD: Raw color values
|
|
67
|
+
<div className="bg-slate-100 text-gray-900 border-gray-200">
|
|
68
|
+
<div className="text-[#1a1a1a] bg-[#f5f5f5]">
|
|
69
|
+
|
|
70
|
+
// GOOD: Design tokens (from shadcn/ui)
|
|
71
|
+
<div className="bg-background text-foreground border-border">
|
|
72
|
+
<div className="bg-muted text-muted-foreground">
|
|
73
|
+
<div className="bg-card text-card-foreground">
|
|
74
|
+
<div className="bg-primary text-primary-foreground">
|
|
75
|
+
<div className="bg-secondary text-secondary-foreground">
|
|
76
|
+
<div className="bg-accent text-accent-foreground">
|
|
77
|
+
<div className="bg-destructive text-destructive-foreground">
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Semantic Color Usage
|
|
81
|
+
|
|
82
|
+
| Token | Use For |
|
|
83
|
+
|-------|---------|
|
|
84
|
+
| `background/foreground` | Main page background and text |
|
|
85
|
+
| `card/card-foreground` | Elevated surfaces |
|
|
86
|
+
| `muted/muted-foreground` | Subdued backgrounds and secondary text |
|
|
87
|
+
| `primary/primary-foreground` | Primary actions, links |
|
|
88
|
+
| `secondary/secondary-foreground` | Secondary actions |
|
|
89
|
+
| `accent/accent-foreground` | Highlights, hover states |
|
|
90
|
+
| `destructive/destructive-foreground` | Delete, error states |
|
|
91
|
+
| `border` | All borders |
|
|
92
|
+
| `input` | Form input borders |
|
|
93
|
+
| `ring` | Focus rings |
|
|
94
|
+
|
|
95
|
+
### Status Colors
|
|
96
|
+
|
|
97
|
+
```tsx
|
|
98
|
+
// Define consistent status colors
|
|
99
|
+
// Success
|
|
100
|
+
<Badge className="bg-green-100 text-green-800 dark:bg-green-900 dark:text-green-100">
|
|
101
|
+
Active
|
|
102
|
+
</Badge>
|
|
103
|
+
|
|
104
|
+
// Warning
|
|
105
|
+
<Badge className="bg-yellow-100 text-yellow-800 dark:bg-yellow-900 dark:text-yellow-100">
|
|
106
|
+
Pending
|
|
107
|
+
</Badge>
|
|
108
|
+
|
|
109
|
+
// Error (use destructive)
|
|
110
|
+
<Badge variant="destructive">Failed</Badge>
|
|
111
|
+
|
|
112
|
+
// Info
|
|
113
|
+
<Badge className="bg-blue-100 text-blue-800 dark:bg-blue-900 dark:text-blue-100">
|
|
114
|
+
In Progress
|
|
115
|
+
</Badge>
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Typography
|
|
121
|
+
|
|
122
|
+
### Heading Hierarchy
|
|
123
|
+
|
|
124
|
+
```tsx
|
|
125
|
+
// Page title
|
|
126
|
+
<h1 className="text-3xl font-bold tracking-tight">Page Title</h1>
|
|
127
|
+
|
|
128
|
+
// Section title
|
|
129
|
+
<h2 className="text-2xl font-semibold tracking-tight">Section</h2>
|
|
130
|
+
|
|
131
|
+
// Subsection
|
|
132
|
+
<h3 className="text-xl font-semibold">Subsection</h3>
|
|
133
|
+
|
|
134
|
+
// Card/component title
|
|
135
|
+
<h4 className="text-lg font-medium">Card Title</h4>
|
|
136
|
+
|
|
137
|
+
// Small heading
|
|
138
|
+
<h5 className="text-base font-medium">Small Heading</h5>
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Text Sizes
|
|
142
|
+
|
|
143
|
+
```tsx
|
|
144
|
+
// Body text (default)
|
|
145
|
+
<p className="text-sm">Standard body text</p>
|
|
146
|
+
|
|
147
|
+
// Large body
|
|
148
|
+
<p className="text-base">Larger body text</p>
|
|
149
|
+
|
|
150
|
+
// Small/caption
|
|
151
|
+
<p className="text-xs text-muted-foreground">Caption or hint text</p>
|
|
152
|
+
|
|
153
|
+
// Lead paragraph
|
|
154
|
+
<p className="text-lg text-muted-foreground">Introductory text</p>
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### Text Utilities
|
|
158
|
+
|
|
159
|
+
```tsx
|
|
160
|
+
// Truncation
|
|
161
|
+
<p className="truncate">Long text that will be truncated...</p>
|
|
162
|
+
<p className="line-clamp-2">Text limited to 2 lines...</p>
|
|
163
|
+
|
|
164
|
+
// Alignment
|
|
165
|
+
<p className="text-left">Left (default)</p>
|
|
166
|
+
<p className="text-center">Center</p>
|
|
167
|
+
<p className="text-right">Right</p>
|
|
168
|
+
|
|
169
|
+
// Font weight
|
|
170
|
+
<span className="font-normal">Normal (400)</span>
|
|
171
|
+
<span className="font-medium">Medium (500)</span>
|
|
172
|
+
<span className="font-semibold">Semibold (600)</span>
|
|
173
|
+
<span className="font-bold">Bold (700)</span>
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
## Layout Patterns
|
|
179
|
+
|
|
180
|
+
### Flexbox
|
|
181
|
+
|
|
182
|
+
```tsx
|
|
183
|
+
// Horizontal center
|
|
184
|
+
<div className="flex items-center justify-center">
|
|
185
|
+
|
|
186
|
+
// Space between
|
|
187
|
+
<div className="flex items-center justify-between">
|
|
188
|
+
|
|
189
|
+
// Stack with gap
|
|
190
|
+
<div className="flex flex-col gap-4">
|
|
191
|
+
|
|
192
|
+
// Row with gap
|
|
193
|
+
<div className="flex items-center gap-2">
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### Grid
|
|
197
|
+
|
|
198
|
+
```tsx
|
|
199
|
+
// Responsive grid
|
|
200
|
+
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4">
|
|
201
|
+
|
|
202
|
+
// Dashboard layout
|
|
203
|
+
<div className="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6">
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Common Layouts
|
|
207
|
+
|
|
208
|
+
```tsx
|
|
209
|
+
// Page container
|
|
210
|
+
<div className="container mx-auto px-4 py-8">
|
|
211
|
+
|
|
212
|
+
// Centered content with max width
|
|
213
|
+
<div className="mx-auto max-w-2xl">
|
|
214
|
+
|
|
215
|
+
// Full-height page
|
|
216
|
+
<div className="min-h-screen">
|
|
217
|
+
|
|
218
|
+
// Sticky header
|
|
219
|
+
<header className="sticky top-0 z-50 bg-background/95 backdrop-blur">
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## Responsive Design
|
|
225
|
+
|
|
226
|
+
### Breakpoint Usage
|
|
227
|
+
|
|
228
|
+
| Breakpoint | Min Width | Use For |
|
|
229
|
+
|------------|-----------|---------|
|
|
230
|
+
| (default) | 0px | Mobile first |
|
|
231
|
+
| `sm:` | 640px | Large phones |
|
|
232
|
+
| `md:` | 768px | Tablets |
|
|
233
|
+
| `lg:` | 1024px | Laptops |
|
|
234
|
+
| `xl:` | 1280px | Desktops |
|
|
235
|
+
| `2xl:` | 1536px | Large screens |
|
|
236
|
+
|
|
237
|
+
### Responsive Patterns
|
|
238
|
+
|
|
239
|
+
```tsx
|
|
240
|
+
// Mobile-first approach
|
|
241
|
+
<div className="p-4 md:p-6 lg:p-8">
|
|
242
|
+
|
|
243
|
+
// Hide/show
|
|
244
|
+
<div className="hidden md:block">Desktop only</div>
|
|
245
|
+
<div className="md:hidden">Mobile only</div>
|
|
246
|
+
|
|
247
|
+
// Responsive grid
|
|
248
|
+
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4">
|
|
249
|
+
|
|
250
|
+
// Responsive text
|
|
251
|
+
<h1 className="text-2xl md:text-3xl lg:text-4xl font-bold">
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
---
|
|
255
|
+
|
|
256
|
+
## Interactive States
|
|
257
|
+
|
|
258
|
+
### Required Focus States
|
|
259
|
+
|
|
260
|
+
```tsx
|
|
261
|
+
// ALWAYS include focus-visible for interactive elements
|
|
262
|
+
<button className="focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2">
|
|
263
|
+
|
|
264
|
+
// shadcn components have this built in - don't remove it!
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
### Hover States
|
|
268
|
+
|
|
269
|
+
```tsx
|
|
270
|
+
// Subtle background change
|
|
271
|
+
<div className="hover:bg-accent transition-colors">
|
|
272
|
+
|
|
273
|
+
// Button hover (built into variants)
|
|
274
|
+
<Button>Has hover built in</Button>
|
|
275
|
+
|
|
276
|
+
// Custom hover
|
|
277
|
+
<div className="hover:bg-muted/50 transition-colors cursor-pointer">
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
### Transitions
|
|
281
|
+
|
|
282
|
+
```tsx
|
|
283
|
+
// Standard transition
|
|
284
|
+
<div className="transition-colors"> {/* Color changes */}
|
|
285
|
+
<div className="transition-opacity"> {/* Opacity changes */}
|
|
286
|
+
<div className="transition-all"> {/* Everything (use sparingly) */}
|
|
287
|
+
|
|
288
|
+
// Duration
|
|
289
|
+
<div className="transition-colors duration-150"> {/* Faster */}
|
|
290
|
+
<div className="transition-colors duration-300"> {/* Slower */}
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
295
|
+
## Common Anti-Patterns
|
|
296
|
+
|
|
297
|
+
### Conflicting Classes
|
|
298
|
+
|
|
299
|
+
```tsx
|
|
300
|
+
// BAD: Conflicting classes
|
|
301
|
+
<div className="p-4 p-6"> {/* Which one applies? */}
|
|
302
|
+
<div className="text-red-500 text-blue-500"> {/* Unpredictable */}
|
|
303
|
+
|
|
304
|
+
// BAD: Overriding base with arbitrary
|
|
305
|
+
<div className="mt-4 mt-[20px]"> {/* Confusing */}
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
### Unnecessary Complexity
|
|
309
|
+
|
|
310
|
+
```tsx
|
|
311
|
+
// BAD: Over-specified
|
|
312
|
+
<div className="flex flex-row items-stretch justify-start">
|
|
313
|
+
// flex-row is default, items-stretch is default, justify-start is default
|
|
314
|
+
|
|
315
|
+
// GOOD: Only what's needed
|
|
316
|
+
<div className="flex">
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
### Magic Numbers
|
|
320
|
+
|
|
321
|
+
```tsx
|
|
322
|
+
// BAD: Arbitrary values everywhere
|
|
323
|
+
<div className="w-[342px] h-[87px] mt-[13px] rounded-[7px]">
|
|
324
|
+
|
|
325
|
+
// GOOD: Use scale and standard values
|
|
326
|
+
<div className="w-80 h-20 mt-3 rounded-lg">
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
## Dark Mode
|
|
332
|
+
|
|
333
|
+
### Using Dark Mode Classes
|
|
334
|
+
|
|
335
|
+
```tsx
|
|
336
|
+
// Explicit dark mode styles
|
|
337
|
+
<div className="bg-white dark:bg-slate-900">
|
|
338
|
+
<p className="text-gray-900 dark:text-gray-100">
|
|
339
|
+
|
|
340
|
+
// BETTER: Use design tokens (automatic dark mode)
|
|
341
|
+
<div className="bg-background"> {/* Automatically handles dark mode */}
|
|
342
|
+
<p className="text-foreground"> {/* Automatically handles dark mode */}
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
### Dark Mode Testing Checklist
|
|
346
|
+
|
|
347
|
+
- [ ] All text is readable in both modes
|
|
348
|
+
- [ ] Borders are visible in both modes
|
|
349
|
+
- [ ] Status colors work in both modes
|
|
350
|
+
- [ ] Images/icons work in both modes
|
|
351
|
+
- [ ] Focus states visible in both modes
|