tribunal-kit 4.2.0 โ 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.
- package/.agent/ARCHITECTURE.md +21 -14
- package/.agent/agents/swarm-worker-contracts.md +5 -5
- package/.agent/agents/ui-ux-auditor.md +292 -0
- package/.agent/rules/GEMINI.md +8 -8
- package/.agent/scripts/__pycache__/_colors.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/_utils.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/case_law_manager.cpython-311.pyc +0 -0
- package/.agent/scripts/_colors.js +18 -0
- package/.agent/scripts/_utils.js +42 -0
- package/.agent/scripts/auto_preview.js +197 -0
- package/.agent/scripts/bundle_analyzer.js +290 -0
- package/.agent/scripts/case_law_manager.js +684 -0
- package/.agent/scripts/checklist.js +266 -0
- package/.agent/scripts/colors.js +17 -0
- package/.agent/scripts/compress_skills.js +141 -0
- package/.agent/scripts/consolidate_skills.js +149 -0
- package/.agent/scripts/context_broker.js +609 -0
- package/.agent/scripts/deep_compress.js +150 -0
- package/.agent/scripts/dependency_analyzer.js +272 -0
- package/.agent/scripts/inner_loop_validator.js +465 -0
- package/.agent/scripts/lint_runner.js +187 -0
- package/.agent/scripts/minify_context.js +100 -0
- package/.agent/scripts/patch_skills_meta.js +156 -0
- package/.agent/scripts/patch_skills_output.js +244 -0
- package/.agent/scripts/schema_validator.js +297 -0
- package/.agent/scripts/security_scan.js +303 -0
- package/.agent/scripts/session_manager.js +276 -0
- package/.agent/scripts/skill_evolution.js +644 -0
- package/.agent/scripts/skill_integrator.js +313 -0
- package/.agent/scripts/strengthen_skills.js +193 -0
- package/.agent/scripts/strip_tribunal.js +47 -0
- package/.agent/scripts/swarm_dispatcher.js +360 -0
- package/.agent/scripts/test_runner.js +193 -0
- package/.agent/scripts/utils.js +32 -0
- package/.agent/scripts/verify_all.js +256 -0
- package/.agent/skills/agent-organizer/SKILL.md +3 -3
- package/.agent/skills/agentic-patterns/SKILL.md +3 -3
- package/.agent/skills/ai-prompt-injection-defense/SKILL.md +3 -3
- package/.agent/skills/api-patterns/SKILL.md +3 -3
- package/.agent/skills/api-security-auditor/SKILL.md +3 -3
- package/.agent/skills/app-builder/SKILL.md +3 -3
- package/.agent/skills/app-builder/templates/SKILL.md +1 -1
- package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +1 -1
- package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +1 -1
- package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +1 -1
- package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +1 -1
- package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +1 -1
- package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +1 -1
- package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +1 -1
- package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +1 -1
- package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +1 -1
- package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +1 -1
- package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +1 -1
- package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +1 -1
- package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +1 -1
- package/.agent/skills/appflow-wireframe/SKILL.md +3 -3
- package/.agent/skills/architecture/SKILL.md +3 -3
- package/.agent/skills/authentication-best-practices/SKILL.md +3 -3
- package/.agent/skills/bash-linux/SKILL.md +3 -3
- package/.agent/skills/behavioral-modes/SKILL.md +3 -3
- package/.agent/skills/brainstorming/SKILL.md +3 -3
- package/.agent/skills/building-native-ui/SKILL.md +3 -3
- package/.agent/skills/clean-code/SKILL.md +3 -3
- package/.agent/skills/code-review-checklist/SKILL.md +3 -3
- package/.agent/skills/config-validator/SKILL.md +3 -3
- package/.agent/skills/csharp-developer/SKILL.md +3 -3
- package/.agent/skills/data-validation-schemas/SKILL.md +3 -3
- package/.agent/skills/database-design/SKILL.md +3 -3
- package/.agent/skills/deployment-procedures/SKILL.md +3 -3
- package/.agent/skills/devops-engineer/SKILL.md +3 -3
- package/.agent/skills/devops-incident-responder/SKILL.md +3 -3
- package/.agent/skills/doc.md +1 -1
- package/.agent/skills/documentation-templates/SKILL.md +3 -3
- package/.agent/skills/edge-computing/SKILL.md +3 -3
- package/.agent/skills/error-resilience/SKILL.md +3 -3
- package/.agent/skills/extract-design-system/SKILL.md +3 -3
- package/.agent/skills/framer-motion-expert/SKILL.md +3 -4
- package/.agent/skills/frontend-design/SKILL.md +3 -3
- package/.agent/skills/game-design-expert/SKILL.md +3 -3
- package/.agent/skills/game-engineering-expert/SKILL.md +3 -3
- package/.agent/skills/geo-fundamentals/SKILL.md +3 -3
- package/.agent/skills/github-operations/SKILL.md +3 -3
- package/.agent/skills/gsap-core/SKILL.md +0 -2
- package/.agent/skills/gsap-frameworks/SKILL.md +0 -2
- package/.agent/skills/gsap-performance/SKILL.md +0 -2
- package/.agent/skills/gsap-plugins/SKILL.md +0 -2
- package/.agent/skills/gsap-react/SKILL.md +0 -2
- package/.agent/skills/gsap-scrolltrigger/SKILL.md +0 -2
- package/.agent/skills/gsap-timeline/SKILL.md +0 -2
- package/.agent/skills/gsap-utils/SKILL.md +0 -2
- package/.agent/skills/i18n-localization/SKILL.md +3 -3
- package/.agent/skills/intelligent-routing/SKILL.md +3 -3
- package/.agent/skills/lint-and-validate/SKILL.md +3 -3
- package/.agent/skills/llm-engineering/SKILL.md +3 -3
- package/.agent/skills/local-first/SKILL.md +3 -3
- package/.agent/skills/mcp-builder/SKILL.md +3 -3
- package/.agent/skills/mobile-design/SKILL.md +3 -3
- package/.agent/skills/monorepo-management/SKILL.md +3 -3
- package/.agent/skills/motion-engineering/SKILL.md +4 -4
- package/.agent/skills/nextjs-react-expert/SKILL.md +3 -3
- package/.agent/skills/nodejs-best-practices/SKILL.md +3 -3
- package/.agent/skills/observability/SKILL.md +3 -3
- package/.agent/skills/parallel-agents/SKILL.md +3 -3
- package/.agent/skills/performance-profiling/SKILL.md +3 -3
- package/.agent/skills/plan-writing/SKILL.md +3 -3
- package/.agent/skills/platform-engineer/SKILL.md +3 -3
- package/.agent/skills/playwright-best-practices/SKILL.md +3 -3
- package/.agent/skills/powershell-windows/SKILL.md +3 -3
- package/.agent/skills/project-idioms/SKILL.md +3 -3
- package/.agent/skills/python-patterns/SKILL.md +3 -3
- package/.agent/skills/python-pro/SKILL.md +3 -3
- package/.agent/skills/react-specialist/SKILL.md +3 -3
- package/.agent/skills/readme-builder/SKILL.md +3 -3
- package/.agent/skills/realtime-patterns/SKILL.md +3 -3
- package/.agent/skills/red-team-tactics/SKILL.md +3 -3
- package/.agent/skills/rust-pro/SKILL.md +3 -3
- package/.agent/skills/seo-fundamentals/SKILL.md +3 -3
- package/.agent/skills/server-management/SKILL.md +3 -3
- package/.agent/skills/shadcn-ui-expert/SKILL.md +3 -3
- package/.agent/skills/skill-creator/SKILL.md +3 -3
- package/.agent/skills/sql-pro/SKILL.md +3 -3
- package/.agent/skills/supabase-postgres-best-practices/SKILL.md +3 -3
- package/.agent/skills/swiftui-expert/SKILL.md +3 -3
- package/.agent/skills/systematic-debugging/SKILL.md +3 -3
- package/.agent/skills/tailwind-patterns/SKILL.md +3 -3
- package/.agent/skills/tdd-workflow/SKILL.md +3 -3
- package/.agent/skills/test-result-analyzer/SKILL.md +3 -3
- package/.agent/skills/testing-patterns/SKILL.md +3 -3
- package/.agent/skills/trend-researcher/SKILL.md +3 -3
- package/.agent/skills/typescript-advanced/SKILL.md +3 -3
- package/.agent/skills/ui-ux-pro-max/SKILL.md +3 -3
- package/.agent/skills/ui-ux-researcher/SKILL.md +3 -3
- package/.agent/skills/vue-expert/SKILL.md +3 -3
- package/.agent/skills/vulnerability-scanner/SKILL.md +3 -3
- package/.agent/skills/web-accessibility-auditor/SKILL.md +3 -3
- package/.agent/skills/web-design-guidelines/SKILL.md +3 -3
- package/.agent/skills/webapp-testing/SKILL.md +3 -3
- package/.agent/skills/whimsy-injector/SKILL.md +3 -3
- package/.agent/skills/workflow-optimizer/SKILL.md +3 -3
- package/.agent/workflows/audit.md +6 -6
- package/.agent/workflows/deploy.md +1 -1
- package/.agent/workflows/generate.md +23 -6
- package/.agent/workflows/session.md +5 -5
- package/.agent/workflows/swarm.md +2 -2
- package/README.md +64 -8
- package/bin/tribunal-kit.js +277 -45
- package/package.json +9 -6
- package/scripts/changelog.js +167 -0
- package/scripts/sync-version.js +81 -0
- package/.agent/scripts/__pycache__/auto_preview.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/bundle_analyzer.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/checklist.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/dependency_analyzer.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/security_scan.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/session_manager.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/skill_integrator.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/swarm_dispatcher.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/test_runner.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/verify_all.cpython-311.pyc +0 -0
- package/.agent/scripts/auto_preview.py +0 -180
- package/.agent/scripts/bundle_analyzer.py +0 -259
- package/.agent/scripts/case_law_manager.py +0 -755
- package/.agent/scripts/checklist.py +0 -209
- package/.agent/scripts/compress_skills.py +0 -167
- package/.agent/scripts/consolidate_skills.py +0 -173
- package/.agent/scripts/deep_compress.py +0 -202
- package/.agent/scripts/dependency_analyzer.py +0 -247
- package/.agent/scripts/lint_runner.py +0 -188
- package/.agent/scripts/minify_context.py +0 -80
- package/.agent/scripts/patch_skills_meta.py +0 -177
- package/.agent/scripts/patch_skills_output.py +0 -285
- package/.agent/scripts/schema_validator.py +0 -279
- package/.agent/scripts/security_scan.py +0 -224
- package/.agent/scripts/session_manager.py +0 -261
- package/.agent/scripts/skill_evolution.py +0 -563
- package/.agent/scripts/skill_integrator.py +0 -234
- package/.agent/scripts/strengthen_skills.py +0 -220
- package/.agent/scripts/strip_tribunal.py +0 -41
- package/.agent/scripts/swarm_dispatcher.py +0 -350
- package/.agent/scripts/test_runner.py +0 -192
- package/.agent/scripts/test_swarm_dispatcher.py +0 -163
- package/.agent/scripts/verify_all.py +0 -195
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* verify_all.js โ Full pre-deploy validation suite for the Tribunal Agent Kit.
|
|
4
|
+
*
|
|
5
|
+
* Runs comprehensive checks before any production deployment.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* node .agent/scripts/verify_all.js
|
|
9
|
+
* node .agent/scripts/verify_all.js --skip build,deps
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
'use strict';
|
|
13
|
+
|
|
14
|
+
const fs = require('fs');
|
|
15
|
+
const path = require('path');
|
|
16
|
+
const { execFileSync } = require('child_process');
|
|
17
|
+
|
|
18
|
+
// โโโ ANSI colors โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
19
|
+
const RED = '\x1b[91m';
|
|
20
|
+
const GREEN = '\x1b[92m';
|
|
21
|
+
const YELLOW = '\x1b[93m';
|
|
22
|
+
const BLUE = '\x1b[94m';
|
|
23
|
+
const BOLD = '\x1b[1m';
|
|
24
|
+
const RESET = '\x1b[0m';
|
|
25
|
+
|
|
26
|
+
const RESULTS = [];
|
|
27
|
+
|
|
28
|
+
function section(title) {
|
|
29
|
+
console.log(`\n${BOLD}${BLUE}โโโ ${title} โโโ${RESET}`);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
function ok(label, note) {
|
|
33
|
+
const msg = `${GREEN}โ
${label}${RESET}` + (note ? ` ${YELLOW}(${note})${RESET}` : '');
|
|
34
|
+
console.log(` ${msg}`);
|
|
35
|
+
RESULTS.push({ label, passed: true, note: note || '' });
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function fail(label, note) {
|
|
39
|
+
const noteStr = note ? `\n ${note}` : '';
|
|
40
|
+
console.log(` ${RED}โ ${label}${RESET}${noteStr}`);
|
|
41
|
+
RESULTS.push({ label, passed: false, note: note || '' });
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function skip(label, reason) {
|
|
45
|
+
console.log(` ${YELLOW}โญ๏ธ ${label} โ ${reason}${RESET}`);
|
|
46
|
+
RESULTS.push({ label, passed: true, note: `skipped: ${reason}` });
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Run a shell command and return true if it exits with code 0.
|
|
51
|
+
*/
|
|
52
|
+
function run(label, cmd, cwd) {
|
|
53
|
+
try {
|
|
54
|
+
const isWindows = process.platform === 'win32';
|
|
55
|
+
let bin = cmd[0];
|
|
56
|
+
if (isWindows && (bin === 'npm' || bin === 'npx')) bin += '.cmd';
|
|
57
|
+
|
|
58
|
+
execFileSync(bin, cmd.slice(1), {
|
|
59
|
+
cwd,
|
|
60
|
+
stdio: 'pipe',
|
|
61
|
+
timeout: 120000,
|
|
62
|
+
encoding: 'utf8',
|
|
63
|
+
});
|
|
64
|
+
ok(label);
|
|
65
|
+
return true;
|
|
66
|
+
} catch (err) {
|
|
67
|
+
if (err.code === 'ENOENT') {
|
|
68
|
+
skip(label, 'tool not installed โ skipping');
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
if (err.killed) {
|
|
72
|
+
fail(label, 'timed out after 120s');
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
const output = ((err.stdout || '') + (err.stderr || '')).trim();
|
|
76
|
+
fail(label, output ? output.slice(0, 500) : 'non-zero exit code');
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Scan source files for obviously hardcoded credentials.
|
|
84
|
+
*/
|
|
85
|
+
function scanSecrets(cwd) {
|
|
86
|
+
const patterns = ['password=', 'secret=', 'api_key=', 'private_key=', 'auth_token='];
|
|
87
|
+
const found = [];
|
|
88
|
+
const skipDirs = new Set(['node_modules', '.git', 'dist', '__pycache__', '.agent']);
|
|
89
|
+
|
|
90
|
+
function walk(dir) {
|
|
91
|
+
let entries;
|
|
92
|
+
try { entries = fs.readdirSync(dir, { withFileTypes: true }); } catch { return; }
|
|
93
|
+
|
|
94
|
+
for (const entry of entries) {
|
|
95
|
+
const fullPath = path.join(dir, entry.name);
|
|
96
|
+
if (entry.isDirectory()) {
|
|
97
|
+
if (!skipDirs.has(entry.name)) walk(fullPath);
|
|
98
|
+
} else if (entry.isFile()) {
|
|
99
|
+
if (!/\.(ts|js|tsx|jsx|py)$/.test(entry.name)) continue;
|
|
100
|
+
|
|
101
|
+
let content;
|
|
102
|
+
try { content = fs.readFileSync(fullPath, 'utf8'); } catch { continue; }
|
|
103
|
+
|
|
104
|
+
const lines = content.split('\n');
|
|
105
|
+
for (let i = 0; i < lines.length; i++) {
|
|
106
|
+
const low = lines[i].toLowerCase().trim();
|
|
107
|
+
const hasPattern = patterns.some(p => low.includes(p));
|
|
108
|
+
if (hasPattern && !low.startsWith('#') && low.includes('=')) {
|
|
109
|
+
const rel = path.relative(cwd, fullPath);
|
|
110
|
+
found.push(`${rel}:${i + 1}`);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
walk(cwd);
|
|
118
|
+
|
|
119
|
+
if (found.length > 0) {
|
|
120
|
+
fail('Secret scan', found.slice(0, 5).join('\n '));
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
ok('Secret scan โ no hardcoded credentials found');
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Check if there's a package.json to run npm commands against.
|
|
130
|
+
*/
|
|
131
|
+
function hasNpm(cwd) {
|
|
132
|
+
return fs.existsSync(path.join(cwd, 'package.json'));
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Run all verification checks. Returns number of failures.
|
|
138
|
+
*/
|
|
139
|
+
function verifyAll(cwd, skipped) {
|
|
140
|
+
let failures = 0;
|
|
141
|
+
|
|
142
|
+
section('1 โ Secret Scan');
|
|
143
|
+
if (!skipped.includes('secrets')) {
|
|
144
|
+
if (!scanSecrets(cwd)) failures++;
|
|
145
|
+
} else {
|
|
146
|
+
skip('Secret scan', 'skipped by flag');
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
section('2 โ TypeScript');
|
|
150
|
+
if (!skipped.includes('typescript')) {
|
|
151
|
+
if (hasNpm(cwd)) {
|
|
152
|
+
if (!run('tsc --noEmit', ['npx', 'tsc', '--noEmit'], cwd)) failures++;
|
|
153
|
+
} else {
|
|
154
|
+
skip('TypeScript', 'no package.json found in project');
|
|
155
|
+
}
|
|
156
|
+
} else {
|
|
157
|
+
skip('TypeScript', 'skipped by flag');
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
section('3 โ ESLint');
|
|
161
|
+
if (!skipped.includes('lint')) {
|
|
162
|
+
if (hasNpm(cwd)) {
|
|
163
|
+
if (!run('ESLint', ['npx', 'eslint', '.', '--max-warnings=0'], cwd)) failures++;
|
|
164
|
+
} else {
|
|
165
|
+
skip('ESLint', 'no package.json found in project');
|
|
166
|
+
}
|
|
167
|
+
} else {
|
|
168
|
+
skip('ESLint', 'skipped by flag');
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
section('4 โ Unit Tests');
|
|
172
|
+
if (!skipped.includes('tests')) {
|
|
173
|
+
if (hasNpm(cwd)) {
|
|
174
|
+
if (!run('Test suite', ['npm', 'test', '--', '--passWithNoTests'], cwd)) failures++;
|
|
175
|
+
} else {
|
|
176
|
+
skip('Tests', 'no package.json found in project');
|
|
177
|
+
}
|
|
178
|
+
} else {
|
|
179
|
+
skip('Tests', 'skipped by flag');
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
section('5 โ Build');
|
|
183
|
+
if (!skipped.includes('build')) {
|
|
184
|
+
if (hasNpm(cwd)) {
|
|
185
|
+
if (!run('npm run build', ['npm', 'run', 'build'], cwd)) failures++;
|
|
186
|
+
} else {
|
|
187
|
+
skip('Build', 'no package.json found in project');
|
|
188
|
+
}
|
|
189
|
+
} else {
|
|
190
|
+
skip('Build', 'skipped by flag');
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
section('6 โ Dependency Audit');
|
|
194
|
+
if (!skipped.includes('deps')) {
|
|
195
|
+
if (hasNpm(cwd)) {
|
|
196
|
+
if (!run('npm audit', ['npm', 'audit', '--audit-level=high'], cwd)) failures++;
|
|
197
|
+
} else {
|
|
198
|
+
skip('Dependency audit', 'no package.json found in project');
|
|
199
|
+
}
|
|
200
|
+
} else {
|
|
201
|
+
skip('Dependency audit', 'skipped by flag');
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
// โโโ Summary โโโ
|
|
205
|
+
console.log(`\n${BOLD}โโโ Summary โโโ${RESET}`);
|
|
206
|
+
for (const { label, passed, note } of RESULTS) {
|
|
207
|
+
const status = passed ? `${GREEN}โ
${RESET}` : `${RED}โ${RESET}`;
|
|
208
|
+
const noteStr = (!passed && note) ? ` ${YELLOW}(${note})${RESET}` : '';
|
|
209
|
+
console.log(` ${status} ${label}${noteStr}`);
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
console.log();
|
|
213
|
+
if (failures === 0) {
|
|
214
|
+
console.log(`${GREEN}${BOLD}All checks passed โ safe to deploy.${RESET}`);
|
|
215
|
+
} else {
|
|
216
|
+
console.log(`${RED}${BOLD}${failures} check(s) failed โ fix before deploying.${RESET}`);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
return failures;
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
/**
|
|
224
|
+
* Parse CLI arguments manually (no external dependencies).
|
|
225
|
+
*/
|
|
226
|
+
function parseArgs(argv) {
|
|
227
|
+
const args = { skip: [] };
|
|
228
|
+
const raw = argv.slice(2);
|
|
229
|
+
|
|
230
|
+
for (let i = 0; i < raw.length; i++) {
|
|
231
|
+
if (raw[i] === '--skip' && raw[i + 1]) {
|
|
232
|
+
args.skip = raw[++i].split(',').map(s => s.trim().toLowerCase()).filter(Boolean);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
return args;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
function main() {
|
|
240
|
+
const args = parseArgs(process.argv);
|
|
241
|
+
const cwd = process.cwd();
|
|
242
|
+
|
|
243
|
+
console.log(`${BOLD}Tribunal โ verify_all.js${RESET}`);
|
|
244
|
+
console.log(`Project: ${cwd}\n`);
|
|
245
|
+
|
|
246
|
+
const failures = verifyAll(cwd, args.skip);
|
|
247
|
+
process.exit(failures > 0 ? 1 : 0);
|
|
248
|
+
}
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
// โโโ Exports for testing & programmatic use โโโ
|
|
252
|
+
module.exports = { verifyAll, scanSecrets, hasNpm };
|
|
253
|
+
|
|
254
|
+
if (require.main === module) {
|
|
255
|
+
main();
|
|
256
|
+
}
|
|
@@ -102,7 +102,7 @@ Automation without oversight is reckless. The Organizer manages when to pause an
|
|
|
102
102
|
|
|
103
103
|
---
|
|
104
104
|
|
|
105
|
-
|
|
105
|
+
|
|
106
106
|
|
|
107
107
|
AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
|
|
108
108
|
|
|
@@ -114,7 +114,7 @@ AI coding assistants often fall into specific bad habits when dealing with this
|
|
|
114
114
|
|
|
115
115
|
---
|
|
116
116
|
|
|
117
|
-
|
|
117
|
+
|
|
118
118
|
|
|
119
119
|
**Slash command: `/review` or `/tribunal-full`**
|
|
120
120
|
**Active reviewers: `logic-reviewer` ยท `security-auditor`**
|
|
@@ -125,7 +125,7 @@ AI coding assistants often fall into specific bad habits when dealing with this
|
|
|
125
125
|
2. **Silent Degradation:** Catching and suppressing errors without logging or handling.
|
|
126
126
|
3. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
|
|
127
127
|
|
|
128
|
-
|
|
128
|
+
|
|
129
129
|
|
|
130
130
|
Review these questions before confirming output:
|
|
131
131
|
```
|
|
@@ -267,7 +267,7 @@ Evidence: [link to terminal output, test result, or file diff]
|
|
|
267
267
|
|
|
268
268
|
---
|
|
269
269
|
|
|
270
|
-
|
|
270
|
+
|
|
271
271
|
|
|
272
272
|
AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
|
|
273
273
|
|
|
@@ -279,7 +279,7 @@ AI coding assistants often fall into specific bad habits when dealing with this
|
|
|
279
279
|
|
|
280
280
|
---
|
|
281
281
|
|
|
282
|
-
|
|
282
|
+
|
|
283
283
|
|
|
284
284
|
**Slash command: `/review` or `/tribunal-full`**
|
|
285
285
|
**Active reviewers: `logic-reviewer` ยท `security-auditor`**
|
|
@@ -290,7 +290,7 @@ AI coding assistants often fall into specific bad habits when dealing with this
|
|
|
290
290
|
2. **Silent Degradation:** Catching and suppressing errors without logging or handling.
|
|
291
291
|
3. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
|
|
292
292
|
|
|
293
|
-
|
|
293
|
+
|
|
294
294
|
|
|
295
295
|
Review these questions before confirming output:
|
|
296
296
|
```
|
|
@@ -136,7 +136,7 @@ Many injections occur because the LLM includes malicious data in its output, whi
|
|
|
136
136
|
|
|
137
137
|
---
|
|
138
138
|
|
|
139
|
-
|
|
139
|
+
|
|
140
140
|
|
|
141
141
|
AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
|
|
142
142
|
|
|
@@ -148,7 +148,7 @@ AI coding assistants often fall into specific bad habits when dealing with this
|
|
|
148
148
|
|
|
149
149
|
---
|
|
150
150
|
|
|
151
|
-
|
|
151
|
+
|
|
152
152
|
|
|
153
153
|
**Slash command: `/review` or `/tribunal-full`**
|
|
154
154
|
**Active reviewers: `logic-reviewer` ยท `security-auditor`**
|
|
@@ -159,7 +159,7 @@ AI coding assistants often fall into specific bad habits when dealing with this
|
|
|
159
159
|
2. **Silent Degradation:** Catching and suppressing errors without logging or handling.
|
|
160
160
|
3. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
|
|
161
161
|
|
|
162
|
-
|
|
162
|
+
|
|
163
163
|
|
|
164
164
|
Review these questions before confirming output:
|
|
165
165
|
```
|
|
@@ -199,7 +199,7 @@ Protect against:
|
|
|
199
199
|
|
|
200
200
|
---
|
|
201
201
|
|
|
202
|
-
|
|
202
|
+
|
|
203
203
|
|
|
204
204
|
AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
|
|
205
205
|
|
|
@@ -211,7 +211,7 @@ AI coding assistants often fall into specific bad habits when dealing with this
|
|
|
211
211
|
|
|
212
212
|
---
|
|
213
213
|
|
|
214
|
-
|
|
214
|
+
|
|
215
215
|
|
|
216
216
|
**Slash command: `/review` or `/tribunal-full`**
|
|
217
217
|
**Active reviewers: `logic-reviewer` ยท `security-auditor`**
|
|
@@ -222,7 +222,7 @@ AI coding assistants often fall into specific bad habits when dealing with this
|
|
|
222
222
|
2. **Silent Degradation:** Catching and suppressing errors without logging or handling.
|
|
223
223
|
3. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
|
|
224
224
|
|
|
225
|
-
|
|
225
|
+
|
|
226
226
|
|
|
227
227
|
Review these questions before confirming output:
|
|
228
228
|
```
|
|
@@ -145,7 +145,7 @@ const server = new ApolloServer({
|
|
|
145
145
|
|
|
146
146
|
---
|
|
147
147
|
|
|
148
|
-
|
|
148
|
+
|
|
149
149
|
|
|
150
150
|
AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
|
|
151
151
|
|
|
@@ -157,7 +157,7 @@ AI coding assistants often fall into specific bad habits when dealing with this
|
|
|
157
157
|
|
|
158
158
|
---
|
|
159
159
|
|
|
160
|
-
|
|
160
|
+
|
|
161
161
|
|
|
162
162
|
**Slash command: `/review` or `/tribunal-full`**
|
|
163
163
|
**Active reviewers: `logic-reviewer` ยท `security-auditor`**
|
|
@@ -168,7 +168,7 @@ AI coding assistants often fall into specific bad habits when dealing with this
|
|
|
168
168
|
2. **Silent Degradation:** Catching and suppressing errors without logging or handling.
|
|
169
169
|
3. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
|
|
170
170
|
|
|
171
|
-
|
|
171
|
+
|
|
172
172
|
|
|
173
173
|
Review these questions before confirming output:
|
|
174
174
|
```
|
|
@@ -524,7 +524,7 @@ Monorepo:
|
|
|
524
524
|
|
|
525
525
|
---
|
|
526
526
|
|
|
527
|
-
|
|
527
|
+
|
|
528
528
|
|
|
529
529
|
AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
|
|
530
530
|
|
|
@@ -536,7 +536,7 @@ AI coding assistants often fall into specific bad habits when dealing with this
|
|
|
536
536
|
|
|
537
537
|
---
|
|
538
538
|
|
|
539
|
-
|
|
539
|
+
|
|
540
540
|
|
|
541
541
|
**Slash command: `/review` or `/tribunal-full`**
|
|
542
542
|
**Active reviewers: `logic-reviewer` ยท `security-auditor`**
|
|
@@ -547,7 +547,7 @@ AI coding assistants often fall into specific bad habits when dealing with this
|
|
|
547
547
|
2. **Silent Degradation:** Catching and suppressing errors without logging or handling.
|
|
548
548
|
3. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
|
|
549
549
|
|
|
550
|
-
|
|
550
|
+
|
|
551
551
|
|
|
552
552
|
Review these questions before confirming output:
|
|
553
553
|
```
|
|
@@ -119,4 +119,4 @@ project-name/
|
|
|
119
119
|
- **Mutations**: Use Server Actions combined with React 19's `useActionState` to handle loading and error states instead of manual useState.
|
|
120
120
|
- **Type Safety**: Share Zod schemas between Server Actions (input validation) and Client Forms.
|
|
121
121
|
- **Security**: Always validate input data with Zod before passing it to Prisma.
|
|
122
|
-
- **Styling**: Use native CSS variables in Tailwind v4 for easier dynamic theming.
|
|
122
|
+
- **Styling**: Use native CSS variables in Tailwind v4 for easier dynamic theming.
|
|
@@ -166,4 +166,4 @@ export const metadata: Metadata = {
|
|
|
166
166
|
- **React Server Components (RSC)**: Default all components to Server Components. Only add `'use client'` when you need state (`useState`) or event listeners (`onClick`).
|
|
167
167
|
- **Image Optimization**: Use the `<Image />` component but remember `unoptimized: true` for static export or use an external image CDN (Cloudinary/Imgix).
|
|
168
168
|
- **Font Optimization**: Use `next/font` (Google Fonts) to automatically host fonts and prevent layout shift.
|
|
169
|
-
- **Responsive**: Mobile-first design using Tailwind prefixes like `sm:`, `md:`, `lg:`.
|
|
169
|
+
- **Responsive**: Mobile-first design using Tailwind prefixes like `sm:`, `md:`, `lg:`.
|
|
@@ -131,4 +131,4 @@ project-name/
|
|
|
131
131
|
```
|
|
132
132
|
- **Data Fetching**: Sแปญ dแปฅng `useFetch` vแปi `server: false` cho cรกc tรกc vแปฅ client-only, hoแบทc dรนng Server Functions ฤแป type-safety tแปt hฦกn.
|
|
133
133
|
- **State**: Dรนng `defineStore` (Pinia) cho global state, `useState` cแปงa Nuxt cho state ฤฦกn giแบฃn chia sแบป giแปฏa Server/Client.
|
|
134
|
-
- **Type Safety**: Tแปฑ ฤแปng tแบกo type cho API routes (`$fetch` typed automatically).
|
|
134
|
+
- **Type Safety**: Tแปฑ ฤแปng tแบกo type cho API routes (`$fetch` typed automatically).
|
|
@@ -116,4 +116,4 @@ project-name/
|
|
|
116
116
|
- **React 19**: Reduce usage of `useMemo` or `useCallback` thanks to React Compiler (if enabled).
|
|
117
117
|
- **Components**: Build UI primitives (Box, Text) with NativeWind className for reusability.
|
|
118
118
|
- **Assets**: Use `expo-image` instead of default `<Image />` for better caching and performance.
|
|
119
|
-
- **API**: Always wrap API calls with TanStack Query, avoid direct calls in `useEffect`.
|
|
119
|
+
- **API**: Always wrap API calls with TanStack Query, avoid direct calls in `useEffect`.
|
|
@@ -97,7 +97,7 @@ Before writing React, chart exactly what the user can do on the screen and what
|
|
|
97
97
|
|
|
98
98
|
---
|
|
99
99
|
|
|
100
|
-
|
|
100
|
+
|
|
101
101
|
|
|
102
102
|
AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
|
|
103
103
|
|
|
@@ -109,7 +109,7 @@ AI coding assistants often fall into specific bad habits when dealing with this
|
|
|
109
109
|
|
|
110
110
|
---
|
|
111
111
|
|
|
112
|
-
|
|
112
|
+
|
|
113
113
|
|
|
114
114
|
**Slash command: `/review` or `/tribunal-full`**
|
|
115
115
|
**Active reviewers: `logic-reviewer` ยท `security-auditor`**
|
|
@@ -120,7 +120,7 @@ AI coding assistants often fall into specific bad habits when dealing with this
|
|
|
120
120
|
2. **Silent Degradation:** Catching and suppressing errors without logging or handling.
|
|
121
121
|
3. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
|
|
122
122
|
|
|
123
|
-
|
|
123
|
+
|
|
124
124
|
|
|
125
125
|
Review these questions before confirming output:
|
|
126
126
|
```
|
|
@@ -171,7 +171,7 @@ Framework: Next.js API NestJS Microservices
|
|
|
171
171
|
|
|
172
172
|
---
|
|
173
173
|
|
|
174
|
-
|
|
174
|
+
|
|
175
175
|
|
|
176
176
|
AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
|
|
177
177
|
|
|
@@ -183,7 +183,7 @@ AI coding assistants often fall into specific bad habits when dealing with this
|
|
|
183
183
|
|
|
184
184
|
---
|
|
185
185
|
|
|
186
|
-
|
|
186
|
+
|
|
187
187
|
|
|
188
188
|
**Slash command: `/review` or `/tribunal-full`**
|
|
189
189
|
**Active reviewers: `logic-reviewer` ยท `security-auditor`**
|
|
@@ -194,7 +194,7 @@ AI coding assistants often fall into specific bad habits when dealing with this
|
|
|
194
194
|
2. **Silent Degradation:** Catching and suppressing errors without logging or handling.
|
|
195
195
|
3. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
|
|
196
196
|
|
|
197
|
-
|
|
197
|
+
|
|
198
198
|
|
|
199
199
|
Review these questions before confirming output:
|
|
200
200
|
```
|
|
@@ -141,7 +141,7 @@ function canEditPost(user: User, post: Post): boolean {
|
|
|
141
141
|
|
|
142
142
|
---
|
|
143
143
|
|
|
144
|
-
|
|
144
|
+
|
|
145
145
|
|
|
146
146
|
AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
|
|
147
147
|
|
|
@@ -153,7 +153,7 @@ AI coding assistants often fall into specific bad habits when dealing with this
|
|
|
153
153
|
|
|
154
154
|
---
|
|
155
155
|
|
|
156
|
-
|
|
156
|
+
|
|
157
157
|
|
|
158
158
|
**Slash command: `/review` or `/tribunal-full`**
|
|
159
159
|
**Active reviewers: `logic-reviewer` ยท `security-auditor`**
|
|
@@ -164,7 +164,7 @@ AI coding assistants often fall into specific bad habits when dealing with this
|
|
|
164
164
|
2. **Silent Degradation:** Catching and suppressing errors without logging or handling.
|
|
165
165
|
3. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
|
|
166
166
|
|
|
167
|
-
|
|
167
|
+
|
|
168
168
|
|
|
169
169
|
Review these questions before confirming output:
|
|
170
170
|
```
|
|
@@ -131,7 +131,7 @@ done
|
|
|
131
131
|
|
|
132
132
|
---
|
|
133
133
|
|
|
134
|
-
|
|
134
|
+
|
|
135
135
|
|
|
136
136
|
AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
|
|
137
137
|
|
|
@@ -143,7 +143,7 @@ AI coding assistants often fall into specific bad habits when dealing with this
|
|
|
143
143
|
|
|
144
144
|
---
|
|
145
145
|
|
|
146
|
-
|
|
146
|
+
|
|
147
147
|
|
|
148
148
|
**Slash command: `/review` or `/tribunal-full`**
|
|
149
149
|
**Active reviewers: `logic-reviewer` ยท `security-auditor`**
|
|
@@ -154,7 +154,7 @@ AI coding assistants often fall into specific bad habits when dealing with this
|
|
|
154
154
|
2. **Silent Degradation:** Catching and suppressing errors without logging or handling.
|
|
155
155
|
3. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
|
|
156
156
|
|
|
157
|
-
|
|
157
|
+
|
|
158
158
|
|
|
159
159
|
Review these questions before confirming output:
|
|
160
160
|
```
|
|
@@ -175,7 +175,7 @@ Pre-Flight: โ
All checks passed
|
|
|
175
175
|
|
|
176
176
|
---
|
|
177
177
|
|
|
178
|
-
|
|
178
|
+
|
|
179
179
|
|
|
180
180
|
AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
|
|
181
181
|
|
|
@@ -187,7 +187,7 @@ AI coding assistants often fall into specific bad habits when dealing with this
|
|
|
187
187
|
|
|
188
188
|
---
|
|
189
189
|
|
|
190
|
-
|
|
190
|
+
|
|
191
191
|
|
|
192
192
|
**Slash command: `/review` or `/tribunal-full`**
|
|
193
193
|
**Active reviewers: `logic-reviewer` ยท `security-auditor`**
|
|
@@ -198,7 +198,7 @@ AI coding assistants often fall into specific bad habits when dealing with this
|
|
|
198
198
|
2. **Silent Degradation:** Catching and suppressing errors without logging or handling.
|
|
199
199
|
3. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
|
|
200
200
|
|
|
201
|
-
|
|
201
|
+
|
|
202
202
|
|
|
203
203
|
Review these questions before confirming output:
|
|
204
204
|
```
|