Skip to content

Brand packages: structured branding guidelines linkable to tasks, projects, and asset/copy generation #419

@markhayden

Description

@markhayden

Problem

There's no structured concept of a "brand" anywhere in Bakin. Today the word only shows up as:

  • Free-text in usageConstraints for the create-image runtime skill (plugins/images/defaults/runtime-skills/create-image/SKILL.md)
  • A routing heuristic in plugins/images/lib/routing.ts that sniffs the literal string "brand" to pick a provider
  • A UI placeholder ("brand-voice") in the workflows node-config drawer

So when an agent generates an asset, writes copy, or builds anything customer-facing, there's no machine-readable source of truth for voice, style, colors, logos, or reference material. Brand consistency depends entirely on whatever got pasted into a prompt.

Proposal

A first-class brand primitive — a named bundle of branding guidelines that can be linked to tasks, projects, workflows, etc., and consumed by generation paths.

Package shape (to be defined)

A brand bundle would include some mix of:

  • Style guide — markdown describing voice, tone, do/don't rules
  • Reference info — positioning, audience, terminology, boilerplate
  • Visual identity — colors (structured palette), typography, logo files, reference images
  • Arbitrary attachments — markdown docs, images, examples of on-brand output

This smells like a new agent-package kind (kind: "brand" alongside agent | skill-pack | workflow-pack | lesson-pack) — brands are content, not code, which is exactly the plugins-vs-packages split. Alternative: a dedicated brands plugin with its own storage under ~/.bakin/brands/. Tradeoff to work through in the spec — packages get install/lockfile/projection machinery for free; a plugin gets UI, routes, and search indexing for free. (Possibly both: plugin owns the UI/API, package kind is the distribution format.)

Linking

  • brandId (or brands[]) on tasks, projects, and workflow instances — same pattern as other cross-object references
  • UI affordance to pick a brand when creating/editing those objects

Consumption

  • Dispatch: when a task has a linked brand, inject the brand context (style guide, palette, voice rules) into the agent's prompt/context
  • Images plugin: linked brand's reference images + palette feed image generation (pairs with the reference-images issue, Images: support reference/context images in generate (and extra references in edit) #418)
  • Copy/writing: brand voice doc available to any agent producing prose
  • Hooks: expose brands.get / brands.resolveForTask via the HookRegistry so any plugin can consume brand context without direct imports

Open questions for the spec

  • One brand per object or multiple (e.g., agency use-case)?
  • Inheritance: does a task inherit its project's brand?
  • How much is structured (colors as hex arrays) vs. freeform markdown?
  • Versioning — do brand edits invalidate/flag previously generated assets?

Why

Ensures assets created, copy written, and anything agent-produced uses the right brand, voice, and visual identity — today that guarantee doesn't exist beyond prompt discipline.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions