lgj-graphics
Lead Gen Jay brand illustration and motion graphics style system - flat SVG with floating UI, Framer Motion animations, consistent design tokens
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Lead Gen Jay brand illustration and motion graphics style system - flat SVG with floating UI, Framer Motion animations, consistent design tokens
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Safely adapt an external GitHub repository into an existing project instead of blindly copying its architecture. Use when the user wants to import, transplant, fork, vendor, or reimplement someone else's repo for their own stack, merge a repo into an existing app, preserve their own auth/database/billing/design-system while taking a source repo's features, resume an interrupted repository adaptation, or turn a repository or workflow into a callable Agent Skill or plugin. Performs evidence-first source and target analysis, builds a conflict matrix, interviews one material decision at a time, requires explicit approval of an Integration Contract before any code changes, implements in isolation, and verifies against the contract.
Generate brand-consistent images using fal.ai FLUX.1. This skill should be used when creating images for landing pages, marketing materials, or any visual assets that need to match Lead Gen Jay brand style. Ensures visual consistency across all generated imagery.
Edit testimonial videos into polished social clips. Triggers on: 'testimonial edit', 'edit testimonial', 'testimonial video', 'cut testimonial', 'testimonial clip', 'social proof video', 'customer video edit', 'case study video'.
Quality enforcement layer for eliminating generic AI aesthetics in frontend code. This skill should be used when building or reviewing UI components, pages, or applications to ensure premium visual quality, authentic content, and distinctive design that avoids common AI-generated patterns.
Audit and clean up any project workspace — temp files, security issues, dead code, unused deps, git hygiene, build caches, and code quality. This skill should be used when the user wants to clean up, tidy, audit, or organize the project. Also use when the user mentions 'cleanup,' 'clean up,' 'tidy up,' 'housekeeping,' 'remove temp files,' 'dead code,' 'unused deps,' 'unused dependencies,' 'git hygiene,' 'project audit,' 'repo cleanup,' 'clear cache,' or 'stale branches.'
Improves the quality of images, especially screenshots, by enhancing resolution, sharpness, and clarity. Perfect for preparing images for presentations, documentation, or social media posts.
| name | LGJ-graphics |
| description | Lead Gen Jay brand illustration and motion graphics style system - flat SVG with floating UI, Framer Motion animations, consistent design tokens |
| version | 1.0.0 |
| tags | ["illustration","svg","motion-graphics","brand-style","LGJ","framer-motion","n8n","workflow"] |
This skill encodes the exact visual style used across Lead Gen Jay's landing pages, tool pages, and marketing materials. Use it whenever creating new illustrations, feature graphics, hero visuals, workflow diagrams, or animated sections.
The LGJ illustration style is flat SVG illustrations with floating UI card elements — a stylized "product screenshot" aesthetic that suggests the product experience without being a literal screenshot.
Core principles:
| Token | Hex | Usage |
|---|---|---|
brand-primary | #ED0D51 | CTAs, primary accents, sparkle icons, glow pulses |
brand-primary-light | #ED0D51 at 10% opacity | Badges, icon backgrounds, tinted sections |
brand-primary-bg | #ED0D51 at 5% opacity | AI output sections, highlighted areas |
brand-blue | #0144F8 | Secondary accents, links, info badges, HTTP/API nodes |
| Token | Hex | Usage |
|---|---|---|
success | #10B981 (emerald-500) | Valid badges, checkmarks, verified states |
success-light | #D1FAE5 (emerald-100) | Success badge backgrounds |
warning | #F59E0B (amber-500) | Risky badges, star ratings, caution states |
warning-light | #FEF3C7 (amber-100) | Warning badge backgrounds |
danger | #EF4444 (red-500) | Invalid badges, error states, window close dot |
danger-light | #FEE2E2 (red-100) | Error badge backgrounds |
purple | #8B5CF6 (violet-500) | AI/magic sparkles, send step, secondary accent |
purple-light | #E0E7FF (indigo-100) | Purple badge backgrounds |
| Token | Hex | Usage |
|---|---|---|
slate-900 | #0f172a | Primary text, headings, shadow flood color |
slate-700 | #334155 | Secondary text, body content |
slate-500 | #64748b | Tertiary text |
slate-400 | #94a3b8 | Muted text, borders, connector lines |
slate-300 | #cbd5e1 | Connector default color |
slate-200 | #e2e8f0 | Card strokes, dividers |
slate-100 | #f1f5f9 | Card backgrounds, subtle fills |
white | #ffffff | Card surfaces, main backgrounds |
Each tool illustration uses a different tinted ellipse background:
| Tool Context | Fill Color |
|---|---|
| Email/Spam | #E0F2FE (sky-100) |
| Domain/DNS Health | #DCFCE7 (green-100) |
| Blacklist/Security | #FEE2E2 (red-100) |
| DNS Generator | #EDE9FE (violet-100) |
| DNS Checker | #DBEAFE (blue-100) |
| Inbox Placement | #FEF3C7 (amber-100) |
The project has a reusable illustration library at src/components/illustrations/. Always use shared helpers instead of hand-coding primitives.
shared.tsx)Import from ../shared (relative) or @/components/illustrations/shared:
| Component | Purpose |
|---|---|
colors | Color token object (colors.pink, colors.blue, colors.slate900, etc.) |
ShadowDefs | Drop-in <defs> block with shadow-sm, shadow-md, shadow-lg filters |
Card | White rounded rect with shadow and slate-200 stroke |
Badge | Colored pill with centered white text |
OutlineBadge | White pill with colored text and slate-200 border |
AvatarDot | Colored circle with optional initials |
getAvatarColor | Cycle through pink/blue/emerald/amber by index |
StarRating | Row of filled/empty amber stars |
StatusDot | Small colored circle (success/warning/error/info) |
CheckIcon | Green circle + checkmark stroke |
LockIcon | Padlock icon |
N8nNode | n8n-style workflow node with colored left border |
BezierConnector | Curved path connecting two points with optional dots |
bezierPath | Pure function returning SVG d attribute for bezier curves |
ProgressBar | Horizontal progress bar with track and fill |
Divider | Horizontal line in slate-200 |
TextLine | Content placeholder rectangle |
MiniChart | Sparkline-style bar chart |
import { ShadowDefs, Card, Badge, AvatarDot, N8nNode, BezierConnector } from "../shared";
backgrounds.tsx)| Component | Purpose |
|---|---|
DotGridBackground | Dot grid pattern |
GlowOrbs | Slow-moving blurred orbs |
logos.tsx)30 simplified brand logo icons.
When adding a new tool logo: Check Nextcloud Tool Logos for the real file as reference first:
~/Nextcloud/Visual assets/Logos/Tool Logos/~/Library/CloudStorage/Nextcloud-LGJ@cloud.nextwave.io/Visual assets/Logos/Tool Logos/
Copy to public/logos/ for .webp fallback when SVG icons aren't sufficient.AI & Dev Tools: ClaudeLogo, OpenAILogo, GitHubLogo, VSCodeLogo, CursorLogo, VercelLogo, SupabaseLogo
Automation & Email: N8NLogo, ZapierLogo, MakeLogo, GmailLogo, OutlookLogo, SlackLogo
Social: LinkedInLogo, InstagramLogo
Cold Email & Outreach: InstantlyLogo, ApolloLogo, AimfoxLogo, PhantomBusterLogo
Data & Enrichment: ApifyLogo, ClayLogo, HyrosLogo, EmailBisonLogo
CRM & Marketing: HighLevelLogo, ConsultiLogo
Domains: DynadotLogo
Payments & Commerce: StripeLogo, PayPalLogo, WhopLogo, ZoomLogo
viewBox="0 0 400 300" (4:3 landscape)viewBox="0 0 400 200" (2:1 wide)viewBox="0 0 256 192" (4:3 landscape, smaller)viewBox="0 0 200 200" (1:1 square)fill="none" on the root SVGclassName={cn('w-full h-auto', className)} for responsive sizingUse the <ShadowDefs /> component. It provides three filter levels:
<ShadowDefs />
// Then apply: filter="url(#shadow-sm)" | filter="url(#shadow-md)" | filter="url(#shadow-lg)"
Shadow parameters (using feDropShadow):
shadow-sm: dy=1, stdDeviation=2, opacity=0.08shadow-md: dy=2, stdDeviation=4, opacity=0.1shadow-lg: dy=4, stdDeviation=8, opacity=0.12All use floodColor="#0f172a" (slate-900).
Use the Card component:
<Card x={40} y={30} width={320} height={240} rx={8} shadow="md">
{/* Card content */}
</Card>
rx={8} for cards (default), rx={6} for inner elements, rx={12} for large panelsUse TextLine for placeholder text:
<TextLine x={60} y={115} width={280} />
<TextLine x={60} y={130} width={240} />
<TextLine x={60} y={145} width={180} />
Use AvatarDot component:
<AvatarDot cx={30} cy={50} r={10} initials="JF" color={colors.pink} />
Colors cycle: pink, blue, emerald, amber (use getAvatarColor(index)).
Use Badge for filled pills:
<Badge x={0} y={0} label="Valid" color={colors.emerald} />
Use OutlineBadge for bordered pills:
<OutlineBadge x={0} y={0} label="Draft" color={colors.pink} />
<rect x="60" y="185" width="120" height="36" rx="18" fill="#ED0D51" />
<text x="85" y="208" fontSize="12" fill="white" fontWeight="600">Send Campaign</text>
rx = half height#ED0D51 fill with white text<path d="M8 0 L10 6 L16 8 L10 10 L8 16 L6 10 L0 8 L6 6 Z" fill="#ED0D51" />
8-point star shape. Use brand primary or purple (#8B5CF6) at 40-50% opacity for floating decorative sparkles.
Small colored circles at 30-40% opacity scattered around the composition:
<circle cx="145" cy="55" r="5" fill="#ED0D51" fillOpacity="0.3" />
<circle cx="50" cy="130" r="4" fill="#8B5CF6" fillOpacity="0.3" />
<circle cx="155" cy="120" r="3" fill="#10B981" fillOpacity="0.4" />
Sizes: r=3 to r=5. Always use fillOpacity not solid fills.
Use CheckIcon component:
<CheckIcon x={10} y={10} size={12} color={colors.emerald} />
<circle cx="75" cy="55" r="6" fill="#EF4444" />
<circle cx="95" cy="55" r="6" fill="#F59E0B" />
<circle cx="115" cy="55" r="6" fill="#10B981" />
<path d="M120 100 L160 100" stroke="#E5E7EB" strokeWidth="2" strokeDasharray="5,5" />
<path d="M155 95 L165 100 L155 105" fill="#E5E7EB" />
Use strokeDasharray="5,5" for connections, with small triangle arrowheads.
Use the N8nNode component — rounded rectangle with colored left border:
<N8nNode x={20} y={40} label="Webhook" sublabel="POST /api" nodeType="trigger" />
Node type colors:
#ED0D51#0144F8#8b5cf6#475569#10b981#f59e0bUse BezierConnector to link nodes:
<BezierConnector x1={140} y1={64} x2={180} y2={120} executionDot />
showDots (default true): connection dots at each endexecutionDot: green dot at midpoint showing execution flowHeadings: fontSize="14" fontWeight="700" fontFamily="Inter, system-ui, sans-serif" fill="#0f172a"
Body: fontSize="11" fontWeight="500" fontFamily="Inter, system-ui, sans-serif" fill="#334155"
Small: fontSize="9" fontWeight="500" fontFamily="Inter, system-ui, sans-serif" fill="#94a3b8"
Mono/Code: fontSize="10" fontWeight="500" fontFamily="'SF Mono', 'Fira Code', monospace" fill="#334155"
Badge text: fontSize="10" fontWeight="600" fill="white"
Tool page illustrations use a distinct pattern from feature illustrations:
<svg viewBox="0 0 256 192" fill="none">
<ShadowDefs />
{/* 1. Background blob */}
<ellipse cx="128" cy="96" rx="100" ry="80" fill="#E0F2FE" />
{/* 2. Main element */}
<Card x={48} y={50} width={120} height={90}>
{/* Card inner content */}
</Card>
{/* 3. Secondary element */}
<circle cx="175" cy="115" r="30" fill="#FFFFFF" stroke="#F97316" strokeWidth="3" />
{/* 4. Floating badges */}
<Badge x={35} y={50} label="SPF" color={colors.emerald} fontSize={8} />
{/* 5. Accent sparkles */}
<circle cx="200" cy="60" r="4" fill="#FCD34D" />
</svg>
Import from @/components/ui/motion:
FadeIn - Fade with direction (up/down/left/right)SlideIn - Configurable slide from any directionScaleIn - Scale with optional bounceStaggerContainer - Parent for staggered children (fast/normal/slow)StaggerItem - Child with scale or slide variantsHoverScale - Hover/tap scale effectsAnimatedCounter - Number counting animationAnimatedProgressCircle - SVG progress ringImport from @/lib/animations:
springs.snappy, springs.smooth, springs.gentle, springs.bouncydurations.fast (0.15s), durations.normal (0.2s), durations.slow (0.3s)easings.easeOut, easings.emphasizedDeceleratefadeInUp, scaleIn, popIn, staggerContainer, staggerItemviewportOnce (once: true, margin: "-50px", amount: 0.3)Feature section illustration:
<FadeIn direction="up">
<MyIllustration />
</FadeIn>
Stats with staggered reveal:
<StaggerContainer>
<StaggerItem><StatCard value="95%" label="Accuracy" /></StaggerItem>
<StaggerItem><StatCard value="10M+" label="Verified" /></StaggerItem>
</StaggerContainer>
Floating badge with bounce:
<ScaleIn bounce delay={0.3}>
<Badge>Email Verified</Badge>
</ScaleIn>
Import from @/components/landing/decorative-backgrounds:
GlowOrbs - Slow-moving blurred orbs (22-25s loop):
<GlowOrbs variant="pink" /> // #ED0D51 + #FF3D71
<GlowOrbs variant="purple" /> // purple-500 + violet-600
<GlowOrbs variant="blue" /> // blue-500 + cyan-500
GridBackground - Dot grid pattern:
<GridBackground dotColor="rgba(237,13,81,0.07)" dotSize={1} gap={32} />
Brand primary glow for interactive elements:
boxShadow: "0 0 20px 0 rgba(237, 13, 81, 0.3)" // hover state
src/components/illustrations/)| File | Contains |
|---|---|
shared.tsx | SVG primitives: ShadowDefs, Card, Badge, OutlineBadge, AvatarDot, StarRating, StatusDot, CheckIcon, LockIcon, N8nNode, BezierConnector, ProgressBar, Divider, TextLine, MiniChart |
backgrounds.tsx | DotGridBackground, GlowOrbs |
logos.tsx | 30 brand logo icons (see Logo Icons section for full list) |
index.tsx | Barrel export of everything |
| Folder | Illustrations |
|---|---|
lead-gen/ | VerifiedLeadCard, EmailInbox, EmailSequence, LeadDatabase, DomainHealth |
sales/ | BookedMeetings, SalesPipeline, ROIDashboard |
ai/ | AIChatInterface, WorkflowDiagram, BeforeAfter, AutomationPipeline, AICodeAssistant |
code/ | WorkflowCanvas, BrowserAppPreview, WebhookTrigger, CodeTerminal |
social-proof/ | TestimonialCard, ReviewGrid, TrustBadges, SocialProofBanner |
community/ | CommunityFeed, CourseModules, Leaderboard |
analytics/ | ConversionFunnel, ABTestResults, TrafficDashboard |
Total: 27 illustrations + 15 logos + shared primitives + backgrounds
| File | Contains |
|---|---|
components/ui/motion.tsx | 12+ Framer Motion wrapper components |
lib/animations.ts | All spring presets, easing curves, variant definitions |
components/landing/decorative-backgrounds.tsx | GlowOrbs, GridBackground, GeometricPattern |
/demo/illustrations — showcases all illustration components, shared primitives, and logo icons.
Every illustration follows this pattern:
interface IllustrationProps {
className?: string;
}
export function IllustrationName({ className }: IllustrationProps) {
return (
<svg
viewBox="0 0 400 300"
fill="none"
xmlns="http://www.w3.org/2000/svg"
className={className}
role="img"
aria-label="Description of the illustration"
>
<ShadowDefs />
{/* Background elements */}
{/* Main card(s) using Card component */}
{/* Floating badges using Badge component */}
{/* Detail elements */}
</svg>
);
}
shared.tsx — ShadowDefs, Card, Badge, AvatarDot, N8nNode, etc.Card + ShadowDefs (feature) or background blob (tool)TextLine to fill space naturallyAvatarDot to suggest user activity (2-4 clustered)CheckIcon, sparkles, secondary cardsIllustrationProps interfaceindex.tsxFadeIn, ScaleIn, or StaggerContainerTextLine placeholders)ShadowDefs componentCard component from shared.tsxcurrentColor — specify exact hex values from colors object