/brand-kit
Build a portable brand-kit.json for the user's product — colors, typography, voice — that other skills (video, ad creative, landing page) can consume. Multiple discovery paths so it works whether the user has access to their site's source code or only a public URL or just a logo
$ npx -y skills add cognyai/claude-code-marketing-skills --skill brand-kit --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/brand-kit
Context preview
The summary Claude sees to decide when to auto-load this skill.
Build a portable brand-kit.json for the user's product — colors, typography, voice — that other skills (video, ad creative, landing page) can consume. Multiple discovery paths so it works whether the user has access to their site's source code or only a public URL or just a logo
SKILL.md
brand-kit.SKILL.mdname: brand-kit
description: Build a portable brand-kit.json for the user's product — colors, typography, voice — that other skills (video, ad creative, landing page) can consume. Multiple discovery paths so it works whether the user has access to their site's source code or only a public URL or just a logo image.
version: "1.0.0"
author: Cogny AI
platforms: [hyperframes, ffmpeg]
user-invocable: true
argument-hint: "<site URL | repo path | logo path | nothing for interview>"
allowed-tools:
- WebFetch
- WebSearch
- Bash
- Read
- Write
- Edit
# Cogny MCP context tree — may already contain a documented brand kit / voice / palette
- mcp__cogny__get_context_tree_overview
- mcp__cogny__browse_context_tree
- mcp__cogny__read_context_node
- mcp__cogny__search_context
Brand Kit
Build a `brand-kit.json` describing the user's product in a way other skills can consume — colors, type, voice, do/don't language, optional logo. Other Cogny skills (`/tiktok-launch-video`, `/reddit-launch-video`, `/linkedin-launch-video`, `/landing-page-review`, `/ad-copy-writer`) read this file when present.
The skill is built around the reality that **users don't always have access to their site's source code**. There are six paths to a kit, in priority order. Stop at the first one that yields enough.
Usage
`/brand-kit https://example.com` — extract from a live site `/brand-kit ~/git/our-site` — extract from a local repo (Tailwind / CSS vars) `/brand-kit ~/Desktop/logo.png` — extract palette from a logo or screenshot `/brand-kit ~/Desktop/homepage.png logo.png` — combine site screenshot + logo `/brand-kit` — interview the user
Output
A `brand-kit.json` written to (in priority order, whichever path makes sense for the user's setup):
1. `.agents/brand-kit.json` (if `.agents/` exists) 2. `.claude/brand-kit.json` (if `.claude/` exists) 3. `./brand-kit.json` (otherwise — current working directory)
Always print the path you wrote to so the user can move it.
Schema
{
"name": "cogny",
"site": "https://cogny.com",
"logo": {
"path": "./brand/logo-square.png",
"use_in_video": false
},
"colors": {
"background": "#1f1d1d",
"foreground": "#ede8e3",
"primary": "#b09acd",
"accent": "#c9badf",
"muted": "#9a9494",
"card": "#282525",
"fuchsia": "#d4848a",
"success": "#7ec8a4",
"amber": "#d4a857"
},
"type": {
"family": "'JetBrains Mono', 'Fira Code', ui-monospace, monospace",
"weight_display": 700,
"weight_body": 500,
"letter_spacing_display": "-0.02em"
},
"voice": {
"register": "technical, direct, anti-jargon, CLI-aesthetic",
"person": "first-person plural (we / your)",
"do": ["concrete numbers", "name the tradeoff", "name the tool"],
"dont": ["leverage", "unlock", "revolutionary", "next-gen"]
},
"source": "repo: ~/git/cogny/tailwind.config.ts + src/index.css",
"captured_at": "2026-04-25"
}Minimum viable kit: `colors.background`, `colors.foreground`, `colors.primary`, `type.family`, `voice.register`. Don't ship without all five.
---
Path 0 — Cogny MCP context tree (cheapest, run first if connected)
**Use when**: the `cogny` MCP server is in `.mcp.json`. The user may have already documented their brand — voice, palette, tone — in their context tree, in which case scraping is redundant.
mcp__cogny__get_context_tree_overview # see what's documented
mcp__cogny__search_context query="brand" # palette, voice, tone, design tokens
mcp__cogny__search_context query="positioning" # voice + register often live here
mcp__cogny__read_context_node node_id="…"
If the tree returns brand / palette / voice nodes, hydrate the kit from those values. Cross-check against Path 1 or 3 only if something looks stale or contradictory.
If the cogny MCP isn't connected, or the tree has nothing brand-related, fall through to Path 1.
Path 1 — Repo with Tailwind / CSS variables (best signal)
**Use when**: the user has access to the site's source.
Look for, in order:
# Tailwind config — custom color namespaces
fd -t f 'tailwind\.config\.(ts|js|mjs|cjs)$' <repo>
# CSS custom properties (most modern stacks)
fd -t f '(globals|index|app|theme|variables)\.css$' <repo>
# Design tokens
fd -t f '(design-tokens|tokens|theme)\.json$' <repo>
When you find a Tailwind config, look for a custom color namespace (commonly the brand name, e.g. `cogny: {...}`):
// tailwind.config.ts (cogny example)
colors: {
cogny: { dark: "#1f1d1d", purple: "#b09acd", secondary: "#7E69AB", light: "#c9badf" }
}When you find a CSS file, grep for the canonical custom-property names:
grep -E '^\s*--(background|foreground|primary|accent|muted|card)' <css-file>
Map the values into the kit schema. If you find both `--primary` (HSL or hex) and a Tailwind namespace, prefer the Tailwind namespace — it's usually the explicit brand intent rather than a shadcn default.
Type detection in the same files:
grep -E "(font-family|fontFamily|--font-)" <repo>/src/**/*.{css,ts,tsx,js} 2>/dev/null | head---
Path 2 — Live site URL (works without source access)
**Use when**: the user only has a public URL.
Steps:
1. **Fetch the homepage** with `WebFetch <url>` and extract any inline `<style>` blocks and the head's stylesheet links. 2. **Fetch the main stylesheet** (the largest CSS link in the head, typically). `curl -sL <css-url> | head -c 200000` is enough — look for CSS custom properties (`--primary`, `--background`, etc.) and `@font-face` rules. 3. **Look for a manifest** at `/site.webmanifest`, `/manifest.json`, or `/manifest.webmanifest`. Manifests contain `theme_color`, `background_color`, and an icon list — gold for brand kits. 4. **Look for a favicon and a high-res logo**:
curl -sL "<site>/favicon.ico" -o /tmp/favicon.ico
curl -sL "<site>/apple-touch-icon.png" -o /tmp/touch.p
Read more
name: brand-kit description: Build a portable brand-kit.json for the user's product — colors, typography, voice — that other skills (video, ad creative, landing page) can consume. Multiple discovery paths so it works whether the user has access to their site's source code or only a public URL or just a logo image. version: "1.0.0" author: Cogny AI platforms: [hyperframes, ffmpeg] user-invocable: true argument-hint: "<site URL | repo path | logo path | nothing for interview>" allowed-tools: - WebFetch - WebSearch - Bash - Read - Write - Edit # Cogny MCP context tree — may already contain a documented brand kit / voice / palette - mcp__cogny__get_context_tree_overview - mcp__cogny__browse_context_tree - mcp__cogny__read_context_node - mcp__cogny__search_context
Brand Kit
Build a `brand-kit.json` describing the user's product in a way other skills can consume — colors, type, voice, do/don't language, optional logo. Other Cogny skills (`/tiktok-launch-video`, `/reddit-launch-video`, `/linkedin-launch-video`, `/landing-page-review`, `/ad-copy-writer`) read this file when present.
The skill is built around the reality that **users don't always have access to their site's source code**. There are six paths to a kit, in priority order. Stop at the first one that yields enough.
Usage
`/brand-kit https://example.com` — extract from a live site `/brand-kit ~/git/our-site` — extract from a local repo (Tailwind / CSS vars) `/brand-kit ~/Desktop/logo.png` — extract palette from a logo or screenshot `/brand-kit ~/Desktop/homepage.png logo.png` — combine site screenshot + logo `/brand-kit` — interview the user
Output
A `brand-kit.json` written to (in priority order, whichever path makes sense for the user's setup):
1. `.agents/brand-kit.json` (if `.agents/` exists) 2. `.claude/brand-kit.json` (if `.claude/` exists) 3. `./brand-kit.json` (otherwise — current working directory)
Always print the path you wrote to so the user can move it.
Schema
{
"name": "cogny",
"site": "https://cogny.com",
"logo": {
"path": "./brand/logo-square.png",
"use_in_video": false
},
"colors": {
"background": "#1f1d1d",
"foreground": "#ede8e3",
"primary": "#b09acd",
"accent": "#c9badf",
"muted": "#9a9494",
"card": "#282525",
"fuchsia": "#d4848a",
"success": "#7ec8a4",
"amber": "#d4a857"
},
"type": {
"family": "'JetBrains Mono', 'Fira Code', ui-monospace, monospace",
"weight_display": 700,
"weight_body": 500,
"letter_spacing_display": "-0.02em"
},
"voice": {
"register": "technical, direct, anti-jargon, CLI-aesthetic",
"person": "first-person plural (we / your)",
"do": ["concrete numbers", "name the tradeoff", "name the tool"],
"dont": ["leverage", "unlock", "revolutionary", "next-gen"]
},
"source": "repo: ~/git/cogny/tailwind.config.ts + src/index.css",
"captured_at": "2026-04-25"
}Minimum viable kit: `colors.background`, `colors.foreground`, `colors.primary`, `type.family`, `voice.register`. Don't ship without all five.
---
Path 0 — Cogny MCP context tree (cheapest, run first if connected)
**Use when**: the `cogny` MCP server is in `.mcp.json`. The user may have already documented their brand — voice, palette, tone — in their context tree, in which case scraping is redundant.
mcp__cogny__get_context_tree_overview # see what's documented mcp__cogny__search_context query="brand" # palette, voice, tone, design tokens mcp__cogny__search_context query="positioning" # voice + register often live here mcp__cogny__read_context_node node_id="…"
If the tree returns brand / palette / voice nodes, hydrate the kit from those values. Cross-check against Path 1 or 3 only if something looks stale or contradictory.
If the cogny MCP isn't connected, or the tree has nothing brand-related, fall through to Path 1.
Path 1 — Repo with Tailwind / CSS variables (best signal)
**Use when**: the user has access to the site's source.
Look for, in order:
# Tailwind config — custom color namespaces fd -t f 'tailwind\.config\.(ts|js|mjs|cjs)$' <repo> # CSS custom properties (most modern stacks) fd -t f '(globals|index|app|theme|variables)\.css$' <repo> # Design tokens fd -t f '(design-tokens|tokens|theme)\.json$' <repo>
When you find a Tailwind config, look for a custom color namespace (commonly the brand name, e.g. `cogny: {...}`):
// tailwind.config.ts (cogny example)
colors: {
cogny: { dark: "#1f1d1d", purple: "#b09acd", secondary: "#7E69AB", light: "#c9badf" }
}When you find a CSS file, grep for the canonical custom-property names:
grep -E '^\s*--(background|foreground|primary|accent|muted|card)' <css-file>
Map the values into the kit schema. If you find both `--primary` (HSL or hex) and a Tailwind namespace, prefer the Tailwind namespace — it's usually the explicit brand intent rather than a shadcn default.
Type detection in the same files:
grep -E "(font-family|fontFamily|--font-)" <repo>/src/**/*.{css,ts,tsx,js} 2>/dev/null | head---
Path 2 — Live site URL (works without source access)
**Use when**: the user only has a public URL.
Steps:
1. **Fetch the homepage** with `WebFetch <url>` and extract any inline `<style>` blocks and the head's stylesheet links. 2. **Fetch the main stylesheet** (the largest CSS link in the head, typically). `curl -sL <css-url> | head -c 200000` is enough — look for CSS custom properties (`--primary`, `--background`, etc.) and `@font-face` rules. 3. **Look for a manifest** at `/site.webmanifest`, `/manifest.json`, or `/manifest.webmanifest`. Manifests contain `theme_color`, `background_color`, and an icon list — gold for brand kits. 4. **Look for a favicon and a high-res logo**:
curl -sL "<site>/favicon.ico" -o /tmp/favicon.ico curl -sL "<site>/apple-touch-icon.png" -o /tmp/touch.p
AI marketing skills for Claude Code, Cursor, Windsurf, and other AI coding tools. Audit SEO, analyze ads, research competitors, qualify leads — all from your terminal. Free skills need no account. Premium skills connect your real data for $9/mo.
Repo: cognyai/claude-code-marketing-skills
Other skills on claude-code-marketing-skills.
cogny
Run Cogny marketing analysis tasks — fetch scheduled tasks, analyze ad accounts via MCP, report findings
community-pulse
Weekly read on Discord community health — joins, active channels, top contributors, themes, and unanswered questions
conversion-debug
Conversion Tracking Debugger — diagnose discrepancies across GTM, GA4, Google Ads & Meta Pixel with live API access, BigQuery validation queries, and…
crm-icp-analysis
Analyze HubSpot CRM data to build a data-driven Ideal Customer Profile from closed-won deals, contacts, and companies

