tribunal-kit 5.8.2 → 5.8.3

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.
@@ -42,7 +42,7 @@ Type any of these in your AI IDE chat:
42
42
  | ----------------------- | -------------------------------------------------------------------------------------- | ----------------------------------- |
43
43
  | `/generate` | Full Tribunal: Maker → Parallel Review → Human Gate | `workflows/generate.md` |
44
44
  | `/review` | Audit existing code (no generation) | `workflows/review.md` |
45
- | `/tribunal-full` | ALL 19 reviewers at once — maximum coverage | `workflows/tribunal-full.md` |
45
+ | `/tribunal-full` | ALL 20 reviewers at once — maximum coverage | `workflows/tribunal-full.md` |
46
46
  | `/tribunal-backend` | Logic + Security + Deps + Types | `workflows/tribunal-backend.md` |
47
47
  | `/tribunal-frontend` | Logic + Security + Frontend + Types | `workflows/tribunal-frontend.md` |
48
48
  | `/tribunal-database` | Logic + Security + SQL | `workflows/tribunal-database.md` |
@@ -71,7 +71,7 @@ Type any of these in your AI IDE chat:
71
71
 
72
72
  ---
73
73
 
74
- ## The 19 Tribunal Agents
74
+ ## The 20 Tribunal Reviewers
75
75
 
76
76
  | Agent | File | Activates When |
77
77
  | ------------------------ | ---------------------------------- | ----------------------------------------------------------------------------------- |
@@ -150,7 +150,7 @@ The Swarm system decomposes complex multi-domain goals into independent sub-task
150
150
  | `agent-organizer` | Specialist agent operations |
151
151
  | `project-planner` | 4-phase structured planning |
152
152
  | `backend-specialist` | API, server, auth |
153
- | `dotnet-core-expert` | C# / .NET architecture |
153
+ | `csharp-developer` | C# / .NET architecture |
154
154
  | `python-pro` | Python backend development |
155
155
  | `frontend-specialist` | Web UI / Components |
156
156
  | `react-specialist` | React / Next.js architecture |
@@ -228,17 +228,17 @@ All scripts live in `.agent/scripts/`:
228
228
  | -------------------------- | --------------------------------------------------------------------------------- | ------------------------------------------------------------- |
229
229
  | `checklist.js` | Priority-ordered project audit | `node .agent/scripts/checklist.js .` |
230
230
  | `verify_all.js` | Full pre-deploy validation | `node .agent/scripts/verify_all.js` |
231
- | `auto_preview.py` | Local dev server management | `python .agent/scripts/auto_preview.py start` |
231
+ | `auto_preview.js` | Local dev server management | `node .agent/scripts/auto_preview.js start` |
232
232
  | `session_manager.js` | Multi-session state tracking | `node .agent/scripts/session_manager.js status` |
233
- | `lint_runner.py` | Standalone lint runner | `python .agent/scripts/lint_runner.py . --fix` |
234
- | `test_runner.py` | Auto-detecting test runner | `python .agent/scripts/test_runner.py . --coverage` |
233
+ | `lint_runner.js` | Standalone lint runner | `node .agent/scripts/lint_runner.js . --fix` |
234
+ | `test_runner.js` | Auto-detecting test runner | `node .agent/scripts/test_runner.js . --coverage` |
235
235
  | `security_scan.js` | OWASP-aware source code scanner | `node .agent/scripts/security_scan.js .` |
236
- | `dependency_analyzer.py` | Unused/phantom dep checker | `python .agent/scripts/dependency_analyzer.py . --audit` |
237
- | `schema_validator.py` | DB schema validator | `python .agent/scripts/schema_validator.py .` |
238
- | `bundle_analyzer.py` | JS/TS bundle size analyzer | `python .agent/scripts/bundle_analyzer.py . --build` |
239
- | `strengthen_skills.py` | Appends Tribunal guardrails (LLM Traps + Pre-Flight + VBC) to skills missing them | `python .agent/scripts/strengthen_skills.py . --dry-run` |
236
+ | `dependency_analyzer.js` | Unused/phantom dep checker | `node .agent/scripts/dependency_analyzer.js . --audit` |
237
+ | `schema_validator.js` | DB schema validator | `node .agent/scripts/schema_validator.js .` |
238
+ | `bundle_analyzer.js` | JS/TS bundle size analyzer | `node .agent/scripts/bundle_analyzer.js . --build` |
239
+ | `strengthen_skills.js` | Appends Tribunal guardrails (LLM Traps + Pre-Flight + VBC) to skills missing them | `node .agent/scripts/strengthen_skills.js . --dry-run` |
240
240
  | `swarm_dispatcher.js` | Validate Orchestrator micro-worker JSON payloads | `node .agent/scripts/swarm_dispatcher.js --file payload.json` |
241
- | `skill_integrator.py` | Map active skills to executable scripts | `python .agent/scripts/skill_integrator.py` |
241
+ | `skill_integrator.js` | Map active skills to executable scripts | `node .agent/scripts/skill_integrator.js` |
242
242
  | `test_swarm_dispatcher.js` | Unit tests for swarm_dispatcher | `npx jest test/integration/swarm_dispatcher.test.js` |
243
243
 
244
244
  ---
@@ -267,12 +267,12 @@ Script failures follow cascade rules:
267
267
  .agent/
268
268
  ├── ARCHITECTURE.md ← This file
269
269
  ├── GEMINI.md ← Root behavior config (includes /swarm routing)
270
- ├── agents/ ← 43 specialist + reviewer agents (19 reviewers + 24 domain)
270
+ ├── agents/ ← 43 specialist + reviewer agents (20 reviewers + 23 domain)
271
271
  │ ├── supervisor-agent.md ← Swarm triage, dispatch, synthesis
272
272
  │ ├── swarm-worker-contracts.md ← WorkerRequest/WorkerResult schemas
273
273
  │ └── swarm-worker-registry.md ← Task type → agent routing map
274
274
  ├── rules/GEMINI.md ← Master rules (P0 priority)
275
- ├── scripts/ ← 28 Python/JS automation scripts
275
+ ├── scripts/ ← 29 JS automation scripts
276
276
  ├── skills/ ← 106 modular skill packages (all hardened)
277
277
  ├── patterns/ ← 5 ADK skill base patterns
278
278
  ├── history/ ← Case Law + Skill Evolution data (user-generated, preserved on update)
@@ -0,0 +1,53 @@
1
+ ---
2
+ name: complexity-reviewer
3
+ description: Enforces the Dependency Ladder to prevent over-engineering. Audits every generated code snippet for redundant dependencies, unnecessary abstractions, premature optimization, and custom implementations of standard library or native platform features. Activates automatically on all /generate, /review, and /tribunal-* commands.
4
+ version: 1.0.0
5
+ last-updated: 2026-07-18
6
+ ---
7
+
8
+ # Complexity Reviewer — The Pragmatist
9
+
10
+ ---
11
+
12
+ ## Core Mandate
13
+
14
+ You have one job: enforce the **Dependency Ladder** and prevent over-engineering. Audit code changes to ensure that the developer has chosen the simplest possible implementation and avoided unnecessary dependencies.
15
+
16
+ **Your burden of proof:** Every custom utility or imported package must justify its existence. If a feature can be implemented using native platform elements, standard library functions, or packages already present in `package.json`, you must reject the proposal and guide the developer back down the ladder.
17
+
18
+ ---
19
+
20
+ ## The 6 Rungs of the Dependency Ladder
21
+
22
+ Before code is accepted, you must verify that the implementation sits at the lowest successful rung:
23
+
24
+ 1. **Existence**: Does the feature actually need to exist?
25
+ 2. **Stdlib**: Can this be done with the language standard library?
26
+ 3. **Platform**: Can the native platform (HTML5, CSS, Web APIs, standard browser features) handle it?
27
+ 4. **Installed Dep**: Can an already-installed dependency solve it?
28
+ 5. **One Line**: Can this be solved in a single line of custom code?
29
+ 6. **Minimum**: Write the absolute minimum custom code that works (no premature abstractions).
30
+
31
+ ---
32
+
33
+ ## Section 1: Common Over-Engineering Patterns to Reject
34
+
35
+ | Anti-Pattern | Why It's Rejected | Real Alternative (Lower Rung) |
36
+ | :--- | :--- | :--- |
37
+ | Importing `lodash` or similar utility library | Standard library handles most collections/strings | Use native `Array.prototype` methods or modern JS features |
38
+ | Custom React/Vue slider/carousel component | Heavy, complex, prone to accessibility bugs | Native CSS Scroll Snap or standard platform elements |
39
+ | Hand-rolling custom cryptographic / hashing utils | Prone to security vulnerabilities and bugs | Use standard Node.js `crypto` or Web Crypto API |
40
+ | Elaborate helper/wrapper layers for simple APIs | Wastes context, adds cognitive overhead | Direct API consumption (Keep It Simple) |
41
+ | Adding new NPM packages for simple tasks | Bloats bundle, introduces supply-chain risk | Write a simple pure function locally |
42
+
43
+ ---
44
+
45
+ ## Section 2: Review Verdict Guidelines
46
+
47
+ Your review should output one of two verdicts:
48
+
49
+ ### 1. `✅ APPROVED`
50
+ The code is simple, uses native platform capabilities, does not introduce unnecessary dependencies, and follows the Dependency Ladder.
51
+
52
+ ### 2. `❌ REJECTED`
53
+ The code is over-engineered, introduces a redundant dependency, or implements custom logic where a standard library/platform API exists. Provide a clear alternative showing how to rewrite the code at a lower rung.
@@ -59,7 +59,7 @@ Keywords to flag:
59
59
  Run the following command to search for relevant precedents:
60
60
 
61
61
  ```bash
62
- python .agent/scripts/case_law_manager.py search-cases --query "<extracted keywords>"
62
+ node .agent/scripts/case_law_manager.js search-cases --query "<extracted keywords>"
63
63
  ```
64
64
 
65
65
  This uses **TF-IDF weighted cosine similarity**. No LLM is called. No tokens consumed.
@@ -95,7 +95,7 @@ reviewer delivers a verdict.
95
95
  □ Developer explicitly overrides this precedent (requires human approval)
96
96
 
97
97
  To override, run:
98
- python .agent/scripts/case_law_manager.py add-case
98
+ node .agent/scripts/case_law_manager.js add-case
99
99
  And record a new case with verdict: APPROVED_WITH_CONDITIONS
100
100
  ```
101
101
 
@@ -109,7 +109,7 @@ reviewer delivers a verdict.
109
109
  Summary : [REASON_SUMMARY]
110
110
 
111
111
  The proposed code may be related to a past decision. Review before approving.
112
- Run: python .agent/scripts/case_law_manager.py show --id [ID]
112
+ Run: node .agent/scripts/case_law_manager.js show --id [ID]
113
113
  ```
114
114
 
115
115
  ### If similarity score < 0.2 → CLEAR
@@ -131,7 +131,7 @@ Case Law, prompt the developer:
131
131
  The [reviewer-name] just rejected code for a new reason not in Case Law.
132
132
  Record this decision to prevent future repetition:
133
133
 
134
- python .agent/scripts/case_law_manager.py add-case
134
+ node .agent/scripts/case_law_manager.js add-case
135
135
 
136
136
  This takes < 60 seconds and permanently strengthens your Tribunal.
137
137
  ```
@@ -148,7 +148,7 @@ rejection as a new case. This is NOT optional — the Supreme Court depends on i
148
148
  **Action:** Run the following command (non-interactive, no human input needed):
149
149
 
150
150
  ```bash
151
- python .agent/scripts/case_law_manager.py auto-record \
151
+ node .agent/scripts/case_law_manager.js auto-record \
152
152
  --diff "<the rejected code snippet>" \
153
153
  --reason "<the reviewer's rejection reason>" \
154
154
  --domain <domain> \
@@ -229,23 +229,23 @@ Human Gate receives your hold as a hard blocker alongside their verdicts.
229
229
 
230
230
  ```bash
231
231
  # Search Case Law (TF-IDF cosine — zero tokens)
232
- python .agent/scripts/case_law_manager.py search-cases --query "useEffect dependency"
232
+ node .agent/scripts/case_law_manager.js search-cases --query "useEffect dependency"
233
233
 
234
234
  # Record a new rejection (interactive)
235
- python .agent/scripts/case_law_manager.py add-case
235
+ node .agent/scripts/case_law_manager.js add-case
236
236
 
237
237
  # Auto-record a rejection (non-interactive — for AI agents)
238
- python .agent/scripts/case_law_manager.py auto-record --diff "code" --reason "why" --domain security
238
+ node .agent/scripts/case_law_manager.js auto-record --diff "code" --reason "why" --domain security
239
239
 
240
240
  # View full case
241
- python .agent/scripts/case_law_manager.py show --id 7
241
+ node .agent/scripts/case_law_manager.js show --id 7
242
242
 
243
243
  # Overrule a past precedent
244
- python .agent/scripts/case_law_manager.py overrule --id 7 --reason "no longer applicable"
244
+ node .agent/scripts/case_law_manager.js overrule --id 7 --reason "no longer applicable"
245
245
 
246
246
  # See all cases
247
- python .agent/scripts/case_law_manager.py list
247
+ node .agent/scripts/case_law_manager.js list
248
248
 
249
249
  # Export full history
250
- python .agent/scripts/case_law_manager.py export
250
+ node .agent/scripts/case_law_manager.js export
251
251
  ```
@@ -16,7 +16,7 @@ All agents listed here MUST exist as `.md` files in `.agent/agents/`.
16
16
  | `research` | performance, profiling, optimization | `performance-optimizer` |
17
17
  | `generate_code` | api, route, endpoint, server, express, auth, jwt | `backend-specialist` |
18
18
  | `generate_code` | python, fastapi, django, flask | `python-pro` |
19
- | `generate_code` | c#, .net, blazor, aspnet | `dotnet-core-expert` |
19
+ | `generate_code` | c#, .net, blazor, aspnet | `csharp-developer` |
20
20
  | `generate_code` | component, hook, react, next, ui, css | `frontend-specialist` |
21
21
  | `generate_code` | mobile, react native, flutter, ios, android | `mobile-developer` |
22
22
  | `generate_code` | docker, ci, cd, deploy, github actions, cloud | `devops-engineer` |
@@ -54,7 +54,7 @@ Quick reference for Supervisor triage. Full instructions are in each agent's `.m
54
54
  | -------------------------- | ------------------------------------------------ | ----------------------- |
55
55
  | `backend-specialist.md` | REST APIs, auth flows, server logic | React components |
56
56
  | `python-pro.md` | FastAPI, Django, data scripts | Node/TypeScript code |
57
- | `dotnet-core-expert.md` | .NET 8+, C#, Blazor, AOT | Python or Node backends |
57
+ | `csharp-developer` | .NET 8+, C#, Blazor, AOT | Python or Node backends |
58
58
  | `frontend-specialist.md` | Web UI, CSS, components | Server code |
59
59
  | `react-specialist.md` | Advanced React patterns, Next.js architecture | Vue or mobile |
60
60
  | `vue-expert.md` | Vue 3, Nuxt 3, Pinia | React or Angular |
@@ -89,4 +89,4 @@ When a new specialist agent is added to `.agent/agents/`, update this registry:
89
89
 
90
90
  1. Add a row to the **Primary Routing Table** for each `type` and keyword combination it handles
91
91
  2. Add a row to the **Agent Capability Summary** with "Best For" and "Do NOT Use For" guidance
92
- 3. Run `python .agent/scripts/config-validator.py` to verify consistency
92
+ 3. Run `node .agent/scripts/verify_all.js` to verify consistency
@@ -1991,7 +1991,159 @@
1991
1991
  "token_estimate": 18,
1992
1992
  "source": "manual",
1993
1993
  "session_id": null
1994
+ },
1995
+ {
1996
+ "id": 132,
1997
+ "memory_type": "semantic",
1998
+ "content": "❌ Overriding project idioms without explicit justification -> ✅ Idioms represent team decisions; flag deviations with reasoning",
1999
+ "tags": [
2000
+ "project-idiom",
2001
+ "auto-learned"
2002
+ ],
2003
+ "created_at": "1784396209Z",
2004
+ "last_accessed": "1784396209Z",
2005
+ "access_count": 0,
2006
+ "token_estimate": 32,
2007
+ "source": "manual",
2008
+ "session_id": null
2009
+ },
2010
+ {
2011
+ "id": 133,
2012
+ "memory_type": "semantic",
2013
+ "content": "❌ Applying idioms from one project to a different project -> ✅ Idioms are project-specific; verify they apply to the current codebase",
2014
+ "tags": [
2015
+ "project-idiom",
2016
+ "auto-learned"
2017
+ ],
2018
+ "created_at": "1784396209Z",
2019
+ "last_accessed": "1784396209Z",
2020
+ "access_count": 0,
2021
+ "token_estimate": 34,
2022
+ "source": "manual",
2023
+ "session_id": null
2024
+ },
2025
+ {
2026
+ "id": 134,
2027
+ "memory_type": "semantic",
2028
+ "content": "❌ **Forbidden:** Declaring a task complete because the output \"looks correct.\"",
2029
+ "tags": [
2030
+ "project-idiom",
2031
+ "auto-learned"
2032
+ ],
2033
+ "created_at": "1784396209Z",
2034
+ "last_accessed": "1784396209Z",
2035
+ "access_count": 0,
2036
+ "token_estimate": 20,
2037
+ "source": "manual",
2038
+ "session_id": null
2039
+ },
2040
+ {
2041
+ "id": 135,
2042
+ "memory_type": "semantic",
2043
+ "content": "✅ **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.",
2044
+ "tags": [
2045
+ "project-idiom",
2046
+ "auto-learned"
2047
+ ],
2048
+ "created_at": "1784396209Z",
2049
+ "last_accessed": "1784396209Z",
2050
+ "access_count": 0,
2051
+ "token_estimate": 54,
2052
+ "source": "manual",
2053
+ "session_id": null
2054
+ },
2055
+ {
2056
+ "id": 136,
2057
+ "memory_type": "semantic",
2058
+ "content": "[ ] Have I reviewed the user's specific constraints and requests?",
2059
+ "tags": [
2060
+ "project-idiom",
2061
+ "auto-learned"
2062
+ ],
2063
+ "created_at": "1784396209Z",
2064
+ "last_accessed": "1784396209Z",
2065
+ "access_count": 0,
2066
+ "token_estimate": 17,
2067
+ "source": "manual",
2068
+ "session_id": null
2069
+ },
2070
+ {
2071
+ "id": 137,
2072
+ "memory_type": "semantic",
2073
+ "content": "[ ] Have I checked the environment for relevant existing implementations?",
2074
+ "tags": [
2075
+ "project-idiom",
2076
+ "auto-learned"
2077
+ ],
2078
+ "created_at": "1784396209Z",
2079
+ "last_accessed": "1784396209Z",
2080
+ "access_count": 0,
2081
+ "token_estimate": 19,
2082
+ "source": "manual",
2083
+ "session_id": null
2084
+ },
2085
+ {
2086
+ "id": 138,
2087
+ "memory_type": "semantic",
2088
+ "content": "❌ **Forbidden:** Declaring a task complete because the output \"looks correct.\"",
2089
+ "tags": [
2090
+ "project-idiom",
2091
+ "auto-learned"
2092
+ ],
2093
+ "created_at": "1784396209Z",
2094
+ "last_accessed": "1784396209Z",
2095
+ "access_count": 0,
2096
+ "token_estimate": 20,
2097
+ "source": "manual",
2098
+ "session_id": null
2099
+ },
2100
+ {
2101
+ "id": 139,
2102
+ "memory_type": "semantic",
2103
+ "content": "✅ **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.",
2104
+ "tags": [
2105
+ "project-idiom",
2106
+ "auto-learned"
2107
+ ],
2108
+ "created_at": "1784396209Z",
2109
+ "last_accessed": "1784396209Z",
2110
+ "access_count": 0,
2111
+ "token_estimate": 54,
2112
+ "source": "manual",
2113
+ "session_id": null
2114
+ },
2115
+ {
2116
+ "id": 140,
2117
+ "memory_type": "procedural",
2118
+ "content": "Run `echo 'No build step required for this project'` to build the project",
2119
+ "tags": [
2120
+ "build-script",
2121
+ "build",
2122
+ "auto-learned"
2123
+ ],
2124
+ "created_at": "1784396209Z",
2125
+ "last_accessed": "1784396209Z",
2126
+ "access_count": 0,
2127
+ "token_estimate": 19,
2128
+ "source": "manual",
2129
+ "session_id": null
2130
+ },
2131
+ {
2132
+ "id": 141,
2133
+ "memory_type": "procedural",
2134
+ "content": "Run `npm run validate-payload && jest --coverage` to test the project",
2135
+ "tags": [
2136
+ "build-script",
2137
+ "test",
2138
+ "auto-learned"
2139
+ ],
2140
+ "created_at": "1784396209Z",
2141
+ "last_accessed": "1784396209Z",
2142
+ "access_count": 0,
2143
+ "token_estimate": 18,
2144
+ "source": "manual",
2145
+ "session_id": null
1994
2146
  }
1995
2147
  ],
1996
- "next_id": 132
2148
+ "next_id": 142
1997
2149
  }
@@ -1,6 +1,6 @@
1
1
  # 🧠 Tribunal Memory Index
2
2
  > Auto-generated by `tribunal-kit memory export`. Do not edit manually.
3
- > Entries: 131 | Semantic: 105 | Procedural: 26 | Episodic: 0 | Working: 0
3
+ > Entries: 141 | Semantic: 113 | Procedural: 28 | Episodic: 0 | Working: 0
4
4
 
5
5
  ## SEMANTIC (Permanent Facts)
6
6
  | ID | Content | Tags | Source | Created |
@@ -110,6 +110,14 @@
110
110
  | 127 | [ ] Have I checked the environment for relevant existing implementations? | project-idiom, auto-learned | manual | 1784187808Z |
111
111
  | 128 | ❌ **Forbidden:** Declaring a task complete because the output "looks correct." | project-idiom, auto-learned | manual | 1784187808Z |
112
112
  | 129 | ✅ **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. | project-idiom, auto-learned | manual | 1784187808Z |
113
+ | 132 | ❌ Overriding project idioms without explicit justification -> ✅ Idioms represent team decisions; flag deviations with reasoning | project-idiom, auto-learned | manual | 1784396209Z |
114
+ | 133 | ❌ Applying idioms from one project to a different project -> ✅ Idioms are project-specific; verify they apply to the current codebase | project-idiom, auto-learned | manual | 1784396209Z |
115
+ | 134 | ❌ **Forbidden:** Declaring a task complete because the output "looks correct." | project-idiom, auto-learned | manual | 1784396209Z |
116
+ | 135 | ✅ **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. | project-idiom, auto-learned | manual | 1784396209Z |
117
+ | 136 | [ ] Have I reviewed the user's specific constraints and requests? | project-idiom, auto-learned | manual | 1784396209Z |
118
+ | 137 | [ ] Have I checked the environment for relevant existing implementations? | project-idiom, auto-learned | manual | 1784396209Z |
119
+ | 138 | ❌ **Forbidden:** Declaring a task complete because the output "looks correct." | project-idiom, auto-learned | manual | 1784396209Z |
120
+ | 139 | ✅ **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. | project-idiom, auto-learned | manual | 1784396209Z |
113
121
 
114
122
  ## PROCEDURAL (How-To Recipes)
115
123
  | ID | Content | Tags | Source | Created |
@@ -140,4 +148,6 @@
140
148
  | 121 | Run `npm run validate-payload && jest --coverage` to test the project | build-script, test, auto-learned | manual | 1783790009Z |
141
149
  | 130 | Run `echo 'No build step required for this project'` to build the project | build-script, build, auto-learned | manual | 1784187808Z |
142
150
  | 131 | Run `npm run validate-payload && jest --coverage` to test the project | build-script, test, auto-learned | manual | 1784187808Z |
151
+ | 140 | Run `echo 'No build step required for this project'` to build the project | build-script, build, auto-learned | manual | 1784396209Z |
152
+ | 141 | Run `npm run validate-payload && jest --coverage` to test the project | build-script, test, auto-learned | manual | 1784396209Z |
143
153
 
@@ -78,7 +78,7 @@ Every code or design request activates an agent. This is not optional.
78
78
  | ------------------------------------------------------- | --------------------------- |
79
79
  | API / server / backend | `backend-specialist` |
80
80
  | API contract design / REST / GraphQL | `api-architect` |
81
- | C# / .NET / Blazor | `dotnet-core-expert` |
81
+ | C# / .NET / Blazor | `csharp-developer` |
82
82
  | Python / FastAPI / Django | `python-pro` |
83
83
  | Database / schema / SQL | `database-architect` |
84
84
  | Advanced SQL queries | `sql-pro` |
@@ -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`, `dotnet-core-expert`, `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:** 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).
118
118
 
119
119
  **When activated, announce the agent:**
120
120
 
@@ -215,8 +215,8 @@ The Human Gate is never skipped. No code is written to a file without explicit u
215
215
 
216
216
  **Reviewer assignment by domain:**
217
217
 
218
- | Code type | Reviewers |
219
- | --------------------- | --------------------------------------------------------------------------------------------------- |
218
+ | Code type | Reviewers |
219
+ | --------------------- | ----------------------------------------------------------------------------- |
220
220
  | Backend/API | logic + security + dependency + type-safety + resilience + schema + complexity-reviewer |
221
221
  | Frontend/React | logic + security + frontend + type-safety + ui-ux-auditor + review-animations + complexity-reviewer |
222
222
  | Database/SQL | logic + security + sql + schema + complexity-reviewer |
@@ -281,17 +281,17 @@ These scripts live in `.agent/scripts/`. Agents and skills can invoke them:
281
281
 
282
282
  | Script | Purpose | When |
283
283
  | -------------------------- | ------------------------------------------------- | --------------------------------------------- |
284
- | `checklist.py` | Priority audit: Security→Lint→Schema→Tests→UX→SEO | Before/after any major change |
285
- | `verify_all.py` | Full pre-deploy validation suite | Pre-deploy |
286
- | `auto_preview.py` | Start/stop/restart local dev server | After /create or /enhance |
284
+ | `checklist.js` | Priority audit: Security→Lint→Schema→Tests→UX→SEO | Before/after any major change |
285
+ | `verify_all.js` | Full pre-deploy validation suite | Pre-deploy |
286
+ | `auto_preview.js` | Start/stop/restart local dev server | After /create or /enhance |
287
287
  | `session_manager.js` | Track session state between conversations | Multi-session work |
288
- | `lint_runner.py` | Standalone lint runner (ESLint, Prettier, Ruff) | Every code change |
289
- | `test_runner.py` | Standalone test runner (Jest, Vitest, pytest, Go) | After logic changes |
290
- | `security_scan.py` | Deep OWASP-aware source code security scan | Always on deploy, /audit |
291
- | `dependency_analyzer.py` | Unused/phantom deps, npm audit | Weekly, /audit |
292
- | `schema_validator.py` | Database schema validation (Prisma, SQL) | After DB changes |
293
- | `bundle_analyzer.py` | JS/TS bundle size analysis | Before deploy |
294
- | `skill_integrator.py` | Maps active skills to their executable scripts | Automatically when skills are invoked |
288
+ | `lint_runner.js` | Standalone lint runner (ESLint, Prettier, Ruff) | Every code change |
289
+ | `test_runner.js` | Standalone test runner (Jest, Vitest, pytest, Go) | After logic changes |
290
+ | `security_scan.js` | Deep OWASP-aware source code security scan | Always on deploy, /audit |
291
+ | `dependency_analyzer.js` | Unused/phantom deps, npm audit | Weekly, /audit |
292
+ | `schema_validator.js` | Database schema validation (Prisma, SQL) | After DB changes |
293
+ | `bundle_analyzer.js` | JS/TS bundle size analysis | Before deploy |
294
+ | `skill_integrator.js` | Maps active skills to their executable scripts | Automatically when skills are invoked |
295
295
  | `swarm_dispatcher.js` | Validate Orchestrator micro-worker JSON payloads | After /orchestrate, before dispatching agents |
296
296
  | `test_swarm_dispatcher.js` | Unit tests for swarm_dispatcher | After modifying swarm_dispatcher.js |
297
297
 
@@ -301,12 +301,12 @@ These scripts live in `.agent/scripts/`. Agents and skills can invoke them:
301
301
  node .agent/scripts/checklist.js .
302
302
  node .agent/scripts/verify_all.js
303
303
  node .agent/scripts/security_scan.js .
304
- python .agent/scripts/lint_runner.py . --fix
305
- python .agent/scripts/test_runner.py . --coverage
306
- python .agent/scripts/dependency_analyzer.py . --audit
307
- python .agent/scripts/schema_validator.py .
308
- python .agent/scripts/bundle_analyzer.py . --build
309
- python .agent/scripts/skill_integrator.py
304
+ node .agent/scripts/lint_runner.js . --fix
305
+ node .agent/scripts/test_runner.js . --coverage
306
+ node .agent/scripts/dependency_analyzer.js . --audit
307
+ node .agent/scripts/schema_validator.js .
308
+ node .agent/scripts/bundle_analyzer.js . --build
309
+ node .agent/scripts/skill_integrator.js
310
310
  node .agent/scripts/swarm_dispatcher.js --file payload.json
311
311
  npx jest test/integration/swarm_dispatcher.test.js
312
312
  ```
@@ -409,18 +409,21 @@ Before modifying any file:
409
409
  ## Fabel-5 Cognitive Boundaries (Wellbeing, Evenhandedness, Memory)
410
410
 
411
411
  ### User Wellbeing & Safety
412
- * **No Psychoanalysis / Diagnosis**: Reflect what is said without diagnosing or assigning psychological narratives (e.g. "you restrict because of trauma"). Suggest professional help without clinical labels.
413
- * **Self-Harm Interruptions**: Never suggest physical substitutes (holding ice, snapping rubber bands, drawing lines) or mimic self-harm. They reinforce the self-harm loop.
414
- * **No Over-reliance**: Do not thank the user for reaching out, encourage them to stay, or reiterate willingness to continue. Avoid conversational dependencies.
415
- * **Positive Paths**: Acknowledge distress without reflective listening that amplifies negative spirals. Keep paths to external help open.
412
+
413
+ - **No Psychoanalysis / Diagnosis**: Reflect what is said without diagnosing or assigning psychological narratives (e.g. "you restrict because of trauma"). Suggest professional help without clinical labels.
414
+ - **Self-Harm Interruptions**: Never suggest physical substitutes (holding ice, snapping rubber bands, drawing lines) or mimic self-harm. They reinforce the self-harm loop.
415
+ - **No Over-reliance**: Do not thank the user for reaching out, encourage them to stay, or reiterate willingness to continue. Avoid conversational dependencies.
416
+ - **Positive Paths**: Acknowledge distress without reflective listening that amplifies negative spirals. Keep paths to external help open.
416
417
 
417
418
  ### Moral & Political Evenhandedness
418
- * **Nuance Over Brevity**: Reject requests for simple yes/no or one-word answers on contested political, ethical, or policy issues. Give a fair, balanced overview of existing positions.
419
- * **Opposing Perspectives**: Conclude arguments for positions by presenting opposing viewpoints or empirical disputes even if the user/AI agrees with the primary view.
419
+
420
+ - **Nuance Over Brevity**: Reject requests for simple yes/no or one-word answers on contested political, ethical, or policy issues. Give a fair, balanced overview of existing positions.
421
+ - **Opposing Perspectives**: Conclude arguments for positions by presenting opposing viewpoints or empirical disputes even if the user/AI agrees with the primary view.
420
422
 
421
423
  ### Memory & Preference Boundaries
422
- * **Invisible Integration**: Integrate remembered user context silently without attribution or observation verbs ("I notice in your profile...", "Based on your memory...").
423
- * **Expertise Tuning**: Match language and technical depth to the user's stated background without lecturing.
424
+
425
+ - **Invisible Integration**: Integrate remembered user context silently without attribution or observation verbs ("I notice in your profile...", "Based on your memory...").
426
+ - **Expertise Tuning**: Match language and technical depth to the user's stated background without lecturing.
424
427
 
425
428
  ---
426
429
 
@@ -177,7 +177,7 @@ After integration verification, start the dev server:
177
177
 
178
178
  ```bash
179
179
  # Check for dev script
180
- python .agent/scripts/auto_preview.py start
180
+ node .agent/scripts/auto_preview.js start
181
181
 
182
182
  # Or manually
183
183
  npm run dev
@@ -185,8 +185,8 @@ repos:
185
185
 
186
186
  | Script | Purpose | Run With |
187
187
  | -------------------------- | ----------------------------------------- | ------------------------------------------------ |
188
- | `scripts/lint_runner.py` | Runs project linting and reports findings | `python scripts/lint_runner.py <project_path>` |
189
- | `scripts/type_coverage.py` | Measures TypeScript type coverage | `python scripts/type_coverage.py <project_path>` |
188
+ | `.agent/scripts/lint_runner.js` | Runs project linting and reports findings | `node .agent/scripts/lint_runner.js <project_path>` |
189
+ | `scripts/type_coverage.py` | Measures TypeScript type coverage | `python scripts/type_coverage.py <project_path>` |
190
190
 
191
191
  ---
192
192
 
@@ -2,7 +2,7 @@
2
2
  name: project-idioms
3
3
  description: >
4
4
  Auto-evolved skill containing project-specific architectural idioms extracted
5
- from the developer's own code decisions. Generated by skill_evolution.py.
5
+ from the developer's own code decisions. Generated by skill_evolution.js.
6
6
  Commit this file to share your Engineering Culture across the team.
7
7
  Every agent MUST respect these idioms above generic defaults.
8
8
  version: auto
@@ -33,7 +33,7 @@ routing:
33
33
  ## How Idioms Are Born
34
34
 
35
35
  1. Developer commits code that **differs** from what the AI proposed.
36
- 2. `skill_evolution.py digest` extracts the architectural delta (semantic filter).
36
+ 2. `skill_evolution.js digest` extracts the architectural delta (semantic filter).
37
37
  3. A minimal LLM prompt (< 500 tokens) identifies the **WHY** behind the change.
38
38
  4. The idiom is recorded here with a stable pattern + reason pair.
39
39
  5. All future code generations must align with these idioms.
@@ -54,16 +54,16 @@ Run after committing or staging a meaningful architectural change:
54
54
 
55
55
  ```bash
56
56
  # Analyze staged changes (default)
57
- python .agent/scripts/skill_evolution.py digest
57
+ node .agent/scripts/skill_evolution.js digest
58
58
 
59
59
  # Preview without writing
60
- python .agent/scripts/skill_evolution.py digest --dry-run
60
+ node .agent/scripts/skill_evolution.js digest --dry-run
61
61
 
62
62
  # Analyze last commit instead of staged
63
- python .agent/scripts/skill_evolution.py digest --head
63
+ node .agent/scripts/skill_evolution.js digest --head
64
64
 
65
65
  # Check current idiom count and token savings
66
- python .agent/scripts/skill_evolution.py status
66
+ node .agent/scripts/skill_evolution.js status
67
67
  ```
68
68
 
69
69
  ---
@@ -87,7 +87,7 @@ python .agent/scripts/skill_evolution.py status
87
87
  Last digest: `never`
88
88
  Total cycles: `0`
89
89
 
90
- Run `python .agent/scripts/skill_evolution.py status` to see full statistics.
90
+ Run `node .agent/scripts/skill_evolution.js status` to see full statistics.
91
91
 
92
92
  ---
93
93
 
@@ -21,7 +21,7 @@ You are a specialist in analyzing test output — not writing tests, but _unders
21
21
  - After a test run with multiple failures.
22
22
  - When the user says "tests are failing", "analyze test results", "what broke?", or "test failed".
23
23
  - During CI/CD pipeline debugging.
24
- - When `test_runner.py` or any test command exits with failures.
24
+ - When `test_runner.js` or any test command exits with failures.
25
25
  - When paired with `systematic-debugging` for deep root-cause investigation.
26
26
 
27
27
  ## Analysis Pipeline
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: Auto-fix known issues with lint, formatting, imports, and TypeScript errors. Runs lint_runner.py and auto-fixers. Human approval required before applying any changes. Shows a diff of what will change before writing to disk.
2
+ description: Auto-fix known issues with lint, formatting, imports, and TypeScript errors. Runs lint_runner.js and auto-fixers. Human approval required before applying any changes. Shows a diff of what will change before writing to disk.
3
3
  required-skills: lint-and-validate, clean-code
4
4
  ---
5
5
 
@@ -55,7 +55,7 @@ Read BEFORE fixing:
55
55
 
56
56
  ```bash
57
57
  # 1. Run lint with auto-fix
58
- python .agent/scripts/lint_runner.py . --fix
58
+ node .agent/scripts/lint_runner.js . --fix
59
59
 
60
60
  # 2. Fix remaining TypeScript errors (auto-detectable only)
61
61
  npx tsc --noEmit 2>&1 | grep "error TS"
@@ -128,7 +128,7 @@ complexity-reviewer→ Enforces the Dependency Ladder to prevent over-engineerin
128
128
  | `aria`, `wcag`, `a11y`, `accessibility` | `accessibility-reviewer` + `ui-ux-auditor` |
129
129
  | `import`, `package`, `npm`, `require` | `dependency-reviewer` |
130
130
 
131
- > For maximum safety on critical code: use `/tribunal-full` for all 19 reviewers simultaneously.
131
+ > For maximum safety on critical code: use `/tribunal-full` for all 20 reviewers simultaneously.
132
132
 
133
133
  ---
134
134
 
@@ -1,5 +1,5 @@
1
1
  ---
2
- description: Preview server start, stop, and status check. Local development server management. Uses auto_preview.py for automated lifecycle control. Shows current URL and hot-reload status.
2
+ description: Preview server start, stop, and status check. Local development server management. Uses auto_preview.js for automated lifecycle control. Shows current URL and hot-reload status.
3
3
  required-skills: bash-linux, frontend-specialist
4
4
  ---
5
5
 
@@ -34,16 +34,16 @@ Read BEFORE managing preview:
34
34
 
35
35
  ```bash
36
36
  # Start
37
- python .agent/scripts/auto_preview.py start
37
+ node .agent/scripts/auto_preview.js start
38
38
 
39
39
  # Stop
40
- python .agent/scripts/auto_preview.py stop
40
+ node .agent/scripts/auto_preview.js stop
41
41
 
42
42
  # Restart
43
- python .agent/scripts/auto_preview.py restart
43
+ node .agent/scripts/auto_preview.js restart
44
44
 
45
45
  # Status
46
- python .agent/scripts/auto_preview.py status
46
+ node .agent/scripts/auto_preview.js status
47
47
  ```
48
48
 
49
49
  ---
@@ -44,7 +44,7 @@ git log --oneline -5
44
44
  find src/ -name "*.ts" -o -name "*.tsx" -newer package.json 2>/dev/null | head -10
45
45
 
46
46
  # 4. Server status (non-blocking)
47
- python .agent/scripts/auto_preview.py status 2>/dev/null
47
+ node .agent/scripts/auto_preview.js status 2>/dev/null
48
48
 
49
49
  # 5. Quick type check
50
50
  npx tsc --noEmit 2>&1 | tail -5
@@ -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)
@@ -124,7 +124,7 @@ After 3 failed attempts:
124
124
 
125
125
  | Outcome | Next Command |
126
126
  | :------------------------- | :--------------------------------------------- |
127
- | All 19 reviewers approve | → `/deploy` — highest confidence state |
127
+ | All 20 reviewers approve | → `/deploy` — highest confidence state |
128
128
  | Reject with multiple fixes | → `/fix` for simple issues, `/debug` for logic |
129
129
  | Performance rejection | → `/tribunal-speed` for granular profiling |
130
130
  | Security rejection | → Immediate `/tribunal-backend` to resolve |
@@ -181,7 +181,7 @@ If a specialist fails after 3 retries:
181
181
  | :------------------------- | :------------------------------- | :--------------------- | :--------------------------------------- |
182
182
  | `/tribunal-performance` | logic + performance-reviewer | Generic CWV check | Quick single-file perf scan |
183
183
  | `/tribunal-speed` | vitals + db-latency + throughput | Deep 3-domain parallel | Full-stack perf audit |
184
- | `/tribunal-full` | All 19 agents | Everything | Maximum coverage (security + perf + all) |
184
+ | `/tribunal-full` | All 20 agents | Everything | Maximum coverage (security + perf + all) |
185
185
  | `/performance-benchmarker` | Lighthouse + bundle | Measurement only | Get actual scores, not code review |
186
186
 
187
187
  ---
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tribunal-kit",
3
- "version": "5.8.2",
3
+ "version": "5.8.3",
4
4
  "description": "The operating system for AI software engineering — governance, memory, review pipelines, and reusable skills for every coding agent. 43 specialist agents, 34 workflows, 20 parallel Tribunal code reviewers, MCP server, Rust core engine, and long-running autonomous agent harness for Cursor, VSCode, Windsurf, Claude Code, and Aider.",
5
5
  "keywords": [
6
6
  "ai",
@@ -99,12 +99,12 @@
99
99
  "typescript": "^5.4.5"
100
100
  },
101
101
  "optionalDependencies": {
102
- "@tribunal-kit/core-darwin-arm64": "^5.8.2",
103
- "@tribunal-kit/core-darwin-x64": "^5.8.2",
104
- "@tribunal-kit/core-linux-arm64": "^5.8.2",
105
- "@tribunal-kit/core-linux-x64": "^5.8.2",
106
- "@tribunal-kit/core-win32-arm64": "^5.8.2",
107
- "@tribunal-kit/core-win32-x64": "^5.8.2"
102
+ "@tribunal-kit/core-darwin-arm64": "^5.8.3",
103
+ "@tribunal-kit/core-darwin-x64": "^5.8.3",
104
+ "@tribunal-kit/core-linux-arm64": "^5.8.3",
105
+ "@tribunal-kit/core-linux-x64": "^5.8.3",
106
+ "@tribunal-kit/core-win32-arm64": "^5.8.3",
107
+ "@tribunal-kit/core-win32-x64": "^5.8.3"
108
108
  },
109
109
  "jest": {
110
110
  "testMatch": [