Site Specification Skill
Extract detailed site specifications from user descriptions to guide theme generation. If the user has provided images, image urls or other documents, analyze them for additional clues about the brand and design preferences - obviously things like an exising logo image can be very informative about the brand's aesthetic, tone, and values, and any written documents can contain explicit statements about the brand identity or design preferences.
Site Spec Schema
A complete site specification uses this JSON structure:
{
"siteBrief": {
"siteName": "Name of the site/business",
"siteType": "Type of site (e.g., e-commerce, portfolio, blog, SaaS, restaurant)",
"primaryGoal": "Main purpose or conversion goal of the site",
"audience": "Target audience description",
"tone": "Voice and tone for the content",
"brandKeywords": "Keywords describing the brand aesthetic and values"
},
"layoutNotes": [
"Each layout requirement as a separate string",
"Sections, features, and visual elements"
],
"typography": {
"primaryFont": "Main font for headings",
"secondaryFont": "Font for body text",
"usage": "How fonts should be applied",
"fontImport": "Google Fonts import URL"
}
}
All fields are optional - only include what can be reasonably inferred from the user's description.
Inference Patterns by Site Type
SaaS / Technology
Infer:
- Primary goal: Drive signups or demo requests
- Audience: Technical decision-makers, developers, or business users
- Tone: Professional, innovative, trustworthy
- Brand keywords: Modern, efficient, powerful, seamless
Typical layout:
- Hero with value proposition and CTA
- Feature grid or comparison
- Social proof (logos, testimonials)
- Pricing section
- FAQ
- Final CTA
Typography tendency:
- Clean geometric sans-serifs
- Strong hierarchy for scanning
- Consider: Satoshi, Plus Jakarta Sans, Outfit
E-commerce / Retail
Infer:
- Primary goal: Drive purchases
- Audience: Consumers with specific interests
- Tone: Varies by brand (luxury vs. casual vs. value)
- Brand keywords: Depends on positioning
Typical layout:
- Hero with featured products or promotion
- Category navigation
- Featured products grid
- Trust signals (reviews, guarantees)
- Newsletter signup
Typography tendency:
- Match to brand positioning
- Luxury: refined serifs
- Modern: geometric sans
- Playful: display fonts
Professional Services (Law, Finance, Consulting)
Infer:
- Primary goal: Generate inquiries or establish credibility
- Audience: Business decision-makers, individuals seeking expertise
- Tone: Professional, authoritative, trustworthy
- Brand keywords: Expertise, integrity, established, reliable
Typical layout:
- Hero with credentials or value statement
- Services/practice areas
- Team profiles
- Case studies or results
- Testimonials from clients
- Contact/consultation CTA
Typography tendency:
- Traditional serifs for headings (credibility)
- Clean sans-serif for body (readability)
- Consider: Cormorant Garamond, DM Serif Display, Source Sans Pro
Restaurant / Food Service
Infer:
- Primary goal: Drive reservations or visits
- Audience: Local diners, food enthusiasts
- Tone: Warm, inviting, appetite-inducing
- Brand keywords: Fresh, handcrafted, cozy, authentic
Typical layout:
- Hero with appetizing food imagery
- Menu sections
- About/story
- Location and hours
- Reservation CTA
- Instagram or gallery
Typography tendency:
- Display fonts for personality
- Readable serif or sans for menus
- Consider: Playfair Display, Lora, Josefin Sans
Creative / Portfolio
Infer:
- Primary goal: Showcase work and attract clients
- Audience: Potential clients, art directors, collaborators
- Tone: Creative, distinctive, personality-driven
- Brand keywords: Original, crafted, artistic, unique
Typical layout:
- Full-bleed portfolio hero
- Project gallery or case studies
- About/bio section
- Services offered
- Contact or inquiry form
Typography tendency:
- Distinctive display fonts
- Personal to the creator's style
- Consider: Clash Display, Fraunces, Syne
Blog / Media
Infer:
- Primary goal: Engage readers and build audience
- Audience: Readers with specific interests
- Tone: Varies by niche (authoritative, casual, entertaining)
- Brand keywords: Informative, engaging, credible
Typical layout:
- Featured post hero
- Recent posts grid or list
- Category navigation
- About the author
- Newsletter signup
- Popular/trending section
Typography tendency:
- Readable body fonts (critical for long-form)
- Clean heading fonts
- Consider: Merriweather, Source Serif Pro, DM Sans
Non-profit / Organization
Infer:
- Primary goal: Drive donations, volunteers, or awareness
- Audience: Supporters, potential donors, community members
- Tone: Compassionate, urgent, trustworthy
- Brand keywords: Impact, community, change, hope
Typical layout:
- Hero with mission statement and CTA
- Impact statistics
- Programs/initiatives
- Stories of impact
- Ways to help (donate, volunteer)
- Newsletter/updates signup
Typography tendency:
- Warm, approachable fonts
- Avoid cold corporate feel
- Consider: Lato, Open Sans, PT Serif
Examples
Example 1: Coffee Shop
User prompt: "Create a theme for my coffee shop called Bean & Brew"
{
"siteBrief": {
"siteName": "Bean & Brew",
"siteType": "coffee shop",
"primaryGoal": "Attract local customers and showcase menu",
"audience": "Coffee enthusiasts, local community members, remote workers looking for a cozy workspace",
"tone": "warm, inviting, artisanal, community-focused",
"brandKeywords": "cozy, handcrafted, aromatic, rustic wood, warm browns, cream accents"
},
"layoutNotes": [
"Hero with inviting coffee shop interior or signature drink",
"Menu section with categories (espresso, specialty drinks, pastries)",
"About section with story and values",
"Location and hours with embedded map",
"Instagram feed integration",
"Warm color palette (browns, creams, coffee tones)"
],
"typography": {
"primaryFont": "\"Playfair Display\", serif",
"secondaryFont": "\"Lato\", sans-serif",
"usage": "Playfair Display for elegant headings, Lato for readable body text",
"fontImport": "https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;700&family=Lato:wght@300;400;700&display=swap"
}
}
Example 2: Law Firm
User prompt: "I need a theme for my law firm, Harrison & Associates. We specialize in corporate law and mergers. Very professional, trustworthy vibe."
{
"siteBrief": {
"siteName": "Harrison & Associates",
"siteType": "law firm",
"primaryGoal": "Establish credibility and generate client inquiries for corporate law services",
"audience": "Business executives, corporate decision-makers, companies seeking M&A legal counsel",
"tone": "professional, authoritative, trustworthy, sophisticated",
"brandKeywords": "corporate excellence, integrity, deep navy, gold accents, marble textures, clean lines"
},
"layoutNotes": [
"Hero with professional office imagery or abstract corporate graphics",
"Practice areas section highlighting corporate law and M&A expertise",
"Attorney profiles with credentials and specializations",
"Case studies or notable transactions (anonymized)",
"Client testimonials from business leaders",
"Contact section with consultation booking",
"Color palette: navy blue, white, gold accents"
],
"typography": {
"primaryFont": "\"Cormorant Garamond\", serif",
"secondaryFont": "\"Source Sans Pro\", sans-serif",
"usage": "Cormorant Garamond for prestigious headings, Source Sans Pro for professional body text",
"fontImport": "https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@400;600;700&family=Source+Sans+Pro:wght@300;400;600&display=swap"
}
}
Example 3: Esports Team
User prompt: "Make a theme for NeonPulse Gaming - an esports team. We compete in FPS games and want something edgy and fast."
{
"siteBrief": {
"siteName": "NeonPulse Gaming",
"siteType": "esports team",
"primaryGoal": "Build fan community, attract sponsors, and recruit talented players",
"audience": "Gaming enthusiasts, esports fans, potential sponsors, aspiring pro gamers",
"tone": "edgy, high-energy, competitive, bold",
"brandKeywords": "neon glow, cyberpunk, electric purple, hot pink, dark backgrounds, glitch effects, speed lines"
},
"layoutNotes": [
"Hero with team action shots or dynamic gaming footage background",
"Player roster with stats and social links",
"Match schedule and live stream integration",
"Tournament achievements and trophies",
"Sponsor showcase",
"Merchandise store link",
"News/blog for team updates",
"Dark theme with neon accents (purple, pink, cyan)"
],
"typography": {
"primaryFont": "\"Rajdhani\", sans-serif",
"secondaryFont": "\"DM Sans\", sans-serif",
"usage": "Rajdhani for aggressive tech headings, DM Sans for clean readable content",
"fontImport": "https://fonts.googleapis.com/css2?family=Rajdhani:wght@500;600;700&family=DM+Sans:wght@300;400;600&display=swap"
}
}
Example 4: Minimal Request
User prompt: "Build a custom theme for my blog"
{
"siteBrief": {
"siteType": "personal blog",
"primaryGoal": "Share content and build readership",
"tone": "personal, approachable"
},
"layoutNotes": [
"Hero with featured post or welcome message",
"Recent posts grid or list",
"About the author section",
"Categories/tags navigation",
"Newsletter signup"
],
"typography": {
"primaryFont": "\"Outfit\", sans-serif",
"secondaryFont": "\"Merriweather\", serif",
"usage": "Outfit for clean headings, Merriweather for comfortable long-form reading",
"fontImport": "https://fonts.googleapis.com/css2?family=Outfit:wght@400;600;700&family=Merriweather:wght@300;400;700&display=swap"
}
}
Presentation Format
Present the extracted spec to the user for confirmation. Use the table format below unless the calling command specifies a different presentation format:
| Field |
Value |
| Site Name |
[name] |
| Site Type |
[type] |
| Primary Goal |
[goal] |
| Target Audience |
[audience] |
| Tone |
[tone] |
| Brand Keywords |
[keywords] |
| Key Sections |
[comma-separated list from layoutNotes] |
| Typography |
[primaryFont] + [secondaryFont] |
Then ask: "Does this capture your vision? Let me know if you'd like to adjust anything before we proceed to design options."
1---2name: site-specification3description: Extract comprehensive site specifications from simple descriptions. Use when analyzing a user's theme request to determine site type, audience, tone, layout requirements, and typography.4---5
6# Site Specification Skill
7
8Extract detailed site specifications from user descriptions to guide theme generation. If the user has provided images, image urls or other documents, analyze them for additional clues about the brand and design preferences - obviously things like an exising logo image can be very informative about the brand's aesthetic, tone, and values, and any written documents can contain explicit statements about the brand identity or design preferences.
9
10## Site Spec Schema
11
12A complete site specification uses this JSON structure:
13
14```json
15{
16 "siteBrief": {
17 "siteName": "Name of the site/business",
18 "siteType": "Type of site (e.g., e-commerce, portfolio, blog, SaaS, restaurant)",
19 "primaryGoal": "Main purpose or conversion goal of the site",
20 "audience": "Target audience description",
21 "tone": "Voice and tone for the content",
22 "brandKeywords": "Keywords describing the brand aesthetic and values"
23 },
24 "layoutNotes": [
25 "Each layout requirement as a separate string",
26 "Sections, features, and visual elements"
27 ],
28 "typography": {
29 "primaryFont": "Main font for headings",
30 "secondaryFont": "Font for body text",
31 "usage": "How fonts should be applied",
32 "fontImport": "Google Fonts import URL"
33 }
34}
35```
36
37All fields are optional - only include what can be reasonably inferred from the user's description.
38
39## Inference Patterns by Site Type
40
41### SaaS / Technology
42
43**Infer:**
44- Primary goal: Drive signups or demo requests
45- Audience: Technical decision-makers, developers, or business users
46- Tone: Professional, innovative, trustworthy
47- Brand keywords: Modern, efficient, powerful, seamless
48
49**Typical layout:**
50- Hero with value proposition and CTA
51- Feature grid or comparison
52- Social proof (logos, testimonials)
53- Pricing section
54- FAQ
55- Final CTA
56
57**Typography tendency:**
58- Clean geometric sans-serifs
59- Strong hierarchy for scanning
60- Consider: Satoshi, Plus Jakarta Sans, Outfit
61
62### E-commerce / Retail
63
64**Infer:**
65- Primary goal: Drive purchases
66- Audience: Consumers with specific interests
67- Tone: Varies by brand (luxury vs. casual vs. value)
68- Brand keywords: Depends on positioning
69
70**Typical layout:**
71- Hero with featured products or promotion
72- Category navigation
73- Featured products grid
74- Trust signals (reviews, guarantees)
75- Newsletter signup
76
77**Typography tendency:**
78- Match to brand positioning
79- Luxury: refined serifs
80- Modern: geometric sans
81- Playful: display fonts
82
83### Professional Services (Law, Finance, Consulting)
84
85**Infer:**
86- Primary goal: Generate inquiries or establish credibility
87- Audience: Business decision-makers, individuals seeking expertise
88- Tone: Professional, authoritative, trustworthy
89- Brand keywords: Expertise, integrity, established, reliable
90
91**Typical layout:**
92- Hero with credentials or value statement
93- Services/practice areas
94- Team profiles
95- Case studies or results
96- Testimonials from clients
97- Contact/consultation CTA
98
99**Typography tendency:**
100- Traditional serifs for headings (credibility)
101- Clean sans-serif for body (readability)
102- Consider: Cormorant Garamond, DM Serif Display, Source Sans Pro
103
104### Restaurant / Food Service
105
106**Infer:**
107- Primary goal: Drive reservations or visits
108- Audience: Local diners, food enthusiasts
109- Tone: Warm, inviting, appetite-inducing
110- Brand keywords: Fresh, handcrafted, cozy, authentic
111
112**Typical layout:**
113- Hero with appetizing food imagery
114- Menu sections
115- About/story
116- Location and hours
117- Reservation CTA
118- Instagram or gallery
119
120**Typography tendency:**
121- Display fonts for personality
122- Readable serif or sans for menus
123- Consider: Playfair Display, Lora, Josefin Sans
124
125### Creative / Portfolio
126
127**Infer:**
128- Primary goal: Showcase work and attract clients
129- Audience: Potential clients, art directors, collaborators
130- Tone: Creative, distinctive, personality-driven
131- Brand keywords: Original, crafted, artistic, unique
132
133**Typical layout:**
134- Full-bleed portfolio hero
135- Project gallery or case studies
136- About/bio section
137- Services offered
138- Contact or inquiry form
139
140**Typography tendency:**
141- Distinctive display fonts
142- Personal to the creator's style
143- Consider: Clash Display, Fraunces, Syne
144
145### Blog / Media
146
147**Infer:**
148- Primary goal: Engage readers and build audience
149- Audience: Readers with specific interests
150- Tone: Varies by niche (authoritative, casual, entertaining)
151- Brand keywords: Informative, engaging, credible
152
153**Typical layout:**
154- Featured post hero
155- Recent posts grid or list
156- Category navigation
157- About the author
158- Newsletter signup
159- Popular/trending section
160
161**Typography tendency:**
162- Readable body fonts (critical for long-form)
163- Clean heading fonts
164- Consider: Merriweather, Source Serif Pro, DM Sans
165
166### Non-profit / Organization
167
168**Infer:**
169- Primary goal: Drive donations, volunteers, or awareness
170- Audience: Supporters, potential donors, community members
171- Tone: Compassionate, urgent, trustworthy
172- Brand keywords: Impact, community, change, hope
173
174**Typical layout:**
175- Hero with mission statement and CTA
176- Impact statistics
177- Programs/initiatives
178- Stories of impact
179- Ways to help (donate, volunteer)
180- Newsletter/updates signup
181
182**Typography tendency:**
183- Warm, approachable fonts
184- Avoid cold corporate feel
185- Consider: Lato, Open Sans, PT Serif
186
187## Examples
188
189### Example 1: Coffee Shop
190
191**User prompt:** "Create a theme for my coffee shop called Bean & Brew"
192
193```json
194{
195 "siteBrief": {
196 "siteName": "Bean & Brew",
197 "siteType": "coffee shop",
198 "primaryGoal": "Attract local customers and showcase menu",
199 "audience": "Coffee enthusiasts, local community members, remote workers looking for a cozy workspace",
200 "tone": "warm, inviting, artisanal, community-focused",
201 "brandKeywords": "cozy, handcrafted, aromatic, rustic wood, warm browns, cream accents"
202 },
203 "layoutNotes": [
204 "Hero with inviting coffee shop interior or signature drink",
205 "Menu section with categories (espresso, specialty drinks, pastries)",
206 "About section with story and values",
207 "Location and hours with embedded map",
208 "Instagram feed integration",
209 "Warm color palette (browns, creams, coffee tones)"
210 ],
211 "typography": {
212 "primaryFont": "\"Playfair Display\", serif",
213 "secondaryFont": "\"Lato\", sans-serif",
214 "usage": "Playfair Display for elegant headings, Lato for readable body text",
215 "fontImport": "https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400;700&family=Lato:wght@300;400;700&display=swap"
216 }
217}
218```
219
220### Example 2: Law Firm
221
222**User prompt:** "I need a theme for my law firm, Harrison & Associates. We specialize in corporate law and mergers. Very professional, trustworthy vibe."
223
224```json
225{
226 "siteBrief": {
227 "siteName": "Harrison & Associates",
228 "siteType": "law firm",
229 "primaryGoal": "Establish credibility and generate client inquiries for corporate law services",
230 "audience": "Business executives, corporate decision-makers, companies seeking M&A legal counsel",
231 "tone": "professional, authoritative, trustworthy, sophisticated",
232 "brandKeywords": "corporate excellence, integrity, deep navy, gold accents, marble textures, clean lines"
233 },
234 "layoutNotes": [
235 "Hero with professional office imagery or abstract corporate graphics",
236 "Practice areas section highlighting corporate law and M&A expertise",
237 "Attorney profiles with credentials and specializations",
238 "Case studies or notable transactions (anonymized)",
239 "Client testimonials from business leaders",
240 "Contact section with consultation booking",
241 "Color palette: navy blue, white, gold accents"
242 ],
243 "typography": {
244 "primaryFont": "\"Cormorant Garamond\", serif",
245 "secondaryFont": "\"Source Sans Pro\", sans-serif",
246 "usage": "Cormorant Garamond for prestigious headings, Source Sans Pro for professional body text",
247 "fontImport": "https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@400;600;700&family=Source+Sans+Pro:wght@300;400;600&display=swap"
248 }
249}
250```
251
252### Example 3: Esports Team
253
254**User prompt:** "Make a theme for NeonPulse Gaming - an esports team. We compete in FPS games and want something edgy and fast."
255
256```json
257{
258 "siteBrief": {
259 "siteName": "NeonPulse Gaming",
260 "siteType": "esports team",
261 "primaryGoal": "Build fan community, attract sponsors, and recruit talented players",
262 "audience": "Gaming enthusiasts, esports fans, potential sponsors, aspiring pro gamers",
263 "tone": "edgy, high-energy, competitive, bold",
264 "brandKeywords": "neon glow, cyberpunk, electric purple, hot pink, dark backgrounds, glitch effects, speed lines"
265 },
266 "layoutNotes": [
267 "Hero with team action shots or dynamic gaming footage background",
268 "Player roster with stats and social links",
269 "Match schedule and live stream integration",
270 "Tournament achievements and trophies",
271 "Sponsor showcase",
272 "Merchandise store link",
273 "News/blog for team updates",
274 "Dark theme with neon accents (purple, pink, cyan)"
275 ],
276 "typography": {
277 "primaryFont": "\"Rajdhani\", sans-serif",
278 "secondaryFont": "\"DM Sans\", sans-serif",
279 "usage": "Rajdhani for aggressive tech headings, DM Sans for clean readable content",
280 "fontImport": "https://fonts.googleapis.com/css2?family=Rajdhani:wght@500;600;700&family=DM+Sans:wght@300;400;600&display=swap"
281 }
282}
283```
284
285### Example 4: Minimal Request
286
287**User prompt:** "Build a custom theme for my blog"
288
289```json
290{
291 "siteBrief": {
292 "siteType": "personal blog",
293 "primaryGoal": "Share content and build readership",
294 "tone": "personal, approachable"
295 },
296 "layoutNotes": [
297 "Hero with featured post or welcome message",
298 "Recent posts grid or list",
299 "About the author section",
300 "Categories/tags navigation",
301 "Newsletter signup"
302 ],
303 "typography": {
304 "primaryFont": "\"Outfit\", sans-serif",
305 "secondaryFont": "\"Merriweather\", serif",
306 "usage": "Outfit for clean headings, Merriweather for comfortable long-form reading",
307 "fontImport": "https://fonts.googleapis.com/css2?family=Outfit:wght@400;600;700&family=Merriweather:wght@300;400;700&display=swap"
308 }
309}
310```
311
312## Presentation Format
313
314Present the extracted spec to the user for confirmation. Use the table format below unless the calling command specifies a different presentation format:
315
316| Field | Value |
317|-------|-------|
318| Site Name | [name] |
319| Site Type | [type] |
320| Primary Goal | [goal] |
321| Target Audience | [audience] |
322| Tone | [tone] |
323| Brand Keywords | [keywords] |
324| Key Sections | [comma-separated list from layoutNotes] |
325| Typography | [primaryFont] + [secondaryFont] |
326
327Then ask: "Does this capture your vision? Let me know if you'd like to adjust anything before we proceed to design options."