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
@@ -14,18 +14,17 @@
14
14
  * node .agent/scripts/skill_integrator.js --report --verify
15
15
  */
16
16
 
17
- "use strict";
17
+ 'use strict';
18
18
 
19
- const fs = require("fs");
20
- const path = require("path");
21
- const { execFileSync } = require("child_process");
19
+ const fs = require('fs');
20
+ const path = require('path');
21
+ const { execFileSync } = require('child_process');
22
22
 
23
- const { CYAN, GREEN, YELLOW, RED, BOLD, RESET } = require("./_colors");
23
+ const { CYAN, GREEN, YELLOW, RED, BOLD, RESET } = require('./_colors');
24
24
 
25
- const REPORT_FILE = "skill-integration-report.md";
26
-
27
- const { findAgentDir } = require("./_utils");
25
+ const REPORT_FILE = 'skill-integration-report.md';
28
26
 
27
+ const { findAgentDir } = require('./_utils');
29
28
 
30
29
  function getAssociatedScript(skillDir, scriptsDir) {
31
30
  /** Check if the skill has an explicit frontmatter script or an implicit script file. */
@@ -43,10 +42,10 @@ function getAssociatedScript(skillDir, scriptsDir) {
43
42
  }
44
43
 
45
44
  // 2. Explicit check: does the SKILL.md define 'script:' in its frontmatter?
46
- const skillMd = path.join(skillDir, "SKILL.md");
45
+ const skillMd = path.join(skillDir, 'SKILL.md');
47
46
  if (fs.existsSync(skillMd)) {
48
47
  try {
49
- const content = fs.readFileSync(skillMd, "utf8");
48
+ const content = fs.readFileSync(skillMd, 'utf8');
50
49
  const match = content.match(/---([\s\S]*?)---/);
51
50
  if (match) {
52
51
  const frontmatter = match[1];
@@ -64,8 +63,8 @@ function getAssociatedScript(skillDir, scriptsDir) {
64
63
  }
65
64
 
66
65
  function scanAllSkills(agentDir) {
67
- const skillsDir = path.join(agentDir, "skills");
68
- const scriptsDir = path.join(agentDir, "scripts");
66
+ const skillsDir = path.join(agentDir, 'skills');
67
+ const scriptsDir = path.join(agentDir, 'scripts');
69
68
 
70
69
  if (!fs.existsSync(skillsDir) || !fs.existsSync(scriptsDir)) {
71
70
  console.log(
@@ -105,38 +104,36 @@ function verifyScript(scriptPathStr, workspaceRoot) {
105
104
  }
106
105
 
107
106
  try {
108
- if (fullPath.endsWith(".js")) {
107
+ if (fullPath.endsWith('.js')) {
109
108
  // use node to syntax check
110
- execFileSync("node", ["-c", fullPath], { stdio: "pipe" });
111
- } else if (fullPath.endsWith(".py")) {
109
+ execFileSync('node', ['-c', fullPath], { stdio: 'pipe' });
110
+ } else if (fullPath.endsWith('.py')) {
112
111
  // use python to syntax check
113
- execFileSync("python", ["-m", "py_compile", fullPath], { stdio: "pipe" });
112
+ execFileSync('python', ['-m', 'py_compile', fullPath], { stdio: 'pipe' });
114
113
  }
115
- return { valid: true, message: "Syntax OK" };
114
+ return { valid: true, message: 'Syntax OK' };
116
115
  } catch (e) {
117
116
  let msg = e.message;
118
117
  if (e.stderr) {
119
118
  msg = e.stderr.toString().trim();
120
119
  }
121
- return { valid: false, message: `Syntax error: ${msg.split("\n")[0]}` };
120
+ return { valid: false, message: `Syntax error: ${msg.split('\n')[0]}` };
122
121
  }
123
122
  }
124
123
 
125
124
  function checkSkill(skillName, agentDir) {
126
- const skillDir = path.join(agentDir, "skills", skillName);
127
- const scriptsDir = path.join(agentDir, "scripts");
125
+ const skillDir = path.join(agentDir, 'skills', skillName);
126
+ const scriptsDir = path.join(agentDir, 'scripts');
128
127
 
129
128
  if (!fs.existsSync(skillDir)) {
130
- console.log(
131
- `${YELLOW}Skill '${skillName}' not found in .agent/skills/${RESET}`,
132
- );
129
+ console.log(`${YELLOW}Skill '${skillName}' not found in .agent/skills/${RESET}`);
133
130
  return;
134
131
  }
135
132
 
136
133
  const scriptPath = getAssociatedScript(skillDir, scriptsDir);
137
134
  if (scriptPath) {
138
135
  console.log(`${GREEN}✓ Associated script found:${RESET} ${scriptPath}`);
139
- const runner = scriptPath.endsWith(".py") ? "python" : "node";
136
+ const runner = scriptPath.endsWith('.py') ? 'python' : 'node';
140
137
  console.log(`\nTo execute:\n ${runner} ${scriptPath}`);
141
138
  } else {
142
139
  console.log(`No executable script mapped for '${skillName}'.`);
@@ -158,7 +155,7 @@ function cmdReport(integratedSkills, workspaceRoot) {
158
155
  for (const skill of keys) {
159
156
  const script = integratedSkills[skill];
160
157
  const scriptPath = path.resolve(workspaceRoot, script);
161
- const exists = fs.existsSync(scriptPath) ? "" : "❌ Missing";
158
+ const exists = fs.existsSync(scriptPath) ? '' : '❌ Missing';
162
159
  content += `| \`${skill}\` | \`${script}\` | ${exists} |\n`;
163
160
  }
164
161
 
@@ -166,7 +163,7 @@ function cmdReport(integratedSkills, workspaceRoot) {
166
163
  content += `_Run \`node .agent/scripts/skill_integrator.js --verify\` to validate syntax of all mapped scripts._\n`;
167
164
 
168
165
  const reportPath = path.join(workspaceRoot, REPORT_FILE);
169
- fs.writeFileSync(reportPath, content, "utf8");
166
+ fs.writeFileSync(reportPath, content, 'utf8');
170
167
 
171
168
  console.log(`${GREEN}✅ Report written to:${RESET} ${reportPath}`);
172
169
  }
@@ -193,13 +190,9 @@ function cmdVerify(integratedSkills, workspaceRoot) {
193
190
  const script = integratedSkills[skill];
194
191
  const res = verifyScript(script, workspaceRoot);
195
192
  if (res.valid) {
196
- console.log(
197
- ` ${GREEN}✅ PASS${RESET} ${BOLD}${skill}${RESET} → ${script}`,
198
- );
193
+ console.log(` ${GREEN}✅ PASS${RESET} ${BOLD}${skill}${RESET} → ${script}`);
199
194
  } else {
200
- console.log(
201
- ` ${RED}❌ FAIL${RESET} ${BOLD}${skill}${RESET} → ${script}`,
202
- );
195
+ console.log(` ${RED}❌ FAIL${RESET} ${BOLD}${skill}${RESET} → ${script}`);
203
196
  console.log(` ${RED}${res.message}${RESET}`);
204
197
  allPassed = false;
205
198
  failures.push(skill);
@@ -208,9 +201,7 @@ function cmdVerify(integratedSkills, workspaceRoot) {
208
201
 
209
202
  console.log(`\n${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}`);
210
203
  if (allPassed) {
211
- console.log(
212
- `${GREEN}All ${keys.length} mapped scripts passed verification.${RESET}\n`,
213
- );
204
+ console.log(`${GREEN}All ${keys.length} mapped scripts passed verification.${RESET}\n`);
214
205
  } else {
215
206
  console.log(
216
207
  `${RED}${failures.length} script(s) failed verification. Fix before deploying.${RESET}\n`,
@@ -223,7 +214,7 @@ function cmdVerify(integratedSkills, workspaceRoot) {
223
214
  function main() {
224
215
  const rawArgs = process.argv.slice(2);
225
216
 
226
- if (rawArgs.length > 0 && ["-h", "--help", "help"].includes(rawArgs[0])) {
217
+ if (rawArgs.length > 0 && ['-h', '--help', 'help'].includes(rawArgs[0])) {
227
218
  console.log(`
228
219
  ${BOLD}skill_integrator.js${RESET} — Skill-Script Integrator
229
220
 
@@ -245,18 +236,18 @@ ${BOLD}Options:${RESET}
245
236
 
246
237
  // Parse args
247
238
  let skillArg = null;
248
- let workspaceArg = ".";
239
+ let workspaceArg = '.';
249
240
  let reportArg = false;
250
241
  let verifyArg = false;
251
242
 
252
243
  for (let i = 0; i < rawArgs.length; i++) {
253
- if (rawArgs[i] === "--skill" && i + 1 < rawArgs.length) {
244
+ if (rawArgs[i] === '--skill' && i + 1 < rawArgs.length) {
254
245
  skillArg = rawArgs[++i];
255
- } else if (rawArgs[i] === "--workspace" && i + 1 < rawArgs.length) {
246
+ } else if (rawArgs[i] === '--workspace' && i + 1 < rawArgs.length) {
256
247
  workspaceArg = rawArgs[++i];
257
- } else if (rawArgs[i] === "--report") {
248
+ } else if (rawArgs[i] === '--report') {
258
249
  reportArg = true;
259
- } else if (rawArgs[i] === "--verify") {
250
+ } else if (rawArgs[i] === '--verify') {
260
251
  verifyArg = true;
261
252
  }
262
253
  }
@@ -293,19 +284,15 @@ ${BOLD}Options:${RESET}
293
284
  if (!reportArg && !verifyArg) {
294
285
  const keys = Object.keys(integratedSkills).sort();
295
286
  if (keys.length === 0) {
296
- console.log("No integrated scripts found for any active skills.");
287
+ console.log('No integrated scripts found for any active skills.');
297
288
  } else {
298
- console.log(
299
- `\n${BOLD}${CYAN}--- Skill-Script Integrations (${keys.length}) ---${RESET}\n`,
300
- );
289
+ console.log(`\n${BOLD}${CYAN}--- Skill-Script Integrations (${keys.length}) ---${RESET}\n`);
301
290
  for (const skill of keys) {
302
291
  const script = integratedSkills[skill];
303
292
  console.log(` ${BOLD}${skill}${RESET}`);
304
293
  console.log(` ↳ ${GREEN}${script}${RESET}\n`);
305
294
  }
306
- console.log(
307
- `${CYAN}To run a skill script, use: python <path> or node <path>${RESET}\n`,
308
- );
295
+ console.log(`${CYAN}To run a skill script, use: python <path> or node <path>${RESET}\n`);
309
296
  }
310
297
  }
311
298
  }
@@ -10,9 +10,9 @@
10
10
  * - Tier 3: Trigger Socratic Gate unless explicitly overridden with --no-gate or --express.
11
11
  */
12
12
 
13
- "use strict";
13
+ 'use strict';
14
14
 
15
- const { parseArgs } = require("./_utils");
15
+ const { parseArgs } = require('./_utils');
16
16
 
17
17
  /**
18
18
  * Evaluates whether the Socratic Gate should be engaged.
@@ -20,31 +20,34 @@ const { parseArgs } = require("./_utils");
20
20
  * @returns {Object} { shouldBlock, reason }
21
21
  */
22
22
  function evaluateSocraticGate(opts = {}) {
23
- const tier = typeof opts.tier === "number" ? opts.tier : 1;
24
- const ambiguityScore = typeof opts.ambiguityScore === "number" ? opts.ambiguityScore : 0.2;
23
+ const tier = typeof opts.tier === 'number' ? opts.tier : 1;
24
+ const ambiguityScore = typeof opts.ambiguityScore === 'number' ? opts.ambiguityScore : 0.2;
25
25
  const flags = opts.flags || {};
26
26
 
27
- if (flags["no-gate"] || flags.express || flags.force) {
28
- return { shouldBlock: false, reason: "Explicit user override (--no-gate / --express)" };
27
+ if (flags['no-gate'] || flags.express || flags.force) {
28
+ return { shouldBlock: false, reason: 'Explicit user override (--no-gate / --express)' };
29
29
  }
30
30
 
31
31
  if (tier === 0) {
32
- return { shouldBlock: false, reason: "Tier 0 Fast-Pass (low impact)" };
32
+ return { shouldBlock: false, reason: 'Tier 0 Fast-Pass (low impact)' };
33
33
  }
34
34
 
35
35
  if (tier === 1) {
36
- return { shouldBlock: false, reason: "Tier 1 Express Pass (single component / logic edit)" };
36
+ return { shouldBlock: false, reason: 'Tier 1 Express Pass (single component / logic edit)' };
37
37
  }
38
38
 
39
39
  if (tier === 2) {
40
40
  if (ambiguityScore > 0.5) {
41
- return { shouldBlock: true, reason: `Tier 2 ambiguity exceeds threshold (${ambiguityScore} > 0.5)` };
41
+ return {
42
+ shouldBlock: true,
43
+ reason: `Tier 2 ambiguity exceeds threshold (${ambiguityScore} > 0.5)`,
44
+ };
42
45
  }
43
- return { shouldBlock: false, reason: "Tier 2 low-ambiguity edit (gate bypassed)" };
46
+ return { shouldBlock: false, reason: 'Tier 2 low-ambiguity edit (gate bypassed)' };
44
47
  }
45
48
 
46
49
  // Tier 3
47
- return { shouldBlock: true, reason: "Tier 3 Full Gauntlet (high risk / architectural change)" };
50
+ return { shouldBlock: true, reason: 'Tier 3 Full Gauntlet (high risk / architectural change)' };
48
51
  }
49
52
 
50
53
  if (require.main === module) {
@@ -52,7 +55,7 @@ if (require.main === module) {
52
55
  const result = evaluateSocraticGate({
53
56
  tier: args.tier ? parseInt(args.tier, 10) : 1,
54
57
  ambiguityScore: args.ambiguity ? parseFloat(args.ambiguity) : 0.2,
55
- flags: args
58
+ flags: args,
56
59
  });
57
60
  console.log(JSON.stringify(result, null, 2));
58
61
  }
@@ -9,12 +9,12 @@
9
9
  * node .agent/scripts/strengthen_skills.js . --skills-path /custom/skills/dir
10
10
  */
11
11
 
12
- "use strict";
12
+ 'use strict';
13
13
 
14
- const fs = require("fs");
15
- const path = require("path");
14
+ const fs = require('fs');
15
+ const path = require('path');
16
16
 
17
- const { RED, GREEN, YELLOW, BLUE, BOLD, RESET } = require("./_colors.js");
17
+ const { RED, GREEN, YELLOW, BLUE, BOLD, RESET } = require('./_colors.js');
18
18
 
19
19
  const GUARDRAILS_BLOCK = `
20
20
 
@@ -60,19 +60,16 @@ Review these questions before confirming output:
60
60
  - ✅ **Required:** You are explicitly forbidden from finalizing any task without providing **concrete evidence** (terminal output, passing tests, compile success, or equivalent proof) that your output works as intended.
61
61
  `;
62
62
 
63
- const TRIBUNAL_MARKERS = [
64
- "Tribunal Integration",
65
- "Tribunal Integration (Anti-Hallucination)",
66
- ];
63
+ const TRIBUNAL_MARKERS = ['Tribunal Integration', 'Tribunal Integration (Anti-Hallucination)'];
67
64
 
68
- const VBC_MARKERS = ["Verification-Before-Completion", "VBC Protocol"];
65
+ const VBC_MARKERS = ['Verification-Before-Completion', 'VBC Protocol'];
69
66
 
70
67
  function hasTribunalBlock(content) {
71
- return TRIBUNAL_MARKERS.some((m) => content.includes(m));
68
+ return TRIBUNAL_MARKERS.some(m => content.includes(m));
72
69
  }
73
70
 
74
71
  function hasVbcBlock(content) {
75
- return VBC_MARKERS.some((m) => content.includes(m));
72
+ return VBC_MARKERS.some(m => content.includes(m));
76
73
  }
77
74
 
78
75
  function header(title) {
@@ -94,54 +91,54 @@ function fail(msg) {
94
91
  function processSkill(skillMd, dryRun) {
95
92
  const skillName = path.basename(path.dirname(skillMd));
96
93
  try {
97
- const content = fs.readFileSync(skillMd, "utf8");
94
+ const content = fs.readFileSync(skillMd, 'utf8');
98
95
  const hasTribunal = hasTribunalBlock(content);
99
96
  const hasVbc = hasVbcBlock(content);
100
97
 
101
98
  if (hasTribunal && hasVbc) {
102
99
  skip(`${skillName} — already has Tribunal + VBC blocks`);
103
- return "skipped";
100
+ return 'skipped';
104
101
  }
105
102
 
106
103
  const missing = [];
107
- if (!hasTribunal) missing.push("Tribunal Integration");
108
- if (!hasVbc) missing.push("VBC Protocol");
104
+ if (!hasTribunal) missing.push('Tribunal Integration');
105
+ if (!hasVbc) missing.push('VBC Protocol');
109
106
 
110
107
  if (dryRun) {
111
- warn(`[DRY RUN] ${skillName} — would add: ${missing.join(", ")}`);
112
- return "updated";
108
+ warn(`[DRY RUN] ${skillName} — would add: ${missing.join(', ')}`);
109
+ return 'updated';
113
110
  }
114
111
 
115
- fs.appendFileSync(skillMd, GUARDRAILS_BLOCK, "utf8");
116
- ok(`${skillName} — strengthened (${missing.join(", ")} added)`);
117
- return "updated";
112
+ fs.appendFileSync(skillMd, GUARDRAILS_BLOCK, 'utf8');
113
+ ok(`${skillName} — strengthened (${missing.join(', ')} added)`);
114
+ return 'updated';
118
115
  } catch (e) {
119
116
  fail(`${skillName} — ${e.message}`);
120
- return "error";
117
+ return 'error';
121
118
  }
122
119
  }
123
120
 
124
121
  function main() {
125
122
  const args = process.argv.slice(2);
126
- let targetPath = ".";
123
+ let targetPath = '.';
127
124
  let dryRun = false;
128
125
  let skillArg = null;
129
126
  let skillsPathArg = null;
130
127
 
131
128
  let i = 0;
132
129
  while (i < args.length) {
133
- if (args[i] === "--dry-run") {
130
+ if (args[i] === '--dry-run') {
134
131
  dryRun = true;
135
- } else if (args[i] === "--skill" && i + 1 < args.length) {
132
+ } else if (args[i] === '--skill' && i + 1 < args.length) {
136
133
  skillArg = args[++i];
137
- } else if (args[i] === "--skills-path" && i + 1 < args.length) {
134
+ } else if (args[i] === '--skills-path' && i + 1 < args.length) {
138
135
  skillsPathArg = args[++i];
139
- } else if (args[i] === "-h" || args[i] === "--help") {
136
+ } else if (args[i] === '-h' || args[i] === '--help') {
140
137
  console.log(
141
- "Usage: node strengthen_skills.js <path> [--dry-run] [--skill <name>] [--skills-path <path>]",
138
+ 'Usage: node strengthen_skills.js <path> [--dry-run] [--skill <name>] [--skills-path <path>]',
142
139
  );
143
140
  process.exit(0);
144
- } else if (!args[i].startsWith("-")) {
141
+ } else if (!args[i].startsWith('-')) {
145
142
  targetPath = args[i];
146
143
  }
147
144
  i++;
@@ -152,7 +149,7 @@ function main() {
152
149
  if (skillsPathArg) {
153
150
  skillsDir = path.resolve(skillsPathArg);
154
151
  } else {
155
- skillsDir = path.join(projectRoot, ".agent", "skills");
152
+ skillsDir = path.join(projectRoot, '.agent', 'skills');
156
153
  }
157
154
 
158
155
  if (!fs.existsSync(skillsDir) || !fs.statSync(skillsDir).isDirectory()) {
@@ -161,12 +158,11 @@ function main() {
161
158
  }
162
159
 
163
160
  console.log(`${BOLD}Tribunal — strengthen_skills.js${RESET}`);
164
- if (dryRun)
165
- console.log(` ${YELLOW}DRY RUN — no files will be written${RESET}`);
161
+ if (dryRun) console.log(` ${YELLOW}DRY RUN — no files will be written${RESET}`);
166
162
  console.log(`Skills dir: ${skillsDir}\n`);
167
163
 
168
164
  const counts = { updated: 0, skipped: 0, error: 0 };
169
- header("Strengthening Skills");
165
+ header('Strengthening Skills');
170
166
 
171
167
  const dirs = fs.readdirSync(skillsDir, { withFileTypes: true });
172
168
  dirs.sort((a, b) => a.name.localeCompare(b.name));
@@ -175,7 +171,7 @@ function main() {
175
171
  if (!dir.isDirectory()) continue;
176
172
  if (skillArg && dir.name !== skillArg) continue;
177
173
 
178
- const skillMd = path.join(skillsDir, dir.name, "SKILL.md");
174
+ const skillMd = path.join(skillsDir, dir.name, 'SKILL.md');
179
175
  if (!fs.existsSync(skillMd)) {
180
176
  warn(`${dir.name} — no SKILL.md found`);
181
177
  continue;