On brand check
@brandkit/on-brand-check
Review a page, stylesheet, email, deck outline, or post against your brand guide and get a short fix list: off-palette colors (with the nearest brand color), wrong fonts, sizes and spacing off the scale, banned words, logo misuse, and voice. Reports only; changes nothing.
- Activity
- New: be the first to try it
- Installs
- 0 installs
- Likes
- 0 likes
- Clones
- 0 clones
- 1{
- 2 "name": "on-brand-check",
- 3 "owner": "brandkit",
- 4 "version": "1.0.0",
- 5 "type": "skill",
- 6 "description": "Review a page, stylesheet, email, deck outline, or post against your brand guide and get a short fix list: off-palette colors (with the nearest brand color), wrong fonts, sizes and spacing off the scale, banned words, logo misuse, and voice. Reports only; changes nothing.",
- 7 "category": "content",
- 8 "license": "MIT",
- 9 "compat": ["claude-code"],
- 10 "permissions": {
- 11 "shell": ["node scripts/check-brand.mjs"],
- 12 "files": {
- 13 "read": ["./brand.md", "./docs/brand.md"],
- 14 "write": ["./out/brand-check.json", "./out/brand-check.md", "./out/brand-check-input.md"]
- 15 }
- 16 },
- 17 "tests": {
- 18 "cases": [
- 19 {
- 20 "name": "flags off-palette colors, near misses, fonts, scale, and avoided words",
- 21 "inputs": {
- 22 "brand.md": "```yaml tokens\ncolor:\n primary: \"#1F7A5C\"\n ink: \"#1B1F23\"\nfont:\n heading: [Fraunces, serif]\n body: [Inter, sans-serif]\ntext:\n base: 16px\n xl: 28px\nspace:\n \"2\": 8px\n \"3\": 16px\nvoice:\n avoid: [synergy, leverage]\n```\n",
- 23 "site/style.css": ".a { color: #1F7A5C; background: #fff; }\n.b { color: #1e7b5d; }\n.c { color: #7C3AED; font-family: \"Comic Sans MS\", cursive; }\n.d { font-family: Inter, sans-serif; font-size: 15px; padding: 8px 12px; }\n",
- 24 "copy/post.md": "We leverage synergy. Leverage is fine in physics.\n"
- 25 },
- 26 "checks": [
- 27 {
- 28 "type": "command_exits_zero",
- 29 "command": "node scripts/check-brand.mjs brand.md site/style.css copy/post.md --json out/brand-check.json"
- 30 },
- 31 {
- 32 "type": "output_matches_schema",
- 33 "path": "out/brand-check.json",
- 34 "schema": {
- 35 "type": "object",
- 36 "required": ["total", "counts", "findings"],
- 37 "properties": {
- 38 "total": { "const": 8 },
- 39 "counts": {
- 40 "type": "object",
- 41 "properties": {
- 42 "near-brand-color": { "const": 1 },
- 43 "off-palette-color": { "const": 1 },
- 44 "off-brand-font": { "const": 1 },
- 45 "off-scale-size": { "const": 1 },
- 46 "off-scale-spacing": { "const": 1 },
- 47 "avoided-word": { "const": 3 }
- 48 }
- 49 }
- 50 }
- 51 }
- 52 }
- 53 ]
- 54 },
- 55 {
- 56 "name": "runs on the bundled examples",
- 57 "inputs": {},
- 58 "checks": [
- 59 {
- 60 "type": "command_exits_zero",
- 61 "command": "node scripts/check-brand.mjs examples/brand.md examples/landing.css examples/launch-email.md --json out/brand-check.json"
- 62 },
- 63 {
- 64 "type": "output_matches_schema",
- 65 "path": "out/brand-check.json",
- 66 "schema": {
- 67 "type": "object",
- 68 "properties": { "total": { "const": 8 }, "counts": { "type": "object", "properties": { "avoided-word": { "const": 3 } } } }
- 69 }
- 70 }
- 71 ]
- 72 }
- 73 ]
- 74 }
- 75}
