og-image-creator/SKILL.md
Smart OG image generation that studies your codebase, understands routes and brand identity, then creates contextually appropriate Open Graph images using Playwright and React components. Triggers: "create og images", "generate social cards", "add open graph images".
npx skillsauth add abanoub-ashraf/manus-skills-import og-image-creatorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Generate authentic, brand-aligned Open Graph images by understanding your codebase first, then creating contextually appropriate images for each route using Playwright and your existing components.
Before generating OG images, ask:
Core principles:
Route discovery:
app/*/page.tsx or pages/*.tsxsrc/pages/*.astroBrand extraction:
Use scripts/analyze_codebase.py to automate discovery.
Determine appropriate layouts per page type:
Layout principles:
Component-based generation:
Technical approach:
public/og/ or appropriate static directoryUse scripts/generate_og_images.py for automation.
App Router:
// app/page.tsx
export const metadata = {
openGraph: {
images: ['/og/home.png'],
},
}
Pages Router:
// pages/index.tsx
<Head>
<meta property="og:image" content="/og/home.png" />
</Head>
Dynamic OG images: Consider Next.js OG Image Generation (@vercel/og) for dynamic content, but use static generation for brand consistency.
---
// src/pages/index.astro
const ogImage = '/og/home.png';
---
<head>
<meta property="og:image" content={ogImage} />
</head>
Add OG tags to public/index.html or use react-helmet:
<Helmet>
<meta property="og:image" content="/og/home.png" />
</Helmet>
❌ Generic templates: Don't use stock social card templates that ignore the site's brand
❌ One size fits all: Don't use the same OG image design for every page type
❌ Placeholder content: Don't use "Lorem ipsum" or generic text
❌ Overcrowding: Don't cram too much text, too many images, or complex layouts
❌ Ignoring components: Don't create OG images from scratch if components exist
❌ Manual generation: Don't create OG images one by one manually
IMPORTANT: OG images should vary based on page context, not converge on a single design.
Dimensions to vary:
Avoid converging on:
Context drives variation:
Dependencies (install as needed):
npm install playwright sharp
# or
pip install playwright Pillow
Playwright setup:
playwright install chromium
File structure:
project/
├── public/og/ # Generated OG images
│ ├── home.png
│ ├── about.png
│ └── ...
└── scripts/ # Generation scripts
├── analyze_codebase.py
└── generate_og_images.py
OG images are an extension of your brand, not generic social cards.
Study the codebase to understand the design language. Extract the brand identity. Use actual components and content. Create contextually appropriate images that feel native to the site.
When someone shares your page, the OG image should feel like a natural preview—not a template slapped on top.
You're capable of creating sophisticated, brand-aligned OG images that enhance rather than undermine the site's identity.
development
Design principles for building polished, native-feeling SwiftUI apps and widgets. Use this skill when creating or modifying SwiftUI views, iOS widgets (WidgetKit), or any native Apple UI. Ensures proper spacing, typography, colors, and widget implementations that look and feel like quality apps rather than AI-generated slop.
data-ai
Design and implement SwiftUI views, components, and app architecture. Use when creating new SwiftUI views, implementing MVVM/TCA patterns, managing state with @Observable, @State, @Binding, or @Environment, designing navigation flows, or structuring iOS app architecture. Triggers on SwiftUI, view model, state management, navigation, coordinator pattern.
development
Implement, review, or improve SwiftUI animations and transitions. Use when adding implicit or explicit animations with withAnimation, configuring spring animations (.smooth, .snappy, .bouncy), building phase or keyframe animations with PhaseAnimator/KeyframeAnimator, creating hero transitions with matchedGeometryEffect or matchedTransitionSource, adding SF Symbol effects (bounce, pulse, variableColor, breathe, rotate, wiggle), implementing custom Transition or CustomAnimation types, or ensuring animations respect accessibilityReduceMotion.
testing
Audit SwiftUI views for accessibility (iOS + macOS) with patch-ready fixes