tribunal-kit 1.0.0 → 2.4.2
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/.shared/ui-ux-pro-max/README.md +3 -3
- package/.agent/ARCHITECTURE.md +205 -10
- package/.agent/GEMINI.md +37 -7
- package/.agent/agents/accessibility-reviewer.md +134 -0
- package/.agent/agents/ai-code-reviewer.md +129 -0
- package/.agent/agents/frontend-specialist.md +3 -0
- package/.agent/agents/game-developer.md +21 -21
- package/.agent/agents/logic-reviewer.md +12 -0
- package/.agent/agents/mobile-reviewer.md +79 -0
- package/.agent/agents/orchestrator.md +56 -26
- package/.agent/agents/performance-reviewer.md +36 -0
- package/.agent/agents/supervisor-agent.md +156 -0
- package/.agent/agents/swarm-worker-contracts.md +166 -0
- package/.agent/agents/swarm-worker-registry.md +92 -0
- package/.agent/rules/GEMINI.md +134 -5
- package/.agent/scripts/bundle_analyzer.py +259 -0
- package/.agent/scripts/dependency_analyzer.py +247 -0
- package/.agent/scripts/lint_runner.py +188 -0
- package/.agent/scripts/patch_skills_meta.py +177 -0
- package/.agent/scripts/patch_skills_output.py +285 -0
- package/.agent/scripts/schema_validator.py +279 -0
- package/.agent/scripts/security_scan.py +224 -0
- package/.agent/scripts/session_manager.py +144 -3
- package/.agent/scripts/skill_integrator.py +234 -0
- package/.agent/scripts/strengthen_skills.py +220 -0
- package/.agent/scripts/swarm_dispatcher.py +317 -0
- package/.agent/scripts/test_runner.py +192 -0
- package/.agent/scripts/test_swarm_dispatcher.py +163 -0
- package/.agent/skills/agent-organizer/SKILL.md +132 -0
- package/.agent/skills/agentic-patterns/SKILL.md +335 -0
- package/.agent/skills/api-patterns/SKILL.md +226 -50
- package/.agent/skills/app-builder/SKILL.md +215 -52
- package/.agent/skills/architecture/SKILL.md +176 -31
- package/.agent/skills/bash-linux/SKILL.md +150 -134
- package/.agent/skills/behavioral-modes/SKILL.md +152 -160
- package/.agent/skills/brainstorming/SKILL.md +148 -101
- package/.agent/skills/brainstorming/dynamic-questioning.md +10 -0
- package/.agent/skills/clean-code/SKILL.md +139 -134
- package/.agent/skills/code-review-checklist/SKILL.md +177 -80
- package/.agent/skills/config-validator/SKILL.md +165 -0
- package/.agent/skills/csharp-developer/SKILL.md +107 -0
- package/.agent/skills/database-design/SKILL.md +252 -29
- package/.agent/skills/deployment-procedures/SKILL.md +122 -175
- package/.agent/skills/devops-engineer/SKILL.md +134 -0
- package/.agent/skills/devops-incident-responder/SKILL.md +98 -0
- package/.agent/skills/documentation-templates/SKILL.md +175 -121
- package/.agent/skills/dotnet-core-expert/SKILL.md +103 -0
- package/.agent/skills/edge-computing/SKILL.md +213 -0
- package/.agent/skills/frontend-design/SKILL.md +76 -0
- package/.agent/skills/frontend-design/color-system.md +18 -0
- package/.agent/skills/frontend-design/typography-system.md +18 -0
- package/.agent/skills/game-development/SKILL.md +69 -0
- package/.agent/skills/geo-fundamentals/SKILL.md +158 -99
- package/.agent/skills/github-operations/SKILL.md +354 -0
- package/.agent/skills/i18n-localization/SKILL.md +158 -96
- package/.agent/skills/intelligent-routing/SKILL.md +89 -285
- package/.agent/skills/intelligent-routing/router-manifest.md +65 -0
- package/.agent/skills/lint-and-validate/SKILL.md +229 -27
- package/.agent/skills/llm-engineering/SKILL.md +258 -0
- package/.agent/skills/local-first/SKILL.md +203 -0
- package/.agent/skills/mcp-builder/SKILL.md +159 -111
- package/.agent/skills/mobile-design/SKILL.md +102 -282
- package/.agent/skills/nextjs-react-expert/SKILL.md +143 -227
- package/.agent/skills/nodejs-best-practices/SKILL.md +201 -254
- package/.agent/skills/observability/SKILL.md +285 -0
- package/.agent/skills/parallel-agents/SKILL.md +124 -118
- package/.agent/skills/performance-profiling/SKILL.md +143 -89
- package/.agent/skills/plan-writing/SKILL.md +133 -97
- package/.agent/skills/platform-engineer/SKILL.md +135 -0
- package/.agent/skills/powershell-windows/SKILL.md +167 -104
- package/.agent/skills/python-patterns/SKILL.md +149 -361
- package/.agent/skills/python-pro/SKILL.md +114 -0
- package/.agent/skills/react-specialist/SKILL.md +107 -0
- package/.agent/skills/readme-builder/SKILL.md +270 -0
- package/.agent/skills/realtime-patterns/SKILL.md +296 -0
- package/.agent/skills/red-team-tactics/SKILL.md +136 -134
- package/.agent/skills/rust-pro/SKILL.md +237 -173
- package/.agent/skills/seo-fundamentals/SKILL.md +134 -82
- package/.agent/skills/server-management/SKILL.md +155 -104
- package/.agent/skills/sql-pro/SKILL.md +104 -0
- package/.agent/skills/systematic-debugging/SKILL.md +156 -79
- package/.agent/skills/tailwind-patterns/SKILL.md +163 -205
- package/.agent/skills/tdd-workflow/SKILL.md +148 -88
- package/.agent/skills/test-result-analyzer/SKILL.md +299 -0
- package/.agent/skills/testing-patterns/SKILL.md +141 -114
- package/.agent/skills/trend-researcher/SKILL.md +228 -0
- package/.agent/skills/ui-ux-pro-max/SKILL.md +107 -0
- package/.agent/skills/ui-ux-researcher/SKILL.md +234 -0
- package/.agent/skills/vue-expert/SKILL.md +118 -0
- package/.agent/skills/vulnerability-scanner/SKILL.md +228 -188
- package/.agent/skills/web-design-guidelines/SKILL.md +148 -33
- package/.agent/skills/webapp-testing/SKILL.md +171 -122
- package/.agent/skills/whimsy-injector/SKILL.md +349 -0
- package/.agent/skills/workflow-optimizer/SKILL.md +219 -0
- package/.agent/workflows/api-tester.md +279 -0
- package/.agent/workflows/audit.md +168 -0
- package/.agent/workflows/brainstorm.md +65 -19
- package/.agent/workflows/changelog.md +144 -0
- package/.agent/workflows/create.md +67 -14
- package/.agent/workflows/debug.md +122 -30
- package/.agent/workflows/deploy.md +82 -31
- package/.agent/workflows/enhance.md +59 -27
- package/.agent/workflows/fix.md +143 -0
- package/.agent/workflows/generate.md +84 -20
- package/.agent/workflows/migrate.md +163 -0
- package/.agent/workflows/orchestrate.md +66 -17
- package/.agent/workflows/performance-benchmarker.md +305 -0
- package/.agent/workflows/plan.md +76 -33
- package/.agent/workflows/preview.md +73 -17
- package/.agent/workflows/refactor.md +153 -0
- package/.agent/workflows/review-ai.md +140 -0
- package/.agent/workflows/review.md +83 -16
- package/.agent/workflows/session.md +154 -0
- package/.agent/workflows/status.md +74 -18
- package/.agent/workflows/strengthen-skills.md +99 -0
- package/.agent/workflows/swarm.md +194 -0
- package/.agent/workflows/test.md +80 -31
- package/.agent/workflows/tribunal-backend.md +55 -13
- package/.agent/workflows/tribunal-database.md +62 -18
- package/.agent/workflows/tribunal-frontend.md +58 -12
- package/.agent/workflows/tribunal-full.md +70 -11
- package/.agent/workflows/tribunal-mobile.md +123 -0
- package/.agent/workflows/tribunal-performance.md +152 -0
- package/.agent/workflows/ui-ux-pro-max.md +100 -82
- package/README.md +117 -62
- package/bin/tribunal-kit.js +542 -288
- package/package.json +10 -6
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Automated multi-stage API endpoint testing. Generates and runs auth-aware request sequences.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /api-tester — Automated API Test Flows
|
|
6
|
+
|
|
7
|
+
$ARGUMENTS
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
This command generates and runs multi-stage API test sequences. It goes beyond single-endpoint testing by simulating realistic user sessions with chained requests, variable capture, and assertion verification.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## When to Use This vs Other Commands
|
|
16
|
+
|
|
17
|
+
| Use `/api-tester` when... | Use something else when... |
|
|
18
|
+
|---|---|
|
|
19
|
+
| Testing multi-step flows (auth + resource lifecycle) | Unit tests → `/test` |
|
|
20
|
+
| Verifying endpoint contracts before deploy | Logic review → `/review` |
|
|
21
|
+
| Debugging a specific flow returning wrong data | Root cause → `/debug` |
|
|
22
|
+
| Security testing for injection/rate limits | Full security audit → `/audit` |
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## When to Use
|
|
27
|
+
|
|
28
|
+
- After creating or modifying API routes.
|
|
29
|
+
- Before deployment to validate endpoint contracts.
|
|
30
|
+
- When debugging a multi-step flow (e.g., Register → Login → Create Resource → Verify).
|
|
31
|
+
- When the user says "test api", "endpoint test", or "api flow".
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Pipeline Flow
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
Your request (endpoint or flow description)
|
|
39
|
+
│
|
|
40
|
+
▼
|
|
41
|
+
Context read — route files, middleware, schema, auth config, package.json
|
|
42
|
+
│
|
|
43
|
+
▼
|
|
44
|
+
Route discovery — scan for all registered endpoints and methods
|
|
45
|
+
│
|
|
46
|
+
▼
|
|
47
|
+
Test Plan generated (sequence of requests with dependencies & captures)
|
|
48
|
+
│
|
|
49
|
+
▼
|
|
50
|
+
Environment check — server running? Base URL resolved? Auth available?
|
|
51
|
+
│
|
|
52
|
+
▼
|
|
53
|
+
Execution — each step runs, captures response, feeds next step
|
|
54
|
+
│
|
|
55
|
+
▼
|
|
56
|
+
Report — pass/fail per step, response times, payload diffs, coverage map
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Step 1: Route Discovery
|
|
62
|
+
|
|
63
|
+
Before generating tests, scan the codebase for route definitions:
|
|
64
|
+
|
|
65
|
+
| Framework | Scan Pattern | What to Extract |
|
|
66
|
+
|---|---|---|
|
|
67
|
+
| Express | `app.get/post/put/delete/patch` or `router.*` | Method, path, middleware |
|
|
68
|
+
| Fastify | `fastify.route` or `fastify.get/post/...` | Method, path, schema |
|
|
69
|
+
| Next.js API | `app/api/**/route.ts` | Exported functions (GET, POST) |
|
|
70
|
+
| Django/DRF | `urlpatterns`, `@api_view` | Method, path, viewset |
|
|
71
|
+
| FastAPI | `@app.get/post/put/delete` | Method, path, response model |
|
|
72
|
+
| Go (Chi/Gin) | `r.Get/Post/Put/Delete` | Method, path, handler |
|
|
73
|
+
|
|
74
|
+
**Output a route map before generating tests:**
|
|
75
|
+
```
|
|
76
|
+
━━━ Route Map ━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
77
|
+
GET /api/users → UserController.list [auth: required]
|
|
78
|
+
POST /api/users → UserController.create [auth: admin]
|
|
79
|
+
GET /api/users/:id → UserController.get [auth: required]
|
|
80
|
+
PUT /api/users/:id → UserController.update [auth: owner]
|
|
81
|
+
DELETE /api/users/:id → UserController.delete [auth: admin]
|
|
82
|
+
POST /api/auth/login → AuthController.login [auth: none]
|
|
83
|
+
POST /api/auth/register → AuthController.register [auth: none]
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## Step 2: Test Pattern Selection
|
|
89
|
+
|
|
90
|
+
### Pattern 1: CRUD Lifecycle
|
|
91
|
+
Full create-read-update-read-delete-verify cycle:
|
|
92
|
+
```
|
|
93
|
+
Step 1: POST /api/resource → Create (capture: response.id → $RESOURCE_ID)
|
|
94
|
+
Step 2: GET /api/resource/$RESOURCE_ID → Read (assert: 200, body matches creation)
|
|
95
|
+
Step 3: PUT /api/resource/$RESOURCE_ID → Update (send modified fields)
|
|
96
|
+
Step 4: GET /api/resource/$RESOURCE_ID → Read (assert: updated fields match)
|
|
97
|
+
Step 5: DELETE /api/resource/$RESOURCE_ID → Delete (assert: 204 or 200)
|
|
98
|
+
Step 6: GET /api/resource/$RESOURCE_ID → Read (assert: 404)
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### Pattern 2: Auth Flow
|
|
102
|
+
Full authentication lifecycle:
|
|
103
|
+
```
|
|
104
|
+
Step 1: POST /api/auth/register → Register (capture: $TOKEN)
|
|
105
|
+
Step 2: POST /api/auth/login → Login (capture: $JWT, $REFRESH_TOKEN)
|
|
106
|
+
Step 3: GET /api/protected → With JWT header (assert: 200)
|
|
107
|
+
Step 4: GET /api/protected → Without JWT (assert: 401)
|
|
108
|
+
Step 5: POST /api/auth/refresh → With $REFRESH_TOKEN (capture: $NEW_JWT)
|
|
109
|
+
Step 6: GET /api/protected → With $NEW_JWT (assert: 200)
|
|
110
|
+
Step 7: POST /api/auth/logout → Invalidate session
|
|
111
|
+
Step 8: GET /api/protected → With invalidated JWT (assert: 401)
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### Pattern 3: Edge Cases & Error Handling
|
|
115
|
+
```
|
|
116
|
+
Step 1: POST /api/resource → Missing required fields (assert: 400 + error message)
|
|
117
|
+
Step 2: POST /api/resource → Invalid field types (assert: 400 + validation detail)
|
|
118
|
+
Step 3: POST /api/resource → Duplicate unique field (assert: 409)
|
|
119
|
+
Step 4: GET /api/resource/99999 → Non-existent ID (assert: 404)
|
|
120
|
+
Step 5: PUT /api/resource/:id → Unauthorized user (assert: 403)
|
|
121
|
+
Step 6: DELETE /api/resource/:id → Without auth (assert: 401)
|
|
122
|
+
Step 7: GET /api/resource?page=-1 → Invalid pagination (assert: 400)
|
|
123
|
+
Step 8: POST /api/resource → Payload too large (assert: 413 or 400)
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Pattern 4: Pagination & Filtering
|
|
127
|
+
```
|
|
128
|
+
Step 1: POST /api/resource → Create 5 records (loop)
|
|
129
|
+
Step 2: GET /api/resource?page=1&limit=2 → (assert: 2 items, hasMore: true)
|
|
130
|
+
Step 3: GET /api/resource?page=2&limit=2 → (assert: 2 items, hasMore: true)
|
|
131
|
+
Step 4: GET /api/resource?page=3&limit=2 → (assert: 1 item, hasMore: false)
|
|
132
|
+
Step 5: GET /api/resource?sort=createdAt&order=desc → (assert: items in descending order)
|
|
133
|
+
Step 6: GET /api/resource?filter=name:test → (assert: only matching items returned)
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Pattern 5: Rate Limiting & Security
|
|
137
|
+
```
|
|
138
|
+
Step 1: POST /api/auth/login × 10 → Rapid-fire login attempts
|
|
139
|
+
Step 2: POST /api/auth/login → (assert: 429 Too Many Requests or similar)
|
|
140
|
+
Step 3: Wait [cooldown period]
|
|
141
|
+
Step 4: POST /api/auth/login → (assert: allowed again)
|
|
142
|
+
Step 5: POST /api/resource → With SQL injection in body (assert: 400, no SQL error exposed)
|
|
143
|
+
Step 6: GET /api/resource?id=1 OR 1=1 → (assert: 400 or filtered, no data leak)
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## Step 3: Variable Capture & Chaining
|
|
149
|
+
|
|
150
|
+
Tests are chained via captured variables:
|
|
151
|
+
|
|
152
|
+
```
|
|
153
|
+
$VAR_NAME = response.body.fieldPath
|
|
154
|
+
|
|
155
|
+
Examples:
|
|
156
|
+
$USER_ID = response.body.data.id
|
|
157
|
+
$JWT = response.body.token
|
|
158
|
+
$CSRF_TOKEN = response.headers['x-csrf-token']
|
|
159
|
+
$TOTAL_COUNT = response.body.meta.total
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Variables are passed forward:
|
|
163
|
+
- **Headers**: `Authorization: Bearer $JWT`
|
|
164
|
+
- **URL params**: `/api/users/$USER_ID`
|
|
165
|
+
- **Body fields**: `{ "userId": "$USER_ID" }`
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## Step 4: Assertion Engine
|
|
170
|
+
|
|
171
|
+
Each step can assert on:
|
|
172
|
+
|
|
173
|
+
| Assertion Type | Example | Description |
|
|
174
|
+
|---|---|---|
|
|
175
|
+
| Status code | `assert: 200` | HTTP status |
|
|
176
|
+
| Body field exists | `assert: body.id exists` | Field presence |
|
|
177
|
+
| Body field value | `assert: body.name === "test"` | Exact match |
|
|
178
|
+
| Body field type | `assert: body.items is Array` | Type check |
|
|
179
|
+
| Header present | `assert: headers.content-type contains "json"` | Header check |
|
|
180
|
+
| Response time | `assert: time < 500ms` | Performance gate |
|
|
181
|
+
| Array length | `assert: body.items.length === 3` | Count check |
|
|
182
|
+
| Negative match | `assert: body.password === undefined` | Field NOT present |
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
## Output Format
|
|
187
|
+
|
|
188
|
+
```
|
|
189
|
+
━━━ API Test Report ━━━━━━━━━━━━━━━━━━━━━━
|
|
190
|
+
|
|
191
|
+
Flow: [Name of the flow tested]
|
|
192
|
+
Base: [base URL]
|
|
193
|
+
Steps: 6 total | 5 passed | 1 failed
|
|
194
|
+
Time: 1.2s total
|
|
195
|
+
|
|
196
|
+
━━━ Execution ━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
197
|
+
|
|
198
|
+
Step 1: POST /api/auth/login ✅ 200 (142ms)
|
|
199
|
+
↳ Captured: $JWT
|
|
200
|
+
Step 2: GET /api/users/me ✅ 200 (89ms)
|
|
201
|
+
↳ Asserted: body.email === "test@example.com"
|
|
202
|
+
Step 3: PUT /api/users/me ✅ 200 (112ms)
|
|
203
|
+
↳ Sent: { name: "Updated Name" }
|
|
204
|
+
Step 4: GET /api/users/me ✅ 200 (78ms)
|
|
205
|
+
↳ Asserted: body.name === "Updated Name"
|
|
206
|
+
Step 5: DELETE /api/users/me ✅ 204 (95ms)
|
|
207
|
+
Step 6: GET /api/users/me ❌ FAIL (67ms)
|
|
208
|
+
↳ Expected: 404
|
|
209
|
+
↳ Received: 200 { name: "Updated Name", deletedAt: "2026-03-05T..." }
|
|
210
|
+
|
|
211
|
+
━━━ Failure Analysis ━━━━━━━━━━━━━━━━━━━━
|
|
212
|
+
|
|
213
|
+
Step 6: Soft-delete returning 200 instead of 404.
|
|
214
|
+
Root cause: GET route doesn't filter `deletedAt IS NOT NULL`.
|
|
215
|
+
File to check: controllers/user.controller.ts → findOne method
|
|
216
|
+
Suggested fix: Add `WHERE deletedAt IS NULL` condition to query.
|
|
217
|
+
|
|
218
|
+
━━━ Coverage ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
219
|
+
|
|
220
|
+
Endpoints tested: 4 of 7 (57%)
|
|
221
|
+
Methods tested: GET ✅ POST ✅ PUT ✅ DELETE ✅ PATCH ❌
|
|
222
|
+
Auth scenarios: authenticated ✅ unauthenticated ❌ admin ❌
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## Security Constraints
|
|
228
|
+
|
|
229
|
+
- **Never hardcode** API keys, tokens, or passwords in generated test scripts.
|
|
230
|
+
- **Use env vars**: `process.env.TEST_API_KEY`, `process.env.API_BASE_URL`.
|
|
231
|
+
- **Sanitize test payloads** — no actual SQL injection payloads that could damage data.
|
|
232
|
+
- **Never run destructive tests** against production URLs without explicit user confirmation.
|
|
233
|
+
- **Clean up created resources** at the end of every test flow (DELETE what was POSTed).
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## Abort Conditions
|
|
238
|
+
|
|
239
|
+
| Condition | Action |
|
|
240
|
+
|---|---|
|
|
241
|
+
| Server is not running | Prompt to run `/preview start` before continuing |
|
|
242
|
+
| Destructive test (DELETE) on a production URL | Stop and confirm explicitly before executing |
|
|
243
|
+
| Test step fails with 5xx | Halt the flow — server error is not a test assertion failure |
|
|
244
|
+
| Auth step fails | Halt and report — remaining steps are invalid without a token |
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## Cross-Workflow Navigation
|
|
249
|
+
|
|
250
|
+
| After /api-tester reveals... | Go to |
|
|
251
|
+
|---|---|
|
|
252
|
+
| Soft-delete returning 200, should be 404 | `/fix` or `/debug` the query filter |
|
|
253
|
+
| Endpoint returns 500 on valid input | `/debug` for root cause |
|
|
254
|
+
| Security test: SQL injection returns 500 with DB error | ❌ CRITICAL → `/audit` immediately |
|
|
255
|
+
| Rate limiting is missing | `/enhance` to add rate-limiting middleware |
|
|
256
|
+
| All tests pass, ready for deploy | `/deploy` following pre-flight checklist |
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## Hallucination Guard
|
|
261
|
+
|
|
262
|
+
- **Scan route files first** — only test endpoints that exist in the codebase.
|
|
263
|
+
- **Verify HTTP methods** — only use methods the route actually supports.
|
|
264
|
+
- **Never invent response fields** — verify against schema, types, or actual response.
|
|
265
|
+
- **Flag assumptions**: `// ASSUMPTION: this endpoint requires JWT auth based on middleware scan`.
|
|
266
|
+
- **Never fabricate response times** — only report measured values.
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## Usage
|
|
271
|
+
|
|
272
|
+
```
|
|
273
|
+
/api-tester CRUD flow for /api/posts
|
|
274
|
+
/api-tester auth flow with JWT refresh
|
|
275
|
+
/api-tester edge cases for /api/users
|
|
276
|
+
/api-tester full lifecycle for /api/orders including payment
|
|
277
|
+
/api-tester pagination for /api/products
|
|
278
|
+
/api-tester rate limiting on /api/auth/login
|
|
279
|
+
```
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Full project audit combining security, lint, schema, tests, dependencies, and bundle analysis
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /audit — Comprehensive Project Health Check
|
|
6
|
+
|
|
7
|
+
$ARGUMENTS
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
This command runs a full audit of the project, combining all available analysis scripts in priority order. Use it before major releases, after onboarding to a new codebase, or whenever you need a complete health check.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## When to Use /audit
|
|
16
|
+
|
|
17
|
+
| Situation | Recommended |
|
|
18
|
+
|---|---|
|
|
19
|
+
| Before a production deploy | `/audit` (full) |
|
|
20
|
+
| After a dependency upgrade | `/audit` — focus on deps + security |
|
|
21
|
+
| When onboarding to a new codebase | `/audit` — full scan first |
|
|
22
|
+
| Single file just changed | `/review [file]` is faster |
|
|
23
|
+
| Suspected security issue | `/audit` — security runs first |
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## What Happens
|
|
28
|
+
|
|
29
|
+
The audit runs in strict priority order. Critical issues block further checks:
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
Priority 1 → Security Scan (CRITICAL: halts on failure)
|
|
33
|
+
Priority 2 → Lint & Type Check (BLOCKING for deploy on error)
|
|
34
|
+
Priority 3 → Schema Validation (advisory)
|
|
35
|
+
Priority 4 → Test Suite (advisory, marks task incomplete)
|
|
36
|
+
Priority 5 → Dependency Analysis (advisory)
|
|
37
|
+
Priority 6 → Bundle Size Analysis (advisory)
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Execution Commands
|
|
41
|
+
|
|
42
|
+
Each priority maps to a script:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
# Priority 1 — Security
|
|
46
|
+
// turbo
|
|
47
|
+
python .agent/scripts/security_scan.py .
|
|
48
|
+
|
|
49
|
+
# Priority 2 — Lint
|
|
50
|
+
// turbo
|
|
51
|
+
python .agent/scripts/lint_runner.py .
|
|
52
|
+
|
|
53
|
+
# Priority 3 — Schema
|
|
54
|
+
// turbo
|
|
55
|
+
python .agent/scripts/schema_validator.py .
|
|
56
|
+
|
|
57
|
+
# Priority 4 — Tests
|
|
58
|
+
// turbo
|
|
59
|
+
python .agent/scripts/test_runner.py .
|
|
60
|
+
|
|
61
|
+
# Priority 5 — Dependencies
|
|
62
|
+
// turbo
|
|
63
|
+
python .agent/scripts/dependency_analyzer.py . --audit
|
|
64
|
+
|
|
65
|
+
# Priority 6 — Bundle
|
|
66
|
+
// turbo
|
|
67
|
+
python .agent/scripts/bundle_analyzer.py .
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
### Abort Conditions
|
|
71
|
+
|
|
72
|
+
| Priority | Condition | Action |
|
|
73
|
+
|---|---|---|
|
|
74
|
+
| Security (P1) | CRITICAL findings | **HALT** — report and stop. Do not proceed until resolved. |
|
|
75
|
+
| Lint (P2) | Errors (not warnings) | Continue but flag as **deploy-blocking** |
|
|
76
|
+
| Schema (P3) | Any failure | Continue, report as advisory |
|
|
77
|
+
| Tests (P4) | Failures | Continue, mark task as **incomplete** |
|
|
78
|
+
| Deps (P5) | Vulnerabilities | Continue, flag severity level |
|
|
79
|
+
| Bundle (P6) | Oversized assets | Continue, note thresholds exceeded |
|
|
80
|
+
|
|
81
|
+
### Script Failure Handling
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
Script exits 0 → Success, continue pipeline
|
|
85
|
+
Script exits 1 → Failure, report and decide: retry or skip?
|
|
86
|
+
Script not found → Skip with ⚠️ warning, do not block pipeline
|
|
87
|
+
Script times out → Kill process, report timeout, continue with next check
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Scoped Audit (Optional)
|
|
93
|
+
|
|
94
|
+
To audit a specific concern only, pass a flag:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
/audit security only → runs Priority 1 only
|
|
98
|
+
/audit deps → runs Priority 5 only
|
|
99
|
+
/audit lint → runs Priority 2 only
|
|
100
|
+
/audit before deploy → runs P1 + P2 + P4 (blocking gates only)
|
|
101
|
+
/audit fresh codebase → runs full suite and flags all advisory items
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Audit Report Format
|
|
107
|
+
|
|
108
|
+
After running all checks, produce a structured report:
|
|
109
|
+
|
|
110
|
+
```markdown
|
|
111
|
+
## 🔍 Project Audit Report — [date]
|
|
112
|
+
|
|
113
|
+
### Security: [PASS ✅ / FAIL ❌]
|
|
114
|
+
- [findings summary with severity: CRITICAL / HIGH / MEDIUM / LOW]
|
|
115
|
+
|
|
116
|
+
### Lint & Types: [PASS ✅ / FAIL ❌]
|
|
117
|
+
- [findings summary — errors vs. warnings distinguished]
|
|
118
|
+
|
|
119
|
+
### Schema: [PASS ✅ / WARN ⚠️ / N/A]
|
|
120
|
+
- [findings summary]
|
|
121
|
+
|
|
122
|
+
### Tests: [PASS ✅ / FAIL ❌ / N/A]
|
|
123
|
+
- [pass/fail counts + names of failing tests]
|
|
124
|
+
|
|
125
|
+
### Dependencies: [CLEAN ✅ / ISSUES ⚠️]
|
|
126
|
+
- [phantom imports, unused deps, known vulnerabilities with CVE IDs]
|
|
127
|
+
|
|
128
|
+
### Bundle: [OK ✅ / LARGE ⚠️ / N/A]
|
|
129
|
+
- [total size, heavy deps, suggested optimizations]
|
|
130
|
+
|
|
131
|
+
### Verdict:
|
|
132
|
+
[DEPLOY-READY ✅ / BLOCKED ❌ — reason]
|
|
133
|
+
[Next recommended action]
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Quick Audit
|
|
139
|
+
|
|
140
|
+
For a faster check that skips bundle and schema:
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
// turbo
|
|
144
|
+
python .agent/scripts/checklist.py .
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Cross-Workflow Navigation
|
|
150
|
+
|
|
151
|
+
| If the audit reveals... | Go to |
|
|
152
|
+
|---|---|
|
|
153
|
+
| Security CRITICAL findings | `/review [file]` for targeted analysis, then fix with `/generate` |
|
|
154
|
+
| Many lint errors | `/fix` to auto-resolve lint and formatting issues |
|
|
155
|
+
| Test failures | `/debug` to find root cause, then `/test` to add coverage |
|
|
156
|
+
| Outdated or vulnerable dependencies | `/migrate` for framework/dependency upgrades |
|
|
157
|
+
| Bundle size too large | `/tribunal-performance` for optimization review |
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## Usage
|
|
162
|
+
|
|
163
|
+
```
|
|
164
|
+
/audit
|
|
165
|
+
/audit this project before we deploy
|
|
166
|
+
/audit focus on security and dependencies only
|
|
167
|
+
/audit after upgrading to Next.js 15
|
|
168
|
+
```
|
|
@@ -18,6 +18,18 @@ Before any `/create` or `/enhance` command when:
|
|
|
18
18
|
- The problem is not yet well-defined
|
|
19
19
|
- You want to evaluate multiple architectural paths
|
|
20
20
|
- You need an honest assessment of tradeoffs before starting
|
|
21
|
+
- Decision between two tools or approaches is unclear
|
|
22
|
+
- The team needs to align on direction before work begins
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## The Brainstorming Contract
|
|
27
|
+
|
|
28
|
+
- Minimum **3 distinct approaches** will be surfaced — not variations of one idea, but genuinely different paths
|
|
29
|
+
- Every approach is assessed on **specific tradeoffs**, not vague pros/cons
|
|
30
|
+
- A **clear verdict** is given at the end — not "it depends" as a final answer
|
|
31
|
+
- No code is written during brainstorming
|
|
32
|
+
- Every tool or library named must be **real and documented**
|
|
21
33
|
|
|
22
34
|
---
|
|
23
35
|
|
|
@@ -25,18 +37,17 @@ Before any `/create` or `/enhance` command when:
|
|
|
25
37
|
|
|
26
38
|
**First, the problem is clarified:**
|
|
27
39
|
|
|
28
|
-
> "What specific outcome should exist that doesn't exist today? Who experiences the problem? What constraints are fixed?"
|
|
40
|
+
> "What specific outcome should exist that doesn't exist today? Who experiences the problem? What constraints are fixed (stack, timeline, team size)?"
|
|
29
41
|
|
|
30
|
-
If those aren't answered,
|
|
42
|
+
If those aren't answered, the session asks before going further.
|
|
31
43
|
|
|
32
|
-
**Then, at least 3 distinct approaches are surfaced
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
-
|
|
36
|
-
- Where it creates friction
|
|
44
|
+
**Then, at least 3 distinct approaches are surfaced**, each with:
|
|
45
|
+
- How it works (mechanism, not just name)
|
|
46
|
+
- Where it wins (specific advantage)
|
|
47
|
+
- Where it struggles (real tradeoff — not "it can be complex")
|
|
37
48
|
- Realistic effort level
|
|
38
49
|
|
|
39
|
-
**Finally, one approach is recommended** — not hedged, not "it depends." A clear pick with a clear reason.
|
|
50
|
+
**Finally, one approach is recommended** — not hedged, not "it depends." A clear pick with a clear reason tied to the user's stated constraints.
|
|
40
51
|
|
|
41
52
|
---
|
|
42
53
|
|
|
@@ -46,21 +57,24 @@ If those aren't answered, I ask before going further.
|
|
|
46
57
|
## Exploration: [Problem Statement]
|
|
47
58
|
|
|
48
59
|
Why we're looking at this:
|
|
49
|
-
[What's the actual friction being solved]
|
|
60
|
+
[What's the actual friction or outcome gap being solved]
|
|
61
|
+
|
|
62
|
+
User context:
|
|
63
|
+
[Stack, constraints, team size, timeline — if known]
|
|
50
64
|
|
|
51
65
|
────────────────────────────────────────
|
|
52
66
|
|
|
53
67
|
Approach 1 — [Name]
|
|
54
|
-
[What this is and how it works]
|
|
68
|
+
[What this is and how it actually works — mechanism, not just label]
|
|
55
69
|
|
|
56
70
|
Where it wins:
|
|
57
|
-
› [Specific advantage
|
|
58
|
-
› [
|
|
71
|
+
› [Specific advantage tied to this use case]
|
|
72
|
+
› [Second specific advantage]
|
|
59
73
|
|
|
60
74
|
Where it struggles:
|
|
61
|
-
› [Real tradeoff —
|
|
75
|
+
› [Real tradeoff — operational cost, learning curve, limitation]
|
|
62
76
|
|
|
63
|
-
Effort:
|
|
77
|
+
Effort: ◼◽◽◽◽ Low | ◼◼◼◽◽ Medium | ◼◼◼◼◽ High
|
|
64
78
|
|
|
65
79
|
────────────────────────────────────────
|
|
66
80
|
|
|
@@ -75,19 +89,49 @@ Approach 3 — [Name]
|
|
|
75
89
|
────────────────────────────────────────
|
|
76
90
|
|
|
77
91
|
Verdict:
|
|
78
|
-
Approach [N] — because [specific reason tied to the
|
|
92
|
+
Approach [N] — because [specific reason tied to the stated constraints].
|
|
93
|
+
|
|
94
|
+
[If it truly depends on one variable]:
|
|
95
|
+
→ If [condition A]: Approach 1
|
|
96
|
+
→ If [condition B]: Approach 2
|
|
79
97
|
|
|
80
98
|
What direction should we go deeper on?
|
|
81
99
|
```
|
|
82
100
|
|
|
83
101
|
---
|
|
84
102
|
|
|
103
|
+
## Questions That Unlock Better Exploration
|
|
104
|
+
|
|
105
|
+
The brainstorming agent may ask:
|
|
106
|
+
|
|
107
|
+
| Question | Why it matters |
|
|
108
|
+
|---|---|
|
|
109
|
+
| What's the scale? (RPS, users, data volume) | Changes which approaches are viable |
|
|
110
|
+
| Is the team familiar with X? | Affects "effort" rating significantly |
|
|
111
|
+
| What's the failure cost? | Changes risk tolerance and complexity budget |
|
|
112
|
+
| Is this greenfield or adding to existing? | Existing constraints eliminate some options |
|
|
113
|
+
| What's the time horizon? (prototype vs 5-year system) | Short-term vs long-term tradeoffs differ |
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
85
117
|
## Hallucination Guard
|
|
86
118
|
|
|
87
|
-
- No invented libraries or tools — every named option must be a real, documented choice
|
|
88
|
-
- No performance claims without a cited benchmark
|
|
89
|
-
- Every "pro" must be grounded
|
|
90
|
-
- Assumptions about the user's codebase are
|
|
119
|
+
- **No invented libraries or tools** — every named option must be a real, documented choice
|
|
120
|
+
- **No performance claims without a cited benchmark** — "X is faster" requires a source
|
|
121
|
+
- **Every "pro" must be mechanically grounded** — how does this approach actually achieve the advantage?
|
|
122
|
+
- **Assumptions about the user's codebase** are labeled: `[ASSUMPTION — verify before committing to this approach]`
|
|
123
|
+
- **Effort estimates** are ranges, not single values, with a confidence label
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Cross-Workflow Navigation
|
|
128
|
+
|
|
129
|
+
| After /brainstorm, the next step is... |
|
|
130
|
+
|---|
|
|
131
|
+
| Decision made → `/plan` to write the formal plan |
|
|
132
|
+
| Decision made, simple task → `/generate` directly |
|
|
133
|
+
| Decision made, large build → `/create` with known approach |
|
|
134
|
+
| Still unclear → ask more Socratic questions before proceeding |
|
|
91
135
|
|
|
92
136
|
---
|
|
93
137
|
|
|
@@ -97,4 +141,6 @@ What direction should we go deeper on?
|
|
|
97
141
|
/brainstorm caching layer for a high-traffic API
|
|
98
142
|
/brainstorm auth approach for a multi-tenant SaaS
|
|
99
143
|
/brainstorm how to structure shared state in a large React app
|
|
144
|
+
/brainstorm whether to use a message queue or direct API calls for notifications
|
|
145
|
+
/brainstorm database: PostgreSQL vs MongoDB for our event sourcing system
|
|
100
146
|
```
|