Repository navigation
Encode a brand once and use it natively in every AI tool, verify what agents actually render, and verify where a brand's approval came from.
Added
- Native exports for every host (#130).
brand_exportgainsagents-md(an AGENTS.md section for Codex, Cursor, and others),cursor-rules(.cursor/rules.mdc),css-variables(with a dark-theme block),tailwind(Tailwind v4@theme), andshadcn(the full shadcn/ui variable set, foregrounds chosen for ≥ 4.5:1 contrast). All generated from the compiled DTCG tokens; any value that fails validation is dropped, and font names must pass the plausibility check. - One-click Claude Desktop install (#130). Each release attaches a
brandsystem-mcp-<version>.mcpbbundle (manifest 0.3) with a project-folder picker, wired through the newBRANDSYSTEM_PROJECT_DIRsetting. - Rendered compliance checks (#129).
brand_preflightwithrender: truerenders agent-built HTML (a string or a project.htmlfile) in sandboxed headless Chrome with all network blocked, then checks what actually renders: off-palette colors by CIEDE2000 distance, the font face that loads, WCAG AA contrast on blended colors, and logo presence. Returns a 0–100 score, per-finding locators with the nearest brand value, and an optional screenshot under.brand/checks/.brand_preflightis no longer annotated read-only because screenshots write a file. - Signed Brandcode Studio packages (#131). Studio now signs every pulled package with Ed25519 (key
studio-2026-10, pinned in this release). A valid signature lets approval be verified end to end and travel with the package; an invalid signature (tampered body, unknown key) never confers approval, even from the trusted origin. Unsigned packages keep the trusted-origin rule unlessBRANDCODE_REQUIRE_SIGNED_APPROVALis set. Connect/sync reportpackage_signature.status, andbrand_auditflags a tampered signed package. Seedocs/SIGNED-PACKAGES.md. - Color role variants (#128, closes #93). A second same-theme color for the same role is no longer dropped: with enough independent evidence it becomes a variant role (
surface-alt,text-secondary,neutral-alt,border-alt,accent-alt,action-alt), capped at one per base role per theme, in core identity, tokens, runtime, and design synthesis. Extraction corpus labeled recall 25/29 → 28/29 with precision unchanged at 1.0.
Security
- Third-party logo fallback can be turned off (#126). When a site has no detectable logo, web extraction sends its domain to Clearbit and Google's favicon service;
BRANDSYSTEM_THIRD_PARTY_LOGO_FALLBACK=offnow prevents any such request. - Every outbound destination is declared and enforced (#126).
security/egress-allowlist.jsonlists each host, and a test fails on any undeclared one in source or the built package;docs/DATA-FLOWS.mdis generated from it. - Figma names are shape-checked (#128). Style names and color variable names are checked before they become runtime keys, color names, or token extensions; implausible names are replaced with stable hashed keys.
- Hosted taste guidance is fenced (#128).
brand_searchandbrand_checkreturn human-approved taste guidance as fenced, length-capped, untrusted user content with a data-not-instructions notice.
Release integrity
- SBOM and checksums on every release (#126). A CycloneDX SBOM of production dependencies,
build-info.json, andSHA256SUMSare built in the credential-free job and attached to the GitHub release after hash verification. - CI verifies registry signatures and reproducible packs (#126).
npm audit signaturesruns in the required audit job; a reproducible-build job packs twice and compares hashes. - The MCP Registry step waits for npm to propagate (#123), and the MCPB bundle builds in its own credential-free job so its CLI never touches the npm tarball or publish credentials (#130).
Fixed
- Hosted MCP smoke now proves what it claims (#124, #125). Tool payloads' own
statusfield overwrote check outcomes, so half the checks were never counted; and an empty timeout secret became an instantNaNtimeout in CI. The nightly smoke now runs 13 checks against live staging. - Tests no longer write into the checkout (#132). The smoke suite runs against a temporary working directory instead of creating
.brand/and editing.gitignorein the repository.
Install in Claude Desktop with one click: download brandsystem-mcp-0.18.0.mcpb below and open it.
Verify this release: npm audit signatures, or check the attached SHA256SUMS and CycloneDX SBOM.