@opendirectory.dev/skills 0.1.55 → 0.1.57
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/package.json +1 -1
- package/registry.json +16 -12
- package/skills/claude-md-generator/SKILL.md +1 -1
- package/skills/graphic-case-study/README.md +121 -0
- package/skills/graphic-case-study/SKILL.md +312 -0
- package/skills/graphic-case-study/evals/evals.json +35 -0
- package/skills/graphic-case-study/references/design-system.md +104 -0
- package/skills/graphic-case-study/references/page-library.md +333 -0
- package/skills/graphic-case-study/references/style-presets.md +346 -0
- package/skills/pr-description-writer/SKILL.md +1 -1
- package/skills/producthunt-launch-kit/SKILL.md +1 -1
- package/skills/schema-markup-generator/SKILL.md +1 -1
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
# Page Library — graphic-case-study
|
|
2
|
+
|
|
3
|
+
7 page section types for A4 portrait case studies. Each section is a content block placed within a `<section class="slide">`. Multiple sections can stack vertically within a single page.
|
|
4
|
+
|
|
5
|
+
All dimensions assume: viewport 1200px wide × 1697px tall (A4 portrait).
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. cover
|
|
10
|
+
|
|
11
|
+
**Purpose:** Opening page -- customer name, headline result, logos
|
|
12
|
+
**Density:** Very open
|
|
13
|
+
**Content limits:** Headline 12 words max (leads with number), customer name, optional category label, logo placeholders
|
|
14
|
+
|
|
15
|
+
**HTML structure:**
|
|
16
|
+
```html
|
|
17
|
+
<section class="slide page--cover">
|
|
18
|
+
<div class="page-inner">
|
|
19
|
+
<div class="cover-top">
|
|
20
|
+
<span class="cover-label reveal">Customer Success Story</span>
|
|
21
|
+
</div>
|
|
22
|
+
<div class="cover-body">
|
|
23
|
+
<h1 class="cover-headline reveal">[Headline result — leads with number]</h1>
|
|
24
|
+
<p class="cover-company reveal">[Customer name]</p>
|
|
25
|
+
</div>
|
|
26
|
+
<div class="cover-bottom">
|
|
27
|
+
<div class="logo-group reveal">
|
|
28
|
+
<div class="logo-box logo-customer">[CSS initials or img]</div>
|
|
29
|
+
<span class="logo-sep">×</span>
|
|
30
|
+
<div class="logo-box logo-vendor">[CSS initials or img]</div>
|
|
31
|
+
</div>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
</section>
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
**CSS approach:**
|
|
38
|
+
- `.page-inner`: `display: flex; flex-direction: column; justify-content: space-between; height: 100%; padding: var(--page-padding);`
|
|
39
|
+
- `.cover-headline`: `font-family: var(--font-display); font-size: clamp(2rem, 5vw, 3.5rem); letter-spacing: -0.03em; line-height: 1.1; max-width: 20ch;`
|
|
40
|
+
- `.cover-label`: uppercase, caption size, accent color or muted
|
|
41
|
+
- `.logo-box`: `width: clamp(48px, 6vw, 80px); height: clamp(48px, 6vw, 80px); display: flex; align-items: center; justify-content: center;` -- use CSS-generated initials when no logo URL provided
|
|
42
|
+
|
|
43
|
+
**Background:** Style preset's primary (often the most distinctive background of the preset -- dark, full-color, or richly styled). This is the first impression.
|
|
44
|
+
|
|
45
|
+
**Do NOT:** Put challenge/solution text here. Cover = one idea only.
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 2. overview
|
|
50
|
+
|
|
51
|
+
**Purpose:** At-a-glance customer profile
|
|
52
|
+
**Density:** Moderate
|
|
53
|
+
**Content limits:** 4 fact cells max (label + value each). No paragraph text.
|
|
54
|
+
|
|
55
|
+
**HTML structure:**
|
|
56
|
+
```html
|
|
57
|
+
<div class="section--overview reveal">
|
|
58
|
+
<h2 class="section-label">At a Glance</h2>
|
|
59
|
+
<div class="overview-grid">
|
|
60
|
+
<div class="fact-cell">
|
|
61
|
+
<span class="fact-label">Industry</span>
|
|
62
|
+
<span class="fact-value">B2B SaaS</span>
|
|
63
|
+
</div>
|
|
64
|
+
<div class="fact-cell">
|
|
65
|
+
<span class="fact-label">Company size</span>
|
|
66
|
+
<span class="fact-value">200-500 employees</span>
|
|
67
|
+
</div>
|
|
68
|
+
<div class="fact-cell">
|
|
69
|
+
<span class="fact-label">Location</span>
|
|
70
|
+
<span class="fact-value">San Francisco, CA</span>
|
|
71
|
+
</div>
|
|
72
|
+
<div class="fact-cell">
|
|
73
|
+
<span class="fact-label">Use case</span>
|
|
74
|
+
<span class="fact-value">Revenue operations</span>
|
|
75
|
+
</div>
|
|
76
|
+
</div>
|
|
77
|
+
</div>
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**CSS approach:**
|
|
81
|
+
- `.overview-grid`: `display: grid; grid-template-columns: repeat(2, 1fr); gap: clamp(0.75rem, 2%, 1.5rem);`
|
|
82
|
+
- `.fact-cell`: preset card background + border, `border-radius: var(--card-radius); padding: clamp(0.75rem, 1.5%, 1.25rem);`
|
|
83
|
+
- `.fact-label`: caption size, muted color, uppercase, 0.1em tracking
|
|
84
|
+
- `.fact-value`: body size, primary text color, font-weight: 600
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## 3. challenge
|
|
89
|
+
|
|
90
|
+
**Purpose:** The customer's problem before your product
|
|
91
|
+
**Density:** Moderate
|
|
92
|
+
**Content limits:** Context paragraph (2-3 sentences) + 3 pain points (1 sentence each)
|
|
93
|
+
|
|
94
|
+
**HTML structure:**
|
|
95
|
+
```html
|
|
96
|
+
<div class="section--challenge">
|
|
97
|
+
<h2 class="section-heading reveal">The Challenge</h2>
|
|
98
|
+
<div class="challenge-body">
|
|
99
|
+
<p class="challenge-context reveal">[Context paragraph]</p>
|
|
100
|
+
<ul class="pain-list">
|
|
101
|
+
<li class="pain-item reveal">[Pain point 1]</li>
|
|
102
|
+
<li class="pain-item reveal">[Pain point 2]</li>
|
|
103
|
+
<li class="pain-item reveal">[Pain point 3]</li>
|
|
104
|
+
</ul>
|
|
105
|
+
</div>
|
|
106
|
+
</div>
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**CSS approach:**
|
|
110
|
+
- Two-column layout at full page: `display: grid; grid-template-columns: 1fr 1fr; gap: clamp(1.5rem, 4%, 3rem);` OR single-column if stacking with other sections
|
|
111
|
+
- `.pain-list`: no browser bullets -- use `list-style: none; display: flex; flex-direction: column; gap: clamp(0.5rem, 1%, 1rem);`
|
|
112
|
+
- `.pain-item::before`: `content: "—"; color: var(--accent); margin-right: 0.75em;`
|
|
113
|
+
- `.section-heading`: `clamp(1.25rem, 2.5vw, 2rem)` weight 700
|
|
114
|
+
|
|
115
|
+
**Signature element for warm-earth style:** Drop cap on opening paragraph:
|
|
116
|
+
```css
|
|
117
|
+
.challenge-context::first-letter {
|
|
118
|
+
font-family: var(--font-display);
|
|
119
|
+
font-size: clamp(3rem, 7vw, 5rem);
|
|
120
|
+
float: left;
|
|
121
|
+
margin: 0.05em 0.12em 0 0;
|
|
122
|
+
color: var(--accent);
|
|
123
|
+
line-height: 0.8;
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## 4. solution
|
|
130
|
+
|
|
131
|
+
**Purpose:** How your product addressed the challenge
|
|
132
|
+
**Density:** Moderate
|
|
133
|
+
**Content limits:** 2-3 feature callouts (name 3 words max + 1-sentence description each)
|
|
134
|
+
|
|
135
|
+
**HTML structure:**
|
|
136
|
+
```html
|
|
137
|
+
<div class="section--solution">
|
|
138
|
+
<h2 class="section-heading reveal">The Solution</h2>
|
|
139
|
+
<div class="feature-grid">
|
|
140
|
+
<div class="feature-card reveal">
|
|
141
|
+
<div class="feature-icon">[CSS shape]</div>
|
|
142
|
+
<div class="feature-name">Feature Name</div>
|
|
143
|
+
<p class="feature-desc">One sentence describing the outcome this feature delivers.</p>
|
|
144
|
+
</div>
|
|
145
|
+
<!-- repeat for 2-3 features -->
|
|
146
|
+
</div>
|
|
147
|
+
</div>
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**CSS approach:**
|
|
151
|
+
- `.feature-grid`: `display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: clamp(0.75rem, 2%, 1.5rem);`
|
|
152
|
+
- `.feature-card`: preset card background + border + border-radius, `padding: clamp(1rem, 2%, 1.75rem);`
|
|
153
|
+
- `.feature-icon`: CSS-generated shape (circle, square, hexagon outline) using `::before` or inline shape elements, 32–48px, accent color or accent-light fill
|
|
154
|
+
- `.feature-name`: `font-size: clamp(0.875rem, 1.25vw, 1rem); font-weight: 700; margin-bottom: 0.5em;`
|
|
155
|
+
- `.feature-desc`: body size, secondary color
|
|
156
|
+
|
|
157
|
+
**CSS icon patterns (no images needed):**
|
|
158
|
+
```css
|
|
159
|
+
/* Circle icon */
|
|
160
|
+
.feature-icon {
|
|
161
|
+
width: clamp(32px, 3vw, 48px);
|
|
162
|
+
height: clamp(32px, 3vw, 48px);
|
|
163
|
+
border-radius: 50%;
|
|
164
|
+
background: rgba(var(--accent-rgb), 0.12);
|
|
165
|
+
border: 2px solid var(--accent);
|
|
166
|
+
margin-bottom: 1rem;
|
|
167
|
+
}
|
|
168
|
+
/* Or: filled square with rounded corner */
|
|
169
|
+
.feature-icon {
|
|
170
|
+
width: clamp(32px, 3vw, 48px);
|
|
171
|
+
height: clamp(32px, 3vw, 48px);
|
|
172
|
+
background: var(--accent);
|
|
173
|
+
border-radius: 6px;
|
|
174
|
+
margin-bottom: 1rem;
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## 5. results
|
|
181
|
+
|
|
182
|
+
**Purpose:** Measurable impact -- the most important section
|
|
183
|
+
**Density:** Open (numbers need space)
|
|
184
|
+
**Content limits:** 3 metrics (number + label + 1-line context each). Optional 2-sentence narrative.
|
|
185
|
+
|
|
186
|
+
**HTML structure:**
|
|
187
|
+
```html
|
|
188
|
+
<div class="section--results">
|
|
189
|
+
<h2 class="section-heading reveal">The Results</h2>
|
|
190
|
+
<div class="stat-row">
|
|
191
|
+
<div class="stat-item stat-item--hero reveal" style="--i:0">
|
|
192
|
+
<div class="stat-number" data-count="80" data-suffix="%">0%</div>
|
|
193
|
+
<div class="stat-label">Time saved on reporting</div>
|
|
194
|
+
<div class="stat-context">Down from 20 hours per week</div>
|
|
195
|
+
</div>
|
|
196
|
+
<div class="stat-item reveal" style="--i:1">
|
|
197
|
+
<div class="stat-number" data-count="95" data-suffix="%">0%</div>
|
|
198
|
+
<div class="stat-label">Reduction in errors</div>
|
|
199
|
+
<div class="stat-context">Across all report types</div>
|
|
200
|
+
</div>
|
|
201
|
+
<div class="stat-item reveal" style="--i:2">
|
|
202
|
+
<div class="stat-number" data-prefix="$" data-count="200" data-suffix="K">$0K</div>
|
|
203
|
+
<div class="stat-label">Annual cost savings</div>
|
|
204
|
+
<div class="stat-context">Labor and tooling combined</div>
|
|
205
|
+
</div>
|
|
206
|
+
</div>
|
|
207
|
+
<!-- optional -->
|
|
208
|
+
<p class="results-narrative reveal">[2-sentence narrative]</p>
|
|
209
|
+
</div>
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
**CSS approach:**
|
|
213
|
+
- `.stat-row`: `display: flex; gap: clamp(1.5rem, 4%, 3rem); align-items: flex-start;` (horizontal, 3 stats)
|
|
214
|
+
- `.stat-item`: `flex: 1; display: flex; flex-direction: column; gap: 0.5rem;`
|
|
215
|
+
- `.stat-number`: `font-family: var(--font-display); font-size: clamp(2.5rem, 7vw, 5rem); font-weight: 400; letter-spacing: -0.04em; line-height: 0.9; color: var(--text-secondary);`
|
|
216
|
+
- `.stat-item--hero .stat-number`: same but `color: var(--accent);` and `font-size: clamp(3rem, 8vw, 5.5rem);`
|
|
217
|
+
- `.stat-label`: `font-size: clamp(0.7rem, 1vw, 0.875rem); font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--text-secondary);`
|
|
218
|
+
- `.stat-context`: `font-size: clamp(0.65rem, 0.9vw, 0.8rem); color: var(--text-muted);`
|
|
219
|
+
|
|
220
|
+
**Stagger animation:**
|
|
221
|
+
```css
|
|
222
|
+
.stat-item {
|
|
223
|
+
opacity: 0;
|
|
224
|
+
transform: translateY(20px);
|
|
225
|
+
transition: opacity 0.6s ease, transform 0.6s ease;
|
|
226
|
+
transition-delay: calc(var(--i) * 0.15s);
|
|
227
|
+
}
|
|
228
|
+
.slide.visible .stat-item { opacity: 1; transform: none; }
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
**ZERO body copy competing with the numbers.** The optional narrative goes BELOW the stat row in smaller body text, clearly subordinate.
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## 6. testimonial
|
|
236
|
+
|
|
237
|
+
**Purpose:** Customer voice -- builds trust
|
|
238
|
+
**Density:** Very open
|
|
239
|
+
**Content limits:** Quote 40 words max + name + title + company
|
|
240
|
+
|
|
241
|
+
**HTML structure:**
|
|
242
|
+
```html
|
|
243
|
+
<div class="section--testimonial">
|
|
244
|
+
<blockquote class="testimonial-quote reveal">
|
|
245
|
+
<div class="quote-mark">"</div>
|
|
246
|
+
<p class="quote-text">[Customer quote, 40 words max]</p>
|
|
247
|
+
<footer class="quote-attribution">
|
|
248
|
+
<span class="attribution-name">[Name]</span>
|
|
249
|
+
<span class="attribution-role">[Title], [Company]</span>
|
|
250
|
+
</footer>
|
|
251
|
+
</blockquote>
|
|
252
|
+
</div>
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
**CSS approach:**
|
|
256
|
+
- `.section--testimonial`: `display: flex; align-items: center; justify-content: center; padding: clamp(2rem, 5%, 4rem);`
|
|
257
|
+
- `.quote-mark`: `position: absolute; font-family: var(--font-display); font-size: clamp(4rem, 12vw, 8rem); opacity: 0.08; top: -0.2em; left: -0.1em; color: var(--accent); line-height: 1; pointer-events: none; user-select: none;`
|
|
258
|
+
- `.quote-text`: `font-family: var(--font-display); font-style: italic; font-size: clamp(1.1rem, 2vw, 1.5rem); line-height: 1.5; color: var(--text-primary);`
|
|
259
|
+
- `.attribution-name`: `font-weight: 700; font-size: var(--label-size);`
|
|
260
|
+
- `.attribution-role`: `color: var(--text-muted); font-size: var(--label-size);`
|
|
261
|
+
- Testimonial section background: subtle accent tint (accent at 4-6% opacity) or preset's alt section bg
|
|
262
|
+
|
|
263
|
+
**Do NOT:** Add bullet points, headings, or any other content inside a testimonial section.
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
## 7. closing-cta
|
|
268
|
+
|
|
269
|
+
**Purpose:** Clear next step -- drives action
|
|
270
|
+
**Density:** Open
|
|
271
|
+
**Content limits:** Headline 5 words max + CTA action text 3 words + email + URL (both required)
|
|
272
|
+
|
|
273
|
+
**HTML structure:**
|
|
274
|
+
```html
|
|
275
|
+
<div class="section--cta">
|
|
276
|
+
<div class="cta-inner reveal">
|
|
277
|
+
<div class="cta-logo">[Vendor logo or CSS initials]</div>
|
|
278
|
+
<h2 class="cta-headline">[Headline -- 5 words max]</h2>
|
|
279
|
+
<p class="cta-sub">[Optional 1-sentence context]</p>
|
|
280
|
+
<div class="cta-contacts">
|
|
281
|
+
<a href="mailto:[email]" class="cta-email">[email]</a>
|
|
282
|
+
<a href="[url]" class="cta-url">[url]</a>
|
|
283
|
+
</div>
|
|
284
|
+
</div>
|
|
285
|
+
</div>
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
**CSS approach:**
|
|
289
|
+
- `.section--cta`: preset's darkest or most distinctive background -- this is the closing statement
|
|
290
|
+
- `.cta-headline`: `font-family: var(--font-display); font-size: clamp(1.5rem, 4vw, 3rem); font-weight: var(--display-weight); color: var(--cta-text); letter-spacing: -0.02em;`
|
|
291
|
+
- `.cta-email`: `font-size: clamp(0.9rem, 1.5vw, 1.25rem); font-weight: 600;`
|
|
292
|
+
- `.cta-url`: `font-size: clamp(0.8rem, 1.2vw, 1rem); opacity: 0.7;`
|
|
293
|
+
- No bullet lists, no feature lists, no repetition of stats.
|
|
294
|
+
|
|
295
|
+
**One action only.** Email + URL -- both mandatory (fails QA if either missing).
|
|
296
|
+
|
|
297
|
+
---
|
|
298
|
+
|
|
299
|
+
## Standard Page Assemblies
|
|
300
|
+
|
|
301
|
+
### 1-pager (1 page)
|
|
302
|
+
```
|
|
303
|
+
<section class="slide page--cover-compact">
|
|
304
|
+
[cover section -- condensed version]
|
|
305
|
+
[challenge-inline -- 2 bullet lines max]
|
|
306
|
+
[solution-inline -- 1 sentence + 3 micro stats]
|
|
307
|
+
[results-inline -- 3 stats in smaller size]
|
|
308
|
+
[cta-inline -- email + url at bottom]
|
|
309
|
+
</section>
|
|
310
|
+
```
|
|
311
|
+
1-pager is a summary card. Every section is abbreviated. Nothing is full-depth.
|
|
312
|
+
|
|
313
|
+
### 2-pager (2 pages)
|
|
314
|
+
```
|
|
315
|
+
Page 1: <section class="slide">
|
|
316
|
+
[cover]
|
|
317
|
+
[challenge-solution stacked]
|
|
318
|
+
</section>
|
|
319
|
+
|
|
320
|
+
Page 2: <section class="slide">
|
|
321
|
+
[results]
|
|
322
|
+
[testimonial -- if available]
|
|
323
|
+
[closing-cta]
|
|
324
|
+
</section>
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
### 4-pager (4 pages)
|
|
328
|
+
```
|
|
329
|
+
Page 1: <section class="slide">[cover]</section>
|
|
330
|
+
Page 2: <section class="slide">[overview] + [challenge]</section>
|
|
331
|
+
Page 3: <section class="slide">[solution] + [results]</section>
|
|
332
|
+
Page 4: <section class="slide">[testimonial] + [closing-cta]</section>
|
|
333
|
+
```
|
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
# Style Presets — graphic-case-study
|
|
2
|
+
|
|
3
|
+
9 business-oriented style presets. Each is fully self-contained -- complete CSS token set, no "derive from" chains.
|
|
4
|
+
|
|
5
|
+
Choose based on the vendor's brand and audience. When in doubt: clean-slate for enterprise B2B, midnight-editorial for tech/AI companies, warm-earth for agencies and services.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 1. clean-slate
|
|
10
|
+
|
|
11
|
+
**Best for:** Enterprise B2B, sales teams, customer-facing materials, any audience that expects professionalism
|
|
12
|
+
**Feeling:** Trustworthy, clear, confident, enterprise-safe
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
Background: #FFFFFF outer / #FFFFFF page / #F8F8F8 alt sections / #F4F4F4 footer
|
|
16
|
+
Text primary: #111111
|
|
17
|
+
Text secondary: #555555
|
|
18
|
+
Text muted: #999999
|
|
19
|
+
Accent: #0F172A (near-black navy)
|
|
20
|
+
Accent light: #E0F2FE (light blue for pill/badge backgrounds)
|
|
21
|
+
Accent text: #FFFFFF
|
|
22
|
+
Divider: #E8E8E8
|
|
23
|
+
Card border: #E0E0E0
|
|
24
|
+
Card radius: 16px
|
|
25
|
+
Card shadow: 0 2px 8px rgba(0, 0, 0, 0.06)
|
|
26
|
+
|
|
27
|
+
Display font: 'Plus Jakarta Sans', Arial, Helvetica, sans-serif
|
|
28
|
+
Body font: 'Plus Jakarta Sans', Arial, Helvetica, sans-serif
|
|
29
|
+
Google Fonts: https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;800&display=swap
|
|
30
|
+
|
|
31
|
+
Display weight: 800
|
|
32
|
+
Body weight: 400 / 500
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
**Signature elements:**
|
|
36
|
+
- Rounded card containers (`border-radius: 16px`) on all fact cells, feature cards, stat containers
|
|
37
|
+
- Badge pills for category labels (`border-radius: 100px; background: #E0F2FE; color: #0F172A; padding: 0.2em 0.8em`)
|
|
38
|
+
- Generous whitespace -- push toward maximum clamp values
|
|
39
|
+
- Hero stat in dark `#0F172A` (high contrast, authoritative -- no color distraction)
|
|
40
|
+
- Cover background: `#0F172A` full dark (inversion for premium feel)
|
|
41
|
+
- Closing CTA: `#0F172A` full bg with white headline and white CTA
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## 2. midnight-editorial
|
|
46
|
+
|
|
47
|
+
**Best for:** Tech, AI, developer-focused companies, premium B2B, thought leadership
|
|
48
|
+
**Feeling:** Editorial authority, premium, considered
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
Background: #0A0A0A outer / #111111 page / #1A1A1A elevated cards / #080808 footer
|
|
52
|
+
Text primary: #F2F2F2
|
|
53
|
+
Text secondary: #AAAAAA
|
|
54
|
+
Text muted: #555555
|
|
55
|
+
Accent: #D8F90A (yellow-green)
|
|
56
|
+
Accent text: #0A0A0A (dark text on accent)
|
|
57
|
+
Divider: #2A2A2A
|
|
58
|
+
Card border: #222222
|
|
59
|
+
|
|
60
|
+
Display font: 'Instrument Serif', Georgia, 'Times New Roman', serif
|
|
61
|
+
Body font: Inter, Arial, Helvetica, sans-serif
|
|
62
|
+
Google Fonts: https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Inter:wght@400;500;600;700&display=swap
|
|
63
|
+
|
|
64
|
+
Display weight: 400
|
|
65
|
+
Body weight: 400 / 600
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**Signature elements:**
|
|
69
|
+
- Thin `<hr>` separators (`border: none; border-top: 1px solid #2A2A2A; width: 40px; margin: 0`)
|
|
70
|
+
- Oversized section numbers at `opacity: 0.06` as absolute background elements
|
|
71
|
+
- Instrument Serif italic on testimonial quotes (literary weight)
|
|
72
|
+
- Hero stat number in `#D8F90A` accent
|
|
73
|
+
- Cover: `#D8F90A` full-bg inversion with `#0A0A0A` text (unmissable)
|
|
74
|
+
- Closing CTA: `#D8F90A` full bg with `#0A0A0A` text
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## 3. matt-gray
|
|
79
|
+
|
|
80
|
+
**Best for:** Internal business reviews, board materials, professional presentations to mixed audiences
|
|
81
|
+
**Feeling:** Safe, professional, accessible, clean
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
Background: #F5F5F5 outer / #FFFFFF page / #EEEEEE section alt / #F8F8F8 footer
|
|
85
|
+
Text primary: #1A1A1A
|
|
86
|
+
Text secondary: #444444
|
|
87
|
+
Text muted: #888888
|
|
88
|
+
Accent: #2563EB (blue)
|
|
89
|
+
Accent text: #FFFFFF
|
|
90
|
+
Divider: #E5E5E5
|
|
91
|
+
Card border: #DDDDDD
|
|
92
|
+
Card shadow: 0 1px 3px rgba(0, 0, 0, 0.08)
|
|
93
|
+
|
|
94
|
+
Display font: 'DM Sans', Arial, Helvetica, sans-serif
|
|
95
|
+
Body font: 'DM Sans', Arial, Helvetica, sans-serif
|
|
96
|
+
Google Fonts: https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;700;800&display=swap
|
|
97
|
+
|
|
98
|
+
Display weight: 700
|
|
99
|
+
Body weight: 400 / 500
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**Signature elements:**
|
|
103
|
+
- 4px left border on section headings and fact cells (`border-left: 4px solid #2563EB; padding-left: 1rem`)
|
|
104
|
+
- Subtle drop shadow on stat containers
|
|
105
|
+
- Hero stat in accent blue `#2563EB`
|
|
106
|
+
- Section headings use `#EEEEEE` alt background
|
|
107
|
+
- Closing CTA: `#1A1A1A` full dark bg with white text and blue button
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## 4. brutalist
|
|
112
|
+
|
|
113
|
+
**Best for:** Standout sales materials, design-forward agencies, brands that want to be remembered
|
|
114
|
+
**Feeling:** Direct, raw, confident, uncompromising
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
Background: #FFFFFF outer / #FFFFFF page
|
|
118
|
+
Text primary: #000000
|
|
119
|
+
Text secondary: #333333
|
|
120
|
+
Accent: #FF3300 (red) or #FFE500 (yellow)
|
|
121
|
+
Accent text: #000000
|
|
122
|
+
Divider: #000000 (solid black)
|
|
123
|
+
Border: 3px solid #000000 (heavy)
|
|
124
|
+
Border-radius: 0 (zero everywhere -- absolute rule)
|
|
125
|
+
|
|
126
|
+
Display font: 'Archivo Black', Arial Black, Arial, sans-serif
|
|
127
|
+
Body font: 'Space Grotesk', Arial, sans-serif
|
|
128
|
+
Google Fonts: https://fonts.googleapis.com/css2?family=Archivo+Black&family=Space+Grotesk:wght@400;500;700&display=swap
|
|
129
|
+
|
|
130
|
+
Display weight: 900
|
|
131
|
+
Body weight: 400 / 700
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**Signature elements:**
|
|
135
|
+
- Heavy borders everywhere: `border: 3px solid #000000` on ALL cards, tables, containers, page sections
|
|
136
|
+
- Zero border-radius on every element -- this is a hard rule, never soften
|
|
137
|
+
- Oversized section numbers fully visible (`opacity: 1`) in accent color
|
|
138
|
+
- Cover: accent color full bg (`#FF3300` or `#FFE500`) with `#000000` text
|
|
139
|
+
- Hero stat in accent color, extreme size
|
|
140
|
+
- Closing CTA: `#000000` full bg with white text and accent-color button/border
|
|
141
|
+
|
|
142
|
+
**DO NOT apply rounded corners, gradients, or drop shadows to brutalist case studies.**
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## 5. mint-pixel-corporate
|
|
147
|
+
|
|
148
|
+
**Best for:** SaaS sales, product-focused companies, tech startups, growth-stage B2B
|
|
149
|
+
**Feeling:** Fresh, modern, startup-professional
|
|
150
|
+
|
|
151
|
+
```
|
|
152
|
+
Background: #F0FAF7 outer / #FFFFFF page / #E8F5F0 alt sections / #F0FAF7 footer
|
|
153
|
+
Text primary: #1A2E2A
|
|
154
|
+
Text secondary: #4A6B62
|
|
155
|
+
Text muted: #7A9B92
|
|
156
|
+
Accent: #00B894 (mint)
|
|
157
|
+
Accent text: #1A2E2A
|
|
158
|
+
Divider: #D1E8E1
|
|
159
|
+
Card border: #C5DFD7
|
|
160
|
+
Card radius: 10px
|
|
161
|
+
|
|
162
|
+
Display font: 'Manrope', Arial, Helvetica, sans-serif
|
|
163
|
+
Body font: 'Manrope', Arial, Helvetica, sans-serif
|
|
164
|
+
Google Fonts: https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;700;800&display=swap
|
|
165
|
+
|
|
166
|
+
Display weight: 800
|
|
167
|
+
Body weight: 400 / 500
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
**Signature elements:**
|
|
171
|
+
- Mint accent pills for feature labels and category tags (`border-radius: 100px; background: #00B894; color: #1A2E2A`)
|
|
172
|
+
- CSS `radial-gradient` dot pattern on cover background:
|
|
173
|
+
```css
|
|
174
|
+
background-image: radial-gradient(circle, #00B894 1px, transparent 1px);
|
|
175
|
+
background-size: 24px 24px;
|
|
176
|
+
background-color: #1A2E2A;
|
|
177
|
+
```
|
|
178
|
+
- Hero stat in mint `#00B894`
|
|
179
|
+
- Feature cards with mint border (`border: 2px solid #00B894`)
|
|
180
|
+
- Closing CTA: `#1A2E2A` dark bg with dot pattern + mint text and white button
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## 6. product-minimal
|
|
185
|
+
|
|
186
|
+
**Best for:** Product companies, design-forward B2B, companies presenting to design-savvy buyers
|
|
187
|
+
**Feeling:** Maximum whitespace, purposeful restraint, design system precision
|
|
188
|
+
|
|
189
|
+
```
|
|
190
|
+
Background: #FAFAFA outer / #FAFAFA page / #F4F4F4 alt / #F0F0F0 footer
|
|
191
|
+
Text primary: #18181B
|
|
192
|
+
Text secondary: #71717A
|
|
193
|
+
Text muted: #A1A1AA
|
|
194
|
+
Accent: #8B5CF6 (violet)
|
|
195
|
+
Accent text: #FFFFFF
|
|
196
|
+
Divider: #E4E4E7
|
|
197
|
+
Card shadow: 0 1px 3px rgba(0, 0, 0, 0.08)
|
|
198
|
+
Card radius: 12px
|
|
199
|
+
|
|
200
|
+
Display font: 'Syne', Arial, Helvetica, sans-serif
|
|
201
|
+
Body font: 'IBM Plex Sans', Arial, Helvetica, sans-serif
|
|
202
|
+
Google Fonts: https://fonts.googleapis.com/css2?family=Syne:wght@400;700;800&family=IBM+Plex+Sans:wght@400;500;600&display=swap
|
|
203
|
+
|
|
204
|
+
Display weight: 700-800
|
|
205
|
+
Body weight: 400 / 500
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
**Signature elements:**
|
|
209
|
+
- Single accent element per section rule: violet appears in AT MOST ONE element per section
|
|
210
|
+
- Subtle CSS drop shadow on cards (`box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08)`)
|
|
211
|
+
- Very generous padding (use maximum clamp values everywhere)
|
|
212
|
+
- Hero stat in violet `#8B5CF6` with thin violet top-border on stat container
|
|
213
|
+
- Cover: `#18181B` full dark bg with Syne display font in white
|
|
214
|
+
- Closing CTA: violet background (`#8B5CF6`) with white text
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## 7. magazine-red
|
|
219
|
+
|
|
220
|
+
**Best for:** Marketing agencies, bold companies, brand-forward case studies, attention-commanding materials
|
|
221
|
+
**Feeling:** Authoritative, editorial, high energy
|
|
222
|
+
|
|
223
|
+
```
|
|
224
|
+
Background: #1A1A1A outer / #111111 page / #1E1E1E alt / #0D0D0D footer
|
|
225
|
+
Text primary: #FFFFFF
|
|
226
|
+
Text secondary: #CCCCCC
|
|
227
|
+
Text muted: #888888
|
|
228
|
+
Accent: #E63329 (red)
|
|
229
|
+
Divider: #2A2A2A
|
|
230
|
+
|
|
231
|
+
Display font: 'Fraunces', Georgia, 'Times New Roman', serif
|
|
232
|
+
Body font: 'Work Sans', Arial, Helvetica, sans-serif
|
|
233
|
+
Google Fonts: https://fonts.googleapis.com/css2?family=Fraunces:ital,wght@0,900;1,900&family=Work+Sans:wght@400;500;600&display=swap
|
|
234
|
+
|
|
235
|
+
Display weight: 900
|
|
236
|
+
Body weight: 400 / 500
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
**Signature elements:**
|
|
240
|
+
- 8px full-width red band separator: `<div style="width:100%; height:8px; background:#E63329; margin: clamp(1rem, 2vw, 2rem) 0">`
|
|
241
|
+
- Editorial section numbers at `opacity: 0.25` in red
|
|
242
|
+
- Testimonial section inverted to white bg with dark text (only white section in the deck)
|
|
243
|
+
- Fraunces italic for quote text (extreme editorial weight)
|
|
244
|
+
- Hero stat in red `#E63329`, large
|
|
245
|
+
- Closing CTA: full red background (`#E63329`) with white text
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## 8. soft-cloud
|
|
250
|
+
|
|
251
|
+
**Best for:** Onboarding materials, customer education, HR/people companies, approachable SaaS
|
|
252
|
+
**Feeling:** Friendly, accessible, soft, welcoming
|
|
253
|
+
|
|
254
|
+
```
|
|
255
|
+
Background: #EEF2FF outer / #FFFFFF page / #F5F3FF alt / #EEF2FF footer
|
|
256
|
+
Text primary: #1E1B4B
|
|
257
|
+
Text secondary: #4C4A7B
|
|
258
|
+
Text muted: #9896C0
|
|
259
|
+
Accent: #6366F1 (indigo)
|
|
260
|
+
Accent light: #E0E7FF (light indigo for card backgrounds)
|
|
261
|
+
Accent text: #FFFFFF
|
|
262
|
+
Divider: #DDD6FE
|
|
263
|
+
Card radius: 24px
|
|
264
|
+
Card shadow: 0 4px 16px rgba(99, 102, 241, 0.08)
|
|
265
|
+
|
|
266
|
+
Display font: 'Outfit', Arial, Helvetica, sans-serif
|
|
267
|
+
Body font: 'Outfit', Arial, Helvetica, sans-serif
|
|
268
|
+
Google Fonts: https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;600;700&display=swap
|
|
269
|
+
|
|
270
|
+
Display weight: 700
|
|
271
|
+
Body weight: 400 / 500
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
**Signature elements:**
|
|
275
|
+
- Generous border-radius (`border-radius: 24px`) on all cards, callout blocks, stat containers
|
|
276
|
+
- Gradient section backgrounds: `linear-gradient(135deg, #EEF2FF 0%, #E0E7FF 50%, #DDD6FE 100%)`
|
|
277
|
+
- Badge pills on key points (`border-radius: 100px; background: #E0E7FF; color: #6366F1`)
|
|
278
|
+
- Hero stat in indigo `#6366F1` on `#F5F3FF` elevated card bg
|
|
279
|
+
- Closing CTA: indigo gradient (`linear-gradient(135deg, #6366F1 0%, #8B5CF6 100%)`) with white text
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
## 9. warm-earth (case-study-exclusive)
|
|
284
|
+
|
|
285
|
+
**Best for:** Agencies, consultancies, service businesses, health/education tech, companies that sell on trust
|
|
286
|
+
**Feeling:** Trusted, grounded, human, warm authority
|
|
287
|
+
|
|
288
|
+
```
|
|
289
|
+
Background: #FDF6EF outer / #FFFFFF page / #FAF0E4 alt sections / #F5EBD8 footer
|
|
290
|
+
Text primary: #2C1A0E
|
|
291
|
+
Text secondary: #6B4C30
|
|
292
|
+
Text muted: #A08060
|
|
293
|
+
Accent: #D4622A (burnt orange)
|
|
294
|
+
Accent light: #FDE8D8 (peach -- for pill/badge backgrounds)
|
|
295
|
+
Accent text: #FFFFFF
|
|
296
|
+
Divider: #E8D5BF
|
|
297
|
+
Card border: #E0C9A8
|
|
298
|
+
Card radius: 10px
|
|
299
|
+
Card shadow: 0 2px 8px rgba(44, 26, 14, 0.06)
|
|
300
|
+
|
|
301
|
+
Display font: 'Lora', Georgia, 'Times New Roman', serif
|
|
302
|
+
Body font: 'Source Sans 3', Arial, Helvetica, sans-serif
|
|
303
|
+
Google Fonts: https://fonts.googleapis.com/css2?family=Lora:wght@400;600;700&family=Source+Sans+3:wght@400;600&display=swap
|
|
304
|
+
|
|
305
|
+
Display weight: 700
|
|
306
|
+
Body weight: 400 / 600
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
**Signature elements:**
|
|
310
|
+
- Warm off-white background (`#FDF6EF`) -- not pure white, not gray. The warmth starts with the canvas.
|
|
311
|
+
- Accent pills in peach (`background: #FDE8D8; color: #D4622A; border-radius: 100px`) for category labels
|
|
312
|
+
- **Drop cap on challenge page opening paragraph:**
|
|
313
|
+
```css
|
|
314
|
+
.challenge-context::first-letter {
|
|
315
|
+
font-family: 'Lora', Georgia, serif;
|
|
316
|
+
font-size: clamp(3rem, 7vw, 5rem);
|
|
317
|
+
float: left;
|
|
318
|
+
margin: 0.05em 0.12em 0 0;
|
|
319
|
+
color: var(--accent);
|
|
320
|
+
line-height: 0.8;
|
|
321
|
+
}
|
|
322
|
+
```
|
|
323
|
+
- Hero stat in burnt orange `#D4622A`
|
|
324
|
+
- Section headings: `border-left: 4px solid #D4622A; padding-left: 1rem` (no full-background inversion -- subtle accent)
|
|
325
|
+
- Cover: warm-dark background `#2C1A0E` with off-white text `#F5EBD8` and burnt-orange accent label
|
|
326
|
+
- Closing CTA: `#2C1A0E` full dark bg with `#FDE8D8` peach headline, white CTA button with burnt orange border
|
|
327
|
+
|
|
328
|
+
---
|
|
329
|
+
|
|
330
|
+
## DO NOT USE -- Style Slop Checklist
|
|
331
|
+
|
|
332
|
+
Before outputting any HTML, verify none of these are present:
|
|
333
|
+
|
|
334
|
+
| Pattern | Why it's wrong |
|
|
335
|
+
|---|---|
|
|
336
|
+
| Inter as display font | Zero typographic character -- reads as default AI output |
|
|
337
|
+
| Purple-to-blue gradient on white background | Most overused AI aesthetic -- immediately signals undesigned |
|
|
338
|
+
| Every section same background color | No visual rhythm -- the PDF reads as one flat block |
|
|
339
|
+
| Identical section layouts throughout | No typographic thinking -- copy-pasted template feel |
|
|
340
|
+
| `box-shadow` on everything | Overused "depth" signal with no real depth |
|
|
341
|
+
| `border-radius: 8px` on everything (especially brutalist) | Softening that fights the style's aesthetic intent |
|
|
342
|
+
| Accent color on 5+ elements per section | Over-branded, destroys scarcity = destroys premium feel |
|
|
343
|
+
| Helvetica Neue / Arial as display font | Generic -- no personality at display size |
|
|
344
|
+
| Stat numbers at body text size | Breaks the entire purpose of the results section |
|
|
345
|
+
| "Thank You" as closing-cta headline | No action, no contact info = completely wasted page |
|
|
346
|
+
| Logo placeholder box with no styling | Unfinished -- use CSS initials at minimum |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: pr-description-writer
|
|
3
|
-
description:
|
|
3
|
+
description: Use when the user asks to write, draft, generate, or update a GitHub pull request description for the current branch. Reads the branch diff and commit messages, writes a structured PR body (summary, changes, testing), and optionally creates or updates the PR via the gh CLI.
|
|
4
4
|
compatibility: [claude-code, gemini-cli, github-copilot]
|
|
5
5
|
author: OpenDirectory
|
|
6
6
|
version: 1.0.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: producthunt-launch-kit
|
|
3
|
-
description:
|
|
3
|
+
description: Use when the user asks to prepare a Product Hunt launch or generate Product Hunt listing assets. Generates tagline variants under 60 chars, a 500-char description, a maker comment, launch-day tweet thread, LinkedIn post, and a 4-email launch sequence.
|
|
4
4
|
compatibility: [claude-code, gemini-cli, github-copilot]
|
|
5
5
|
author: OpenDirectory
|
|
6
6
|
version: 1.0.0
|