tribunal-kit 4.0.1 → 4.3.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 (196) hide show
  1. package/.agent/ARCHITECTURE.md +21 -14
  2. package/.agent/GEMINI.md +4 -2
  3. package/.agent/agents/api-architect.md +66 -0
  4. package/.agent/agents/db-latency-auditor.md +216 -0
  5. package/.agent/agents/precedence-reviewer.md +41 -4
  6. package/.agent/agents/resilience-reviewer.md +88 -0
  7. package/.agent/agents/schema-reviewer.md +67 -0
  8. package/.agent/agents/swarm-worker-contracts.md +5 -5
  9. package/.agent/agents/throughput-optimizer.md +299 -0
  10. package/.agent/agents/ui-ux-auditor.md +292 -0
  11. package/.agent/agents/vitals-reviewer.md +223 -0
  12. package/.agent/history/case-law/cases/case-0001.json +33 -0
  13. package/.agent/history/case-law/index.json +35 -0
  14. package/.agent/rules/GEMINI.md +28 -11
  15. package/.agent/scripts/__pycache__/_colors.cpython-311.pyc +0 -0
  16. package/.agent/scripts/__pycache__/_utils.cpython-311.pyc +0 -0
  17. package/.agent/scripts/__pycache__/case_law_manager.cpython-311.pyc +0 -0
  18. package/.agent/scripts/_colors.js +18 -0
  19. package/.agent/scripts/_utils.js +42 -0
  20. package/.agent/scripts/auto_preview.js +197 -0
  21. package/.agent/scripts/bundle_analyzer.js +290 -0
  22. package/.agent/scripts/case_law_manager.js +684 -0
  23. package/.agent/scripts/checklist.js +266 -0
  24. package/.agent/scripts/colors.js +17 -0
  25. package/.agent/scripts/compress_skills.js +141 -0
  26. package/.agent/scripts/consolidate_skills.js +149 -0
  27. package/.agent/scripts/context_broker.js +609 -0
  28. package/.agent/scripts/deep_compress.js +150 -0
  29. package/.agent/scripts/dependency_analyzer.js +272 -0
  30. package/.agent/scripts/inner_loop_validator.js +465 -0
  31. package/.agent/scripts/lint_runner.js +187 -0
  32. package/.agent/scripts/minify_context.js +100 -0
  33. package/.agent/scripts/patch_skills_meta.js +156 -0
  34. package/.agent/scripts/patch_skills_output.js +244 -0
  35. package/.agent/scripts/schema_validator.js +297 -0
  36. package/.agent/scripts/security_scan.js +303 -0
  37. package/.agent/scripts/session_manager.js +276 -0
  38. package/.agent/scripts/skill_evolution.js +644 -0
  39. package/.agent/scripts/skill_integrator.js +313 -0
  40. package/.agent/scripts/strengthen_skills.js +193 -0
  41. package/.agent/scripts/strip_tribunal.js +47 -0
  42. package/.agent/scripts/swarm_dispatcher.js +360 -0
  43. package/.agent/scripts/test_runner.js +193 -0
  44. package/.agent/scripts/utils.js +32 -0
  45. package/.agent/scripts/verify_all.js +256 -0
  46. package/.agent/skills/agent-organizer/SKILL.md +42 -0
  47. package/.agent/skills/agentic-patterns/SKILL.md +42 -0
  48. package/.agent/skills/ai-prompt-injection-defense/SKILL.md +42 -0
  49. package/.agent/skills/api-patterns/SKILL.md +42 -0
  50. package/.agent/skills/api-security-auditor/SKILL.md +42 -0
  51. package/.agent/skills/app-builder/SKILL.md +42 -0
  52. package/.agent/skills/app-builder/templates/SKILL.md +70 -0
  53. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +1 -1
  54. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +1 -1
  55. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +1 -1
  56. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +1 -1
  57. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +1 -1
  58. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +1 -1
  59. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +1 -1
  60. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +1 -1
  61. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +1 -1
  62. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +1 -1
  63. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +1 -1
  64. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +1 -1
  65. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +1 -1
  66. package/.agent/skills/appflow-wireframe/SKILL.md +42 -0
  67. package/.agent/skills/architecture/SKILL.md +42 -0
  68. package/.agent/skills/authentication-best-practices/SKILL.md +42 -0
  69. package/.agent/skills/bash-linux/SKILL.md +42 -0
  70. package/.agent/skills/behavioral-modes/SKILL.md +42 -0
  71. package/.agent/skills/brainstorming/SKILL.md +42 -0
  72. package/.agent/skills/building-native-ui/SKILL.md +42 -0
  73. package/.agent/skills/clean-code/SKILL.md +42 -0
  74. package/.agent/skills/code-review-checklist/SKILL.md +42 -0
  75. package/.agent/skills/config-validator/SKILL.md +42 -0
  76. package/.agent/skills/csharp-developer/SKILL.md +42 -0
  77. package/.agent/skills/data-validation-schemas/SKILL.md +320 -0
  78. package/.agent/skills/database-design/SKILL.md +42 -0
  79. package/.agent/skills/deployment-procedures/SKILL.md +42 -0
  80. package/.agent/skills/devops-engineer/SKILL.md +42 -0
  81. package/.agent/skills/devops-incident-responder/SKILL.md +42 -0
  82. package/.agent/skills/doc.md +1 -1
  83. package/.agent/skills/documentation-templates/SKILL.md +42 -0
  84. package/.agent/skills/edge-computing/SKILL.md +42 -0
  85. package/.agent/skills/error-resilience/SKILL.md +420 -0
  86. package/.agent/skills/extract-design-system/SKILL.md +42 -0
  87. package/.agent/skills/framer-motion-expert/SKILL.md +42 -1
  88. package/.agent/skills/frontend-design/SKILL.md +42 -0
  89. package/.agent/skills/game-design-expert/SKILL.md +42 -0
  90. package/.agent/skills/game-engineering-expert/SKILL.md +42 -0
  91. package/.agent/skills/geo-fundamentals/SKILL.md +42 -0
  92. package/.agent/skills/github-operations/SKILL.md +42 -0
  93. package/.agent/skills/gsap-core/SKILL.md +300 -0
  94. package/.agent/skills/gsap-frameworks/SKILL.md +199 -0
  95. package/.agent/skills/gsap-performance/SKILL.md +125 -0
  96. package/.agent/skills/gsap-plugins/SKILL.md +472 -0
  97. package/.agent/skills/gsap-react/SKILL.md +181 -0
  98. package/.agent/skills/gsap-scrolltrigger/SKILL.md +342 -0
  99. package/.agent/skills/gsap-timeline/SKILL.md +153 -0
  100. package/.agent/skills/gsap-utils/SKILL.md +330 -0
  101. package/.agent/skills/i18n-localization/SKILL.md +42 -0
  102. package/.agent/skills/intelligent-routing/SKILL.md +72 -1
  103. package/.agent/skills/lint-and-validate/SKILL.md +42 -0
  104. package/.agent/skills/llm-engineering/SKILL.md +42 -0
  105. package/.agent/skills/local-first/SKILL.md +42 -0
  106. package/.agent/skills/mcp-builder/SKILL.md +42 -0
  107. package/.agent/skills/mobile-design/SKILL.md +42 -0
  108. package/.agent/skills/monorepo-management/SKILL.md +326 -0
  109. package/.agent/skills/motion-engineering/SKILL.md +42 -0
  110. package/.agent/skills/nextjs-react-expert/SKILL.md +42 -0
  111. package/.agent/skills/nodejs-best-practices/SKILL.md +42 -0
  112. package/.agent/skills/observability/SKILL.md +42 -0
  113. package/.agent/skills/parallel-agents/SKILL.md +42 -0
  114. package/.agent/skills/performance-profiling/SKILL.md +42 -0
  115. package/.agent/skills/plan-writing/SKILL.md +42 -0
  116. package/.agent/skills/platform-engineer/SKILL.md +42 -0
  117. package/.agent/skills/playwright-best-practices/SKILL.md +42 -0
  118. package/.agent/skills/powershell-windows/SKILL.md +42 -0
  119. package/.agent/skills/project-idioms/SKILL.md +42 -0
  120. package/.agent/skills/python-patterns/SKILL.md +42 -0
  121. package/.agent/skills/python-pro/SKILL.md +42 -0
  122. package/.agent/skills/react-specialist/SKILL.md +42 -0
  123. package/.agent/skills/readme-builder/SKILL.md +42 -0
  124. package/.agent/skills/realtime-patterns/SKILL.md +42 -0
  125. package/.agent/skills/red-team-tactics/SKILL.md +42 -0
  126. package/.agent/skills/rust-pro/SKILL.md +42 -0
  127. package/.agent/skills/seo-fundamentals/SKILL.md +42 -0
  128. package/.agent/skills/server-management/SKILL.md +42 -0
  129. package/.agent/skills/shadcn-ui-expert/SKILL.md +42 -0
  130. package/.agent/skills/skill-creator/SKILL.md +42 -0
  131. package/.agent/skills/sql-pro/SKILL.md +42 -0
  132. package/.agent/skills/supabase-postgres-best-practices/SKILL.md +42 -0
  133. package/.agent/skills/swiftui-expert/SKILL.md +42 -0
  134. package/.agent/skills/systematic-debugging/SKILL.md +42 -0
  135. package/.agent/skills/tailwind-patterns/SKILL.md +42 -0
  136. package/.agent/skills/tdd-workflow/SKILL.md +42 -0
  137. package/.agent/skills/test-result-analyzer/SKILL.md +42 -0
  138. package/.agent/skills/testing-patterns/SKILL.md +42 -0
  139. package/.agent/skills/trend-researcher/SKILL.md +42 -0
  140. package/.agent/skills/typescript-advanced/SKILL.md +327 -0
  141. package/.agent/skills/ui-ux-pro-max/SKILL.md +42 -0
  142. package/.agent/skills/ui-ux-researcher/SKILL.md +42 -0
  143. package/.agent/skills/vue-expert/SKILL.md +42 -0
  144. package/.agent/skills/vulnerability-scanner/SKILL.md +42 -0
  145. package/.agent/skills/web-accessibility-auditor/SKILL.md +42 -0
  146. package/.agent/skills/web-design-guidelines/SKILL.md +42 -0
  147. package/.agent/skills/webapp-testing/SKILL.md +42 -0
  148. package/.agent/skills/whimsy-injector/SKILL.md +42 -0
  149. package/.agent/skills/workflow-optimizer/SKILL.md +42 -0
  150. package/.agent/workflows/audit.md +6 -6
  151. package/.agent/workflows/deploy.md +1 -1
  152. package/.agent/workflows/generate.md +23 -6
  153. package/.agent/workflows/session.md +5 -5
  154. package/.agent/workflows/swarm.md +2 -2
  155. package/.agent/workflows/tribunal-backend.md +13 -2
  156. package/.agent/workflows/tribunal-full.md +15 -8
  157. package/.agent/workflows/tribunal-speed.md +183 -0
  158. package/README.md +64 -8
  159. package/bin/tribunal-kit.js +281 -41
  160. package/package.json +9 -6
  161. package/scripts/changelog.js +167 -0
  162. package/scripts/sync-version.js +81 -0
  163. package/.agent/scripts/__pycache__/auto_preview.cpython-311.pyc +0 -0
  164. package/.agent/scripts/__pycache__/bundle_analyzer.cpython-311.pyc +0 -0
  165. package/.agent/scripts/__pycache__/checklist.cpython-311.pyc +0 -0
  166. package/.agent/scripts/__pycache__/dependency_analyzer.cpython-311.pyc +0 -0
  167. package/.agent/scripts/__pycache__/security_scan.cpython-311.pyc +0 -0
  168. package/.agent/scripts/__pycache__/session_manager.cpython-311.pyc +0 -0
  169. package/.agent/scripts/__pycache__/skill_integrator.cpython-311.pyc +0 -0
  170. package/.agent/scripts/__pycache__/swarm_dispatcher.cpython-311.pyc +0 -0
  171. package/.agent/scripts/__pycache__/test_runner.cpython-311.pyc +0 -0
  172. package/.agent/scripts/__pycache__/verify_all.cpython-311.pyc +0 -0
  173. package/.agent/scripts/auto_preview.py +0 -180
  174. package/.agent/scripts/bundle_analyzer.py +0 -259
  175. package/.agent/scripts/case_law_manager.py +0 -525
  176. package/.agent/scripts/checklist.py +0 -209
  177. package/.agent/scripts/compress_skills.py +0 -167
  178. package/.agent/scripts/consolidate_skills.py +0 -173
  179. package/.agent/scripts/deep_compress.py +0 -202
  180. package/.agent/scripts/dependency_analyzer.py +0 -247
  181. package/.agent/scripts/lint_runner.py +0 -188
  182. package/.agent/scripts/minify_context.py +0 -80
  183. package/.agent/scripts/patch_skills_meta.py +0 -177
  184. package/.agent/scripts/patch_skills_output.py +0 -285
  185. package/.agent/scripts/schema_validator.py +0 -279
  186. package/.agent/scripts/security_scan.py +0 -224
  187. package/.agent/scripts/session_manager.py +0 -261
  188. package/.agent/scripts/skill_evolution.py +0 -563
  189. package/.agent/scripts/skill_integrator.py +0 -234
  190. package/.agent/scripts/strengthen_skills.py +0 -220
  191. package/.agent/scripts/strip_tribunal.py +0 -41
  192. package/.agent/scripts/swarm_dispatcher.py +0 -350
  193. package/.agent/scripts/test_runner.py +0 -192
  194. package/.agent/scripts/test_swarm_dispatcher.py +0 -163
  195. package/.agent/scripts/verify_all.py +0 -195
  196. package/.agent/skills/gsap-expert/SKILL.md +0 -194
@@ -1,259 +0,0 @@
1
- #!/usr/bin/env python3
2
- """
3
- bundle_analyzer.py — JS/TS bundle size analyzer for the Tribunal Agent Kit.
4
-
5
- Analyzes build output for:
6
- - Total bundle size
7
- - Largest files in dist/
8
- - Suggested tree-shaking opportunities
9
- - Bundler-specific analysis (Vite / Webpack)
10
-
11
- Usage:
12
- python .agent/scripts/bundle_analyzer.py .
13
- python .agent/scripts/bundle_analyzer.py . --build
14
- python .agent/scripts/bundle_analyzer.py . --threshold 500
15
- """
16
-
17
- import os
18
- import sys
19
- import json
20
- import subprocess
21
- import argparse
22
- from pathlib import Path
23
-
24
- RED = "\033[91m"
25
- GREEN = "\033[92m"
26
- YELLOW = "\033[93m"
27
- BLUE = "\033[94m"
28
- BOLD = "\033[1m"
29
- RESET = "\033[0m"
30
-
31
- # Common large dependencies that often have lighter alternatives
32
- HEAVY_PACKAGES: dict[str, str] = {
33
- "moment": "Use date-fns or dayjs instead (~2KB vs ~230KB)",
34
- "lodash": "Import specific functions: lodash/debounce instead of full lodash",
35
- "rxjs": "Import specific operators to enable tree-shaking",
36
- "aws-sdk": "Use @aws-sdk/client-* v3 modular imports",
37
- "firebase": "Use modular imports: firebase/auth, firebase/firestore",
38
- "chart.js": "Register only needed components",
39
- "three": "Import specific modules from three/examples/jsm/",
40
- "@mui/material": "Ensure babel-plugin-import or modular imports",
41
- "@mui/icons-material": "Import specific icons, never the barrel",
42
- "antd": "Use modular imports with babel-plugin-import",
43
- }
44
-
45
-
46
- def header(title: str) -> None:
47
- print(f"\n{BOLD}{BLUE}━━━ {title} ━━━{RESET}")
48
-
49
-
50
- def ok(msg: str) -> None:
51
- print(f" {GREEN}✅ {msg}{RESET}")
52
-
53
-
54
- def fail(msg: str) -> None:
55
- print(f" {RED}❌ {msg}{RESET}")
56
-
57
-
58
- def warn(msg: str) -> None:
59
- print(f" {YELLOW}⚠️ {msg}{RESET}")
60
-
61
-
62
- def skip(msg: str) -> None:
63
- print(f" {YELLOW}⏭️ {msg}{RESET}")
64
-
65
-
66
- def format_size(size_bytes: int) -> str:
67
- """Format bytes into human-readable size."""
68
- if size_bytes < 1024:
69
- return f"{size_bytes}B"
70
- elif size_bytes < 1024 * 1024:
71
- return f"{size_bytes / 1024:.1f}KB"
72
- else:
73
- return f"{size_bytes / (1024 * 1024):.1f}MB"
74
-
75
-
76
- def detect_bundler(project_root: str) -> str | None:
77
- """Detect the bundler used in the project."""
78
- root = Path(project_root)
79
- pkg_path = root / "package.json"
80
- if not pkg_path.exists():
81
- return None
82
-
83
- try:
84
- with open(pkg_path) as f:
85
- pkg = json.load(f)
86
- deps = {**pkg.get("dependencies", {}), **pkg.get("devDependencies", {})}
87
-
88
- if "vite" in deps:
89
- return "vite"
90
- if "next" in deps:
91
- return "next"
92
- if "webpack" in deps:
93
- return "webpack"
94
- if any(f.exists() for f in [root / "webpack.config.js", root / "webpack.config.ts"]):
95
- return "webpack"
96
- except (json.JSONDecodeError, IOError):
97
- pass
98
-
99
- return None
100
-
101
-
102
- def find_dist_dir(project_root: str) -> str | None:
103
- """Find the build output directory."""
104
- root = Path(project_root)
105
- candidates = ["dist", "build", ".next", "out", "public/build"]
106
- for candidate in candidates:
107
- d = root / candidate
108
- if d.is_dir():
109
- return str(d)
110
- return None
111
-
112
-
113
- def analyze_dist(dist_dir: str, threshold_kb: int) -> tuple[int, list[tuple[str, int]]]:
114
- """Analyze the dist directory. Returns (total_size, list of (file, size) sorted by size desc)."""
115
- files: list[tuple[str, int]] = []
116
- total = 0
117
-
118
- for root, dirs, filenames in os.walk(dist_dir):
119
- for fname in filenames:
120
- fpath = os.path.join(root, fname)
121
- size = os.path.getsize(fpath)
122
- total += size
123
- rel = os.path.relpath(fpath, dist_dir)
124
- files.append((rel, size))
125
-
126
- files.sort(key=lambda x: x[1], reverse=True)
127
- return total, files
128
-
129
-
130
- def check_heavy_dependencies(project_root: str) -> list[tuple[str, str]]:
131
- """Check if any known-heavy packages are in dependencies."""
132
- pkg_path = Path(project_root) / "package.json"
133
- if not pkg_path.exists():
134
- return []
135
-
136
- try:
137
- with open(pkg_path) as f:
138
- pkg = json.load(f)
139
- deps = set(pkg.get("dependencies", {}).keys())
140
- found: list[tuple[str, str]] = []
141
- for pkg_name, suggestion in HEAVY_PACKAGES.items():
142
- if pkg_name in deps:
143
- found.append((pkg_name, suggestion))
144
- return found
145
- except (json.JSONDecodeError, IOError):
146
- return []
147
-
148
-
149
- def run_build(project_root: str) -> bool:
150
- """Run npm run build."""
151
- try:
152
- result = subprocess.run(
153
- ["npm", "run", "build"],
154
- cwd=project_root,
155
- capture_output=True,
156
- text=True,
157
- timeout=120,
158
- )
159
- if result.returncode == 0:
160
- ok("Build completed successfully")
161
- return True
162
- fail("Build failed")
163
- output = (result.stdout + result.stderr).strip()
164
- if output:
165
- for line in output.split("\n")[:10]:
166
- print(f" {line}")
167
- return False
168
- except FileNotFoundError:
169
- fail("npm not installed")
170
- return False
171
- except subprocess.TimeoutExpired:
172
- fail("Build timed out after 120s")
173
- return False
174
-
175
-
176
- def main() -> None:
177
- parser = argparse.ArgumentParser(
178
- description="Tribunal bundle analyzer — checks build output size and suggests optimizations"
179
- )
180
- parser.add_argument("path", help="Project root directory")
181
- parser.add_argument("--build", action="store_true", help="Run npm run build before analyzing")
182
- parser.add_argument("--threshold", type=int, default=250, help="File size warning threshold in KB (default: 250)")
183
- args = parser.parse_args()
184
-
185
- project_root = os.path.abspath(args.path)
186
- if not os.path.isdir(project_root):
187
- fail(f"Directory not found: {project_root}")
188
- sys.exit(1)
189
-
190
- print(f"{BOLD}Tribunal — bundle_analyzer.py{RESET}")
191
- print(f"Project: {project_root}")
192
-
193
- bundler = detect_bundler(project_root)
194
- if bundler:
195
- print(f" Bundler: {bundler}")
196
-
197
- # Optionally build first
198
- if args.build:
199
- header("Building project")
200
- if not run_build(project_root):
201
- sys.exit(1)
202
-
203
- # Find and analyze dist directory
204
- dist_dir = find_dist_dir(project_root)
205
- if not dist_dir:
206
- skip("No build output directory found (dist/, build/, .next/, out/)")
207
- skip("Run with --build to create a build first, or build manually")
208
- else:
209
- header(f"Bundle Size Analysis ({os.path.relpath(dist_dir, project_root)}/)")
210
-
211
- total_size, files = analyze_dist(dist_dir, args.threshold)
212
- print(f"\n Total bundle size: {BOLD}{format_size(total_size)}{RESET}")
213
-
214
- threshold_bytes = args.threshold * 1024
215
-
216
- # Show top 10 largest files
217
- print(f"\n {BOLD}Top files by size:{RESET}")
218
- for filepath, size in files[:10]:
219
- if size > threshold_bytes:
220
- warn(f"{format_size(size):>10s} {filepath}")
221
- else:
222
- print(f" {'':>4s}{format_size(size):>10s} {filepath}")
223
-
224
- # Count JS/CSS files above threshold
225
- large_js = [(f, s) for f, s in files if f.endswith((".js", ".mjs")) and s > threshold_bytes]
226
- if large_js:
227
- print(f"\n {YELLOW}{len(large_js)} JS file(s) exceed {args.threshold}KB threshold{RESET}")
228
-
229
- # Check for heavy dependencies
230
- header("Dependency Weight Check")
231
- heavy = check_heavy_dependencies(project_root)
232
- if heavy:
233
- for pkg_name, suggestion in heavy:
234
- warn(f"'{pkg_name}' is a heavy dependency")
235
- print(f" → {suggestion}")
236
- else:
237
- ok("No known-heavy packages detected")
238
-
239
- # Summary
240
- print(f"\n{BOLD}━━━ Bundle Analysis Summary ━━━{RESET}")
241
- if dist_dir:
242
- total_size_val = analyze_dist(dist_dir, args.threshold)[0]
243
- size_str = format_size(total_size_val)
244
- if total_size_val > 5 * 1024 * 1024:
245
- fail(f"Total bundle: {size_str} — consider code splitting")
246
- elif total_size_val > 2 * 1024 * 1024:
247
- warn(f"Total bundle: {size_str} — review for optimization opportunities")
248
- else:
249
- ok(f"Total bundle: {size_str}")
250
- if heavy:
251
- warn(f"{len(heavy)} heavy dependency suggestion(s) — see above")
252
- elif not heavy and dist_dir:
253
- ok("No optimization suggestions")
254
-
255
- sys.exit(0)
256
-
257
-
258
- if __name__ == "__main__":
259
- main()