tribunal-kit 5.8.4 โ†’ 5.8.5

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 (46) hide show
  1. package/.agent/ARCHITECTURE.md +3 -3
  2. package/.agent/history/integrity_manifest.json +75 -7
  3. package/.agent/history/memory/.memory.idx +1065 -1
  4. package/.agent/history/memory/MEMORY.md +71 -1
  5. package/.agent/rules/GEMINI.md +1 -1
  6. package/.agent/scripts/_utils.js +28 -7
  7. package/.agent/scripts/context_broker.js +0 -19
  8. package/.agent/scripts/guardrail_engine.js +1 -1
  9. package/.agent/scripts/integrity_manifest.js +10 -4
  10. package/.agent/scripts/marathon_harness.js +10 -1
  11. package/.agent/scripts/skill_evolution.js +36 -21
  12. package/.agent/scripts/swarm_dispatcher.js +65 -6
  13. package/.agent/skills/api-patterns/scripts/__pycache__/api_validator.cpython-311.pyc +0 -0
  14. package/.agent/skills/better-colors/SKILL.md +12 -4
  15. package/.agent/skills/database-design/scripts/__pycache__/schema_validator.cpython-311.pyc +0 -0
  16. package/.agent/skills/fixing-accessibility/SKILL.md +6 -4
  17. package/.agent/skills/frontend-design/SKILL.md +80 -81
  18. package/.agent/skills/frontend-design/scripts/__pycache__/accessibility_checker.cpython-311.pyc +0 -0
  19. package/.agent/skills/frontend-design/scripts/__pycache__/ux_audit.cpython-311.pyc +0 -0
  20. package/.agent/skills/geo-fundamentals/scripts/__pycache__/geo_checker.cpython-311.pyc +0 -0
  21. package/.agent/skills/i18n-localization/scripts/__pycache__/i18n_checker.cpython-311.pyc +0 -0
  22. package/.agent/skills/impeccable/SKILL.md +2 -0
  23. package/.agent/skills/lint-and-validate/scripts/__pycache__/lint_runner.cpython-311.pyc +0 -0
  24. package/.agent/skills/lint-and-validate/scripts/__pycache__/type_coverage.cpython-311.pyc +0 -0
  25. package/.agent/skills/mobile-design/scripts/__pycache__/mobile_audit.cpython-311.pyc +0 -0
  26. package/.agent/skills/motion-engineering/SKILL.md +66 -164
  27. package/.agent/skills/nextjs-react-expert/scripts/__pycache__/convert_rules.cpython-311.pyc +0 -0
  28. package/.agent/skills/nextjs-react-expert/scripts/__pycache__/react_performance_checker.cpython-311.pyc +0 -0
  29. package/.agent/skills/performance-profiling/scripts/__pycache__/lighthouse_audit.cpython-311.pyc +0 -0
  30. package/.agent/skills/seo-fundamentals/scripts/__pycache__/seo_checker.cpython-311.pyc +0 -0
  31. package/.agent/skills/testing-patterns/scripts/__pycache__/test_runner.cpython-311.pyc +0 -0
  32. package/.agent/skills/vulnerability-scanner/scripts/__pycache__/security_scan.cpython-311.pyc +0 -0
  33. package/.agent/skills/webapp-testing/scripts/__pycache__/playwright_runner.cpython-311.pyc +0 -0
  34. package/.agent/workflows/tribunal-full.md +5 -5
  35. package/CONTRIBUTING.md +1 -1
  36. package/README.md +4 -4
  37. package/bin/mcp-server.js +45 -45
  38. package/bin/wrapper.js +50 -25
  39. package/dist/cli.js +30 -0
  40. package/dist/commands/init.js +25 -1
  41. package/dist/commands/native.js +228 -0
  42. package/dist/commands/validate.js +67 -0
  43. package/dist/mcp/server.js +4 -138
  44. package/package.json +11 -10
  45. package/scripts/benchmark.js +42 -0
  46. package/scripts/sync-version.js +129 -76
@@ -25,143 +25,142 @@ routing:
25
25
 
26
26
  ---
27
27
 
28
- ## 1. Color Theory (HSL over HEX)
28
+ ## 1. Modern Color Systems (OKLCH & HSL)
29
29
 
30
- Never use raw flat HEX colors. Use HSL to build cohesive scales.
30
+ Never use raw flat HEX colors. Use OKLCH (perceptually uniform) or HSL to build scalable, harmonic themes.
31
31
 
32
32
  ```css
33
33
  :root {
34
- /* HSL allows programmatic adjustment of lightness/saturation */
35
- --hue: 220;
36
- --sat: 80%;
37
-
38
- --bg-base: hsl(var(--hue), 15%, 98%);
39
- --bg-surface: hsl(var(--hue), 20%, 100%);
40
-
41
- --text-main: hsl(var(--hue), 40%, 10%);
42
- --text-muted: hsl(var(--hue), 20%, 40%);
43
-
44
- --primary: hsl(var(--hue), var(--sat), 50%);
45
- --primary-hover: hsl(var(--hue), var(--sat), 40%); /* Darken via L */
34
+ /* OKLCH perceptual uniformity: lightness (0-100%), chroma (0-0.37), hue (0-360) */
35
+ --brand-primary: oklch(62% 0.21 275);
36
+ --brand-hover: oklch(from var(--brand-primary) calc(l - 0.1) c h); /* Relative Color Syntax */
37
+
38
+ --bg-base: oklch(98% 0.005 240);
39
+ --bg-surface: oklch(100% 0 0);
40
+ --text-main: oklch(20% 0.02 240);
41
+ --text-muted: oklch(50% 0.02 240);
46
42
  }
47
43
 
48
- /* OLED Dark Mode */
49
- @media (prefers-color-scheme: dark) {
50
- :root {
51
- --bg-base: hsl(var(--hue), 10%, 2%);
52
- --bg-surface: hsl(var(--hue), 10%, 6%);
53
- --text-main: hsl(var(--hue), 20%, 95%);
54
- --text-muted: hsl(var(--hue), 10%, 60%);
55
- }
44
+ /* Light/Dark mode via native light-dark() function or OLED media query */
45
+ :root {
46
+ color-scheme: light dark;
47
+ --bg-surface: light-dark(oklch(100% 0 0), oklch(15% 0.01 240));
48
+ --text-main: light-dark(oklch(20% 0.02 240), oklch(95% 0.01 240));
56
49
  }
57
50
  ```
58
51
 
59
- ## 2. Spatial Systems & Grid Mathematics
52
+ ---
53
+
54
+ ## 2. Spatial Systems & Container Queries
60
55
 
61
- Design relies on structural rhythm. Use an **8px base system**.
56
+ Design relies on structural rhythm and component-level adaptability.
62
57
 
63
- - **Micro padding**: `4px`, `8px` (Tags, List items)
64
- - **Component padding**: `16px`, `24px` (Cards, Inputs, Modals)
65
- - **Section spacing**: `48px`, `64px`, `96px` (Page sections)
66
- - **Line height**: Body `1.5`, Headings `1.1` or `1.2`.
58
+ - **Base Spacing Grid (8px)**: Micro `4px`, `8px` | Component `16px`, `24px` | Section `48px`, `64px`, `96px`
59
+ - **Nested Border Radius Formula**: `outer_radius = inner_radius + padding`
60
+ - **Fluid Typography**: Use `clamp()` and `cqi` container units over macro media queries.
67
61
 
68
62
  ```css
69
- /* Fluid Typography (Clamp) */
70
- h1 {
71
- /* Min 2rem, fluidly scale between 480px-1200px, Max 4rem */
72
- font-size: clamp(2rem, 5vw, 4rem);
73
- letter-spacing: -0.02em; /* Tighten large text */
63
+ /* Container Queries for Portable Components */
64
+ .card-container {
65
+ container-type: inline-size;
66
+ container-name: card;
67
+ }
68
+
69
+ @container card (min-width: 400px) {
70
+ .card-body {
71
+ display: grid;
72
+ grid-template-columns: 1fr 2fr;
73
+ gap: 1.5cqi;
74
+ }
75
+ }
76
+
77
+ /* Typographic Balance */
78
+ h1, h2, h3 {
79
+ font-size: clamp(2rem, 4vw + 1rem, 4rem);
80
+ letter-spacing: -0.02em;
81
+ text-wrap: balance; /* Prevents awkward multiline headline breaks */
74
82
  }
75
83
 
76
84
  p {
77
85
  font-size: 1rem;
78
- max-width: 65ch; /* Optimal reading length */
86
+ max-width: 65ch;
87
+ text-wrap: pretty; /* Eliminates typographical orphans in body text */
79
88
  }
80
89
  ```
81
90
 
82
91
  ---
83
92
 
84
- ## 3. Interaction & "Juice" (Micro-interactions)
93
+ ## 3. Interaction & Entry Motion (@starting-style)
85
94
 
86
- A premium UI reacts to the user instantly and smoothly. Focus on state transitions.
95
+ A premium UI reacts to user actions instantly and provides smooth DOM mount transitions.
87
96
 
88
97
  ```css
89
- /* Smooth generic transition */
98
+ /* Physical press feedback */
90
99
  .btn {
91
- transition: all 0.2s cubic-bezier(0.25, 0.46, 0.45, 0.94);
100
+ transition: transform 0.15s cubic-bezier(0.2, 0.8, 0.4, 1), box-shadow 0.15s ease;
92
101
  }
93
-
94
- /* Active Depth - The physical button push */
95
102
  .btn:active {
96
103
  transform: scale(0.97);
97
104
  }
98
105
 
99
- /* Hardware-Accelerated Shadows */
100
- .card {
101
- box-shadow:
102
- 0 4px 6px -1px rgba(0, 0, 0, 0.1),
103
- 0 2px 4px -1px rgba(0, 0, 0, 0.06);
104
- transition:
105
- transform 0.3s ease,
106
- box-shadow 0.3s ease;
106
+ /* Entry/Exit Animations for DOM Elements (@starting-style) */
107
+ .toast {
108
+ display: none;
109
+ opacity: 0;
110
+ transform: translateY(8px);
111
+ transition: opacity 0.25s ease, transform 0.25s ease, display 0.25s allow-discrete;
112
+ }
113
+ .toast.is-open {
114
+ display: flex;
115
+ opacity: 1;
116
+ transform: translateY(0);
107
117
  }
108
- .card:hover {
109
- transform: translateY(-4px); /* Float effect */
110
- box-shadow:
111
- 0 20px 25px -5px rgba(0, 0, 0, 0.1),
112
- 0 10px 10px -5px rgba(0, 0, 0, 0.04);
118
+ @starting-style {
119
+ .toast.is-open {
120
+ opacity: 0;
121
+ transform: translateY(8px);
122
+ }
113
123
  }
114
124
  ```
115
125
 
116
126
  ---
117
127
 
118
- ## 4. Modern Glassmorphism & Depth
128
+ ## 4. Modern Glassmorphism & Multi-Layer Depth
119
129
 
120
- Flat design is dead. Modern UI uses depth, layering, and blur.
130
+ Avoid flat 1px borders and muddy single shadows. Use multi-layered elevation.
121
131
 
122
132
  ```css
123
- /* Frosted Glass */
124
- .glass {
125
- background: rgba(255, 255, 255, 0.7);
133
+ .card {
134
+ background: light-dark(rgba(255, 255, 255, 0.8), rgba(20, 20, 25, 0.8));
126
135
  backdrop-filter: blur(16px);
127
136
  -webkit-backdrop-filter: blur(16px);
128
- border: 1px solid rgba(255, 255, 255, 0.2);
137
+ border: 1px solid light-dark(rgba(0, 0, 0, 0.08), rgba(255, 255, 255, 0.12));
129
138
  border-radius: 16px;
139
+ box-shadow:
140
+ 0 1px 2px oklch(0% 0 0 / 0.05),
141
+ 0 4px 12px oklch(0% 0 0 / 0.08);
130
142
  }
131
143
  ```
132
144
 
133
145
  ---
134
146
 
135
- ## 5. Forms and High-Friction UI
136
-
137
- Forms are where users drop off. They must be flawless.
147
+ ## 5. Accessibility (WCAG 2.2 AA Standards)
138
148
 
139
- - **Auto-focus** the first input on modal open.
140
- - **Labels** must be visible outside the input (not just placeholders).
141
- - **Validation** happens `onBlur` (when leaving), NOT `onChange` (typing).
142
- - **Submit buttons** show loading spinners, disable inputs, and prevent double-clicks.
149
+ Design is broken if it excludes users.
150
+ - โœ… **SC 2.5.8 Target Size**: Interactive controls must be at least `24x24px` CSS pixels (min `44x44px` for touch targets).
151
+ - โœ… **SC 2.4.11 Focus Not Obscured**: Focused elements must never be completely hidden by sticky headers/footers.
152
+ - โœ… **SC 2.4.13 Focus Appearance**: Visible focus rings must achieve `3:1` contrast ratio with a minimum 2px perimeter offset.
153
+ - โœ… **Color Alone**: Never rely solely on color to convey state (pair error alerts with icons).
143
154
 
144
155
  ```css
145
- /* Focus-visible: Only show ring for keyboard nav, not mouse clicks */
146
- button:focus-visible {
147
- outline: 2px solid var(--primary);
148
- outline-offset: 2px;
156
+ button:focus-visible, a:focus-visible {
157
+ outline: 2px solid var(--brand-primary);
158
+ outline-offset: 3px;
149
159
  }
150
160
  ```
151
161
 
152
162
  ---
153
163
 
154
- ## 6. Accessibility (WCAG 2.2 AA)
155
-
156
- Design is fundamentally broken if it excludes users.
157
-
158
- - โœ… Interactive elements need `aria-label` if not visually labeled.
159
- - โœ… Custom dropdowns/selects must support Arrow Keys and Escape.
160
- - โœ… Color alone cannot convey state (Error text must have an icon too `โŒ Password invalid`).
161
- - โœ… Hide decorative SVG/icons from screen readers `aria-hidden="true"`.
162
-
163
- ---
164
-
165
164
  AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
166
165
 
167
166
  1. **Over-engineering:** Proposing complex abstractions or distributed systems when a simpler approach suffices.
@@ -35,11 +35,13 @@ The gold standard framework for crafting bespoke, world-class web applications t
35
35
  - **Intentional Motion**: Animations exist ONLY to convey spatial continuity, provide press feedback, or indicate state changes.
36
36
  - **Duration Constraints**: Micro-interactions $\le 160\text{ms}$; dropdowns/popovers $\le 220\text{ms}$; page transitions $\le 300\text{ms}$.
37
37
  - **Physically Grounded Entrances**: Elements scale in from `scale(0.96)` and opacity `0`, anchored to their trigger origin.
38
+ - **DOM Entry (@starting-style)**: Use `@starting-style` with `transition-behavior: allow-discrete` for smooth `display: none` to `display: block` entrance animations without JS overhead.
38
39
 
39
40
  ### 4. Layout Mechanics & Spatial Math
40
41
  - **8px Grid System**: Every margin, padding, gap, and height MUST derive from an 8px grid (or 4px micro-grid).
41
42
  - **Asymmetrical Balance**: Avoid cookie-cutter centered layouts for SaaS apps. Use strong left-aligned structural axes with generous negative space.
42
43
  - **Container Queries**: Components adjust layout based on container size (`@container`), not viewport size (`@media`), making them context-agnostic.
44
+ - **WCAG 2.2 AA Target Size (SC 2.5.8)**: All interactive targets MUST measure at least `24x24px` CSS pixels (min `44x44px` for touch).
43
45
 
44
46
  ---
45
47
 
@@ -93,216 +93,118 @@ gsap.ticker.add((time) => lenis.raf(time * 1000));
93
93
  gsap.ticker.lagSmoothing(0);
94
94
  ```
95
95
 
96
- ### 3. Page Transitions (View Transitions API)
96
+ ### 3. Page Transitions (Native-First View Transitions API)
97
97
 
98
98
  ```css
99
- /* CSS โ€” define shared elements */
99
+ /* CSS โ€” Browser-native page transition (Zero JS runtime cost) */
100
+ @view-transition {
101
+ navigation: auto;
102
+ }
103
+
100
104
  .card-image {
101
- view-transition-name: active-image;
102
- } /* MUST BE UNIQUE */
105
+ view-transition-name: active-image; /* MUST BE UNIQUE IN DOM */
106
+ }
103
107
  ::view-transition-old(active-image) {
104
- animation: fade-out 0.3s ease;
108
+ animation: fade-out 0.25s cubic-bezier(0.4, 0, 0.2, 1);
105
109
  }
106
110
  ::view-transition-new(active-image) {
107
- animation: scale-in 0.3s ease;
111
+ animation: scale-in 0.25s cubic-bezier(0, 0, 0.2, 1);
108
112
  }
109
113
  ```
110
114
 
111
- ### 4. Loading & Skeleton Animations
112
-
113
- Never block the UI entirely. Use structural loading.
114
-
115
- ```css
116
- /* Shimmer structural animation */
117
- .skeleton {
118
- background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
119
- background-size: 200% 100%;
120
- animation: shimmer 1.5s infinite linear;
121
- }
122
- @keyframes shimmer {
123
- 100% {
124
- background-position: -200% 0;
115
+ ```tsx
116
+ // SPA Route Navigation Trigger with Fallback
117
+ function navigateWithTransition(url: string, navigate: (path: string) => void) {
118
+ if (!document.startViewTransition) {
119
+ navigate(url);
120
+ return;
125
121
  }
122
+ document.startViewTransition(() => {
123
+ navigate(url);
124
+ });
126
125
  }
127
126
  ```
128
127
 
129
- ---
130
-
131
- ## TIER 2: Narrative & Immersive (Medium Implementation)
132
-
133
- _Used for brand storytelling, heroes, and engagement._
134
-
135
- ### 5. 3D & Immersive Animations
128
+ ### 4. DOM Entry & Exit Animations (@starting-style)
136
129
 
137
- The leading trend of 2026. Use React Three Fiber.
138
-
139
- ```tsx
140
- // WebGL Scene basics
141
- import { Canvas, useFrame } from "@react-three/fiber";
142
- function RotatingCube() {
143
- const meshRef = useRef();
144
- useFrame((state, delta) => (meshRef.current.rotation.x += delta));
145
- return (
146
- <mesh ref={meshRef}>
147
- <boxGeometry />
148
- <meshStandardMaterial color="hotpink" />
149
- </mesh>
150
- );
130
+ ```css
131
+ /* CSS @starting-style allows animating entry from display: none */
132
+ .modal {
133
+ display: none;
134
+ opacity: 0;
135
+ transform: scale(0.95);
136
+ transition:
137
+ opacity 0.2s ease,
138
+ transform 0.2s cubic-bezier(0.2, 0.8, 0.4, 1),
139
+ display 0.2s allow-discrete;
151
140
  }
152
- ```
153
141
 
154
- ### 7. Kinetic Typography
142
+ .modal[open] {
143
+ display: block;
144
+ opacity: 1;
145
+ transform: scale(1);
146
+ }
155
147
 
156
- ```tsx
157
- // Word-by-word spring reveal (Framer Motion)
158
- const words = "Immersive storytelling".split(" ");
159
- const wordVariants = { hidden: { opacity: 0, y: 20 }, visible: { opacity: 1, y: 0 } };
160
-
161
- <motion.h1 transition={{ staggerChildren: 0.05 }} initial="hidden" whileInView="visible" viewport={{ once: true }}>
162
- {words.map((w, i) => (
163
- <motion.span key={i} variants={wordVariants}>
164
- {w}{" "}
165
- </motion.span>
166
- ))}
167
- </motion.h1>;
148
+ @starting-style {
149
+ .modal[open] {
150
+ opacity: 0;
151
+ transform: scale(0.95);
152
+ }
153
+ }
168
154
  ```
169
155
 
170
- ### 8. Background Animations & 9. Illustrations
171
-
172
- - **Backgrounds:** Use CSS `@keyframes` on pseudo-elements with `filter: blur()` for ambient gradients, avoiding repaints.
173
- - **Illustrations:** Use Rive for interactive state machines, or Lottie via `lottie-react` for simple timeline playback.
174
-
175
- ---
176
-
177
- ## TIER 3: Advanced & Emerging (Concepts & Tools)
178
-
179
- _Highly interactive components elevating standard UI._
180
-
181
- - **6. Motion UI & State Transitions:** Use Framer Motion's `layout` prop. Morphing a list item into a modal requires `<motion.div layoutId="item-1">` on both states. Wrap the app in `<LayoutGroup>`.
182
- - **10. Physics-based:** Animate like real-world objects. Instead of `duration`, define `mass`, `stiffness`, and `damping` in physics springs to simulate gravity and tension.
183
- - **11. Morphing & Shape:** GSAP `MorphSVGPlugin`. Requires SVGs with comparable path points or GSAP will interpolate poorly. Alternatively, animate CSS `border-radius` for fluid blobs.
184
- - **12. Glassmorphism:** Animate `backdrop-filter: blur(10px)` but beware of performance costs on mobile. Render shadows via `filter: drop-shadow()` combined with slight `translateY` on hover.
185
- - **13. Cursor-based:** Modern standard is CSS variables bound to mouse position. Calculate `clientX` relative to the element bounding box and update `--mouse-x` to drive `radial-gradient` masks.
186
- - **14. AI-driven Adaptive:** Motion that learns. If a user speeds through a form, UI transitions accelerate. If they linger, ambient motion plays. Controlled by tracking interaction deltas and mapping them to global spring configurations.
187
- - **15. Gamified:** Progress bars that burst on completion, haptic-synchronized checkmarks. Combine SVGs with explicit, highly exaggerated elastic overshoot scales (`scale: [1, 1.2, 0.9, 1]`) on reward thresholds.
188
-
189
- ---
190
-
191
- ## TIER 4: Specialized (Rules & Fallbacks)
192
-
193
- _Niche requirements where performance or specific constraints dominate._
194
-
195
- - **16. Video + Motion Hybrid:** Scrubbing `<video>` tags with scroll. Requires pre-encoding video rapidly with keyframes every 1 frame, drawing frames to a `<canvas>` element via `requestAnimationFrame` linked to scroll progress.
196
- - **17. Experimental:** Glitch effects via overlapping CSS `clip-path` animations. High processing cost.
197
- - **18. Navigation:** Mega-menus must use `<AnimatePresence>` to prevent DOM unmount before the exit animation resolves. Include exit delays so users don't trigger flickering by rapidly moving the mouse off the nav.
198
- - **19. Data Visualization:** D3 handles math, React handles DOM, Framer/Spring handles interpolation between D3 datasets. Never let D3 mutate the DOM directly inside a React app.
199
- - **20. Performance-first Subtle Motion:** Strictly `opacity`, `transform`, CSS-only. Use `@starting-style` for popovers and dialogs to avoid JS intervention.
200
-
201
156
  ---
202
157
 
203
158
  ## Accessibility & Performance Invariants (Global Rules)
204
159
 
205
160
  1. **The WCAG 2.2 AA Motion Rule:**
161
+ Always respect `prefers-reduced-motion`. Fall back to instant opacity or no-op motion.
206
162
 
207
163
  ```tsx
208
- import { useReducedMotion } from "framer-motion";
209
- const reduce = useReducedMotion();
210
- // Safe: opacity, color
211
- // Conditional: translate, scale, rotate
212
- <motion.div animate={{ x: reduce ? 0 : 100, opacity: 1 }} transition={{ duration: reduce ? 0 : 0.5 }} />;
164
+ import { useReducedMotion } from "motion/react";
165
+
166
+ function AccessibleComponent() {
167
+ const shouldReduceMotion = useReducedMotion();
168
+
169
+ return (
170
+ <motion.div
171
+ animate={{
172
+ x: shouldReduceMotion ? 0 : 100,
173
+ opacity: 1
174
+ }}
175
+ transition={{ duration: shouldReduceMotion ? 0 : 0.3 }}
176
+ />
177
+ );
178
+ }
213
179
  ```
214
180
 
215
181
  2. **The 120fps GPU Rule:**
216
182
  Never animate `width`, `height`, `left`, `top`, `margin`, or `padding`. This triggers layout recalculation algorithms. Use `transform: scale()` or `transform: translate()` instead.
217
183
 
218
- 3. **The Cleanup Rule:**
219
- Any GSAP ScrollTrigger timeline must use `ScrollTrigger.killAll()` or React's `useGSAP` cleanup functions to avoid memory leaks on SPA route changes.
220
-
221
- ---
222
-
223
- AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
224
-
225
- 1. **Over-engineering:** Proposing complex abstractions or distributed systems when a simpler approach suffices.
226
- 2. **Hallucinated Libraries/Methods:** Using non-existent methods or packages. Always `// VERIFY` or check `package.json` / `requirements.txt`.
227
- 3. **Skipping Edge Cases:** Writing the "happy path" and ignoring error handling, timeouts, or data validation.
228
- 4. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
229
- 5. **Silent Degradation:** Catching and suppressing errors without logging or re-raising.
230
-
231
- ---
232
-
233
- **Slash command: `/review` or `/tribunal-full`**
234
- **Active reviewers: `logic-reviewer` ยท `security-auditor`**
235
-
236
- ### โŒ Forbidden AI Tropes
237
-
238
- 1. **Blind Assumptions:** Never make an assumption without documenting it clearly with `// VERIFY: [reason]`.
239
- 2. **Silent Degradation:** Catching and suppressing errors without logging or handling.
240
- 3. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
241
-
242
- Review these questions before confirming output:
243
-
244
- ```
245
- โœ… Did I rely ONLY on real, verified tools and methods?
246
- โœ… Is this solution appropriately scoped to the user's constraints?
247
- โœ… Did I handle potential failure modes and edge cases?
248
- โœ… Have I avoided generic boilerplate that doesn't add value?
249
- ```
250
-
251
- ### ๐Ÿ›‘ Verification-Before-Completion (VBC) Protocol
252
-
253
- **CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
254
-
255
- - โŒ **Forbidden:** Declaring a task complete because the output "looks correct."
256
- - โœ… **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.
257
-
258
- ## Pre-Flight Checklist
259
-
260
- - [ ] Have I reviewed the user's specific constraints and requests?
261
- - [ ] Have I checked the environment for relevant existing implementations?
262
-
263
- ## VBC Protocol (Verification-Before-Completion)
264
-
265
- You MUST verify existing code signatures and variables before attempting to modify or call them. No hallucination is permitted.
184
+ 3. **The GSAP Memory Cleanup Rule:**
185
+ Any GSAP ScrollTrigger timeline must use `@gsap/react` `useGSAP` or explicit `tl.kill()` cleanup to avoid memory leaks on SPA route changes.
266
186
 
267
187
  ---
268
188
 
269
189
  ## ๐Ÿค– LLM-Specific Traps
270
190
 
271
- AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
272
-
273
- 1. **Over-engineering:** Proposing complex abstractions or distributed systems when a simpler approach suffices.
274
- 2. **Hallucinated Libraries/Methods:** Using non-existent methods or packages. Always `// VERIFY` or check `package.json` / `requirements.txt`.
275
- 3. **Skipping Edge Cases:** Writing the "happy path" and ignoring error handling, timeouts, or data validation.
276
- 4. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
277
- 5. **Silent Degradation:** Catching and suppressing errors without logging or re-raising.
191
+ 1. **Over-animating Static UI:** Animating page titles and static text on simple forms.
192
+ 2. **Missing `allow-discrete`:** Animating `display` or `popover` without `transition-behavior: allow-discrete`.
193
+ 3. **GSAP Memory Leaks:** Forgetting to kill GSAP timelines on component unmount.
278
194
 
279
195
  ---
280
196
 
281
197
  ## ๐Ÿ›๏ธ Tribunal Integration (Anti-Hallucination)
282
198
 
283
- **Slash command: `/review` or `/tribunal-full`**
284
- **Active reviewers: `logic-reviewer` ยท `security-auditor`**
285
-
286
- ### โŒ Forbidden AI Tropes
287
-
288
- 1. **Blind Assumptions:** Never make an assumption without documenting it clearly with `// VERIFY: [reason]`.
289
- 2. **Silent Degradation:** Catching and suppressing errors without logging or handling.
290
- 3. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
291
-
292
199
  ### โœ… Pre-Flight Self-Audit
293
200
 
294
- Review these questions before confirming output:
295
-
296
201
  ```
297
- โœ… Did I rely ONLY on real, verified tools and methods?
298
- โœ… Is this solution appropriately scoped to the user's constraints?
299
- โœ… Did I handle potential failure modes and edge cases?
300
- โœ… Have I avoided generic boilerplate that doesn't add value?
202
+ โœ… Are all animations constrained to GPU-friendly properties (transform, opacity)?
203
+ โœ… Is prefers-reduced-motion handled natively or via hooks?
204
+ โœ… Are view-transition-name attributes unique across the entire active DOM?
301
205
  ```
302
206
 
303
207
  ### ๐Ÿ›‘ Verification-Before-Completion (VBC) Protocol
304
208
 
305
- **CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
209
+ Inspect motion frame performance in DevTools Rendering tab to verify 60/120fps compositor execution without layout thrashing.
306
210
 
307
- - โŒ **Forbidden:** Declaring a task complete because the output "looks correct."
308
- - โœ… **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.
@@ -1,9 +1,9 @@
1
1
  ---
2
- description: Runs ALL 19 parallel reviewers simultaneously. Maximum hallucination coverage. Use before merging any AI-generated code, before production deployments, or when maximum confidence is required.
2
+ description: Runs ALL 20 parallel reviewers simultaneously. Maximum hallucination coverage. Use before merging any AI-generated code, before production deployments, or when maximum confidence is required.
3
3
  required-skills: all domain skills auto-loaded
4
4
  ---
5
5
 
6
- # /tribunal-full โ€” Complete 19-Reviewer Audit
6
+ # /tribunal-full โ€” Complete 20-Reviewer Audit
7
7
 
8
8
  $ARGUMENTS
9
9
 
@@ -32,7 +32,7 @@ Read BEFORE full review:
32
32
 
33
33
  ---
34
34
 
35
- ## 19 Reviewers โ€” All Active Simultaneously
35
+ ## 20 Reviewers โ€” All Active Simultaneously
36
36
 
37
37
  ```
38
38
  Tier 1: Always active (universal concerns)
@@ -68,7 +68,7 @@ Tier 4: Performance Swarm (token-scoped specialists)
68
68
 
69
69
  ## Active Reviewers by Code Type
70
70
 
71
- Not all 19 reviewers produce meaningful findings on all code types. Active reviewers detect their first finding immediately โ€” inactive reviewers auto-pass with "N/A for this code type."
71
+ Not all 20 reviewers produce meaningful findings on all code types. Active reviewers detect their first finding immediately โ€” inactive reviewers auto-pass with "N/A for this code type."
72
72
 
73
73
  | Code Under Review | Critical Reviewers |
74
74
  | :------------------ | :---------------------------------------------------------------- |
@@ -86,7 +86,7 @@ Not all 19 reviewers produce meaningful findings on all code types. Active revie
86
86
  ## Verdict Aggregation
87
87
 
88
88
  ```
89
- All 19 verdicts are collected. Aggregated result:
89
+ All 20 verdicts are collected. Aggregated result:
90
90
 
91
91
  If ANY reviewer = โŒ REJECTED โ†’ Global verdict: โŒ REJECTED (must fix before Human Gate)
92
92
  If any reviewer = โš ๏ธ WARNING โ†’ Global verdict: โš ๏ธ WARNINGS (proceed with attention)
package/CONTRIBUTING.md CHANGED
@@ -42,7 +42,7 @@ tribunal-kit/
42
42
  โ”‚ โ””โ”€โ”€ index.d.ts # TypeScript declarations
43
43
  โ”œโ”€โ”€ crates/core/ # Rust core engine (Tokio-based)
44
44
  โ”œโ”€โ”€ .agent/ # The intelligence payload (agents, skills, workflows)
45
- โ”‚ โ”œโ”€โ”€ agents/ # 43 specialist agent definitions
45
+ โ”‚ โ”œโ”€โ”€ agents/ # 44 specialist and reviewer agent definitions
46
46
  โ”‚ โ”œโ”€โ”€ skills/ # Reusable skill packs
47
47
  โ”‚ โ”œโ”€โ”€ workflows/ # 34 workflow definitions
48
48
  โ”‚ โ””โ”€โ”€ scripts/ # Automation scripts
package/README.md CHANGED
@@ -20,7 +20,7 @@
20
20
  <img src="https://img.shields.io/badge/License-MIT-1a1a1f?style=for-the-badge&color=2d2d30" alt="License" />
21
21
  </a>
22
22
  <a href="CHANGELOG.md">
23
- <img src="https://img.shields.io/badge/Release-v5.8.4-ccff00?style=for-the-badge&color=111111&logo=github&logoColor=ccff00" alt="Release Version" />
23
+ <img src="https://img.shields.io/badge/Release-v5.8.5-ccff00?style=for-the-badge&color=111111&logo=github&logoColor=ccff00" alt="Release Version" />
24
24
  </a>
25
25
  <a href="mcp_config.json">
26
26
  <img src="https://img.shields.io/badge/MCP-Ready-00c2ff?style=for-the-badge&logo=openai&logoColor=111" alt="MCP Server" />
@@ -40,7 +40,7 @@
40
40
  <strong style="color: #ffffff; font-size: 1.1em;">AI GENERATES CODE. TRIBUNAL KIT GOVERNS IT.</strong>
41
41
  </div>
42
42
  <p style="color: #c9c9d1; font-size: 0.95em; line-height: 1.6; margin: 0;">
43
- A zero-bloat <strong>.agent/</strong> intelligence payload and <strong>Model Context Protocol (MCP) server</strong> that upgrades your IDEs (<a href="#" style="color: #ccff00; text-decoration: none;">Cursor</a>, <a href="#" style="color: #ccff00; text-decoration: none;">VSCode</a>, <a href="#" style="color: #ccff00; text-decoration: none;">Windsurf</a>) and terminal AI coding assistants (<a href="#" style="color: #ccff00; text-decoration: none;">Claude Code</a>, <a href="#" style="color: #ccff00; text-decoration: none;">Aider</a>) with <strong>44 specialist agents</strong>, <strong>34 workflows</strong>, and a parallel <strong>20-reviewer Tribunal pipeline</strong>. Establishes absolute runtime correctness, optimizes context windows, and heavily mitigates AI code hallucinations.
43
+ A zero-bloat <strong>.agent/</strong> intelligence payload and <strong>Model Context Protocol (MCP) server</strong> that upgrades your IDEs (<a href="#" style="color: #ccff00; text-decoration: none;">Cursor</a>, <a href="#" style="color: #ccff00; text-decoration: none;">VSCode</a>, <a href="#" style="color: #ccff00; text-decoration: none;">Windsurf</a>) and terminal AI coding assistants (<a href="#" style="color: #ccff00; text-decoration: none;">Claude Code</a>, <a href="#" style="color: #ccff00; text-decoration: none;">Aider</a>) with <strong>44 specialist agents</strong>, <strong>34 workflows</strong>, and a parallel <strong>19-reviewer Tribunal pipeline</strong>. Establishes absolute runtime correctness, optimizes context windows, and heavily mitigates AI code hallucinations.
44
44
  </p>
45
45
  </div>
46
46
 
@@ -210,7 +210,7 @@ npx tribunal-kit status
210
210
 
211
211
  Code generation is solved. **Code correctness is the frontier.**
212
212
 
213
- The Tribunal Pipeline intercepts raw agent generation and routes it through a parallel suite of **20 domain-specific reviewers** before presenting changes to the developer:
213
+ The Tribunal Pipeline intercepts raw agent generation and routes it through a parallel suite of **19 domain-specific reviewers** before presenting changes to the developer:
214
214
 
215
215
  ```mermaid
216
216
  graph TD
@@ -221,7 +221,7 @@ graph TD
221
221
  C -.->|Failed| E[Maker Auto-Correction]
222
222
  E -.-> C
223
223
 
224
- D -->|20 Domain Reviewers| F[Human Gate]
224
+ D -->|19 Domain Reviewers| F[Human Gate]
225
225
  F -->|Approved| G((Committed to Disk))
226
226
 
227
227
  classDef default fill:#1a1a1a,stroke:#333,stroke-width:2px,color:#fff;