Skip to content
Agentmart
Submit a tool

brand-consistency

Maintain visual coherence across a multi-asset brand set (logo + app icon + favicon + illustrations).

Skill by MohamedAbdallah-14

IndexedMIT★ 24
Write a review

Chalk Labs

Need help deploying brand-consistency?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/mohamedabdallah-14-brand-consistency

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Maintain visual coherence across a multi-asset brand set (logo + app icon + favicon + illustrations). Builds BrandBundle (palette, typography, style refs, do-not list), enforces palette per model (Recraft `controls.colors`, Midjourney `--sref`, IP-Adapter, LoRA), validates style similarity with CSD and palette ΔE2000, and promotes accepted assets into the reference set so each new generation tightens the lock.

Use cases: design

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/brand-consistency

What's inside

Skill name
brand-consistency
Description
Maintain visual coherence across a multi-asset brand set (logo + app icon + favicon + illustrations). Builds BrandBundle (palette, typography, style refs, do-not list), enforces palette per model (Recraft `controls.colors`, Midjourney `--sref`, IP-Adapter, LoRA), validates style similarity with CSD and palette ΔE2000, and promotes accepted assets into the reference set so each new generation tightens the lock.
License
MIT
Instructions
133 lines in SKILL.md · view on GitHub

Files (1)

  • SKILL.md

SKILL.md (first lines)

# Brand consistency

Engaged when a user is generating more than one asset for the same brand, or when an existing `brand.json` / `brand.md` is in play. Wraps `asset_brand_bundle_parse`, `asset_generate_*`, and validation.

## BrandBundle shape

```yaml
palette:
  - { name: primary,   hex: "#0A1F44", usage: mark }
  - { name: accent,    hex: "#FF6B6B", usage: highlight }
  - { name: neutral,   hex: "#FAFAFA", usage: background }
typography:
  primary:   { family: "Geist Sans", fallback: "geometric sans-serif, bold" }
  secondary: { family: "Geist Mono", fallback: "monospace" }
style_refs: ["assets/brand/ref-1.png", "assets/brand/ref-2.png"]
lora:       "assets/brand/brand.safetensors"       # optional Flux/SDXL
sref_code:  "--sref 1234567890"                    # optional Midjourney
style_id:   "uuid-of-recraft-style"                # optional Recraft
do_not:     ["drop shadows", "gradients", "photorealism"]
logo_mark:  "assets/brand/mark.svg"                # canonical mark for composition
```

Call `asset_brand_bundle_parse({ source })` to build this from a `brand.md`, `brand.json`, DTCG `tokens.json`, or AdCP spec.

## Palette enforcement per model (strongest → weakest)

| Provider | Mechanism | ΔE2000 typical |
|---|---|---|
| Recraft V3/V4 | `controls.colors: ["#hex", …]` (hard enforcement) | 1–5 |
| Flux.2 | JSON `color_palette: ["#hex", …]` | 3–7 |
| Ideogram 3 | `style_reference_images` (palette swatch PNG) or `style_codes` | 5–10 |
| Midjourney | prose color words + `--sref <id> --sw 250–400` | 5–12 |
| gpt-image-1 | hex codes in prose, reinforced 2–3× | 5–15 |
| SDXL / Flux.1 | hex in prose + IP-Adapter palette swatch | 5–15 |
| Imagen / Gemini | prose + post-process recolor | 10–20 (post-fix required) |

**Fallback that always works:** K-means remap in LAB space + ΔE2000 validation. `asset_validate` flags drift; post-process recolors nearest palette entries.

## Style reference management

- **Canonical anchor** — one `.png` or `.svg` that defines the brand look. Required for consistency across >3 assets.
- **Accepted-asset promotion** — after an asset passes validation + user acceptance, add it to `style_refs[]` so subsequent generations see richer brand context.
- **CSD similarity score** — Contrastive Style Descriptor embedding comparison. Threshold: ≥0.72 pass, 0.60–0.72 review, <0.60 fail. Tier-2 validation.
- **Model-specific handles:**
  - Midjourney: `--sref <image>` (loose) vs `--cref <image>` (character lock) vs `--mref <image>` (object lock). Use `--sw 250` for tight style, `--sw 100` for loose brand.
  - Recraft: `style_id` is a persistent UUID bound to a trained brand style.
  - Flux + IP-Adapter: pass reference image; set `ip_adapter_weight: 0.7–0.9` for style, lower for just color.
  - SDXL + LoRA: trigger word in prompt + `lora_scale: 0.7–1.0`.

## LoRA training workflow (≥20-asset sets)

ROI breaks even at ~20 assets. For smaller sets, IP-Adapter or `--sref` is cheaper.

```
1. Collect 20+ accepted assets (logo, icons, illustrations) in the brand style.
2. Call trainBrandLora MCP tool (Replicate/Modal endpoint, ~$50–$200, ~2 hours).
3. Store the returned .safetensors path in BrandBundle.lora.
4. Set trigger word (e.g. "acme_brand") + lora_scale: 0.8–1.0 in subsequent Flux/SDXL generations.
5. Re-validate style similarity — should jump to CSD ≥0.85 vs references.
```

## Asset-type adaptation

Same brand expresses differently per asset. Honor the brand, but respect the medium:

| Asset type | Palette strictness | Composition | Transparency | Legibility target |
|---|---|---|---|---|
| `logo` | primary + 1 accent | centered, 80% safe zone | required RGBA | 32×32 minimum |
| `app_icon` | primary bg + 1–2 glyph colors | single central glyph, ~15% padding | opaque 1024² | 27×27 |
| `favicon` | 2–3 colors max | monogram/mark | SVG + ICO multi-res | 16×16 |
| `og_image` | full palette, brand typography | hero layout, headline area | opaque | 1200×630 at 1:1 scale |
| `illustration` | full palette | scene composition | often transparent | hero or empty-state |
| `icon_pack` | monocolor (currentColor) OR 2-tone | 24×24 grid, uniform stroke | SVG + alpha | consistent weight |

## Do-not list encoding

`BrandBundle.do_not[]` should never be forwarded as literal "no X" to Flux/Ideogram/Recraft. Translate per dialect:

```
do_not: ["drop shadows"]       → affirmative: "flat design, crisp edges"
do_not: ["gradients"]          → affirmative: "solid fills, flat colors"
do_not: ["photorealism"]       → affirmative: "flat vector illustration style"
do_not: ["rounded corners"]    → affirmative: "sharp geometric corners"
```

SDXL and Midjourney get literal negatives. Everyone else gets positive anchors.

## Typography consistency

Composite, don't generate. Web fonts via Satori for OG images; SVG `<text>` with font stack for favicons (if required); brand-font text in Figma/Illustrator for logo wordmarks.

- `typography.primary.fallback` is what the model sees in the prompt ("geometric sans-serif, bold") — not the font file name. Diffusion samplers cannot read Geist.
- For Flux.2: `typography: { font_class: "geometric sans-serif", weight: "bold" }` can be passed in the JSON schema.

## Validation across the set

After each generation, run in addition to normal tier-0/1:

```
tier_1 (set-aware):
  - palette ΔE2000 vs brand palette ≤ 10
  - CSD style similarity vs canonical anchor ≥ 0.72
  - stroke-width histogram consistent within set (σ ≤ 20%)

tier_2 (VLM-as-judge, if enabled):
  - "does this asset look like it comes from the same brand as [ref]?"
  - score 1–5; require ≥ 4 for acceptance
```

## Convergence detection

When to stop regenerating:

- 3 of the last 4 generated assets cleared ΔE ≤ 10 AND CSD ≥ 0.72 on the first try → brand bundle is tight.
- 2 of the last 3 required post-process recolor → bundle is loose; consider LoRA training or add more refs.
- Any asset required 3+ regenerations after acceptance → brand brief is ambiguous; ask user to clarify.

## Common mistakes

From MohamedAbdallah-14/prompt-to-asset, MIT.

More from MohamedAbdallah-14/prompt-to-asset

Signals

Stars
24
Forks
3
Open issues
3
Contributors
2
Last commit (this folder)
Apr 21, 2026 (6 months ago)
Last release
Apr 26, 2026 (6 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

Same skill elsewhere

Copies of this SKILL.md published by others; search shows only one of them.

More from MohamedAbdallah-14

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get brand-consistency running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying brand-consistency?

CallGet help
Cite this page

brand-consistency skill. Agent Mart. https://agentmart.dev/skills/mohamedabdallah-14-brand-consistency (last updated 2026-10-24)