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
@@ -114,7 +114,7 @@ Every code or design request activates an agent. This is not optional.
114
114
  | System design / scale / capacity planning | `system-architect` |
115
115
  | Cloud infrastructure / AWS / Terraform / Docker / CI-CD | `cloud-engineer` |
116
116
 
117
- > **Agent vs Skill:** Some entries above (e.g., `python-pro`, `vue-expert`, `csharp-developer`, `sql-pro`, `react-specialist`, `platform-engineer`, `devops-incident-responder`) are **skills** loaded from `skills/SKILL.md`, not full agent definitions in `agents/`. The routing and announcement protocol still applies load the skill's rules and announce it. If an `.md` file exists in `agents/`, it takes priority (P1) over the skill (P2).
117
+ > **Agent vs Skill (Lazy Resolution):** Some entries above are **skills** loaded on-demand from `skills/SKILL.md`. To prevent context saturation, skills are resolved via 2-tier lazy routing using `.agent/skill_topic_map.json`. If a required skill's full text is not in current context, fetch it on-demand via `view_file` on `.agent/skills/<skill-name>/SKILL.md`. If an `.md` file exists in `agents/`, it takes priority (P1) over the skill (P2).
118
118
 
119
119
  **When activated, announce the agent:**
120
120
 
@@ -139,12 +139,12 @@ Did I load the agent's required skills? → If no: check frontmatter skills: fi
139
139
 
140
140
  The Socratic Gate is **adaptive** based on the task's **Impact Tier** evaluated by `impact_classifier.js`:
141
141
 
142
- | Impact Tier | Scope | Socratic Gate Policy |
143
- | ----------- | ----- | --------------------- |
144
- | **Tier 0 (Fast-Pass)** | Typo, CSS, markdown, formatting | **BYPASS** — 0 questions, 0 LLM calls |
145
- | **Tier 1 (Express Pass)** | Single-file component or function logic edit | **BYPASS** — 0 questions, single specialist pass |
146
- | **Tier 2 (Targeted Audit)** | Multi-file feature edit | **CONDITIONAL** — Ask 1 question ONLY if ambiguity score > 0.5 |
147
- | **Tier 3 (Full Gauntlet)** | Auth, schema, migration, breaking architectural changes | **REQUIRED** — 1-2 targeted questions before execution (bypassable via `--no-gate` / `--express`) |
142
+ | Impact Tier | Scope | Socratic Gate Policy |
143
+ | --------------------------- | ------------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
144
+ | **Tier 0 (Fast-Pass)** | Typo, CSS, markdown, formatting | **BYPASS** — 0 questions, 0 LLM calls |
145
+ | **Tier 1 (Express Pass)** | Single-file component or function logic edit | **BYPASS** — 0 questions, single specialist pass |
146
+ | **Tier 2 (Targeted Audit)** | Multi-file feature edit | **CONDITIONAL** — Ask 1 question ONLY if ambiguity score > 0.5 |
147
+ | **Tier 3 (Full Gauntlet)** | Auth, schema, migration, breaking architectural changes | **REQUIRED** — 1-2 targeted questions before execution (bypassable via `--no-gate` / `--express`) |
148
148
 
149
149
  **Rules:**
150
150
 
@@ -213,14 +213,15 @@ The Human Gate is never skipped. No code is written to a file without explicit u
213
213
 
214
214
  **Reviewer assignment by domain:**
215
215
 
216
- | Code type | Reviewers |
217
- | --------------------- | ----------------------------------------------------------------------------- |
216
+ | Code type | Reviewers |
217
+ | --------------------- | --------------------------------------------------------------------------------------------------- |
218
218
  | Backend/API | logic + security + dependency + type-safety + resilience + schema + complexity-reviewer |
219
219
  | Frontend/React | logic + security + frontend + type-safety + ui-ux-auditor + review-animations + complexity-reviewer |
220
220
  | Database/SQL | logic + security + sql + schema + complexity-reviewer |
221
221
  | Mobile/Cross-platform | logic + security + mobile-reviewer + type-safety + complexity-reviewer |
222
+ | CI/CD / DevOps | pipeline-reviewer + security + dependency + resilience + complexity-reviewer |
222
223
  | Any domain | + performance (if optimization) |
223
- | Before merge | /tribunal-full (all 27 reviewers) |
224
+ | Before merge | /tribunal-full (all 28 reviewers) |
224
225
 
225
226
  ---
226
227
 
@@ -281,6 +282,7 @@ These scripts live in `.agent/scripts/`. Agents and skills can invoke them:
281
282
  | -------------------------- | ------------------------------------------------- | --------------------------------------------- |
282
283
  | `checklist.js` | Priority audit: Security→Lint→Schema→Tests→UX→SEO | Before/after any major change |
283
284
  | `verify_all.js` | Full pre-deploy validation suite | Pre-deploy |
285
+ | `cicd_validator.js` | GitHub Actions & CI/CD workflow security/syntax | Deploys, CI changes, /tribunal-cicd |
284
286
  | `auto_preview.js` | Start/stop/restart local dev server | After /create or /enhance |
285
287
  | `session_manager.js` | Track session state between conversations | Multi-session work |
286
288
  | `lint_runner.js` | Standalone lint runner (ESLint, Prettier, Ruff) | Every code change |
@@ -12,29 +12,29 @@ Full rules (GEMINI.md) are NOT loaded — this saves ~4,800 tokens.
12
12
 
13
13
  ## Task Classification
14
14
 
15
- | Type | Signals | Output |
16
- | -------------- | -------------------------------------------------- | ------------------- |
17
- | Question | "what is", "how does", "explain" | Text only — no code |
18
- | Simple edit | "fix", "change", "update" (single file) | Direct edit |
19
- | Complex build | "build", "create", "implement", "design" | Structured spec |
20
- | Refactor | "refactor", "clean", "extract", "split" | Structured spec |
21
- | Test | "test", "spec", "e2e" | Test spec |
15
+ | Type | Signals | Output |
16
+ | ------------- | ---------------------------------------- | ------------------- |
17
+ | Question | "what is", "how does", "explain" | Text only — no code |
18
+ | Simple edit | "fix", "change", "update" (single file) | Direct edit |
19
+ | Complex build | "build", "create", "implement", "design" | Structured spec |
20
+ | Refactor | "refactor", "clean", "extract", "split" | Structured spec |
21
+ | Test | "test", "spec", "e2e" | Test spec |
22
22
 
23
23
  ---
24
24
 
25
25
  ## Stack Detection
26
26
 
27
- | Keywords | Stack |
28
- | ------------------------------------------- | -------------- |
29
- | react, jsx, tsx, component, hook | react |
30
- | next, nextjs, server component | nextjs |
31
- | vue, nuxt, composition api | vue |
32
- | typescript, interface, generic | typescript |
33
- | python, fastapi, django, flask | python |
34
- | express, hono, koa, node | node |
35
- | sql, postgres, prisma, drizzle | sql |
36
- | rust, cargo, tokio, axum | rust |
37
- | css, tailwind, responsive | css |
27
+ | Keywords | Stack |
28
+ | -------------------------------- | ---------- |
29
+ | react, jsx, tsx, component, hook | react |
30
+ | next, nextjs, server component | nextjs |
31
+ | vue, nuxt, composition api | vue |
32
+ | typescript, interface, generic | typescript |
33
+ | python, fastapi, django, flask | python |
34
+ | express, hono, koa, node | node |
35
+ | sql, postgres, prisma, drizzle | sql |
36
+ | rust, cargo, tokio, axum | rust |
37
+ | css, tailwind, responsive | css |
38
38
 
39
39
  ---
40
40
 
@@ -56,9 +56,7 @@ The planner MUST output a JSON object matching this schema:
56
56
  "task_type": "frontend_component | api_endpoint | database_query | auth_flow | test_suite | refactor | animation | general",
57
57
  "stack": ["react", "typescript", "css"],
58
58
  "target_file": "path/to/file.tsx",
59
- "essential_skills": [
60
- { "name": "skill-name", "score": 5.0 }
61
- ],
59
+ "essential_skills": [{ "name": "skill-name", "score": 5.0 }],
62
60
  "constraints": {
63
61
  "accessibility": true,
64
62
  "responsive": true,
@@ -9,48 +9,48 @@
9
9
  * const C = require('./_colors'); // C.RED, C.banner('Title'), etc.
10
10
  */
11
11
 
12
- "use strict";
12
+ 'use strict';
13
13
 
14
14
  // ── Core ANSI Escape Codes ──────────────────────────────────────────────────
15
- const GREEN = "\x1b[92m";
16
- const YELLOW = "\x1b[93m";
17
- const CYAN = "\x1b[96m";
18
- const RED = "\x1b[91m";
19
- const BLUE = "\x1b[94m";
20
- const MAGENTA = "\x1b[95m";
21
- const WHITE = "\x1b[97m";
22
- const GRAY = "\x1b[90m";
23
- const BOLD = "\x1b[1m";
24
- const DIM = "\x1b[2m";
25
- const ITALIC = "\x1b[3m";
26
- const UNDERLINE = "\x1b[4m";
27
- const RESET = "\x1b[0m";
15
+ const GREEN = '\x1b[92m';
16
+ const YELLOW = '\x1b[93m';
17
+ const CYAN = '\x1b[96m';
18
+ const RED = '\x1b[91m';
19
+ const BLUE = '\x1b[94m';
20
+ const MAGENTA = '\x1b[95m';
21
+ const WHITE = '\x1b[97m';
22
+ const GRAY = '\x1b[90m';
23
+ const BOLD = '\x1b[1m';
24
+ const DIM = '\x1b[2m';
25
+ const ITALIC = '\x1b[3m';
26
+ const UNDERLINE = '\x1b[4m';
27
+ const RESET = '\x1b[0m';
28
28
 
29
29
  // ── Box Drawing Characters ──────────────────────────────────────────────────
30
30
  const BOX = {
31
- TL: "",
32
- TR: "",
33
- BL: "",
34
- BR: "",
35
- H: "",
36
- V: "",
37
- tl: "",
38
- tr: "",
39
- bl: "",
40
- br: "",
41
- h: "",
42
- v: "",
43
- cross: "",
44
- teeL: "",
45
- teeR: "",
46
- teeT: "",
47
- teeB: "",
48
- bullet: "",
49
- bulletEmpty: "",
50
- arrow: "",
51
- arrowLeft: "",
52
- check: "",
53
- cross_mark: "",
31
+ TL: '',
32
+ TR: '',
33
+ BL: '',
34
+ BR: '',
35
+ H: '',
36
+ V: '',
37
+ tl: '',
38
+ tr: '',
39
+ bl: '',
40
+ br: '',
41
+ h: '',
42
+ v: '',
43
+ cross: '',
44
+ teeL: '',
45
+ teeR: '',
46
+ teeT: '',
47
+ teeB: '',
48
+ bullet: '',
49
+ bulletEmpty: '',
50
+ arrow: '',
51
+ arrowLeft: '',
52
+ check: '',
53
+ cross_mark: '',
54
54
  };
55
55
 
56
56
  // ── Branded Output Helpers ──────────────────────────────────────────────────
@@ -62,10 +62,8 @@ const BOX = {
62
62
  * @returns {string} Formatted banner string
63
63
  */
64
64
  function banner(title, meta = {}) {
65
- const timestamp = new Date().toISOString().replace("T", " ").slice(0, 19);
66
- const lines = [
67
- ` ${BOLD}${CYAN}⚖️ TRIBUNAL KIT${RESET} ${DIM}— ${title}${RESET}`,
68
- ];
65
+ const timestamp = new Date().toISOString().replace('T', ' ').slice(0, 19);
66
+ const lines = [` ${BOLD}${CYAN}⚖️ TRIBUNAL KIT${RESET} ${DIM}— ${title}${RESET}`];
69
67
 
70
68
  const metaEntries = Object.entries(meta);
71
69
  if (metaEntries.length > 0) {
@@ -75,8 +73,8 @@ function banner(title, meta = {}) {
75
73
  }
76
74
  lines.push(` ${DIM}${timestamp}${RESET}`);
77
75
 
78
- const divider = `${CYAN}${"".repeat(56)}${RESET}`;
79
- return `\n${divider}\n${lines.join("\n")}\n${divider}`;
76
+ const divider = `${CYAN}${''.repeat(56)}${RESET}`;
77
+ return `\n${divider}\n${lines.join('\n')}\n${divider}`;
80
78
  }
81
79
 
82
80
  /**
@@ -87,8 +85,8 @@ function banner(title, meta = {}) {
87
85
  * @returns {string}
88
86
  */
89
87
  function sectionHeader(title, index, ms) {
90
- const num = index != null ? `${index} — ` : "";
91
- const timing = ms != null ? `${DIM} (${formatMs(ms)})${RESET}` : "";
88
+ const num = index != null ? `${index} — ` : '';
89
+ const timing = ms != null ? `${DIM} (${formatMs(ms)})${RESET}` : '';
92
90
  return `\n${BOLD}${BLUE}━━━ ${num}${title} ━━━${RESET}${timing}`;
93
91
  }
94
92
 
@@ -137,29 +135,29 @@ function info(msg) {
137
135
  * @param {Array<{name: string, status: 'pass'|'fail'|'skip'|'warn', ms?: number}>} rows
138
136
  */
139
137
  function summaryTable(rows) {
140
- const maxName = Math.max(...rows.map((r) => r.name.length), 18);
138
+ const maxName = Math.max(...rows.map(r => r.name.length), 18);
141
139
  const colW = maxName + 2;
142
140
 
143
- const statusIcon = (s) => {
144
- if (s === "pass") return `${GREEN} ✅ ${RESET}`;
145
- if (s === "fail") return `${RED} ❌ ${RESET}`;
146
- if (s === "skip") return `${YELLOW} ⏭️ ${RESET}`;
147
- if (s === "warn") return `${YELLOW} ⚠️ ${RESET}`;
141
+ const statusIcon = s => {
142
+ if (s === 'pass') return `${GREEN} ✅ ${RESET}`;
143
+ if (s === 'fail') return `${RED} ❌ ${RESET}`;
144
+ if (s === 'skip') return `${YELLOW} ⏭️ ${RESET}`;
145
+ if (s === 'warn') return `${YELLOW} ⚠️ ${RESET}`;
148
146
  return `${DIM} — ${RESET}`;
149
147
  };
150
148
 
151
- const pad = (str, len) => str + " ".repeat(Math.max(0, len - str.length));
149
+ const pad = (str, len) => str + ' '.repeat(Math.max(0, len - str.length));
152
150
  const top = ` ${BOX.tl}${BOX.h.repeat(colW)}${BOX.teeT}${BOX.h.repeat(6)}${BOX.teeT}${BOX.h.repeat(10)}${BOX.tr}`;
153
151
  const mid = ` ${BOX.teeL}${BOX.h.repeat(colW)}${BOX.cross}${BOX.h.repeat(6)}${BOX.cross}${BOX.h.repeat(10)}${BOX.teeR}`;
154
152
  const bot = ` ${BOX.bl}${BOX.h.repeat(colW)}${BOX.teeB}${BOX.h.repeat(6)}${BOX.teeB}${BOX.h.repeat(10)}${BOX.br}`;
155
- const hdr = ` ${BOX.v} ${BOLD}${pad("Check", colW - 2)}${RESET} ${BOX.v}${BOLD} Res ${RESET}${BOX.v} ${BOLD}${pad("Time", 8)}${RESET}${BOX.v}`;
153
+ const hdr = ` ${BOX.v} ${BOLD}${pad('Check', colW - 2)}${RESET} ${BOX.v}${BOLD} Res ${RESET}${BOX.v} ${BOLD}${pad('Time', 8)}${RESET}${BOX.v}`;
156
154
 
157
155
  console.log(top);
158
156
  console.log(hdr);
159
157
  console.log(mid);
160
158
 
161
159
  for (const row of rows) {
162
- const time = row.ms != null ? formatMs(row.ms) : "";
160
+ const time = row.ms != null ? formatMs(row.ms) : '';
163
161
  const line = ` ${BOX.v} ${pad(row.name, colW - 2)} ${BOX.v}${statusIcon(row.status)}${BOX.v} ${pad(time, 8)}${BOX.v}`;
164
162
  console.log(line);
165
163
  }
@@ -8,46 +8,46 @@
8
8
  * const { findAgentDir, walkDir, loadJson } = require('./_utils');
9
9
  */
10
10
 
11
- "use strict";
11
+ 'use strict';
12
12
 
13
- const fs = require("fs");
14
- const path = require("path");
15
- const { RED, RESET } = require("./_colors");
13
+ const fs = require('fs');
14
+ const path = require('path');
15
+ const { RED, RESET } = require('./_colors');
16
16
 
17
17
  // ── Default Skip Directories ────────────────────────────────────────────────
18
18
  const DEFAULT_SKIP_DIRS = new Set([
19
- "node_modules",
20
- ".git",
21
- "dist",
22
- "build",
23
- ".next",
24
- ".agent",
25
- "__pycache__",
26
- ".venv",
27
- "venv",
28
- "coverage",
29
- ".turbo",
30
- ".svelte-kit",
31
- ".nuxt",
32
- ".output",
19
+ 'node_modules',
20
+ '.git',
21
+ 'dist',
22
+ 'build',
23
+ '.next',
24
+ '.agent',
25
+ '__pycache__',
26
+ '.venv',
27
+ 'venv',
28
+ 'coverage',
29
+ '.turbo',
30
+ '.svelte-kit',
31
+ '.nuxt',
32
+ '.output',
33
33
  ]);
34
34
 
35
35
  // ── Default Source Extensions ───────────────────────────────────────────────
36
36
  const SOURCE_EXTENSIONS = new Set([
37
- ".ts",
38
- ".tsx",
39
- ".js",
40
- ".jsx",
41
- ".mjs",
42
- ".cjs",
43
- ".py",
44
- ".rs",
45
- ".go",
46
- ".java",
47
- ".cs",
48
- ".rb",
49
- ".vue",
50
- ".svelte",
37
+ '.ts',
38
+ '.tsx',
39
+ '.js',
40
+ '.jsx',
41
+ '.mjs',
42
+ '.cjs',
43
+ '.py',
44
+ '.rs',
45
+ '.go',
46
+ '.java',
47
+ '.cs',
48
+ '.rb',
49
+ '.vue',
50
+ '.svelte',
51
51
  ]);
52
52
 
53
53
  // ── Agent Directory Discovery ───────────────────────────────────────────────
@@ -62,7 +62,7 @@ function findAgentDir(startDir) {
62
62
  const root = path.parse(current).root;
63
63
 
64
64
  while (current !== root) {
65
- const candidate = path.join(current, ".agent");
65
+ const candidate = path.join(current, '.agent');
66
66
  if (fs.existsSync(candidate) && fs.statSync(candidate).isDirectory()) {
67
67
  return candidate;
68
68
  }
@@ -83,7 +83,7 @@ function findAgentDir(startDir) {
83
83
  * @returns {boolean}
84
84
  */
85
85
  function hasNpm(dir) {
86
- return fs.existsSync(path.join(dir, "package.json"));
86
+ return fs.existsSync(path.join(dir, 'package.json'));
87
87
  }
88
88
 
89
89
  /**
@@ -93,7 +93,7 @@ function hasNpm(dir) {
93
93
  */
94
94
  function loadJson(filePath) {
95
95
  try {
96
- return JSON.parse(fs.readFileSync(filePath, "utf8"));
96
+ return JSON.parse(fs.readFileSync(filePath, 'utf8'));
97
97
  } catch {
98
98
  return null;
99
99
  }
@@ -164,8 +164,7 @@ function countFiles(dir, skipDirs = DEFAULT_SKIP_DIRS) {
164
164
  return;
165
165
  }
166
166
  for (const e of entries) {
167
- if (e.isDirectory() && !skipDirs.has(e.name))
168
- _count(path.join(d, e.name));
167
+ if (e.isDirectory() && !skipDirs.has(e.name)) _count(path.join(d, e.name));
169
168
  else if (e.isFile()) count++;
170
169
  }
171
170
  }
@@ -189,31 +188,31 @@ function parseArgs(argv, schema = {}) {
189
188
 
190
189
  // Set defaults
191
190
  for (const [key, def] of Object.entries(schema)) {
192
- flags[key] = def.default ?? (def.type === "boolean" ? false : null);
191
+ flags[key] = def.default ?? (def.type === 'boolean' ? false : null);
193
192
  }
194
193
 
195
194
  for (let i = 0; i < argv.length; i++) {
196
195
  const arg = argv[i];
197
196
 
198
- if (arg === "-h" || arg === "--help") {
197
+ if (arg === '-h' || arg === '--help') {
199
198
  flags.help = true;
200
199
  continue;
201
200
  }
202
201
 
203
- if (arg.startsWith("--")) {
202
+ if (arg.startsWith('--')) {
204
203
  const flagName = arg.slice(2);
205
204
  const schemaDef = schema[flagName];
206
205
 
207
- if (schemaDef && schemaDef.type === "boolean") {
206
+ if (schemaDef && schemaDef.type === 'boolean') {
208
207
  flags[flagName] = true;
209
208
  } else if (schemaDef && i + 1 < argv.length) {
210
209
  const val = argv[++i];
211
- flags[flagName] = schemaDef.type === "number" ? Number(val) : val;
210
+ flags[flagName] = schemaDef.type === 'number' ? Number(val) : val;
212
211
  } else {
213
212
  // Unknown flag, store as boolean
214
213
  flags[flagName] = true;
215
214
  }
216
- } else if (arg.startsWith("-") && arg.length === 2) {
215
+ } else if (arg.startsWith('-') && arg.length === 2) {
217
216
  // Short flag — treat as boolean
218
217
  flags[arg.slice(1)] = true;
219
218
  } else {
@@ -226,7 +225,7 @@ function parseArgs(argv, schema = {}) {
226
225
 
227
226
  // ── Command Runner ──────────────────────────────────────────────────────────
228
227
 
229
- const WINDOWS_CMD_SHIMS = new Set(["npm", "npx", "pnpm", "yarn", "bun", "bunx"]);
228
+ const WINDOWS_CMD_SHIMS = new Set(['npm', 'npx', 'pnpm', 'yarn', 'bun', 'bunx']);
230
229
 
231
230
  /**
232
231
  * Select the executable that should be passed to spawnSync.
@@ -239,11 +238,11 @@ const WINDOWS_CMD_SHIMS = new Set(["npm", "npx", "pnpm", "yarn", "bun", "bunx"])
239
238
  */
240
239
  function normalizeCommand(cmd, platform = process.platform) {
241
240
  const lowerCaseCommand = cmd.toLowerCase();
242
- const hasPath = cmd.includes("/") || cmd.includes("\\\\");
241
+ const hasPath = cmd.includes('/') || cmd.includes('\\\\');
243
242
  if (
244
- platform === "win32" &&
243
+ platform === 'win32' &&
245
244
  !hasPath &&
246
- !lowerCaseCommand.endsWith(".cmd") &&
245
+ !lowerCaseCommand.endsWith('.cmd') &&
247
246
  WINDOWS_CMD_SHIMS.has(lowerCaseCommand)
248
247
  ) {
249
248
  return `${cmd}.cmd`;
@@ -261,22 +260,22 @@ function normalizeCommand(cmd, platform = process.platform) {
261
260
  * @returns {{ status: number, stdout: string, stderr: string, ok: boolean }}
262
261
  */
263
262
  function runCommand(cmd, args = [], opts = {}) {
264
- const { spawnSync } = require("child_process");
263
+ const { spawnSync } = require('child_process');
265
264
  const executable = normalizeCommand(cmd);
266
265
 
267
266
  const result = spawnSync(executable, args, {
268
- encoding: "utf8",
267
+ encoding: 'utf8',
269
268
  timeout: opts.timeout || 120000,
270
269
  cwd: opts.cwd || process.cwd(),
271
- shell: process.platform === "win32",
272
- stdio: opts.stdio || "pipe",
270
+ shell: process.platform === 'win32',
271
+ stdio: opts.stdio || 'pipe',
273
272
  ...opts,
274
273
  });
275
274
 
276
275
  return {
277
276
  status: result.status ?? 1,
278
- stdout: (result.stdout || "").toString(),
279
- stderr: (result.stderr || "").toString(),
277
+ stdout: (result.stdout || '').toString(),
278
+ stderr: (result.stderr || '').toString(),
280
279
  ok: result.status === 0,
281
280
  };
282
281
  }