Skip to content
SlashClone
Made by@brandkit

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.

SkillContentv1.0.0 (latest)Tested
Activity
New: be the first to try it
  1. 1{
  2. 2 "name": "on-brand-check",
  3. 3 "owner": "brandkit",
  4. 4 "version": "1.0.0",
  5. 5 "type": "skill",
  6. 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. 7 "category": "content",
  8. 8 "license": "MIT",
  9. 9 "compat": ["claude-code"],
  10. 10 "permissions": {
  11. 11 "shell": ["node scripts/check-brand.mjs"],
  12. 12 "files": {
  13. 13 "read": ["./brand.md", "./docs/brand.md"],
  14. 14 "write": ["./out/brand-check.json", "./out/brand-check.md", "./out/brand-check-input.md"]
  15. 15 }
  16. 16 },
  17. 17 "tests": {
  18. 18 "cases": [
  19. 19 {
  20. 20 "name": "flags off-palette colors, near misses, fonts, scale, and avoided words",
  21. 21 "inputs": {
  22. 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. 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. 24 "copy/post.md": "We leverage synergy. Leverage is fine in physics.\n"
  25. 25 },
  26. 26 "checks": [
  27. 27 {
  28. 28 "type": "command_exits_zero",
  29. 29 "command": "node scripts/check-brand.mjs brand.md site/style.css copy/post.md --json out/brand-check.json"
  30. 30 },
  31. 31 {
  32. 32 "type": "output_matches_schema",
  33. 33 "path": "out/brand-check.json",
  34. 34 "schema": {
  35. 35 "type": "object",
  36. 36 "required": ["total", "counts", "findings"],
  37. 37 "properties": {
  38. 38 "total": { "const": 8 },
  39. 39 "counts": {
  40. 40 "type": "object",
  41. 41 "properties": {
  42. 42 "near-brand-color": { "const": 1 },
  43. 43 "off-palette-color": { "const": 1 },
  44. 44 "off-brand-font": { "const": 1 },
  45. 45 "off-scale-size": { "const": 1 },
  46. 46 "off-scale-spacing": { "const": 1 },
  47. 47 "avoided-word": { "const": 3 }
  48. 48 }
  49. 49 }
  50. 50 }
  51. 51 }
  52. 52 }
  53. 53 ]
  54. 54 },
  55. 55 {
  56. 56 "name": "runs on the bundled examples",
  57. 57 "inputs": {},
  58. 58 "checks": [
  59. 59 {
  60. 60 "type": "command_exits_zero",
  61. 61 "command": "node scripts/check-brand.mjs examples/brand.md examples/landing.css examples/launch-email.md --json out/brand-check.json"
  62. 62 },
  63. 63 {
  64. 64 "type": "output_matches_schema",
  65. 65 "path": "out/brand-check.json",
  66. 66 "schema": {
  67. 67 "type": "object",
  68. 68 "properties": { "total": { "const": 8 }, "counts": { "type": "object", "properties": { "avoided-word": { "const": 3 } } } }
  69. 69 }
  70. 70 }
  71. 71 ]
  72. 72 }
  73. 73 ]
  74. 74 }