Parts in, brand out. One line of brand philosophy → VI rules → generation DAG → approved masters → product-ready files.
English · 简体中文
Everything you see above — the logo, the hero banner, the social preview, the palette — was produced by pointing this skill at its own repository. The full paper trail is committed:
| Artifact | File |
|---|---|
| Visual identity rules | resources/brand/visual-identity.md |
| Prompt source | resources/brand/brand-image-spec.json |
| Exploration DAG | resources/brand/brand-vi-exploration-dag.yaml |
| Post-approval production DAG | resources/brand/brand-vi-production-dag.yaml |
| Approved raster masters | resources/brand/approved/ |
| Verified production logo | resources/brand/processed/logo.svg |
| Asset inventory & consumption map | resources/brand/brand-vi-inventory.md |
| Checksums, dependencies and QA | resources/brand/brand-asset-manifest.json |
That is the whole pitch: not "generate a logo," but leave behind a brand system another agent can pick up and extend — documented decisions, reproducible DAG, and clean approved/rejected hygiene.
Asking an agent to "make me a logo" produces a one-off image and a mess:
- ❌ prompt-dump logos with no shape grammar, drifting on every regeneration
- ❌ raster files pasted where the product needs SVG / ICNS / adaptive icons
- ❌ rejected explorations left in the asset tree for future agents to consume
- ❌ the visible logo replaced while compiled icons, favicons, and docs stay stale
This skill makes the agent behave like a brand engineer instead. It uses a composable A1-A6 foundations, B1-B13 traditional applications, and C1-C14 AI SaaS catalog: scene profiles provide a starting set, then modules are added or removed to match the organization's real surfaces.
- Read the existing system first — asset folders, icon build scripts, docs.
- Inventory every asset slot the product actually consumes.
- Harden philosophy into VI rules — shape grammar, palette, negative constraints.
- Compile parallel exploration DAGs — one symbol or one wordmark per image.
- Judge at a human gate before any candidate gets descendants.
- Compile post-approval production DAGs from canonical references.
- Convert and verify production formats — SVG, platform icons, fonts, templates.
- Integrate and reconcile — product consumers, manifest, checksums, legacy scans.
This repository's own identity is abstracted from its business scenario: a brand kit is literally a kit — standardized parts that assemble into one consistent identity across every surface. The logo is that story in one mark: four distinct geometric parts, the last tile snapping into place. This self-brand story is not a concept template for client work; client IP must be derived independently from that product's buyer and business scenario.
Claude Code (personal skills directory):
git clone https://github.com/Nebutra/generate-brand-vi.git ~/.claude/skills/generate-brand-viCodex:
git clone https://github.com/Nebutra/generate-brand-vi.git ~/.codex/skills/generate-brand-viThe interface metadata lives in agents/openai.yaml.
Raster stages use the open-source generate-image
backend through a bundled adapter. The adapter discovers a sibling/global install,
uses mox by default, and lets the backend read global MOX_API_KEY configuration.
git clone https://github.com/TsekaLuk/generate-image.git ~/.claude/skills/generate-image
cd ~/.claude/skills/generate-image && uv syncThis is a one-time backend installation only. Existing global provider
configuration such as MOX_API_KEY is reused automatically.
Preview cost without making a billed call, then execute after approval:
python3 scripts/run_brand_image_dag.py --repo .
python3 scripts/run_brand_image_dag.py --repo . --executeInside your agent session, in any repo that needs a brand:
Use generate-brand-vi to design a visual identity for this project.
Philosophy: "<your one-line brand idea>"
Or seed the structure by hand first:
# inventory existing brand surfaces (old-brand migration)
python3 scripts/scan_brand_assets.py . --brand-term oldname --brand-term newname
# scaffold an optional profile, then make item decisions explicitly
python3 scripts/create_brand_vi_scaffold.py --brand MyProduct \
--philosophy "one line that the whole identity must express" \
--profile ai-saas \
--require-item a1-01 \
--require-item b2-05 \
--require-item c1-04 \
--external-handoff-item c14-05Profiles seed optional item candidates; they do not silently require every child
of a module. For larger scopes, edit brand-vi-scope.json, then compile only the
plan/inventory/manifest layer with python3 scripts/compile_brand_vi_scope.py --repo . --force.
The agent fills the templates, runs the DAG with whatever image-generation
tool is available, and promotes only approved masters into product paths.
For a production request, brand-vi-production-plan.json is authoritative:
mark rejection blocks only mark-dependent items while independent foundations
and product-system deliverables continue.
For trademark clearance, press proofs, supplier dielines, spatial engineering,
construction drawings, and original audio rights, it produces an explicit
external-handoff brief instead of claiming professional approval.
graph TD
A[Strategy evidence + operations] --> B[brand-image-spec.json]
B --> C1[3+ isolated symbol directions]
B --> C2[3+ isolated wordmark directions]
C1 & C2 --> D[Collision review + human approval]
D --> E1[Approved symbol]
D --> E2[Approved wordmark]
E1 & E2 --> F[Post-approval compiler]
F --> G[Clean masters + lockups]
G --> H1[Skins and applications]
G --> H2[SVG/icons/fonts/templates]
H1 & H2 --> I[Manifest + product consumption + QA]
Consistency is structural: exploration branches before convergence, then every downstream asset references a human-approved canonical master. Compilation reports freeze prompt and reference hashes.
SKILL.md # the skill contract agents load
references/
workflow.md # decision gates, "water-shape" interpretation
asset-taxonomy.md # every slot a product consumes, with sizes
generation-dag.md # branch/gate/anchor/selective-rerun DAG patterns
prompt-patterns.md # prompt architecture + anti-slop constraints
validation.md # QA, integration, legacy-cleanup checks
production-contract.md # item-level completion and gate semantics
production-routing.json # module defaults + item overrides
vi-deliverables.json # A1-A6, B1-B13, C1-C14 catalog
brand-asset-manifest.schema.json
consumer-integration.md # canonical package and repo consumption
trends-2026.md # rising/falling VI aesthetics, trend trackers
design-theory.md # strategy frameworks, DBA science, craft tests
inspiration-sources.md # stage-mapped galleries + brand-as-code ecosystem
scripts/
scan_brand_assets.py # inventory brand files & text hits in any repo
create_brand_vi_scaffold.py # neutral approved/generated/processed scaffold
compile_brand_vi_scope.py # safely compile edited item-level scope
compile_brand_image_dag.py # stable prompt + reference compiler
validate_brand_asset_manifest.py
update_brand_asset_state.py # state, checksum, plan sync, invalidation
subskills/extend-wordmark-font/ # wordmark-derived A-Z/a-z production workflow
resources/brand/ # this repo's own kit — a live worked example
- Never leave rejected explorations in product-consumable paths.
- Never ship a one-off raster where the product needs real vectors.
- Never replace the visible logo while compiled assets stay stale.
- Never import a landing-page aesthetic into operational software uninvited.
- Never count a valid API response as an accepted asset.
- Never treat an empty manifest or non-terminal plan as a delivered VI.
Ran this skill on your project? Open an issue with a screenshot of your
approved/ masters and your one-line philosophy — the best kits get linked
here as worked examples. If the skill saved you a design cycle, a ⭐ helps
other agents' humans find it.