name: m-get-branding description: Agent M repo-maintenance skill for collecting or refreshing reusable client branding assets in this repo. Use when sourcing official client logos, updating assets/client-logos, building client-first assets/brand-themes, validating source metadata and contrast, and documenting how to sync those assets into bi-presentation-builder only when explicitly asked. This is an Agent M maintenance skill, not a shared BI reporting skill. version: 0.3.0-alpha status: repo-only owner: bi-team last_reviewed: 2026-05-12 compatible_with: agent-m >= 0.3.0-alpha
m-get-branding
Collects and reviews reusable client branding for Agent M. The default output is root-level source assets only:
assets/client-logos/<client-slug>/assets/brand-themes/<client-slug>/- relevant root asset indexes and durable status docs
00_output/for generated review notes or exports when no destination is specified
This skill must not update skills/bi-presentation-builder/assets/ unless the user explicitly asks to sync branding into the presentation builder.
When To Use
Use this skill when the user asks to:
- add or refresh a client, platform, parent-company, sub-brand, or partnership logo
- build or refresh a client-first brand theme
- review branding files produced by another agent
- turn a logo/brand-source handoff into reusable Agent M assets
- prepare instructions for a later
bi-presentation-builderasset sync
Do not use this skill for ordinary report/deck generation. Use bi-presentation-builder only after a BI narrative and payload are ready.
Required Inputs
Minimum:
- client or brand name
- target slug, or enough context to create one in lowercase kebab-case
- source evidence: official brand center, media room, newsroom logo library, press kit, brand kit, client-provided file, official site/app asset, or clearly documented public source
- user-dropped files in
00_input/, when the user provides local logos, decks, PDFs, screenshots, or brand books there
Helpful:
- parent/child brand relationship
- target market or locale, when the user wants a non-U.S. brand source
- partnership components, such as two brands that should be rendered side by side
- preferred output medium: deck, dashboard, HTML presentation, or all three
- client-provided brand book, deck, CSS, or campaign brief
- category fallback when no brand sources exist
Output Contract
For each reviewed brand, create or update:
assets/client-logos/<client-slug>/README.md
assets/client-logos/<client-slug>/logo-color.svg|png|jpg when a reusable official file is available
assets/brand-themes/<client-slug>/theme.json
assets/brand-themes/<client-slug>/README.md
Update root indexes only when the change affects lookup, known gaps, or refresh recommendations:
assets/client-logos/README.md
assets/brand-themes/README.md
assets/README.md
Update durable continuity when the work changes repo state or policy:
docs/maintainer/status.md
docs/maintainer/current-plan.md
docs/maintainer/handoff.md
Hard Boundaries
- Do not update
skills/bi-presentation-builder/assets/{brand-themes,client-logos}/unless the user explicitly says to sync or publish the branding into the presentation builder. - Do not edit
build/, legacydev/,prod-v*/, or generated ZIPs. - Do not mark a theme
approvedunless the user, client, or accountable reviewer explicitly accepted it for reuse. - Do not treat a search-result thumbnail, random presentation template, untraceable color extractor, or aggregator page as final brand authority.
- Do not use non-U.S. brand sites, regional parent-company pages, or regional CDNs by default. Use them only when the user explicitly names that market or supplies those files.
- Do not add secrets, private exports, local machine paths, or internal channel names to shared asset metadata.
- Do not invent a standalone logo for partnership products. Use
logos.primary: nulland document component-logo rendering.
Source Priority
Prefer sources in this order:
- Client-provided brand book, press kit, media kit, or approved deck.
- Official U.S. brand/media/press kit, newsroom logo library, or downloadable media-library asset.
- Official U.S. brand center, official U.S. site CSS/assets, official app shell, or official U.S. CDN file.
- Official parent-company or sub-brand source that clearly governs the target brand.
- Non-U.S. official brand, parent-company, or CDN source only when the user explicitly scopes that market.
- Public reference assets with clear provenance and licensing, such as Wikimedia files, when official sources are unavailable and the user has accepted the caveat.
- Category archetypes only as fallback assistance, never as brand authority.
Official media-library assets outrank small header/navigation assets when both are available. If the live brand site visual differs from the media-library mark, keep the media-library asset as primary unless a clean reusable official site asset can be downloaded. Document the mismatch in the logo README and theme README. Do not use third-party PNG variants as primary, even when they visually match the live site.
Search official domains for these terms before declaring a logo gap:
media kitpress kitbrand kitbrand assetsmedia roomnewsroommedia librarylogosdownloadhighreshigh-reshigh resolution
Check parent-company newsroom or media-library domains when sub-brand sites hide assets behind bot protection, expose only lazy-load placeholders, or provide only small header/navigation logos.
If a clean official logo file is not exposed, set logos.primary: null, mark the theme draft-unverified, and document the missing logo gap. Do not fill the gap with third-party logo sites or search-result thumbnails.
Set status from evidence:
approved: explicit user/client/accountable-reviewer acceptance is recorded.draft-reviewed: sources are documented, files validate, logo references resolve, and contrast pairs pass.draft-unverified: source authority is thin, the theme is category-assisted, the logo is missing, or the mark is composed from components.
Workflow
Ground in current assets.
- Read
assets/README.md,assets/client-logos/README.md, andassets/brand-themes/README.md. - Check for existing slug folders before creating a new one.
- Use lowercase kebab-case and keep folders shallow.
- Read
Collect and normalize logo assets.
- Prefer SVG. Use transparent high-resolution PNG from official media, press, or brand kits when SVG is unavailable. Use JPG only when it is the best official source.
- Use small navigation/header PNGs only when no better official kit or media-library asset exists.
- Save reviewed reusable assets under
assets/client-logos/<client-slug>/. - Use stable filenames:
logo-color.svg,logo-mono-black.svg,logo-mono-white.svg, or a specific descriptive name when multiple official marks are needed. - Write a folder
README.mdwith source URL, reference page, access/download date, source market, license or usage note, original filename, file size, dimensions, and post-download edits. - Record the source market. Default to U.S. official sources unless the user explicitly asked for another market.
- If the source is not reusable yet, keep the file in
00_input/orlocal-context/intake/raw/and document the review gap instead of promoting it.
Build the brand theme.
- Start from
assets/brand-themes/_template/theme.json. - Make the client's identity primary. Viral Nation remains supporting: footer mark, co-credit, provenance note, or restrained secondary accent.
- Use official palette, typography, and logo evidence first. If evidence is thin, use the nearest
assets/category-archetypes/<category>.mdonly as fallback guidance and record it infallback. - Include deck, dashboard, and HTML usage notes. A color that works for a hero slide may fail for dashboard table text.
- Keep
logos.primarynull for missing or composite-only marks, and explain component-logo rendering inlogos.usage_notes.
- Start from
Check medium-specific contrast.
- Validate actual foreground/background pairs before setting checked fields to true.
- Body text and dashboard table text need 4.5:1 or better.
- Large deck display text needs 3:1 or better.
- Chart labels, axes, legends, and tooltip text need 4.5:1 or better.
- Avoid white text on pale gray, pale brand colors, low-saturation midtones, or image-heavy backgrounds unless a contrast-safe overlay is specified.
Handle relationship cases.
- Parent themes are acceptable for parent-level reports.
- Prefer child or sub-brand themes for consumer-facing output when they exist.
- Keep partnership folders when they are useful lookup targets, but render component logos side by side until an official combined mark exists.
- Do not remove category archetypes; they remain fallback guidance when no saved theme or brand kit exists.
Validate before handoff. Run the narrowest relevant checks:
jq empty assets/brand-themes/*/theme.json MANIFEST.json find assets/client-logos -maxdepth 2 -type f -size 0 -print find assets/client-logos -maxdepth 3 -type f -name '*.svg' -exec xmllint --noout {} + find assets/brand-themes -path '* *' -print bash bin/build-agent-m.sh --check git diff --checkAlso verify every non-null
logos.*path in editedtheme.jsonfiles resolves from the repo root. For market-sensitive refreshes, run a targeted scan over the edited brand folders for non-U.S. source domains and document any intentional exceptions.Update durable docs.
- Record the status mix, changed slugs, source confidence, known gaps, and validation in
docs/maintainer/status.md. - Update
docs/maintainer/handoff.mdwhen future agents need to know about a new gap, rule, or sync requirement. - Update
docs/maintainer/current-plan.mdwhen the work changes scope or next steps.
- Record the status mix, changed slugs, source confidence, known gaps, and validation in
Presentation Builder Sync
Root assets are the canonical review surface. bi-presentation-builder has a skill-local mirror only for standalone upload mode.
Do not sync by default. When the user explicitly asks to update presentation-builder assets, use:
rsync -a --delete --exclude '.DS_Store' assets/brand-themes/ skills/bi-presentation-builder/assets/brand-themes/
rsync -a --delete --exclude '.DS_Store' assets/client-logos/ skills/bi-presentation-builder/assets/client-logos/
Then validate parity:
diff -qr --exclude '.DS_Store' assets/brand-themes skills/bi-presentation-builder/assets/brand-themes
diff -qr --exclude '.DS_Store' assets/client-logos skills/bi-presentation-builder/assets/client-logos
jq empty skills/bi-presentation-builder/assets/brand-themes/*/theme.json
Mention that syncing increases standalone skill and plugin ZIP size because the assets are duplicated inside skills/bi-presentation-builder/.
Handoff Notes
When handing work to another agent, put numbered briefs in gitignored tasks/ files. Keep durable repo outcomes in docs/maintainer/status.md; task files are local working notes.