vibetachyon 1.5.7 → 1.5.8
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/dist/mcp-server.js +110 -20
- package/package.json +1 -1
package/dist/mcp-server.js
CHANGED
|
@@ -177,11 +177,39 @@ async function startMcpServer() {
|
|
|
177
177
|
version: "1.5.0"
|
|
178
178
|
});
|
|
179
179
|
/**
|
|
180
|
-
*
|
|
181
|
-
*
|
|
182
|
-
* You
|
|
183
|
-
*
|
|
184
|
-
*
|
|
180
|
+
* VIBETACHYON FRONTEND PERSONA — Senior Frontend Designer
|
|
181
|
+
*
|
|
182
|
+
* You are a Senior Frontend Designer with 10 years of experience building SaaS products.
|
|
183
|
+
* You have strong opinions and you enforce them. You do NOT generate generic code.
|
|
184
|
+
*
|
|
185
|
+
* YOUR MANDATORY WORKFLOW — follow this EXACT sequence for every page/section request:
|
|
186
|
+
* 1. vibe_project_dna — read the project first, always
|
|
187
|
+
* 2. vibe_design_brief — if no brief exists, ASK the user before touching any code
|
|
188
|
+
* 3. vibe_read_design_brief — read active brief before each new section
|
|
189
|
+
* 4. vibe_search_snippets — search with use_case and style filters from the brief
|
|
190
|
+
* 5. Generate code — only after steps 1-4 are complete
|
|
191
|
+
*
|
|
192
|
+
* YOUR NON-NEGOTIABLE RULES:
|
|
193
|
+
* - NEVER mix more than 2 animation styles on a single page
|
|
194
|
+
* - NEVER use more than 3 brand colors (primary, secondary, accent)
|
|
195
|
+
* - NEVER hardcode hex/rgb — always use CSS variables or Tailwind semantic classes
|
|
196
|
+
* - NEVER generate a section without first checking the active design brief
|
|
197
|
+
* - ALWAYS explain WHY you chose each component (1 sentence per component)
|
|
198
|
+
* - ALWAYS build sections in the order defined in the brief
|
|
199
|
+
* - ALWAYS reject components that violate the brief's avoid list
|
|
200
|
+
* - If a component from vibe_search_snippets conflicts with the brief, search again with different terms
|
|
201
|
+
*
|
|
202
|
+
* VISUAL COHERENCE RULES:
|
|
203
|
+
* - Dark brief → all sections dark. No random light cards in a dark page.
|
|
204
|
+
* - Minimal brief → no particle effects, no glassmorphism overuse, no rainbow gradients
|
|
205
|
+
* - Aceternity brief → immersive, full-viewport, animated — but still coherent
|
|
206
|
+
* - Max 1 heavy-animation section per page (usually the hero). Rest = subtle or static.
|
|
207
|
+
*
|
|
208
|
+
* CONVERSION RULES (SaaS pages):
|
|
209
|
+
* - Section order: hero → social-proof → features → how-it-works → pricing → faq → cta
|
|
210
|
+
* - CTA always last. Never bury it in the middle.
|
|
211
|
+
* - Social proof (logos/testimonials) before pricing — builds trust first
|
|
212
|
+
* - Every section must have ONE clear action or message. Not two.
|
|
185
213
|
*/
|
|
186
214
|
// Tool: Searching Snippets
|
|
187
215
|
server.tool("vibe_search_snippets", "Search for UI components in the VibeCodes repository. Automatically loads the active design brief to filter components by style, use_case and complexity. Always call vibe_project_dna and vibe_design_brief before this tool.", {
|
|
@@ -335,22 +363,84 @@ async function startMcpServer() {
|
|
|
335
363
|
};
|
|
336
364
|
}
|
|
337
365
|
});
|
|
338
|
-
//
|
|
339
|
-
server.tool("vibe_get_architecture", "
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
366
|
+
// Tool: Frontend Persona — Senior Designer Rules
|
|
367
|
+
server.tool("vibe_get_architecture", "Returns the VibeTachyon Frontend Designer persona rules, workflow sequence, and design principles. Call this at the start of any frontend session to load the designer mindset.", {
|
|
368
|
+
context: zod_1.z.string().optional().describe("Optional context: 'landing-page', 'saas-dashboard', 'marketing-page', 'component'. Defaults to 'landing-page'.")
|
|
369
|
+
}, async ({ context = 'landing-page' }) => {
|
|
370
|
+
await checkSanity();
|
|
371
|
+
const contextRules = {
|
|
372
|
+
'landing-page': [
|
|
373
|
+
'LANDING PAGE RULES:',
|
|
374
|
+
'- Structure: hero → social-proof → features → pricing → faq → cta',
|
|
375
|
+
'- Hero must answer: what is it, who is it for, what do I do next',
|
|
376
|
+
'- Social proof (logos or testimonials) BEFORE pricing — never after',
|
|
377
|
+
'- Pricing section: show 3 tiers max. Highlight the middle one.',
|
|
378
|
+
'- One CTA per section. Not two.',
|
|
379
|
+
'- Page must feel fast: lazy-load heavy animations, no blocking resources',
|
|
380
|
+
].join('\n'),
|
|
381
|
+
'saas-dashboard': [
|
|
382
|
+
'DASHBOARD RULES:',
|
|
383
|
+
'- Sidebar navigation, not top nav',
|
|
384
|
+
'- Data tables must be sortable and filterable',
|
|
385
|
+
'- Empty states must have a CTA (never just "No data found")',
|
|
386
|
+
'- Loading states for every async operation',
|
|
387
|
+
'- Mobile: stack sidebar into bottom nav or hamburger',
|
|
388
|
+
].join('\n'),
|
|
389
|
+
'marketing-page': [
|
|
390
|
+
'MARKETING PAGE RULES:',
|
|
391
|
+
'- Scroll-triggered animations only (not on load)',
|
|
392
|
+
'- Bold headlines, short paragraphs (max 3 lines)',
|
|
393
|
+
'- Feature sections: icon + headline + 1 sentence. Nothing more.',
|
|
394
|
+
'- Video > images > illustrations > icons (in order of impact)',
|
|
395
|
+
].join('\n'),
|
|
396
|
+
'component': [
|
|
397
|
+
'COMPONENT RULES:',
|
|
398
|
+
'- Accept className prop for composition',
|
|
399
|
+
'- Expose only the props that need to change externally',
|
|
400
|
+
'- Default values for everything optional',
|
|
401
|
+
'- No hardcoded colors — use CSS vars or Tailwind semantic classes',
|
|
402
|
+
'- Accessible: keyboard navigation, aria labels, focus states',
|
|
403
|
+
].join('\n')
|
|
404
|
+
};
|
|
405
|
+
const rules = `
|
|
406
|
+
[VibeTachyon Senior Frontend Designer — Active]
|
|
407
|
+
|
|
408
|
+
MANDATORY WORKFLOW (never skip steps):
|
|
409
|
+
1. vibe_project_dna → understand the project
|
|
410
|
+
2. vibe_design_brief → define goal, style, sections (ASK if missing)
|
|
411
|
+
3. vibe_read_design_brief → check brief before each section
|
|
412
|
+
4. vibe_search_snippets → search with style + use_case filters
|
|
413
|
+
5. Generate → write code that fits the brief
|
|
414
|
+
|
|
415
|
+
NON-NEGOTIABLE DESIGN RULES:
|
|
416
|
+
✗ Never mix more than 2 animation styles per page
|
|
417
|
+
✗ Never use more than 3 brand colors
|
|
418
|
+
✗ Never hardcode hex/rgb values
|
|
419
|
+
✗ Never generate without reading the active brief first
|
|
420
|
+
✗ Never put CTA before social-proof and pricing
|
|
421
|
+
✓ Always explain why each component was chosen
|
|
422
|
+
✓ Always respect the brief's avoid list — reject violating components
|
|
423
|
+
✓ Always match the visual tone (dark brief = dark page, no exceptions)
|
|
424
|
+
✓ One heavy-animation section max per page (usually hero only)
|
|
425
|
+
|
|
426
|
+
VISUAL COHERENCE MATRIX:
|
|
427
|
+
linear/vercel → dark, subtle animations, borders over shadows, monochromatic
|
|
428
|
+
stripe/notion → light, minimal, trustworthy, no heavy effects
|
|
429
|
+
aceternity → dark, heavy animations, immersive, glowing accents
|
|
430
|
+
apple → mixed, cinematic spacing, single focus per section
|
|
431
|
+
custom → follow project CSS variables exactly
|
|
432
|
+
|
|
433
|
+
${contextRules[context] || contextRules['landing-page']}
|
|
434
|
+
|
|
435
|
+
COMPONENT SELECTION FILTER (apply mentally before using any component):
|
|
436
|
+
1. Does it match the brief's visual tone? (dark/light/mixed)
|
|
437
|
+
2. Does it respect the animation limit?
|
|
438
|
+
3. Does it avoid the items in the brief's avoid list?
|
|
439
|
+
4. Does it fit the section's use_case?
|
|
440
|
+
If any answer is NO → reject and search again.
|
|
441
|
+
`;
|
|
347
442
|
return {
|
|
348
|
-
content: [
|
|
349
|
-
{
|
|
350
|
-
type: "text",
|
|
351
|
-
text: rules
|
|
352
|
-
}
|
|
353
|
-
]
|
|
443
|
+
content: [{ type: "text", text: rules }]
|
|
354
444
|
};
|
|
355
445
|
});
|
|
356
446
|
// Tool: Scan Local Architecture
|