tribunal-kit 3.0.0 → 4.0.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 +99 -99
- package/.agent/GEMINI.md +52 -52
- package/.agent/agents/accessibility-reviewer.md +187 -220
- package/.agent/agents/ai-code-reviewer.md +199 -233
- package/.agent/agents/backend-specialist.md +215 -238
- package/.agent/agents/code-archaeologist.md +161 -181
- package/.agent/agents/database-architect.md +184 -207
- package/.agent/agents/debugger.md +191 -218
- package/.agent/agents/dependency-reviewer.md +103 -136
- package/.agent/agents/devops-engineer.md +218 -238
- package/.agent/agents/documentation-writer.md +201 -221
- package/.agent/agents/explorer-agent.md +160 -180
- package/.agent/agents/frontend-reviewer.md +160 -194
- package/.agent/agents/frontend-specialist.md +248 -237
- package/.agent/agents/game-developer.md +48 -52
- package/.agent/agents/logic-reviewer.md +116 -149
- package/.agent/agents/mobile-developer.md +200 -223
- package/.agent/agents/mobile-reviewer.md +162 -195
- package/.agent/agents/orchestrator.md +181 -211
- package/.agent/agents/penetration-tester.md +157 -174
- package/.agent/agents/performance-optimizer.md +183 -203
- package/.agent/agents/performance-reviewer.md +178 -211
- package/.agent/agents/precedence-reviewer.md +213 -0
- package/.agent/agents/product-manager.md +142 -162
- package/.agent/agents/product-owner.md +6 -25
- package/.agent/agents/project-planner.md +142 -162
- package/.agent/agents/qa-automation-engineer.md +225 -242
- package/.agent/agents/security-auditor.md +174 -194
- package/.agent/agents/seo-specialist.md +193 -213
- package/.agent/agents/sql-reviewer.md +161 -194
- package/.agent/agents/supervisor-agent.md +184 -203
- package/.agent/agents/swarm-worker-contracts.md +17 -17
- package/.agent/agents/swarm-worker-registry.md +46 -46
- package/.agent/agents/test-coverage-reviewer.md +160 -193
- package/.agent/agents/test-engineer.md +0 -21
- package/.agent/agents/type-safety-reviewer.md +175 -208
- package/.agent/patterns/generator.md +9 -9
- package/.agent/patterns/inversion.md +12 -12
- package/.agent/patterns/pipeline.md +9 -9
- package/.agent/patterns/reviewer.md +13 -13
- package/.agent/patterns/tool-wrapper.md +9 -9
- package/.agent/rules/GEMINI.md +63 -63
- package/.agent/scripts/append_flow.js +72 -0
- package/.agent/scripts/case_law_manager.py +525 -0
- package/.agent/scripts/compress_skills.py +167 -0
- package/.agent/scripts/consolidate_skills.py +173 -0
- package/.agent/scripts/deep_compress.py +202 -0
- package/.agent/scripts/minify_context.py +80 -0
- package/.agent/scripts/security_scan.py +1 -1
- package/.agent/scripts/skill_evolution.py +563 -0
- package/.agent/scripts/strip_tribunal.py +41 -0
- package/.agent/skills/agent-organizer/SKILL.md +100 -126
- package/.agent/skills/agentic-patterns/SKILL.md +0 -70
- package/.agent/skills/ai-prompt-injection-defense/SKILL.md +134 -160
- package/.agent/skills/api-patterns/SKILL.md +123 -215
- package/.agent/skills/api-security-auditor/SKILL.md +143 -177
- package/.agent/skills/app-builder/SKILL.md +334 -50
- package/.agent/skills/app-builder/templates/SKILL.md +13 -15
- package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +16 -16
- package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +22 -22
- package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +18 -18
- package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +20 -20
- package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +17 -17
- package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +18 -18
- package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +21 -21
- package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +19 -19
- package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +26 -26
- package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +26 -26
- package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +19 -19
- package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +18 -18
- package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +20 -20
- package/.agent/skills/appflow-wireframe/SKILL.md +95 -121
- package/.agent/skills/architecture/SKILL.md +169 -331
- package/.agent/skills/authentication-best-practices/SKILL.md +139 -173
- package/.agent/skills/bash-linux/SKILL.md +129 -154
- package/.agent/skills/behavioral-modes/SKILL.md +8 -69
- package/.agent/skills/brainstorming/SKILL.md +436 -104
- package/.agent/skills/building-native-ui/SKILL.md +152 -174
- package/.agent/skills/clean-code/SKILL.md +331 -360
- package/.agent/skills/code-review-checklist/SKILL.md +0 -62
- package/.agent/skills/config-validator/SKILL.md +115 -141
- package/.agent/skills/csharp-developer/SKILL.md +468 -528
- package/.agent/skills/database-design/SKILL.md +104 -369
- package/.agent/skills/deployment-procedures/SKILL.md +119 -145
- package/.agent/skills/devops-engineer/SKILL.md +295 -332
- package/.agent/skills/devops-incident-responder/SKILL.md +87 -113
- package/.agent/skills/doc.md +5 -5
- package/.agent/skills/documentation-templates/SKILL.md +27 -63
- package/.agent/skills/edge-computing/SKILL.md +131 -157
- package/.agent/skills/extract-design-system/SKILL.md +108 -134
- package/.agent/skills/framer-motion-expert/SKILL.md +111 -855
- package/.agent/skills/frontend-design/SKILL.md +151 -499
- package/.agent/skills/game-design-expert/SKILL.md +79 -105
- package/.agent/skills/game-engineering-expert/SKILL.md +96 -122
- package/.agent/skills/geo-fundamentals/SKILL.md +97 -124
- package/.agent/skills/github-operations/SKILL.md +279 -314
- package/.agent/skills/gsap-expert/SKILL.md +119 -826
- package/.agent/skills/i18n-localization/SKILL.md +113 -138
- package/.agent/skills/intelligent-routing/SKILL.md +167 -127
- package/.agent/skills/lint-and-validate/SKILL.md +16 -52
- package/.agent/skills/llm-engineering/SKILL.md +344 -357
- package/.agent/skills/local-first/SKILL.md +128 -154
- package/.agent/skills/mcp-builder/SKILL.md +92 -118
- package/.agent/skills/mobile-design/SKILL.md +213 -219
- package/.agent/skills/motion-engineering/SKILL.md +184 -0
- package/.agent/skills/nextjs-react-expert/SKILL.md +99 -698
- package/.agent/skills/nodejs-best-practices/SKILL.md +498 -559
- package/.agent/skills/observability/SKILL.md +293 -330
- package/.agent/skills/parallel-agents/SKILL.md +96 -122
- package/.agent/skills/performance-profiling/SKILL.md +217 -254
- package/.agent/skills/plan-writing/SKILL.md +92 -118
- package/.agent/skills/platform-engineer/SKILL.md +97 -123
- package/.agent/skills/playwright-best-practices/SKILL.md +137 -162
- package/.agent/skills/powershell-windows/SKILL.md +112 -146
- package/.agent/skills/project-idioms/SKILL.md +87 -0
- package/.agent/skills/python-patterns/SKILL.md +15 -35
- package/.agent/skills/python-pro/SKILL.md +148 -754
- package/.agent/skills/react-specialist/SKILL.md +123 -827
- package/.agent/skills/readme-builder/SKILL.md +23 -85
- package/.agent/skills/realtime-patterns/SKILL.md +269 -304
- package/.agent/skills/red-team-tactics/SKILL.md +18 -51
- package/.agent/skills/rust-pro/SKILL.md +623 -701
- package/.agent/skills/seo-fundamentals/SKILL.md +129 -154
- package/.agent/skills/server-management/SKILL.md +164 -190
- package/.agent/skills/shadcn-ui-expert/SKILL.md +181 -206
- package/.agent/skills/skill-creator/SKILL.md +24 -56
- package/.agent/skills/sql-pro/SKILL.md +579 -633
- package/.agent/skills/supabase-postgres-best-practices/SKILL.md +35 -66
- package/.agent/skills/swiftui-expert/SKILL.md +151 -176
- package/.agent/skills/systematic-debugging/SKILL.md +92 -118
- package/.agent/skills/tailwind-patterns/SKILL.md +516 -576
- package/.agent/skills/tdd-workflow/SKILL.md +111 -137
- package/.agent/skills/test-result-analyzer/SKILL.md +33 -73
- package/.agent/skills/testing-patterns/SKILL.md +512 -573
- package/.agent/skills/trend-researcher/SKILL.md +30 -71
- package/.agent/skills/ui-ux-pro-max/SKILL.md +8 -41
- package/.agent/skills/ui-ux-researcher/SKILL.md +51 -91
- package/.agent/skills/vue-expert/SKILL.md +127 -866
- package/.agent/skills/vulnerability-scanner/SKILL.md +354 -269
- package/.agent/skills/web-accessibility-auditor/SKILL.md +168 -193
- package/.agent/skills/web-design-guidelines/SKILL.md +25 -61
- package/.agent/skills/webapp-testing/SKILL.md +119 -145
- package/.agent/skills/whimsy-injector/SKILL.md +58 -132
- package/.agent/skills/workflow-optimizer/SKILL.md +28 -68
- package/.agent/workflows/api-tester.md +151 -151
- package/.agent/workflows/audit.md +127 -138
- package/.agent/workflows/brainstorm.md +110 -110
- package/.agent/workflows/changelog.md +112 -112
- package/.agent/workflows/create.md +124 -124
- package/.agent/workflows/debug.md +165 -189
- package/.agent/workflows/deploy.md +180 -189
- package/.agent/workflows/enhance.md +128 -151
- package/.agent/workflows/fix.md +114 -135
- package/.agent/workflows/generate.md +13 -4
- package/.agent/workflows/migrate.md +160 -160
- package/.agent/workflows/orchestrate.md +168 -168
- package/.agent/workflows/performance-benchmarker.md +114 -123
- package/.agent/workflows/plan.md +173 -173
- package/.agent/workflows/preview.md +80 -80
- package/.agent/workflows/refactor.md +161 -183
- package/.agent/workflows/review-ai.md +101 -129
- package/.agent/workflows/review.md +116 -116
- package/.agent/workflows/session.md +94 -94
- package/.agent/workflows/status.md +79 -79
- package/.agent/workflows/strengthen-skills.md +138 -139
- package/.agent/workflows/swarm.md +179 -179
- package/.agent/workflows/test.md +189 -211
- package/.agent/workflows/tribunal-backend.md +94 -113
- package/.agent/workflows/tribunal-database.md +95 -115
- package/.agent/workflows/tribunal-frontend.md +96 -118
- package/.agent/workflows/tribunal-full.md +93 -133
- package/.agent/workflows/tribunal-mobile.md +95 -119
- package/.agent/workflows/tribunal-performance.md +110 -133
- package/.agent/workflows/ui-ux-pro-max.md +122 -143
- package/README.md +30 -1
- package/bin/tribunal-kit.js +175 -12
- package/package.json +25 -4
- package/.agent/skills/api-patterns/api-style.md +0 -42
- package/.agent/skills/api-patterns/auth.md +0 -24
- package/.agent/skills/api-patterns/documentation.md +0 -26
- package/.agent/skills/api-patterns/graphql.md +0 -41
- package/.agent/skills/api-patterns/rate-limiting.md +0 -31
- package/.agent/skills/api-patterns/response.md +0 -37
- package/.agent/skills/api-patterns/rest.md +0 -40
- package/.agent/skills/api-patterns/security-testing.md +0 -122
- package/.agent/skills/api-patterns/trpc.md +0 -41
- package/.agent/skills/api-patterns/versioning.md +0 -22
- package/.agent/skills/app-builder/agent-coordination.md +0 -71
- package/.agent/skills/app-builder/feature-building.md +0 -53
- package/.agent/skills/app-builder/project-detection.md +0 -34
- package/.agent/skills/app-builder/scaffolding.md +0 -118
- package/.agent/skills/app-builder/tech-stack.md +0 -40
- package/.agent/skills/architecture/context-discovery.md +0 -43
- package/.agent/skills/architecture/examples.md +0 -94
- package/.agent/skills/architecture/pattern-selection.md +0 -68
- package/.agent/skills/architecture/patterns-reference.md +0 -50
- package/.agent/skills/architecture/trade-off-analysis.md +0 -77
- package/.agent/skills/brainstorming/dynamic-questioning.md +0 -360
- package/.agent/skills/database-design/database-selection.md +0 -43
- package/.agent/skills/database-design/indexing.md +0 -39
- package/.agent/skills/database-design/migrations.md +0 -48
- package/.agent/skills/database-design/optimization.md +0 -36
- package/.agent/skills/database-design/orm-selection.md +0 -30
- package/.agent/skills/database-design/schema-design.md +0 -56
- package/.agent/skills/frontend-design/animation-guide.md +0 -331
- package/.agent/skills/frontend-design/color-system.md +0 -329
- package/.agent/skills/frontend-design/decision-trees.md +0 -418
- package/.agent/skills/frontend-design/motion-graphics.md +0 -306
- package/.agent/skills/frontend-design/typography-system.md +0 -363
- package/.agent/skills/frontend-design/ux-psychology.md +0 -1116
- package/.agent/skills/frontend-design/visual-effects.md +0 -383
- package/.agent/skills/intelligent-routing/router-manifest.md +0 -65
- package/.agent/skills/mobile-design/decision-trees.md +0 -516
- package/.agent/skills/mobile-design/mobile-backend.md +0 -491
- package/.agent/skills/mobile-design/mobile-color-system.md +0 -420
- package/.agent/skills/mobile-design/mobile-debugging.md +0 -122
- package/.agent/skills/mobile-design/mobile-design-thinking.md +0 -357
- package/.agent/skills/mobile-design/mobile-navigation.md +0 -458
- package/.agent/skills/mobile-design/mobile-performance.md +0 -767
- package/.agent/skills/mobile-design/mobile-testing.md +0 -356
- package/.agent/skills/mobile-design/mobile-typography.md +0 -433
- package/.agent/skills/mobile-design/platform-android.md +0 -666
- package/.agent/skills/mobile-design/platform-ios.md +0 -561
- package/.agent/skills/mobile-design/touch-psychology.md +0 -537
- package/.agent/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +0 -312
- package/.agent/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +0 -240
- package/.agent/skills/nextjs-react-expert/3-server-server-side-performance.md +0 -490
- package/.agent/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +0 -264
- package/.agent/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +0 -581
- package/.agent/skills/nextjs-react-expert/6-rendering-rendering-performance.md +0 -432
- package/.agent/skills/nextjs-react-expert/7-js-javascript-performance.md +0 -684
- package/.agent/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +0 -150
- package/.agent/skills/vulnerability-scanner/checklists.md +0 -121
|
@@ -27,18 +27,18 @@ You are a specialized agent for analyzing and optimizing the efficiency of AI ag
|
|
|
27
27
|
|
|
28
28
|
Examine a sequence of tool calls and classify each into:
|
|
29
29
|
|
|
30
|
-
|
|
|
30
|
+
|Pattern|Description|Waste Level|Fix|
|
|
31
31
|
|---|---|---|---|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
32
|
+
|**Redundant Read**|File read multiple times without changes|🔴 High|Cache the content; read once|
|
|
33
|
+
|**Blind Search**|`grep_search` or `find_by_name` when path was known|🟡 Medium|Use `view_file` directly|
|
|
34
|
+
|**Serial Bottleneck**|Independent calls made sequentially|🔴 High|Parallelize with concurrent calls|
|
|
35
|
+
|**Ping-Pong Edit**|Multiple `replace_file_content` on same file|🟡 Medium|Combine into `multi_replace_file_content`|
|
|
36
|
+
|**Over-Read**|`view_file` full file when only one function needed|🟡 Medium|Use `view_code_item` or line ranges|
|
|
37
|
+
|**Unnecessary Outline**|`view_file_outline` on a file already fully read|🟢 Low|Skip — content already in context|
|
|
38
|
+
|**Search Then Read**|`grep_search` → `view_file` → `view_code_item`|🟡 Medium|Skip directly to relevant tool|
|
|
39
|
+
|**Repeated Status**|Multiple `command_status` calls before completion|🟢 Low|Use `WaitDurationSeconds` parameter|
|
|
40
|
+
|**Task Churn**|`task_boundary` called every single tool call|🟡 Medium|Update every 3-5 tool calls|
|
|
41
|
+
|**Context Dump**|Reading entire large files into context|🔴 High|Targeted reads with line ranges|
|
|
42
42
|
|
|
43
43
|
### 2. Parallelism Opportunity Detection
|
|
44
44
|
|
|
@@ -65,34 +65,34 @@ Identify tool calls that have no data dependencies and should run simultaneously
|
|
|
65
65
|
|
|
66
66
|
Evaluate `task.md` and `task_boundary` usage:
|
|
67
67
|
|
|
68
|
-
|
|
|
68
|
+
|Issue|Symptom|Fix|
|
|
69
69
|
|---|---|---|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
70
|
+
|**Too Granular**|One `task_boundary` per tool call|Group into logical phases (3-8 calls per task)|
|
|
71
|
+
|**Too Broad**|One task for entire request|Break into Planning → Execution → Verification|
|
|
72
|
+
|**Stale Summary**|`TaskSummary` repeating same text|Accumulate new info each update|
|
|
73
|
+
|**Backward Status**|`TaskStatus` describes what was *done*|Must describe what *will happen next*|
|
|
74
|
+
|**Missing Mode**|Never switches between PLANNING/EXECUTION/VERIFICATION|Use mode transitions to signal phase changes|
|
|
75
75
|
|
|
76
76
|
### 4. Context Window Budget Analysis
|
|
77
77
|
|
|
78
|
-
|
|
|
78
|
+
|Metric|Target|Action if Exceeded|
|
|
79
79
|
|---|---|---|
|
|
80
|
-
|
|
|
81
|
-
|
|
|
82
|
-
|
|
|
83
|
-
|
|
|
84
|
-
|
|
|
80
|
+
|Total lines read|< 500 per task phase|Filter to relevant sections|
|
|
81
|
+
|Files in context|< 10 simultaneously|Prioritize; drop stale reads|
|
|
82
|
+
|Search results|< 20 matches|Narrow filters (`Includes`, `Pattern`)|
|
|
83
|
+
|File reads per file|1 per phase|Cache mentally; don't re-read|
|
|
84
|
+
|Artifact updates|< 5 per task|Batch updates|
|
|
85
85
|
|
|
86
86
|
### 5. Error Recovery Efficiency
|
|
87
87
|
|
|
88
88
|
Analyze how errors are handled:
|
|
89
89
|
|
|
90
|
-
|
|
|
90
|
+
|Pattern|Efficiency|Better Approach|
|
|
91
91
|
|---|---|---|
|
|
92
|
-
|
|
|
93
|
-
|
|
|
94
|
-
|
|
|
95
|
-
|
|
|
92
|
+
|Retry same command identically|🔴 Wasted|Analyze error first, modify approach|
|
|
93
|
+
|Read error → re-read entire file|🟡 Inefficient|Read only the relevant section|
|
|
94
|
+
|Tool error → ask user|🟡 Premature|Try alternative approach first|
|
|
95
|
+
|Build error → fix one issue → rebuild|🟢 OK if targeted|Batch multiple fixes before rebuild|
|
|
96
96
|
|
|
97
97
|
## Optimization Metrics
|
|
98
98
|
|
|
@@ -176,44 +176,4 @@ Before analyzing, check for these common quick wins:
|
|
|
176
176
|
- **Never fabricate efficiency scores** — always calculate from actual vs optimal counts.
|
|
177
177
|
- **Acknowledge uncertainty**: "Cannot determine if calls 3-5 had data dependency — may be correctly sequential."
|
|
178
178
|
|
|
179
|
-
|
|
180
|
-
---
|
|
181
|
-
|
|
182
|
-
## 🤖 LLM-Specific Traps
|
|
183
|
-
|
|
184
|
-
AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
|
|
185
|
-
|
|
186
|
-
1. **Over-engineering:** Proposing complex abstractions or distributed systems when a simpler approach suffices.
|
|
187
|
-
2. **Hallucinated Libraries/Methods:** Using non-existent methods or packages. Always `// VERIFY` or check `package.json` / `requirements.txt`.
|
|
188
|
-
3. **Skipping Edge Cases:** Writing the "happy path" and ignoring error handling, timeouts, or data validation.
|
|
189
|
-
4. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
|
|
190
|
-
5. **Silent Degradation:** Catching and suppressing errors without logging or re-raising.
|
|
191
|
-
|
|
192
179
|
---
|
|
193
|
-
|
|
194
|
-
## 🏛️ Tribunal Integration (Anti-Hallucination)
|
|
195
|
-
|
|
196
|
-
**Slash command: `/review` or `/tribunal-full`**
|
|
197
|
-
**Active reviewers: `logic-reviewer` · `security-auditor`**
|
|
198
|
-
|
|
199
|
-
### ❌ Forbidden AI Tropes
|
|
200
|
-
|
|
201
|
-
1. **Blind Assumptions:** Never make an assumption without documenting it clearly with `// VERIFY: [reason]`.
|
|
202
|
-
2. **Silent Degradation:** Catching and suppressing errors without logging or handling.
|
|
203
|
-
3. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
|
|
204
|
-
|
|
205
|
-
### ✅ Pre-Flight Self-Audit
|
|
206
|
-
|
|
207
|
-
Review these questions before confirming output:
|
|
208
|
-
```
|
|
209
|
-
✅ Did I rely ONLY on real, verified tools and methods?
|
|
210
|
-
✅ Is this solution appropriately scoped to the user's constraints?
|
|
211
|
-
✅ Did I handle potential failure modes and edge cases?
|
|
212
|
-
✅ Have I avoided generic boilerplate that doesn't add value?
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
### 🛑 Verification-Before-Completion (VBC) Protocol
|
|
216
|
-
|
|
217
|
-
**CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
|
|
218
|
-
- ❌ **Forbidden:** Declaring a task complete because the output "looks correct."
|
|
219
|
-
- ✅ **Required:** You are explicitly forbidden from finalizing any task without providing **concrete evidence** (terminal output, passing tests, compile success, or equivalent proof) that your output works as intended.
|
|
@@ -1,151 +1,151 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Automated multi-stage API endpoint testing. Generates and runs auth-aware request sequences (login → use token → test CRUD → verify errors). Reports response codes, schema mismatches, and unexpected data.
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# /api-tester — Automated API Testing
|
|
6
|
-
|
|
7
|
-
$ARGUMENTS
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## When to Use /api-tester
|
|
12
|
-
|
|
13
|
-
|
|
|
14
|
-
|:---|:---|
|
|
15
|
-
|
|
|
16
|
-
|
|
|
17
|
-
|
|
|
18
|
-
|
|
|
19
|
-
|
|
20
|
-
---
|
|
21
|
-
|
|
22
|
-
## Phase 1 — Endpoint Discovery
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
# Find all defined routes
|
|
26
|
-
grep -r "app.get\|app.post\|app.put\|app.delete\|app.patch" src/ --include="*.ts"
|
|
27
|
-
grep -r "router.get\|router.post\|router.put" src/ --include="*.ts"
|
|
28
|
-
|
|
29
|
-
# Next.js Route Handlers
|
|
30
|
-
find src/app/api -name "route.ts" | sort
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
---
|
|
34
|
-
|
|
35
|
-
## Phase 2 — Auth Flow (Token Acquisition)
|
|
36
|
-
|
|
37
|
-
Before testing protected endpoints, acquire auth token:
|
|
38
|
-
|
|
39
|
-
```bash
|
|
40
|
-
# Acquire JWT
|
|
41
|
-
curl -X POST http://localhost:3000/api/auth/login \
|
|
42
|
-
-H "Content-Type: application/json" \
|
|
43
|
-
-d '{"email":"test@example.com","password":"testpassword"}' \
|
|
44
|
-
-s | jq '.token'
|
|
45
|
-
|
|
46
|
-
# Assign to variable
|
|
47
|
-
TOKEN=$(curl -X POST http://localhost:3000/api/auth/login \
|
|
48
|
-
-H "Content-Type: application/json" \
|
|
49
|
-
-d '{"email":"test@example.com","password":"testpassword"}' \
|
|
50
|
-
-s | jq -r '.token')
|
|
51
|
-
```
|
|
52
|
-
|
|
53
|
-
---
|
|
54
|
-
|
|
55
|
-
## Phase 3 — CRUD Sequence Testing
|
|
56
|
-
|
|
57
|
-
Test endpoints in the correct order (create before read, read before delete):
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
# 1. CREATE (POST)
|
|
61
|
-
CREATE_RESPONSE=$(curl -X POST http://localhost:3000/api/users \
|
|
62
|
-
-H "Authorization: Bearer $TOKEN" \
|
|
63
|
-
-H "Content-Type: application/json" \
|
|
64
|
-
-d '{"name":"Test User","email":"new@test.com"}')
|
|
65
|
-
CREATED_ID=$(echo $CREATE_RESPONSE | jq -r '.id')
|
|
66
|
-
echo "Created: $CREATED_ID"
|
|
67
|
-
|
|
68
|
-
# 2. READ (GET)
|
|
69
|
-
curl -X GET "http://localhost:3000/api/users/$CREATED_ID" \
|
|
70
|
-
-H "Authorization: Bearer $TOKEN" \
|
|
71
|
-
| jq .
|
|
72
|
-
|
|
73
|
-
# 3. UPDATE (PATCH)
|
|
74
|
-
curl -X PATCH "http://localhost:3000/api/users/$CREATED_ID" \
|
|
75
|
-
-H "Authorization: Bearer $TOKEN" \
|
|
76
|
-
-H "Content-Type: application/json" \
|
|
77
|
-
-d '{"name":"Updated Name"}'
|
|
78
|
-
|
|
79
|
-
# 4. DELETE
|
|
80
|
-
curl -X DELETE "http://localhost:3000/api/users/$CREATED_ID" \
|
|
81
|
-
-H "Authorization: Bearer $TOKEN"
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
## Phase 4 — Error Case Testing
|
|
87
|
-
|
|
88
|
-
Test that errors are handled correctly:
|
|
89
|
-
|
|
90
|
-
```bash
|
|
91
|
-
# 4xx errors (client errors — must NOT return 200!)
|
|
92
|
-
echo "--- Unauthenticated request (expect 401) ---"
|
|
93
|
-
curl -X GET http://localhost:3000/api/users -s -o /dev/null -w "%{http_code}\n"
|
|
94
|
-
|
|
95
|
-
echo "--- Invalid ID (expect 404 or 400) ---"
|
|
96
|
-
curl -X GET "http://localhost:3000/api/users/not-a-real-id" \
|
|
97
|
-
-H "Authorization: Bearer $TOKEN" \
|
|
98
|
-
-s -o /dev/null -w "%{http_code}\n"
|
|
99
|
-
|
|
100
|
-
echo "--- Invalid body (expect 400) ---"
|
|
101
|
-
curl -X POST http://localhost:3000/api/users \
|
|
102
|
-
-H "Authorization: Bearer $TOKEN" \
|
|
103
|
-
-H "Content-Type: application/json" \
|
|
104
|
-
-d '{"invalid":"field"}' \
|
|
105
|
-
-s -o /dev/null -w "%{http_code}\n"
|
|
106
|
-
|
|
107
|
-
echo "--- Rate limiting (expect 429 after N requests) ---"
|
|
108
|
-
for i in {1..15}; do
|
|
109
|
-
STATUS=$(curl -X POST http://localhost:3000/api/auth/login \
|
|
110
|
-
-H "Content-Type: application/json" \
|
|
111
|
-
-d '{"email":"x","password":"wrong"}' \
|
|
112
|
-
-s -o /dev/null -w "%{http_code}")
|
|
113
|
-
echo "Attempt $i: $STATUS"
|
|
114
|
-
done
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
---
|
|
118
|
-
|
|
119
|
-
## Phase 5 — Test Report
|
|
120
|
-
|
|
121
|
-
```
|
|
122
|
-
━━━ API Test Report ━━━━━━━━━━━━━━━━━━━━━━
|
|
123
|
-
|
|
124
|
-
Auth Flow: ✅ Login → token acquired
|
|
125
|
-
POST /users: ✅ 201 Created — id returned
|
|
126
|
-
GET /users: ✅ 200 — data matches expected schema
|
|
127
|
-
PATCH /users: ✅ 200 — update reflected
|
|
128
|
-
DELETE /users: ✅ 204 No Content
|
|
129
|
-
|
|
130
|
-
Error Cases:
|
|
131
|
-
Unauthenticated: ✅ 401 (expected)
|
|
132
|
-
Invalid ID: ✅ 404 (expected)
|
|
133
|
-
Invalid body: ✅ 400 (expected) — Zod error returned
|
|
134
|
-
Rate limiting: ✅ 429 on attempt 11 (expected)
|
|
135
|
-
|
|
136
|
-
━━━ Issues Found ━━━━━━━━━━━━━━━━━━━━━━━━
|
|
137
|
-
|
|
138
|
-
❌ GET /api/users returns 200 with no auth (should be 401)
|
|
139
|
-
⚠️ PATCH /api/users doesn't validate Content-Type (accepts any body)
|
|
140
|
-
```
|
|
141
|
-
|
|
142
|
-
---
|
|
143
|
-
|
|
144
|
-
## Usage Examples
|
|
145
|
-
|
|
146
|
-
```
|
|
147
|
-
/api-tester POST /api/auth/login then test /api/users CRUD
|
|
148
|
-
/api-tester test the /api/checkout flow with Stripe test card
|
|
149
|
-
/api-tester verify all auth routes return 401 for unauthenticated requests
|
|
150
|
-
/api-tester test rate limiting on /api/auth/login
|
|
151
|
-
```
|
|
1
|
+
---
|
|
2
|
+
description: Automated multi-stage API endpoint testing. Generates and runs auth-aware request sequences (login → use token → test CRUD → verify errors). Reports response codes, schema mismatches, and unexpected data.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# /api-tester — Automated API Testing
|
|
6
|
+
|
|
7
|
+
$ARGUMENTS
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## When to Use /api-tester
|
|
12
|
+
|
|
13
|
+
|Use `/api-tester` when...|Use something else when...|
|
|
14
|
+
|:---|:---|
|
|
15
|
+
|Testing REST API endpoints manually|Unit tests needed → `/test`|
|
|
16
|
+
|Verifying auth token flows end-to-end|Full security audit → `/audit`|
|
|
17
|
+
|After generating new endpoints|Load testing → `/performance-benchmarker`|
|
|
18
|
+
|Checking response schemas||
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Phase 1 — Endpoint Discovery
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# Find all defined routes
|
|
26
|
+
grep -r "app.get\|app.post\|app.put\|app.delete\|app.patch" src/ --include="*.ts"
|
|
27
|
+
grep -r "router.get\|router.post\|router.put" src/ --include="*.ts"
|
|
28
|
+
|
|
29
|
+
# Next.js Route Handlers
|
|
30
|
+
find src/app/api -name "route.ts" | sort
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Phase 2 — Auth Flow (Token Acquisition)
|
|
36
|
+
|
|
37
|
+
Before testing protected endpoints, acquire auth token:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
# Acquire JWT
|
|
41
|
+
curl -X POST http://localhost:3000/api/auth/login \
|
|
42
|
+
-H "Content-Type: application/json" \
|
|
43
|
+
-d '{"email":"test@example.com","password":"testpassword"}' \
|
|
44
|
+
-s | jq '.token'
|
|
45
|
+
|
|
46
|
+
# Assign to variable
|
|
47
|
+
TOKEN=$(curl -X POST http://localhost:3000/api/auth/login \
|
|
48
|
+
-H "Content-Type: application/json" \
|
|
49
|
+
-d '{"email":"test@example.com","password":"testpassword"}' \
|
|
50
|
+
-s | jq -r '.token')
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Phase 3 — CRUD Sequence Testing
|
|
56
|
+
|
|
57
|
+
Test endpoints in the correct order (create before read, read before delete):
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# 1. CREATE (POST)
|
|
61
|
+
CREATE_RESPONSE=$(curl -X POST http://localhost:3000/api/users \
|
|
62
|
+
-H "Authorization: Bearer $TOKEN" \
|
|
63
|
+
-H "Content-Type: application/json" \
|
|
64
|
+
-d '{"name":"Test User","email":"new@test.com"}')
|
|
65
|
+
CREATED_ID=$(echo $CREATE_RESPONSE | jq -r '.id')
|
|
66
|
+
echo "Created: $CREATED_ID"
|
|
67
|
+
|
|
68
|
+
# 2. READ (GET)
|
|
69
|
+
curl -X GET "http://localhost:3000/api/users/$CREATED_ID" \
|
|
70
|
+
-H "Authorization: Bearer $TOKEN" \
|
|
71
|
+
| jq .
|
|
72
|
+
|
|
73
|
+
# 3. UPDATE (PATCH)
|
|
74
|
+
curl -X PATCH "http://localhost:3000/api/users/$CREATED_ID" \
|
|
75
|
+
-H "Authorization: Bearer $TOKEN" \
|
|
76
|
+
-H "Content-Type: application/json" \
|
|
77
|
+
-d '{"name":"Updated Name"}'
|
|
78
|
+
|
|
79
|
+
# 4. DELETE
|
|
80
|
+
curl -X DELETE "http://localhost:3000/api/users/$CREATED_ID" \
|
|
81
|
+
-H "Authorization: Bearer $TOKEN"
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Phase 4 — Error Case Testing
|
|
87
|
+
|
|
88
|
+
Test that errors are handled correctly:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
# 4xx errors (client errors — must NOT return 200!)
|
|
92
|
+
echo "--- Unauthenticated request (expect 401) ---"
|
|
93
|
+
curl -X GET http://localhost:3000/api/users -s -o /dev/null -w "%{http_code}\n"
|
|
94
|
+
|
|
95
|
+
echo "--- Invalid ID (expect 404 or 400) ---"
|
|
96
|
+
curl -X GET "http://localhost:3000/api/users/not-a-real-id" \
|
|
97
|
+
-H "Authorization: Bearer $TOKEN" \
|
|
98
|
+
-s -o /dev/null -w "%{http_code}\n"
|
|
99
|
+
|
|
100
|
+
echo "--- Invalid body (expect 400) ---"
|
|
101
|
+
curl -X POST http://localhost:3000/api/users \
|
|
102
|
+
-H "Authorization: Bearer $TOKEN" \
|
|
103
|
+
-H "Content-Type: application/json" \
|
|
104
|
+
-d '{"invalid":"field"}' \
|
|
105
|
+
-s -o /dev/null -w "%{http_code}\n"
|
|
106
|
+
|
|
107
|
+
echo "--- Rate limiting (expect 429 after N requests) ---"
|
|
108
|
+
for i in {1..15}; do
|
|
109
|
+
STATUS=$(curl -X POST http://localhost:3000/api/auth/login \
|
|
110
|
+
-H "Content-Type: application/json" \
|
|
111
|
+
-d '{"email":"x","password":"wrong"}' \
|
|
112
|
+
-s -o /dev/null -w "%{http_code}")
|
|
113
|
+
echo "Attempt $i: $STATUS"
|
|
114
|
+
done
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## Phase 5 — Test Report
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
━━━ API Test Report ━━━━━━━━━━━━━━━━━━━━━━
|
|
123
|
+
|
|
124
|
+
Auth Flow: ✅ Login → token acquired
|
|
125
|
+
POST /users: ✅ 201 Created — id returned
|
|
126
|
+
GET /users: ✅ 200 — data matches expected schema
|
|
127
|
+
PATCH /users: ✅ 200 — update reflected
|
|
128
|
+
DELETE /users: ✅ 204 No Content
|
|
129
|
+
|
|
130
|
+
Error Cases:
|
|
131
|
+
Unauthenticated: ✅ 401 (expected)
|
|
132
|
+
Invalid ID: ✅ 404 (expected)
|
|
133
|
+
Invalid body: ✅ 400 (expected) — Zod error returned
|
|
134
|
+
Rate limiting: ✅ 429 on attempt 11 (expected)
|
|
135
|
+
|
|
136
|
+
━━━ Issues Found ━━━━━━━━━━━━━━━━━━━━━━━━
|
|
137
|
+
|
|
138
|
+
❌ GET /api/users returns 200 with no auth (should be 401)
|
|
139
|
+
⚠️ PATCH /api/users doesn't validate Content-Type (accepts any body)
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
## Usage Examples
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
/api-tester POST /api/auth/login then test /api/users CRUD
|
|
148
|
+
/api-tester test the /api/checkout flow with Stripe test card
|
|
149
|
+
/api-tester verify all auth routes return 401 for unauthenticated requests
|
|
150
|
+
/api-tester test rate limiting on /api/auth/login
|
|
151
|
+
```
|