blun-king-cli 9.1.5 → 9.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/bin/launcher-mode.js +1 -0
  2. package/bin/launcher-runtime.js +60 -29
  3. package/bin/standard-tools-bootstrap.js +218 -0
  4. package/bin/update-notice.js +37 -15
  5. package/blun.mjs +4 -2
  6. package/package.json +50 -47
  7. package/standard-skills/blun-app-design-system/SKILL.md +30 -0
  8. package/standard-skills/blun-app-design-system/provenance.json +17 -0
  9. package/standard-skills/blun-app-design-system/references/tokens.md +48 -0
  10. package/standard-skills/blun-app-design-system/scripts/check-blun-design.mjs +49 -0
  11. package/standard-tools/language-guard/blun_language_guard.py +686 -0
  12. package/standard-tools/language-guard/check_diacritics.py +353 -0
  13. package/standard-tools/language-guard/guard_service_client.py +82 -0
  14. package/standard-tools/language-guard/language_quality.py +172 -0
  15. package/standard-tools/language-guard/translation_guard.py +916 -0
  16. package/standard-tools/manifest.json +76 -0
  17. package/skills/design-taste-frontend/SKILL.md +0 -1206
  18. package/skills/full-output-enforcement/SKILL.md +0 -49
  19. package/skills/high-end-visual-design/SKILL.md +0 -98
  20. package/skills/image-to-code/SKILL.md +0 -1228
  21. package/skills/industrial-brutalist-ui/SKILL.md +0 -92
  22. package/skills/minimalist-ui/SKILL.md +0 -85
  23. package/skills/motion-design-taste/SKILL.md +0 -74
  24. package/skills/premortem/SKILL.md +0 -148
  25. package/skills/redesign-existing-projects/SKILL.md +0 -178
  26. package/skills/screenshot-lesen/SKILL.md +0 -52
  27. package/skills/stitch-design-taste/DESIGN.md +0 -121
  28. package/skills/stitch-design-taste/SKILL.md +0 -184
  29. package/skills/web-lesen/SKILL.md +0 -58
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { lstatSync, readFileSync } from 'node:fs';
4
+ import { resolve } from 'node:path';
5
+
6
+ const MAX_CSS_BYTES = 5 * 1024 * 1024;
7
+ const requiredColors = new Map([
8
+ ['--brand', '#0261ff'],
9
+ ['--bg-sidebar', '#0a0a0b'],
10
+ ['--bg-primary', '#17181a'],
11
+ ['--text-primary', '#f4f4f5'],
12
+ ]);
13
+
14
+ function fail(message) {
15
+ process.stderr.write(`BLUN design check failed: ${message}\n`);
16
+ process.exitCode = 1;
17
+ }
18
+
19
+ const input = process.argv[2];
20
+ if (input === undefined) {
21
+ fail('pass one CSS file');
22
+ } else {
23
+ const cssPath = resolve(input);
24
+ const stat = lstatSync(cssPath);
25
+ if (!stat.isFile() || stat.isSymbolicLink() || stat.size > MAX_CSS_BYTES) {
26
+ fail('input must be a regular CSS file no larger than 5 MiB');
27
+ } else {
28
+ const css = readFileSync(cssPath, 'utf8');
29
+ const declarations = new Map();
30
+ for (const match of css.matchAll(/(--[a-z0-9-]+)\s*:\s*([^;{}]+);/giu)) {
31
+ if (!declarations.has(match[1].toLowerCase())) {
32
+ declarations.set(match[1].toLowerCase(), match[2].trim().toLowerCase());
33
+ }
34
+ }
35
+
36
+ for (const [name, expected] of requiredColors) {
37
+ if (declarations.get(name) !== expected) fail(`${name} must be ${expected}`);
38
+ }
39
+ if (!/\bgeist\b/u.test(declarations.get('--font') ?? '')) {
40
+ fail('--font must include Geist');
41
+ }
42
+ if (!/jetbrains mono/u.test(declarations.get('--mono') ?? '')) {
43
+ fail('--mono must include JetBrains Mono');
44
+ }
45
+ if (/Fraunces|#2b6cff|#5b8dff/iu.test(css)) {
46
+ fail('legacy palette or typography detected');
47
+ }
48
+ }
49
+ }