Best for
- Use when the user says "show me my brand", "brand playground", "preview my brand", "what does our brand look like", "visual preview", "brand kit", "see my colors", "how does my brand look", or
MoizIbnYousaf/marketing-cli/skills/brand-kit-playground/SKILL.md
Generate an interactive HTML brand playground that shows your brand rendered live — palette, typography, logo, voice — with a social card and OG image preview that updates as you tweak tokens. Opens in browser. The visual approval step for the /cmo flow: /visual-style writes the brand, this skill shows it. Use when the user says "show me my brand", "brand playground", "preview my brand", "what does our brand look like", "visual preview", "brand kit", "see my colors", "how does my brand look", or
Decision brief
Your brand lives in markdown files. This skill renders it as a living, interactive HTML page the user opens in their browser — palette swatches, type specimens, logo lockups, and a real social card preview that updates as they tweak tokens. When they're happy, they copy the stru…
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/MoizIbnYousaf/marketing-cli --skill "skills/brand-kit-playground"Inspect the Agent Skill "brand-kit-playground" from https://github.com/MoizIbnYousaf/marketing-cli/blob/f12fbcbe4929584697b309b9096c9427b0cfce8e/skills/brand-kit-playground/SKILL.md at commit f12fbcbe4929584697b309b9096c9427b0cfce8e. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Parse brand/creative-kit.md into structured data. Look for:
Use the template structure from references/html-architecture.md. The file should be 800-1500 lines depending on brand complexity. Key implementation details:
Tell the user: "Your brand playground is open in the browser. Play with the controls — every change updates the preview instantly. When you're happy with how it looks, click 'Copy Tokens' and paste the JSON here. I'll update your brand files."
When the user pastes the token JSON back:
1. Read brand/creative-kit.md — extract the Colors, Typography, and Visual Brand Style sections. - If the file is template/empty: warn the user. "Your creative kit is empty — the playground will use placeholder values. Run /visual-style first for a real preview, or continue and…
Permission review
No configured static risk pattern was detected
This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.
Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 83/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 27 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Your brand lives in markdown files. This skill renders it as a living, interactive HTML page the user opens in their browser — palette swatches, type specimens, logo lockups, and a real social card preview that updates as they tweak tokens. When they're happy, they copy the structured JSON and you write it back to brand/creative-kit.md.
This is the visual approval step in the /cmo flow. /visual-style writes the brand identity. This skill shows it.
brand/creative-kit.md — extract the Colors, Typography, and Visual Brand Style sections.
/visual-style first for a real preview, or continue and I'll use defaults you can tweak."brand/voice-profile.md — extract tone adjectives, vocabulary preferences, headline style.brand/positioning.md — extract the primary positioning angle for the social card headline.brand/audience.md if it exists — extract audience description for the voice snapshot panel.A single self-contained HTML file with inline CSS and JS. Zero external dependencies except Google Fonts (loaded via <link>). No framework. No build step. No server.
The file is written to the project root as brand-playground.html and opened in the user's default browser via open brand-playground.html.
+-- BRAND BAR ------------------------------------------------+
| [Logo] Project Name Brand Playground [Light/Dark toggle] |
+--------------------------------------------------------------+
| | |
| CONTROLS | TAB: [Brand System] [Social Card] [OG] |
| -------- | ----------------------------------------|
| | |
| > Colors | (Brand System tab) |
| Primary [pick] | COLOR PALETTE |
| Secondary | ## ## ## ## ## (live swatches) |
| Accent | |
| | TYPOGRAPHY |
| > Typography | Display: Aa Space Grotesk |
| Display font | Body: Aa Inter Regular |
| Body font | Mono: Aa JetBrains Mono |
| Scale ratio | |
| | VOICE SNAPSHOT |
| > Visual Style | Tone: confident, warm, technical |
| Border radius | Audience: indie developers |
| Shadow depth | Style: short-punchy headlines |
| Texture | |
| | (Social Card tab) |
| > Social Card | +---------------------------+ |
| Headline | | | |
| Subhead | | We just shipped | |
| Badge text | | dark mode | |
| Layout [v] | | | |
| Background [v] | | [logo] [NEW] | |
| | | | |
| > Presets | +---------------------------+ |
| Launch | 1200x675 - Twitter/X |
| Blog Post | |
| Feature | MULTI-PREVIEW: |
| | [Tw] [Li] [IG] [St] |
+--------------------+-----------------------------------------+
| TOKEN OUTPUT (structured JSON) [Copy Tokens] |
+--------------------------------------------------------------+
Tab 1: Brand System — The identity overview. Color palette rendered as large swatches with hex values and contrast ratios. Typography specimens at the brand's modular scale. Logo lockups (primary, mark, on-dark) if logo paths exist in creative-kit.md. Voice snapshot showing tone, vocabulary, headline style from voice-profile.md.
Tab 2: Social Card — A live social card preview rendered with the brand tokens. The user types a headline, picks a layout variant (centered, split, overlay, minimal), chooses a background style (gradient, solid, dark, light). The card re-renders instantly. Below: a multi-preview strip showing the same card at Twitter (1200x675), LinkedIn (1200x627), Instagram (1080x1080), and Story (1080x1920) aspect ratios.
Tab 3: OG Image — Same pattern as social card but for OG images. Inputs: title, description, author, category tag. Layouts: editorial, minimal, bold. Target: 1200x630.
Controls are grouped by concern. Each group is collapsible. Controls update the preview instantly — no "Apply" button.
| Token | Control | Range |
|---|---|---|
| Colors (primary, secondary, accent, background, foreground) | Color picker (native <input type="color">) | Any hex |
| Display font | Dropdown | 10 curated options + current brand font |
| Body font | Dropdown | 10 curated options + current brand font |
| Scale ratio | Slider | 1.125 (Major Second) to 1.5 (Perfect Fifth) |
| Border radius | Slider | 0px to 24px |
| Shadow depth | Slider | none / sm / md / lg / xl |
| Social card headline | Text input | Max 60 chars |
| Social card layout | Segmented buttons | Centered / Split / Overlay / Minimal |
| Social card background | Dropdown | Gradient / Solid / Dark / Light |
A <pre> block showing the current token state as structured JSON:
{
"colors": {
"primary": "#6366F1",
"primaryForeground": "#FFFFFF",
"secondary": "#7C3AED",
"accent": "#F59E0B",
"background": "#FFFFFF",
"foreground": "#0F172A"
},
"typography": {
"display": { "family": "Space Grotesk", "weights": [700, 800] },
"body": { "family": "Inter", "weights": [400, 500, 600] },
"scale": { "base": 16, "ratio": 1.25 }
},
"visual": {
"borderRadius": "8px",
"shadowDepth": "md",
"texture": "none"
}
}
A "Copy Tokens" button copies this JSON to the clipboard. The user pastes it back into the conversation. The agent reads the JSON and updates brand/creative-kit.md accordingly.
Include 3-5 presets that snap all controls to a cohesive combination:
| Preset | Vibe | Colors | Type | Visual |
|---|---|---|---|---|
| Tech Startup | Clean, modern, confident | Indigo + violet + amber | Space Grotesk + Inter | 8px radius, md shadow |
| Indie Maker | Warm, approachable, fun | Coral + teal + gold | Instrument Serif + DM Sans | 12px radius, lg shadow |
| Enterprise | Precise, authoritative, refined | Navy + slate + emerald | General Sans + IBM Plex | 4px radius, sm shadow |
| Creative Studio | Bold, expressive, artistic | Hot pink + lime + black | Space Grotesk + Syne | 0px radius, none shadow |
| From Brand | Current creative-kit.md values | (extracted) | (extracted) | (extracted) |
The "From Brand" preset is always first and always selected on load. It represents the current brand state. Other presets are for exploration.
Parse brand/creative-kit.md into structured data. Look for:
<link> URL.<img> tags in the brand system tab.If parsing is ambiguous, use reasonable defaults and note what you assumed.
Use the template structure from references/html-architecture.md. The file should be 800-1500 lines depending on brand complexity. Key implementation details:
<style> in <head>. Brand tokens as CSS custom properties on :root.<script> before </body>. Single state object, single updateAll() function.<link rel="stylesheet"> — this is the ONE external dependency.:root variables. Both themes use the brand palette.transform: scale() to show all sizes simultaneously.<input type="color"> — no library needed.JSON.stringify(state.tokens, null, 2).navigator.clipboard.writeText().open brand-playground.html
Tell the user: "Your brand playground is open in the browser. Play with the controls — every change updates the preview instantly. When you're happy with how it looks, click 'Copy Tokens' and paste the JSON here. I'll update your brand files."
When the user pastes the token JSON back:
brand/creative-kit.md values.creative-kit.md.brand/assets.md: "Brand playground session — updated colors and visual style."This skill slots into the /cmo foundation-building workflow:
/cmo activation
-> mktg init (if needed)
-> 3 research agents in parallel (brand, audience, competitors)
-> /visual-style (writes creative-kit.md)
-> /brand-kit-playground (renders creative-kit.md as interactive HTML)
-> User tweaks in browser
-> User copies tokens
-> Agent updates creative-kit.md
-> Continue to /image-gen, /creative, etc.
The playground is the approval gate between brand definition and brand execution. Before this skill existed, the user approved their visual identity by reading markdown. Now they see it rendered.
| Level | Context | Behavior |
|---|---|---|
| L0 | No brand files | Placeholder brand with defaults. Full functionality. Note: "These are defaults." |
| L1 | creative-kit.md only | Tokens extracted. No voice or positioning in the snapshot panels. |
| L2 | creative-kit + voice | Tokens + voice snapshot. Social card headlines informed by voice style. |
| L3 | creative-kit + voice + positioning | Full context. Social card headline defaults to positioning angle. |
| L4 | All 4 files | Complete playground with audience info in voice panel. Best experience. |
| Anti-pattern | Instead | Why |
|---|---|---|
| Generating a Next.js app with npm install | Single HTML file, zero dependencies | The playground must be instant. npm install is a 30-second wall that kills the flow. /app-store-screenshots scaffolds Next.js because it needs html-to-image for PNG export. This skill only needs browser rendering. |
| Using a framework (React, Vue, etc.) | Vanilla JS with a state object | Frameworks add bundle size, build complexity, and failure modes. The /playground plugin proves vanilla JS works for interactive previews. |
| Making the HTML generic/template-looking | The playground LOOKS like the brand | If the brand is dark and moody, the playground chrome should be dark. If the brand is warm and organic, the playground should feel warm. The playground's own aesthetic is derived from the brand tokens — it's not neutral gray chrome. |
| Hardcoding Google Fonts URLs | Construct URLs from the font names in creative-kit.md | The user's brand may use any font. Read the font name, build the URL. If the font isn't on Google Fonts, fall back to the closest system font. |
| Skipping the multi-preview strip | Always show at least 3 aspect ratios | The whole point of the social card tab is to see how the brand renders at real platform dimensions. One size isn't enough — the user needs to see Twitter vs Instagram vs Story to catch layout problems. |
| Outputting raw CSS instead of JSON tokens | Structured JSON with semantic names | The agent needs to parse the output and write it to creative-kit.md. CSS variables are for the browser. JSON tokens are for the agent loop. |
| Asking the user to manually edit creative-kit.md after the playground | Read the pasted JSON and write the changes yourself | The playground exists to make brand editing visual. Making the user edit markdown afterward defeats the purpose. |
The playground includes a governance strip below the preview:
[checkmark] Contrast: AA [checkmark] Heading readable [warning] Accent on bg: 2.8:1 (needs 3:1)
Implementation: after each state change, run WCAG contrast ratio checks on all text-background combinations. Use the relative luminance formula inline — no library needed. Flag failures as warnings with the specific ratio.
For the font dropdowns, offer these curated options plus whatever the brand currently uses:
Display fonts: Space Grotesk, General Sans, Instrument Serif, Syne, Clash Display, Satoshi, Plus Jakarta Sans, Outfit, Bricolage Grotesque, Manrope
Body fonts: Inter, DM Sans, IBM Plex Sans, Source Sans 3, Nunito Sans, Geist, Work Sans, Rubik, Lato, Open Sans
These are all on Google Fonts. The dropdown should show the font name rendered in that font (via per-option font-family).
| File | Path | Description |
|---|---|---|
| Playground HTML | brand-playground.html (project root) | The interactive playground |
| Asset log entry | brand/assets.md | "Brand playground generated — [date]" |
The HTML file is gitignored by convention (it's a generated artifact). The user can regenerate it anytime by re-running the skill.
| Problem | Fix |
|---|---|
| creative-kit.md has no parseable colors | Use defaults. Note which values were assumed in the token output. |
| Font not found on Google Fonts | Use the closest system font. Show a warning: "Couldn't load [font]. Using [fallback]." |
| User doesn't paste tokens back | That's fine. The playground served its purpose as a visual check. No brand files need updating. |
| Logo path in creative-kit.md doesn't resolve | Skip logo rendering. Show placeholder text: "[Logo]". |
| User wants to re-run after brand changes | Just re-run the skill. It reads current brand files and generates a fresh HTML. |
Alternatives
event4u-app/agent-config
Grounded design brief from the adopted corpus — style, WCAG-checked color tokens, typography, layout pattern, anti-patterns. Use on ui-design-brief or any which-style/palette/font/chart decision.
MoizIbnYousaf/marketing-cli
Use when the user wants to generate an image or video via Higgsfield AI. Covers 30+ models: Soul V2, Seedance 2.0, Kling 3.0, Veo 3.1, GPT Image 2, Nano Banana 2. Also covers Marketing Studio — branded ad video/image with avatars and products. Use whenever: "generate an image", "make a video", "animate this photo", "image-to-video", "img2vid", "edit this image with AI", "produce a clip", "create an ad", "make a UGC video", "marketing video", "brand video", "TV spot", "import product from URL", "
MoizIbnYousaf/marketing-cli
Generate visual asset briefs, ad copy variants, AI image prompts, video scripts, and storyboards. Full creative production system with 5 specialized modes: product photos, product video, social graphics, talking heads, and ad creative. Make sure to use this skill whenever the user mentions any visual or creative marketing need — ad creative, image prompts, video scripts, thumbnails, banners, social graphics, product photography, storyboards, or marketing visuals of any kind. Even if they just sa
coreyhaines31/marketingskills
When the user wants to plan, map, or restructure their website's page hierarchy, navigation, URL structure, or internal linking. Also use when the user mentions "sitemap," "site map," "visual sitemap," "site structure," "page hierarchy," "information architecture," "IA," "navigation design," "URL structure," "breadcrumbs," "internal linking strategy," "website planning," "what pages do I need," "how should I organize my site," or "site navigation." Use this whenever someone is planning what page