tribunal-kit 6.0.0 → 7.0.0

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 (353) hide show
  1. package/.agent/.manifest.json +78 -0
  2. package/.agent/ARCHITECTURE.md +19 -241
  3. package/.agent/agents/accessibility-reviewer.md +23 -16
  4. package/.agent/agents/ai-code-reviewer.md +25 -21
  5. package/.agent/agents/anti-pattern-reviewer.md +12 -7
  6. package/.agent/agents/api-architect.md +1 -0
  7. package/.agent/agents/backend-specialist.md +23 -22
  8. package/.agent/agents/cloud-engineer.md +1 -0
  9. package/.agent/agents/code-archaeologist.md +1 -0
  10. package/.agent/agents/complexity-reviewer.md +10 -7
  11. package/.agent/agents/database-architect.md +3 -2
  12. package/.agent/agents/db-latency-auditor.md +6 -2
  13. package/.agent/agents/debugger.md +3 -2
  14. package/.agent/agents/dependency-reviewer.md +1 -0
  15. package/.agent/agents/devops-engineer.md +9 -8
  16. package/.agent/agents/documentation-writer.md +6 -5
  17. package/.agent/agents/explorer-agent.md +1 -0
  18. package/.agent/agents/frontend-reviewer.md +21 -17
  19. package/.agent/agents/frontend-specialist.md +23 -20
  20. package/.agent/agents/game-developer.md +1 -0
  21. package/.agent/agents/interaction-reviewer.md +10 -5
  22. package/.agent/agents/logic-reviewer.md +3 -0
  23. package/.agent/agents/minimalist-reviewer.md +6 -0
  24. package/.agent/agents/mobile-developer.md +7 -6
  25. package/.agent/agents/mobile-reviewer.md +14 -13
  26. package/.agent/agents/orchestrator.md +3 -0
  27. package/.agent/agents/penetration-tester.md +1 -0
  28. package/.agent/agents/performance-optimizer.md +6 -5
  29. package/.agent/agents/performance-reviewer.md +6 -6
  30. package/.agent/agents/pipeline-reviewer.md +144 -0
  31. package/.agent/agents/precedence-reviewer.md +1 -0
  32. package/.agent/agents/product-manager.md +1 -0
  33. package/.agent/agents/product-owner.md +1 -0
  34. package/.agent/agents/product-reviewer.md +12 -7
  35. package/.agent/agents/project-planner.md +3 -0
  36. package/.agent/agents/qa-automation-engineer.md +50 -43
  37. package/.agent/agents/resilience-reviewer.md +1 -0
  38. package/.agent/agents/schema-reviewer.md +1 -0
  39. package/.agent/agents/security-auditor.md +24 -24
  40. package/.agent/agents/seo-specialist.md +33 -23
  41. package/.agent/agents/sql-reviewer.md +5 -4
  42. package/.agent/agents/supervisor-agent.md +12 -2
  43. package/.agent/agents/swarm-worker-contracts.md +13 -13
  44. package/.agent/agents/swarm-worker-registry.md +51 -51
  45. package/.agent/agents/system-architect.md +1 -0
  46. package/.agent/agents/test-coverage-reviewer.md +25 -22
  47. package/.agent/agents/test-engineer.md +12 -11
  48. package/.agent/agents/throughput-optimizer.md +45 -40
  49. package/.agent/agents/type-safety-reviewer.md +5 -4
  50. package/.agent/agents/ui-ux-auditor.md +6 -4
  51. package/.agent/agents/ui-visual-auditor.md +3 -0
  52. package/.agent/agents/ux-reviewer.md +11 -6
  53. package/.agent/agents/visual-reviewer.md +11 -6
  54. package/.agent/agents/vitals-reviewer.md +5 -4
  55. package/.agent/history/memory/.memory.idx +3716 -1
  56. package/.agent/history/memory/MEMORY.md +246 -1
  57. package/.agent/mcp_config.json +1 -6
  58. package/.agent/routing_index.json +2034 -263
  59. package/.agent/rules/GEMINI.md +12 -10
  60. package/.agent/rules/GEMINI_PLANNER.md +19 -21
  61. package/.agent/scripts/_colors.js +52 -54
  62. package/.agent/scripts/_utils.js +52 -53
  63. package/.agent/scripts/auto_preview.js +39 -43
  64. package/.agent/scripts/bundle_analyzer.js +47 -60
  65. package/.agent/scripts/case_law_manager.js +200 -294
  66. package/.agent/scripts/checklist.js +73 -94
  67. package/.agent/scripts/cicd_validator.js +305 -0
  68. package/.agent/scripts/compile_router.py +4 -111
  69. package/.agent/scripts/context_broker.js +317 -412
  70. package/.agent/scripts/contract_engine.js +402 -0
  71. package/.agent/scripts/dependency_analyzer.js +112 -124
  72. package/.agent/scripts/graph_builder.js +75 -103
  73. package/.agent/scripts/graph_visualizer.js +10 -12
  74. package/.agent/scripts/graph_zoom.js +38 -55
  75. package/.agent/scripts/guardrail_engine.js +195 -145
  76. package/.agent/scripts/impact_classifier.js +55 -30
  77. package/.agent/scripts/inner_loop_validator.js +108 -159
  78. package/.agent/scripts/integrity_manifest.js +59 -67
  79. package/.agent/scripts/lint_runner.js +65 -75
  80. package/.agent/scripts/marathon_harness.js +131 -208
  81. package/.agent/scripts/migrate_skills_frontmatter.py +4 -63
  82. package/.agent/scripts/minify_context.js +29 -33
  83. package/.agent/scripts/minimal_change_engine.js +95 -87
  84. package/.agent/scripts/mutation_runner.js +46 -62
  85. package/.agent/scripts/pipeline_engine.js +320 -209
  86. package/.agent/scripts/prompt_compiler.js +118 -93
  87. package/.agent/scripts/schema_validator.js +73 -121
  88. package/.agent/scripts/security_scan.js +88 -117
  89. package/.agent/scripts/session_manager.js +52 -69
  90. package/.agent/scripts/signal_detector.js +24 -22
  91. package/.agent/scripts/skill_evolution.js +184 -245
  92. package/.agent/scripts/skill_integrator.js +35 -48
  93. package/.agent/scripts/socratic_gate_policy.js +15 -12
  94. package/.agent/scripts/strengthen_skills.js +29 -33
  95. package/.agent/scripts/swarm_dispatcher.js +120 -151
  96. package/.agent/scripts/test_runner.js +54 -56
  97. package/.agent/scripts/token_budget_broker.js +9 -7
  98. package/.agent/scripts/trace_engine.js +126 -0
  99. package/.agent/scripts/verify_all.js +76 -93
  100. package/.agent/scripts/visual_audit.js +16 -21
  101. package/.agent/skill_topic_map.json +237 -0
  102. package/.agent/skills/12-principles-of-animation/SKILL.md +7 -0
  103. package/.agent/skills/60fps-animation/SKILL.md +7 -0
  104. package/.agent/skills/accessible-animation/SKILL.md +5 -1
  105. package/.agent/skills/adapt/SKILL.md +7 -1
  106. package/.agent/skills/advanced-rag-pipelines/SKILL.md +1 -0
  107. package/.agent/skills/agent-organizer/SKILL.md +1 -0
  108. package/.agent/skills/agentic-patterns/SKILL.md +33 -25
  109. package/.agent/skills/agentic-workflows-2026/SKILL.md +80 -0
  110. package/.agent/skills/ai-app-hardening/SKILL.md +59 -0
  111. package/.agent/skills/ai-prompt-injection-defense/SKILL.md +7 -6
  112. package/.agent/skills/animation-on-scroll/SKILL.md +24 -15
  113. package/.agent/skills/animation-systems/SKILL.md +11 -10
  114. package/.agent/skills/antfu-conventions/SKILL.md +7 -2
  115. package/.agent/skills/api-patterns/SKILL.md +14 -10
  116. package/.agent/skills/api-security-auditor/SKILL.md +15 -14
  117. package/.agent/skills/app-builder/SKILL.md +1 -0
  118. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +2 -2
  119. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +1 -1
  120. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +12 -12
  121. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +3 -3
  122. package/.agent/skills/apple-design/SKILL.md +8 -7
  123. package/.agent/skills/architecture/SKILL.md +3 -2
  124. package/.agent/skills/audit-and-fix/SKILL.md +8 -5
  125. package/.agent/skills/authentication-best-practices/SKILL.md +9 -8
  126. package/.agent/skills/backend-security-expert/SKILL.md +1 -0
  127. package/.agent/skills/baseline-ui/SKILL.md +8 -7
  128. package/.agent/skills/bash-linux/SKILL.md +1 -0
  129. package/.agent/skills/behavioral-modes/SKILL.md +1 -0
  130. package/.agent/skills/better-colors/SKILL.md +11 -7
  131. package/.agent/skills/better-typography/SKILL.md +30 -16
  132. package/.agent/skills/better-ui/SKILL.md +17 -10
  133. package/.agent/skills/bolder/SKILL.md +6 -0
  134. package/.agent/skills/brainstorming/SKILL.md +6 -4
  135. package/.agent/skills/browser-native-ai/SKILL.md +5 -4
  136. package/.agent/skills/build-primitive/SKILL.md +5 -0
  137. package/.agent/skills/building-native-ui/SKILL.md +1 -0
  138. package/.agent/skills/cicd-pro/SKILL.md +2 -1
  139. package/.agent/skills/clarify/SKILL.md +19 -14
  140. package/.agent/skills/clean-code/SKILL.md +16 -15
  141. package/.agent/skills/cloud-architect/SKILL.md +1 -0
  142. package/.agent/skills/cobejs/SKILL.md +7 -9
  143. package/.agent/skills/code-review-checklist/SKILL.md +1 -0
  144. package/.agent/skills/codebase-design/SKILL.md +7 -2
  145. package/.agent/skills/colorize/SKILL.md +8 -3
  146. package/.agent/skills/compact-landing/SKILL.md +8 -3
  147. package/.agent/skills/company-logos/SKILL.md +6 -0
  148. package/.agent/skills/config-validator/SKILL.md +10 -9
  149. package/.agent/skills/containerization-pro/SKILL.md +6 -5
  150. package/.agent/skills/context-engineering-pro/SKILL.md +70 -0
  151. package/.agent/skills/create-design-md/SKILL.md +13 -5
  152. package/.agent/skills/critique/SKILL.md +10 -8
  153. package/.agent/skills/csharp-developer/SKILL.md +1 -0
  154. package/.agent/skills/data-validation-schemas/SKILL.md +28 -23
  155. package/.agent/skills/database-design/SKILL.md +2 -1
  156. package/.agent/skills/delight/SKILL.md +6 -0
  157. package/.agent/skills/deployment-procedures/SKILL.md +2 -1
  158. package/.agent/skills/design-lab/SKILL.md +5 -0
  159. package/.agent/skills/devops-engineer/SKILL.md +3 -2
  160. package/.agent/skills/devops-incident-responder/SKILL.md +2 -1
  161. package/.agent/skills/diagnosing-bugs/SKILL.md +12 -2
  162. package/.agent/skills/distill/SKILL.md +7 -2
  163. package/.agent/skills/documentation-templates/SKILL.md +3 -2
  164. package/.agent/skills/domain-modeling/SKILL.md +12 -4
  165. package/.agent/skills/duckdb-analytical-sql/SKILL.md +59 -0
  166. package/.agent/skills/edge-ai-mobile/SKILL.md +50 -0
  167. package/.agent/skills/edge-computing/SKILL.md +9 -8
  168. package/.agent/skills/emil-design-eng/SKILL.md +43 -27
  169. package/.agent/skills/error-resilience/SKILL.md +34 -16
  170. package/.agent/skills/expo-router-v4/SKILL.md +81 -0
  171. package/.agent/skills/extract-design-system/SKILL.md +12 -11
  172. package/.agent/skills/fabel-protocol/SKILL.md +24 -17
  173. package/.agent/skills/fixing-accessibility/SKILL.md +23 -16
  174. package/.agent/skills/fixing-metadata/SKILL.md +24 -13
  175. package/.agent/skills/fixing-motion-performance/SKILL.md +7 -5
  176. package/.agent/skills/framer-motion-expert/SKILL.md +29 -15
  177. package/.agent/skills/frontend-design/SKILL.md +21 -13
  178. package/.agent/skills/frontend-security-expert/SKILL.md +1 -0
  179. package/.agent/skills/game-design-expert/SKILL.md +1 -0
  180. package/.agent/skills/game-engineering-expert/SKILL.md +1 -0
  181. package/.agent/skills/generative-ui-expert/SKILL.md +3 -2
  182. package/.agent/skills/geo-fundamentals/SKILL.md +2 -1
  183. package/.agent/skills/git-pro/SKILL.md +10 -9
  184. package/.agent/skills/github-operations/SKILL.md +2 -1
  185. package/.agent/skills/gpt-taste/SKILL.md +7 -0
  186. package/.agent/skills/gsap-core/SKILL.md +26 -22
  187. package/.agent/skills/gsap-frameworks/SKILL.md +6 -5
  188. package/.agent/skills/gsap-performance/SKILL.md +4 -3
  189. package/.agent/skills/gsap-plugins/SKILL.md +34 -33
  190. package/.agent/skills/gsap-react/SKILL.md +9 -8
  191. package/.agent/skills/gsap-scrolltrigger/SKILL.md +34 -33
  192. package/.agent/skills/gsap-timeline/SKILL.md +18 -15
  193. package/.agent/skills/gsap-utils/SKILL.md +25 -24
  194. package/.agent/skills/harden/SKILL.md +9 -3
  195. package/.agent/skills/harness-protocol/SKILL.md +1 -0
  196. package/.agent/skills/i18n-localization/SKILL.md +10 -9
  197. package/.agent/skills/impeccable/SKILL.md +5 -0
  198. package/.agent/skills/improve-codebase-architecture/SKILL.md +10 -5
  199. package/.agent/skills/improve-ui/SKILL.md +12 -5
  200. package/.agent/skills/intelligent-routing/SKILL.md +7 -6
  201. package/.agent/skills/knowledge-graph/SKILL.md +1 -0
  202. package/.agent/skills/landing-page/SKILL.md +1 -0
  203. package/.agent/skills/lint-and-validate/SKILL.md +9 -4
  204. package/.agent/skills/llm-engineering/SKILL.md +55 -54
  205. package/.agent/skills/local-first/SKILL.md +20 -19
  206. package/.agent/skills/local-first-architecture/SKILL.md +6 -1
  207. package/.agent/skills/lottie-animation/SKILL.md +7 -3
  208. package/.agent/skills/marquee-loop/SKILL.md +1 -0
  209. package/.agent/skills/masked-reveal/SKILL.md +17 -4
  210. package/.agent/skills/mcp-builder/SKILL.md +13 -10
  211. package/.agent/skills/micro-interaction/SKILL.md +20 -5
  212. package/.agent/skills/mobile-design/SKILL.md +26 -15
  213. package/.agent/skills/monorepo-management/SKILL.md +3 -2
  214. package/.agent/skills/morphing-icons/SKILL.md +16 -6
  215. package/.agent/skills/motion-engineering/SKILL.md +19 -15
  216. package/.agent/skills/nextjs-react-expert/SKILL.md +26 -21
  217. package/.agent/skills/nodejs-best-practices/SKILL.md +89 -76
  218. package/.agent/skills/observability/SKILL.md +45 -44
  219. package/.agent/skills/opentelemetry-observability/SKILL.md +59 -0
  220. package/.agent/skills/page-transition-animation/SKILL.md +6 -3
  221. package/.agent/skills/parallel-agents/SKILL.md +7 -2
  222. package/.agent/skills/performance-profiling/SKILL.md +24 -13
  223. package/.agent/skills/plan-writing/SKILL.md +1 -0
  224. package/.agent/skills/platform-engineer/SKILL.md +3 -2
  225. package/.agent/skills/platform-engineering-opentofu/SKILL.md +68 -0
  226. package/.agent/skills/playwright-ai-e2e/SKILL.md +60 -0
  227. package/.agent/skills/playwright-best-practices/SKILL.md +29 -28
  228. package/.agent/skills/polish/SKILL.md +13 -12
  229. package/.agent/skills/powershell-windows/SKILL.md +1 -0
  230. package/.agent/skills/pricing-page/SKILL.md +8 -3
  231. package/.agent/skills/product-aware-heuristics/SKILL.md +122 -72
  232. package/.agent/skills/progressive-blur/SKILL.md +9 -4
  233. package/.agent/skills/project-idioms/SKILL.md +1 -0
  234. package/.agent/skills/property-based-testing/SKILL.md +58 -0
  235. package/.agent/skills/python-patterns/SKILL.md +1 -0
  236. package/.agent/skills/python-pro/SKILL.md +1 -0
  237. package/.agent/skills/quieter/SKILL.md +6 -0
  238. package/.agent/skills/react-doctor/SKILL.md +6 -0
  239. package/.agent/skills/react-specialist/SKILL.md +32 -28
  240. package/.agent/skills/readme-builder/SKILL.md +1 -0
  241. package/.agent/skills/realtime-patterns/SKILL.md +34 -33
  242. package/.agent/skills/red-team-tactics/SKILL.md +1 -0
  243. package/.agent/skills/redesign-skill/SKILL.md +6 -0
  244. package/.agent/skills/review-animations/SKILL.md +5 -2
  245. package/.agent/skills/review-animations/STANDARDS.md +37 -23
  246. package/.agent/skills/rust-pro/SKILL.md +1 -0
  247. package/.agent/skills/seo-fundamentals/SKILL.md +4 -3
  248. package/.agent/skills/server-management/SKILL.md +1 -0
  249. package/.agent/skills/shadcn-ui-expert/SKILL.md +28 -22
  250. package/.agent/skills/shape/SKILL.md +9 -2
  251. package/.agent/skills/skill-creator/SKILL.md +1 -0
  252. package/.agent/skills/soft-skill/SKILL.md +6 -0
  253. package/.agent/skills/sounds-on-the-web/SKILL.md +1 -0
  254. package/.agent/skills/sql-pro/SKILL.md +1 -0
  255. package/.agent/skills/supabase-postgres-best-practices/SKILL.md +1 -0
  256. package/.agent/skills/svg-animation/SKILL.md +16 -7
  257. package/.agent/skills/swiftui-expert/SKILL.md +1 -0
  258. package/.agent/skills/swiss-design/SKILL.md +5 -0
  259. package/.agent/skills/system-design-pro/SKILL.md +1 -0
  260. package/.agent/skills/systematic-debugging/SKILL.md +1 -0
  261. package/.agent/skills/tailwind-patterns/SKILL.md +25 -11
  262. package/.agent/skills/taste-skill/SKILL.md +6 -0
  263. package/.agent/skills/tdd-workflow/SKILL.md +5 -0
  264. package/.agent/skills/test-result-analyzer/SKILL.md +1 -0
  265. package/.agent/skills/testing-patterns/SKILL.md +123 -115
  266. package/.agent/skills/thermo-nuclear-code-quality-review/SKILL.md +5 -0
  267. package/.agent/skills/thinking-protocol/SKILL.md +3 -0
  268. package/.agent/skills/to-spring-or-not-to-spring/SKILL.md +9 -8
  269. package/.agent/skills/transitions-dev/SKILL.md +19 -6
  270. package/.agent/skills/trend-researcher/SKILL.md +1 -0
  271. package/.agent/skills/typescript-advanced/SKILL.md +23 -18
  272. package/.agent/skills/typeset/SKILL.md +10 -1
  273. package/.agent/skills/ui-reasoning-engine/SKILL.md +67 -48
  274. package/.agent/skills/ui-skill-packs/SKILL.md +6 -1
  275. package/.agent/skills/ui-skills-root/SKILL.md +39 -38
  276. package/.agent/skills/ui-ux-pro-max/SKILL.md +34 -26
  277. package/.agent/skills/ui-ux-researcher/SKILL.md +1 -0
  278. package/.agent/skills/vector-search-pgvector/SKILL.md +78 -0
  279. package/.agent/skills/vue-expert/SKILL.md +22 -19
  280. package/.agent/skills/vulnerability-scanner/SKILL.md +22 -21
  281. package/.agent/skills/web-accessibility-auditor/SKILL.md +2 -1
  282. package/.agent/skills/web-design-guidelines/SKILL.md +16 -10
  283. package/.agent/skills/web-quality-audit/SKILL.md +5 -0
  284. package/.agent/skills/webapp-testing/SKILL.md +14 -13
  285. package/.agent/skills/webgpu-performance/SKILL.md +1 -0
  286. package/.agent/skills/whimsy-injector/SKILL.md +9 -5
  287. package/.agent/skills/workflow-optimizer/SKILL.md +1 -0
  288. package/.agent/skills/zero-trust-passkeys/SKILL.md +90 -0
  289. package/.agent/templates/DESIGN.md +119 -110
  290. package/.agent/templates/design-tokens.json +9 -6
  291. package/.agent/workflows/acf.md +1 -0
  292. package/.agent/workflows/api-tester.md +1 -0
  293. package/.agent/workflows/audit.md +1 -0
  294. package/.agent/workflows/brainstorm.md +1 -0
  295. package/.agent/workflows/changelog.md +1 -0
  296. package/.agent/workflows/contract.md +60 -0
  297. package/.agent/workflows/create.md +1 -0
  298. package/.agent/workflows/debug.md +1 -0
  299. package/.agent/workflows/deploy.md +1 -0
  300. package/.agent/workflows/enhance.md +1 -0
  301. package/.agent/workflows/fix-ci.md +89 -0
  302. package/.agent/workflows/fix.md +1 -0
  303. package/.agent/workflows/generate.md +1 -0
  304. package/.agent/workflows/marathon.md +1 -0
  305. package/.agent/workflows/migrate.md +1 -0
  306. package/.agent/workflows/minimal.md +9 -7
  307. package/.agent/workflows/orchestrate.md +1 -0
  308. package/.agent/workflows/performance-benchmarker.md +1 -0
  309. package/.agent/workflows/pipeline.md +26 -21
  310. package/.agent/workflows/plan.md +1 -0
  311. package/.agent/workflows/preview.md +1 -0
  312. package/.agent/workflows/refactor.md +3 -2
  313. package/.agent/workflows/review-ai.md +4 -3
  314. package/.agent/workflows/review.md +1 -0
  315. package/.agent/workflows/session.md +1 -0
  316. package/.agent/workflows/status.md +1 -0
  317. package/.agent/workflows/strengthen-skills.md +1 -0
  318. package/.agent/workflows/super-prompt.md +1 -0
  319. package/.agent/workflows/swarm.md +15 -3
  320. package/.agent/workflows/test.md +8 -7
  321. package/.agent/workflows/tribunal-backend.md +3 -2
  322. package/.agent/workflows/tribunal-cicd.md +104 -0
  323. package/.agent/workflows/tribunal-database.md +1 -0
  324. package/.agent/workflows/tribunal-frontend.md +8 -6
  325. package/.agent/workflows/tribunal-full.md +15 -14
  326. package/.agent/workflows/tribunal-mobile.md +6 -5
  327. package/.agent/workflows/tribunal-performance.md +1 -0
  328. package/.agent/workflows/tribunal-speed.md +1 -0
  329. package/.agent/workflows/tribunal-ui.md +29 -21
  330. package/.agent/workflows/ui-ux-pro-max.md +19 -15
  331. package/CONTRIBUTING.md +3 -3
  332. package/README.md +160 -88
  333. package/SECURITY.md +11 -11
  334. package/bin/mcp-server.js +512 -233
  335. package/bin/tribunal-kit.js +29 -30
  336. package/bin/wrapper.js +45 -48
  337. package/dist/cli.js +26 -0
  338. package/dist/commands/case.js +2 -0
  339. package/dist/commands/contract.js +440 -0
  340. package/dist/commands/memory.js +3 -2
  341. package/dist/commands/native.js +36 -0
  342. package/dist/commands/status.js +6 -0
  343. package/dist/esm/index.mjs +32 -0
  344. package/dist/index.d.ts +58 -3
  345. package/package.json +20 -16
  346. package/scripts/benchmark.js +62 -86
  347. package/scripts/changelog.js +67 -73
  348. package/scripts/fix-vbc.js +13 -15
  349. package/scripts/fix-vbc.ps1 +2 -118
  350. package/scripts/stress_benchmark.js +358 -0
  351. package/scripts/sync-version.js +71 -41
  352. package/scripts/validate-payload.js +23 -30
  353. package/scripts/visual_audit.js +23 -13
@@ -9,11 +9,11 @@
9
9
  * node .agent/scripts/verify_all.js --skip build,deps
10
10
  */
11
11
 
12
- "use strict";
12
+ 'use strict';
13
13
 
14
- const fs = require("fs");
15
- const path = require("path");
16
- const { execFileSync } = require("child_process");
14
+ const fs = require('fs');
15
+ const path = require('path');
16
+ const { execFileSync } = require('child_process');
17
17
 
18
18
  const {
19
19
  RED,
@@ -28,31 +28,31 @@ const {
28
28
  summaryTable,
29
29
  timer,
30
30
  formatMs,
31
- } = require("./_colors");
31
+ } = require('./_colors');
32
32
 
33
- const { walkDir, hasNpm } = require("./_utils");
33
+ const { walkDir, hasNpm } = require('./_utils');
34
34
 
35
35
  // ── Results Tracking ────────────────────────────────────────────────────────
36
36
 
37
37
  const RESULTS = [];
38
38
 
39
39
  function trackOk(label, ms, note) {
40
- const timing = ms != null ? `${DIM}(${formatMs(ms)})${RESET}` : "";
41
- const noteStr = note ? ` ${DIM}${note}${RESET}` : "";
40
+ const timing = ms != null ? `${DIM}(${formatMs(ms)})${RESET}` : '';
41
+ const noteStr = note ? ` ${DIM}${note}${RESET}` : '';
42
42
  console.log(` ${GREEN}✅ ${label}${RESET} ${timing}${noteStr}`);
43
- RESULTS.push({ name: label, status: "pass", ms, note: note || "" });
43
+ RESULTS.push({ name: label, status: 'pass', ms, note: note || '' });
44
44
  }
45
45
 
46
46
  function trackFail(label, ms, note) {
47
- const timing = ms != null ? `${DIM}(${formatMs(ms)})${RESET}` : "";
48
- const noteStr = note ? `\n ${note}` : "";
47
+ const timing = ms != null ? `${DIM}(${formatMs(ms)})${RESET}` : '';
48
+ const noteStr = note ? `\n ${note}` : '';
49
49
  console.log(` ${RED}❌ ${label}${RESET} ${timing}${noteStr}`);
50
- RESULTS.push({ name: label, status: "fail", ms, note: note || "" });
50
+ RESULTS.push({ name: label, status: 'fail', ms, note: note || '' });
51
51
  }
52
52
 
53
53
  function trackSkip(label, reason) {
54
54
  console.log(` ${YELLOW}⏭️ ${label} — ${reason}${RESET}`);
55
- RESULTS.push({ name: label, status: "skip", note: `skipped: ${reason}` });
55
+ RESULTS.push({ name: label, status: 'skip', note: `skipped: ${reason}` });
56
56
  }
57
57
 
58
58
  // ── Command Runner ──────────────────────────────────────────────────────────
@@ -63,29 +63,29 @@ function trackSkip(label, reason) {
63
63
  function run(label, cmd, cwd) {
64
64
  const elapsed = timer();
65
65
  try {
66
- const isWindows = process.platform === "win32";
66
+ const isWindows = process.platform === 'win32';
67
67
 
68
68
  execFileSync(cmd[0], cmd.slice(1), {
69
69
  cwd,
70
- stdio: "pipe",
70
+ stdio: 'pipe',
71
71
  timeout: 120000,
72
- encoding: "utf8",
72
+ encoding: 'utf8',
73
73
  shell: isWindows,
74
74
  });
75
75
  trackOk(label, elapsed());
76
76
  return true;
77
77
  } catch (err) {
78
78
  const ms = elapsed();
79
- if (err.code === "ENOENT") {
80
- trackSkip(label, "tool not installed — skipping");
79
+ if (err.code === 'ENOENT') {
80
+ trackSkip(label, 'tool not installed — skipping');
81
81
  return true;
82
82
  }
83
83
  if (err.killed) {
84
- trackFail(label, ms, "timed out after 120s");
84
+ trackFail(label, ms, 'timed out after 120s');
85
85
  return false;
86
86
  }
87
- const output = ((err.stdout || "") + (err.stderr || "")).trim();
88
- trackFail(label, ms, output ? output.slice(0, 500) : "non-zero exit code");
87
+ const output = ((err.stdout || '') + (err.stderr || '')).trim();
88
+ trackFail(label, ms, output ? output.slice(0, 500) : 'non-zero exit code');
89
89
  return false;
90
90
  }
91
91
  }
@@ -96,31 +96,25 @@ function run(label, cmd, cwd) {
96
96
  */
97
97
  function scanSecrets(cwd) {
98
98
  const elapsed = timer();
99
- const patterns = [
100
- "password=",
101
- "secret=",
102
- "api_key=",
103
- "private_key=",
104
- "auth_token=",
105
- ];
99
+ const patterns = ['password=', 'secret=', 'api_key=', 'private_key=', 'auth_token='];
106
100
  const found = [];
107
101
 
108
- const sourceExtensions = new Set([".ts", ".tsx", ".js", ".jsx", ".py"]);
102
+ const sourceExtensions = new Set(['.ts', '.tsx', '.js', '.jsx', '.py']);
109
103
  const files = walkDir(cwd, { extensions: sourceExtensions });
110
104
 
111
105
  for (const fullPath of files) {
112
106
  let content;
113
107
  try {
114
- content = fs.readFileSync(fullPath, "utf8");
108
+ content = fs.readFileSync(fullPath, 'utf8');
115
109
  } catch {
116
110
  continue;
117
111
  }
118
112
 
119
- const lines = content.split("\n");
113
+ const lines = content.split('\n');
120
114
  for (let i = 0; i < lines.length; i++) {
121
115
  const low = lines[i].toLowerCase().trim();
122
- const hasPattern = patterns.some((p) => low.includes(p));
123
- if (hasPattern && !low.startsWith("#") && low.includes("=")) {
116
+ const hasPattern = patterns.some(p => low.includes(p));
117
+ if (hasPattern && !low.startsWith('#') && low.includes('=')) {
124
118
  const rel = path.relative(cwd, fullPath);
125
119
  found.push(`${rel}:${i + 1}`);
126
120
  }
@@ -129,14 +123,10 @@ function scanSecrets(cwd) {
129
123
 
130
124
  const ms = elapsed();
131
125
  if (found.length > 0) {
132
- trackFail("Secret scan", ms, found.slice(0, 5).join("\n "));
126
+ trackFail('Secret scan', ms, found.slice(0, 5).join('\n '));
133
127
  return false;
134
128
  }
135
- trackOk(
136
- "Secret scan — no hardcoded credentials found",
137
- ms,
138
- `${files.length} files scanned`,
139
- );
129
+ trackOk('Secret scan — no hardcoded credentials found', ms, `${files.length} files scanned`);
140
130
  return true;
141
131
  }
142
132
 
@@ -148,82 +138,81 @@ function verifyAll(cwd, skipped) {
148
138
  RESULTS.length = 0; // Reset for clean runs (prevents accumulation in tests)
149
139
  const totalTimer = timer();
150
140
 
151
- console.log(sectionHeader("Secret Scan", 1));
152
- if (!skipped.includes("secrets")) {
141
+ console.log(sectionHeader('Secret Scan', 1));
142
+ if (!skipped.includes('secrets')) {
153
143
  if (!scanSecrets(cwd)) failures++;
154
144
  } else {
155
- trackSkip("Secret scan", "skipped by flag");
145
+ trackSkip('Secret scan', 'skipped by flag');
156
146
  }
157
147
 
158
- console.log(sectionHeader("TypeScript", 2));
159
- if (!skipped.includes("typescript")) {
148
+ console.log(sectionHeader('TypeScript', 2));
149
+ if (!skipped.includes('typescript')) {
160
150
  if (hasNpm(cwd)) {
161
- if (!run("tsc --noEmit", ["npx", "tsc", "--noEmit"], cwd)) failures++;
151
+ if (!run('tsc --noEmit', ['npx', 'tsc', '--noEmit'], cwd)) failures++;
162
152
  } else {
163
- trackSkip("TypeScript", "no package.json found in project");
153
+ trackSkip('TypeScript', 'no package.json found in project');
164
154
  }
165
155
  } else {
166
- trackSkip("TypeScript", "skipped by flag");
156
+ trackSkip('TypeScript', 'skipped by flag');
167
157
  }
168
158
 
169
- console.log(sectionHeader("ESLint", 3));
170
- if (!skipped.includes("lint")) {
159
+ console.log(sectionHeader('ESLint', 3));
160
+ if (!skipped.includes('lint')) {
171
161
  if (hasNpm(cwd)) {
172
- if (!run("ESLint", ["npx", "eslint", ".", "--max-warnings=0"], cwd))
173
- failures++;
162
+ if (!run('ESLint', ['npx', 'eslint', '.', '--max-warnings=0'], cwd)) failures++;
174
163
  } else {
175
- trackSkip("ESLint", "no package.json found in project");
164
+ trackSkip('ESLint', 'no package.json found in project');
176
165
  }
177
166
  } else {
178
- trackSkip("ESLint", "skipped by flag");
167
+ trackSkip('ESLint', 'skipped by flag');
179
168
  }
180
169
 
181
- console.log(sectionHeader("Unit Tests", 4));
182
- if (!skipped.includes("tests")) {
170
+ console.log(sectionHeader('Unit Tests', 4));
171
+ if (!skipped.includes('tests')) {
183
172
  if (hasNpm(cwd)) {
184
- if (!run("Test suite", ["npm", "test", "--", "--passWithNoTests"], cwd))
185
- failures++;
173
+ if (!run('Test suite', ['npm', 'test', '--', '--passWithNoTests'], cwd)) failures++;
186
174
  } else {
187
- trackSkip("Tests", "no package.json found in project");
175
+ trackSkip('Tests', 'no package.json found in project');
188
176
  }
189
177
  } else {
190
- trackSkip("Tests", "skipped by flag");
178
+ trackSkip('Tests', 'skipped by flag');
191
179
  }
192
180
 
193
- console.log(sectionHeader("Build", 5));
194
- if (!skipped.includes("build")) {
181
+ console.log(sectionHeader('Build', 5));
182
+ if (!skipped.includes('build')) {
195
183
  if (hasNpm(cwd)) {
196
- if (!run("npm run build", ["npm", "run", "build"], cwd)) failures++;
184
+ if (!run('npm run build', ['npm', 'run', 'build'], cwd)) failures++;
197
185
  } else {
198
- trackSkip("Build", "no package.json found in project");
186
+ trackSkip('Build', 'no package.json found in project');
199
187
  }
200
188
  } else {
201
- trackSkip("Build", "skipped by flag");
189
+ trackSkip('Build', 'skipped by flag');
202
190
  }
203
191
 
204
- console.log(sectionHeader("Dependency Audit", 6));
205
- if (!skipped.includes("deps")) {
192
+ console.log(sectionHeader('Dependency Audit', 6));
193
+ if (!skipped.includes('deps')) {
206
194
  if (hasNpm(cwd)) {
207
- if (!run("npm audit", ["npm", "audit", "--audit-level=high"], cwd))
208
- failures++;
195
+ if (!run('npm audit', ['npm', 'audit', '--audit-level=high'], cwd)) failures++;
209
196
  } else {
210
- trackSkip("Dependency audit", "no package.json found in project");
197
+ trackSkip('Dependency audit', 'no package.json found in project');
211
198
  }
212
199
  } else {
213
- trackSkip("Dependency audit", "skipped by flag");
200
+ trackSkip('Dependency audit', 'skipped by flag');
214
201
  }
215
202
 
216
- console.log(sectionHeader("Rust Core Tests", 7));
217
- if (!skipped.includes("rust")) {
218
- const cargoToml = path.join(cwd, "crates", "core", "Cargo.toml");
203
+ console.log(sectionHeader('Rust Core Tests', 7));
204
+ if (!skipped.includes('rust')) {
205
+ const cargoToml = path.join(cwd, 'crates', 'core', 'Cargo.toml');
219
206
  if (fs.existsSync(cargoToml)) {
220
- if (!run("Rust Core Tests", ["cargo", "test", "--manifest-path", "crates/core/Cargo.toml"], cwd))
207
+ if (
208
+ !run('Rust Core Tests', ['cargo', 'test', '--manifest-path', 'crates/core/Cargo.toml'], cwd)
209
+ )
221
210
  failures++;
222
211
  } else {
223
- trackSkip("Rust Core Tests", "crates/core/Cargo.toml not found in project");
212
+ trackSkip('Rust Core Tests', 'crates/core/Cargo.toml not found in project');
224
213
  }
225
214
  } else {
226
- trackSkip("Rust Core Tests", "skipped by flag");
215
+ trackSkip('Rust Core Tests', 'skipped by flag');
227
216
  }
228
217
 
229
218
  // ━━━ Summary Table ━━━
@@ -231,26 +220,20 @@ function verifyAll(cwd, skipped) {
231
220
  console.log(`\n${BOLD}${CYAN}━━━ Verification Summary ━━━${RESET}`);
232
221
  summaryTable(RESULTS);
233
222
 
234
- const passCount = RESULTS.filter((r) => r.status === "pass").length;
235
- const failCount = RESULTS.filter((r) => r.status === "fail").length;
236
- const skipCount = RESULTS.filter((r) => r.status === "skip").length;
223
+ const passCount = RESULTS.filter(r => r.status === 'pass').length;
224
+ const failCount = RESULTS.filter(r => r.status === 'fail').length;
225
+ const skipCount = RESULTS.filter(r => r.status === 'skip').length;
237
226
 
227
+ console.log(`\n ${DIM}Total: ${RESULTS.length} checks in ${formatMs(totalMs)}${RESET}`);
238
228
  console.log(
239
- `\n ${DIM}Total: ${RESULTS.length} checks in ${formatMs(totalMs)}${RESET}`,
240
- );
241
- console.log(
242
- ` ${GREEN}${passCount} passed${RESET} ${failCount > 0 ? `${RED}${failCount} failed${RESET} ` : ""}${skipCount > 0 ? `${YELLOW}${skipCount} skipped${RESET}` : ""}`,
229
+ ` ${GREEN}${passCount} passed${RESET} ${failCount > 0 ? `${RED}${failCount} failed${RESET} ` : ''}${skipCount > 0 ? `${YELLOW}${skipCount} skipped${RESET}` : ''}`,
243
230
  );
244
231
 
245
232
  console.log();
246
233
  if (failures === 0) {
247
- console.log(
248
- `${GREEN}${BOLD} ✔ All checks passed — safe to deploy.${RESET}`,
249
- );
234
+ console.log(`${GREEN}${BOLD} ✔ All checks passed — safe to deploy.${RESET}`);
250
235
  } else {
251
- console.log(
252
- `${RED}${BOLD} ✖ ${failures} check(s) failed — fix before deploying.${RESET}`,
253
- );
236
+ console.log(`${RED}${BOLD} ✖ ${failures} check(s) failed — fix before deploying.${RESET}`);
254
237
  }
255
238
  console.log();
256
239
 
@@ -265,10 +248,10 @@ function parseArgs(argv) {
265
248
  const raw = argv.slice(2);
266
249
 
267
250
  for (let i = 0; i < raw.length; i++) {
268
- if (raw[i] === "--skip" && raw[i + 1]) {
251
+ if (raw[i] === '--skip' && raw[i + 1]) {
269
252
  args.skip = raw[++i]
270
- .split(",")
271
- .map((s) => s.trim().toLowerCase())
253
+ .split(',')
254
+ .map(s => s.trim().toLowerCase())
272
255
  .filter(Boolean);
273
256
  }
274
257
  }
@@ -279,7 +262,7 @@ function main() {
279
262
  const args = parseArgs(process.argv);
280
263
  const cwd = process.cwd();
281
264
 
282
- console.log(banner("verify_all.js", { Project: cwd }));
265
+ console.log(banner('verify_all.js', { Project: cwd }));
283
266
 
284
267
  const failures = verifyAll(cwd, args.skip);
285
268
  process.exit(failures > 0 ? 1 : 0);
@@ -10,43 +10,34 @@
10
10
  * node .agent/scripts/visual_audit.js --file src/components/Button.tsx
11
11
  */
12
12
 
13
- "use strict";
13
+ 'use strict';
14
14
 
15
- const fs = require("fs");
16
- const path = require("path");
15
+ const fs = require('fs');
16
+ const path = require('path');
17
17
 
18
- const {
19
- GREEN,
20
- YELLOW,
21
- BOLD,
22
- DIM,
23
- RESET,
24
- banner,
25
- timer,
26
- formatMs,
27
- } = require("./_colors");
18
+ const { GREEN, YELLOW, BOLD, DIM, RESET, banner, timer, formatMs } = require('./_colors');
28
19
 
29
- const { walkDir, SOURCE_EXTENSIONS } = require("./_utils");
20
+ const { walkDir, SOURCE_EXTENSIONS } = require('./_utils');
30
21
 
31
22
  function auditFile(filePath) {
32
23
  let content;
33
24
  try {
34
- content = fs.readFileSync(filePath, "utf8");
25
+ content = fs.readFileSync(filePath, 'utf8');
35
26
  } catch {
36
27
  return [];
37
28
  }
38
29
 
39
30
  const issues = [];
40
- const lines = content.split("\n");
31
+ const lines = content.split('\n');
41
32
 
42
33
  for (let i = 0; i < lines.length; i++) {
43
34
  const line = lines[i];
44
35
 
45
36
  // Check for hardcoded hex colors when oklch or CSS variables are expected
46
- if (/#([0-9a-fA-F]{3}){1,2}\b/.test(line) && !line.includes("// ignore-color")) {
37
+ if (/#([0-9a-fA-F]{3}){1,2}\b/.test(line) && !line.includes('// ignore-color')) {
47
38
  issues.push({
48
39
  line: i + 1,
49
- rule: "oklch-color",
40
+ rule: 'oklch-color',
50
41
  message: `Hardcoded hex color found: "${line.trim()}". Prefer OKLCH or design token CSS variables.`,
51
42
  });
52
43
  }
@@ -59,7 +50,7 @@ function main() {
59
50
  const cwd = process.cwd();
60
51
  const elapsed = timer();
61
52
 
62
- console.log(banner("visual_audit.js", { Target: cwd }));
53
+ console.log(banner('visual_audit.js', { Target: cwd }));
63
54
 
64
55
  const files = walkDir(cwd, { extensions: SOURCE_EXTENSIONS });
65
56
  let totalIssues = 0;
@@ -79,9 +70,13 @@ function main() {
79
70
  console.log(`\n ${DIM}Audited ${files.length} files in ${formatMs(elapsed())}${RESET}`);
80
71
 
81
72
  if (totalIssues === 0) {
82
- console.log(` ${GREEN}${BOLD}✔ Visual audit complete — zero design violations found.${RESET}\n`);
73
+ console.log(
74
+ ` ${GREEN}${BOLD}✔ Visual audit complete — zero design violations found.${RESET}\n`,
75
+ );
83
76
  } else {
84
- console.log(` ${YELLOW}${BOLD}⚠ Visual audit completed with ${totalIssues} advisory issue(s).${RESET}\n`);
77
+ console.log(
78
+ ` ${YELLOW}${BOLD}⚠ Visual audit completed with ${totalIssues} advisory issue(s).${RESET}\n`,
79
+ );
85
80
  }
86
81
  }
87
82
 
@@ -0,0 +1,237 @@
1
+ {
2
+ "version": "3.0.0",
3
+ "total_skills": 183,
4
+ "description": "Lightweight 2-tier domain routing map for Tribunal Agent Kit v3.0.0",
5
+ "domain_routes": {
6
+ "frontend": [
7
+ "react-specialist",
8
+ "nextjs-react-expert",
9
+ "vue-expert",
10
+ "frontend-design",
11
+ "better-ui",
12
+ "baseline-ui",
13
+ "impeccable",
14
+ "taste-skill",
15
+ "gpt-taste",
16
+ "product-aware-heuristics",
17
+ "swiss-design",
18
+ "typeset",
19
+ "better-colors",
20
+ "colorize",
21
+ "delight",
22
+ "whimsy-injector",
23
+ "compact-landing",
24
+ "landing-page",
25
+ "pricing-page",
26
+ "company-logos",
27
+ "ui-reasoning-engine",
28
+ "ui-skill-packs",
29
+ "ui-skills-root",
30
+ "ui-ux-pro-max",
31
+ "ui-ux-researcher",
32
+ "critique",
33
+ "bolder",
34
+ "quieter",
35
+ "polish",
36
+ "harden",
37
+ "distill",
38
+ "clarify",
39
+ "shape",
40
+ "redesign-skill",
41
+ "improve-ui",
42
+ "create-design-md",
43
+ "extract-design-system",
44
+ "appflow-wireframe",
45
+ "apple-design",
46
+ "shadcn-ui-expert",
47
+ "tailwind-patterns",
48
+ "building-native-ui"
49
+ ],
50
+ "motion": [
51
+ "12-principles-of-animation",
52
+ "60fps-animation",
53
+ "accessible-animation",
54
+ "animation-on-scroll",
55
+ "animation-systems",
56
+ "framer-motion-expert",
57
+ "gsap-core",
58
+ "gsap-frameworks",
59
+ "gsap-performance",
60
+ "gsap-plugins",
61
+ "gsap-react",
62
+ "gsap-scrolltrigger",
63
+ "gsap-timeline",
64
+ "gsap-utils",
65
+ "lottie-animation",
66
+ "marquee-loop",
67
+ "masked-reveal",
68
+ "micro-interaction",
69
+ "morphing-icons",
70
+ "motion-engineering",
71
+ "page-transition-animation",
72
+ "progressive-blur",
73
+ "review-animations",
74
+ "sounds-on-the-web",
75
+ "svg-animation",
76
+ "to-spring-or-not-to-spring",
77
+ "transitions-dev",
78
+ "fixing-motion-performance"
79
+ ],
80
+ "backend": [
81
+ "backend-security-expert",
82
+ "api-patterns",
83
+ "api-security-auditor",
84
+ "nodejs-best-practices",
85
+ "python-pro",
86
+ "python-patterns",
87
+ "rust-pro",
88
+ "csharp-developer",
89
+ "edge-computing",
90
+ "browser-native-ai",
91
+ "llm-engineering",
92
+ "advanced-rag-pipelines",
93
+ "generative-ui-expert",
94
+ "realtime-patterns",
95
+ "context-engineering-pro",
96
+ "agentic-workflows-2026"
97
+ ],
98
+ "database": [
99
+ "database-architect",
100
+ "database-design",
101
+ "sql-pro",
102
+ "supabase-postgres-best-practices",
103
+ "domain-modeling",
104
+ "data-validation-schemas",
105
+ "vector-search-pgvector",
106
+ "duckdb-analytical-sql"
107
+ ],
108
+ "mobile": [
109
+ "mobile-developer",
110
+ "mobile-design",
111
+ "swiftui-expert",
112
+ "expo-router-v4",
113
+ "edge-ai-mobile"
114
+ ],
115
+ "devops": [
116
+ "devops-engineer",
117
+ "devops-incident-responder",
118
+ "platform-engineer",
119
+ "cloud-architect",
120
+ "containerization-pro",
121
+ "server-management",
122
+ "bash-linux",
123
+ "powershell-windows",
124
+ "cicd-pro",
125
+ "deployment-procedures",
126
+ "platform-engineering-opentofu",
127
+ "opentelemetry-observability"
128
+ ],
129
+ "security": [
130
+ "ai-prompt-injection-defense",
131
+ "frontend-security-expert",
132
+ "red-team-tactics",
133
+ "vulnerability-scanner",
134
+ "web-accessibility-auditor",
135
+ "fixing-accessibility",
136
+ "fixing-metadata",
137
+ "web-design-guidelines",
138
+ "web-quality-audit",
139
+ "audit-and-fix",
140
+ "lint-and-validate",
141
+ "clean-code",
142
+ "code-review-checklist",
143
+ "thermo-nuclear-code-quality-review",
144
+ "zero-trust-passkeys",
145
+ "ai-app-hardening"
146
+ ],
147
+ "testing": [
148
+ "testing-patterns",
149
+ "webapp-testing",
150
+ "playwright-best-practices",
151
+ "tdd-workflow",
152
+ "test-result-analyzer",
153
+ "playwright-ai-e2e",
154
+ "property-based-testing"
155
+ ],
156
+ "meta": [
157
+ "agent-organizer",
158
+ "agentic-patterns",
159
+ "app-builder",
160
+ "architecture",
161
+ "behavioral-modes",
162
+ "brainstorming",
163
+ "codebase-design",
164
+ "fabel-protocol",
165
+ "harness-protocol",
166
+ "i18n-localization",
167
+ "improve-codebase-architecture",
168
+ "intelligent-routing",
169
+ "knowledge-graph",
170
+ "local-first",
171
+ "local-first-architecture",
172
+ "mcp-builder",
173
+ "monorepo-management",
174
+ "observability",
175
+ "parallel-agents",
176
+ "performance-profiling",
177
+ "plan-writing",
178
+ "project-idioms",
179
+ "readme-builder",
180
+ "seo-fundamentals",
181
+ "skill-creator",
182
+ "system-design-pro",
183
+ "systematic-debugging",
184
+ "thinking-protocol",
185
+ "trend-researcher",
186
+ "typescript-advanced",
187
+ "webgpu-performance",
188
+ "workflow-optimizer",
189
+ "cobejs",
190
+ "diagnosing-bugs",
191
+ "antfu-conventions",
192
+ "documentation-templates",
193
+ "emil-design-eng",
194
+ "geo-fundamentals",
195
+ "git-pro",
196
+ "github-operations",
197
+ "design-lab"
198
+ ]
199
+ },
200
+ "file_extensions": {
201
+ ".tsx": [
202
+ "react-specialist",
203
+ "nextjs-react-expert",
204
+ "frontend-design",
205
+ "better-ui",
206
+ "expo-router-v4",
207
+ "playwright-ai-e2e"
208
+ ],
209
+ ".ts": [
210
+ "typescript-advanced",
211
+ "clean-code",
212
+ "lint-and-validate",
213
+ "opentelemetry-observability",
214
+ "property-based-testing"
215
+ ],
216
+ ".jsx": ["react-specialist", "frontend-design"],
217
+ ".js": ["nodejs-best-practices", "clean-code", "opentelemetry-observability"],
218
+ ".vue": ["vue-expert", "frontend-design"],
219
+ ".py": ["python-pro", "python-patterns", "duckdb-analytical-sql", "property-based-testing"],
220
+ ".rs": ["rust-pro"],
221
+ ".cs": ["csharp-developer"],
222
+ ".sql": [
223
+ "sql-pro",
224
+ "database-architect",
225
+ "supabase-postgres-best-practices",
226
+ "vector-search-pgvector",
227
+ "duckdb-analytical-sql"
228
+ ],
229
+ ".prisma": ["database-architect", "database-design", "vector-search-pgvector"],
230
+ ".css": ["frontend-design", "better-colors", "better-typography", "swiss-design"],
231
+ ".sh": ["bash-linux"],
232
+ ".ps1": ["powershell-windows"],
233
+ ".swift": ["swiftui-expert", "mobile-developer", "edge-ai-mobile"],
234
+ ".tf": ["platform-engineering-opentofu"],
235
+ ".tofu": ["platform-engineering-opentofu"]
236
+ }
237
+ }