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.
Files changed (127) hide show
  1. package/.agent/.shared/ui-ux-pro-max/README.md +3 -3
  2. package/.agent/ARCHITECTURE.md +205 -10
  3. package/.agent/GEMINI.md +37 -7
  4. package/.agent/agents/accessibility-reviewer.md +134 -0
  5. package/.agent/agents/ai-code-reviewer.md +129 -0
  6. package/.agent/agents/frontend-specialist.md +3 -0
  7. package/.agent/agents/game-developer.md +21 -21
  8. package/.agent/agents/logic-reviewer.md +12 -0
  9. package/.agent/agents/mobile-reviewer.md +79 -0
  10. package/.agent/agents/orchestrator.md +56 -26
  11. package/.agent/agents/performance-reviewer.md +36 -0
  12. package/.agent/agents/supervisor-agent.md +156 -0
  13. package/.agent/agents/swarm-worker-contracts.md +166 -0
  14. package/.agent/agents/swarm-worker-registry.md +92 -0
  15. package/.agent/rules/GEMINI.md +134 -5
  16. package/.agent/scripts/bundle_analyzer.py +259 -0
  17. package/.agent/scripts/dependency_analyzer.py +247 -0
  18. package/.agent/scripts/lint_runner.py +188 -0
  19. package/.agent/scripts/patch_skills_meta.py +177 -0
  20. package/.agent/scripts/patch_skills_output.py +285 -0
  21. package/.agent/scripts/schema_validator.py +279 -0
  22. package/.agent/scripts/security_scan.py +224 -0
  23. package/.agent/scripts/session_manager.py +144 -3
  24. package/.agent/scripts/skill_integrator.py +234 -0
  25. package/.agent/scripts/strengthen_skills.py +220 -0
  26. package/.agent/scripts/swarm_dispatcher.py +317 -0
  27. package/.agent/scripts/test_runner.py +192 -0
  28. package/.agent/scripts/test_swarm_dispatcher.py +163 -0
  29. package/.agent/skills/agent-organizer/SKILL.md +132 -0
  30. package/.agent/skills/agentic-patterns/SKILL.md +335 -0
  31. package/.agent/skills/api-patterns/SKILL.md +226 -50
  32. package/.agent/skills/app-builder/SKILL.md +215 -52
  33. package/.agent/skills/architecture/SKILL.md +176 -31
  34. package/.agent/skills/bash-linux/SKILL.md +150 -134
  35. package/.agent/skills/behavioral-modes/SKILL.md +152 -160
  36. package/.agent/skills/brainstorming/SKILL.md +148 -101
  37. package/.agent/skills/brainstorming/dynamic-questioning.md +10 -0
  38. package/.agent/skills/clean-code/SKILL.md +139 -134
  39. package/.agent/skills/code-review-checklist/SKILL.md +177 -80
  40. package/.agent/skills/config-validator/SKILL.md +165 -0
  41. package/.agent/skills/csharp-developer/SKILL.md +107 -0
  42. package/.agent/skills/database-design/SKILL.md +252 -29
  43. package/.agent/skills/deployment-procedures/SKILL.md +122 -175
  44. package/.agent/skills/devops-engineer/SKILL.md +134 -0
  45. package/.agent/skills/devops-incident-responder/SKILL.md +98 -0
  46. package/.agent/skills/documentation-templates/SKILL.md +175 -121
  47. package/.agent/skills/dotnet-core-expert/SKILL.md +103 -0
  48. package/.agent/skills/edge-computing/SKILL.md +213 -0
  49. package/.agent/skills/frontend-design/SKILL.md +76 -0
  50. package/.agent/skills/frontend-design/color-system.md +18 -0
  51. package/.agent/skills/frontend-design/typography-system.md +18 -0
  52. package/.agent/skills/game-development/SKILL.md +69 -0
  53. package/.agent/skills/geo-fundamentals/SKILL.md +158 -99
  54. package/.agent/skills/github-operations/SKILL.md +354 -0
  55. package/.agent/skills/i18n-localization/SKILL.md +158 -96
  56. package/.agent/skills/intelligent-routing/SKILL.md +89 -285
  57. package/.agent/skills/intelligent-routing/router-manifest.md +65 -0
  58. package/.agent/skills/lint-and-validate/SKILL.md +229 -27
  59. package/.agent/skills/llm-engineering/SKILL.md +258 -0
  60. package/.agent/skills/local-first/SKILL.md +203 -0
  61. package/.agent/skills/mcp-builder/SKILL.md +159 -111
  62. package/.agent/skills/mobile-design/SKILL.md +102 -282
  63. package/.agent/skills/nextjs-react-expert/SKILL.md +143 -227
  64. package/.agent/skills/nodejs-best-practices/SKILL.md +201 -254
  65. package/.agent/skills/observability/SKILL.md +285 -0
  66. package/.agent/skills/parallel-agents/SKILL.md +124 -118
  67. package/.agent/skills/performance-profiling/SKILL.md +143 -89
  68. package/.agent/skills/plan-writing/SKILL.md +133 -97
  69. package/.agent/skills/platform-engineer/SKILL.md +135 -0
  70. package/.agent/skills/powershell-windows/SKILL.md +167 -104
  71. package/.agent/skills/python-patterns/SKILL.md +149 -361
  72. package/.agent/skills/python-pro/SKILL.md +114 -0
  73. package/.agent/skills/react-specialist/SKILL.md +107 -0
  74. package/.agent/skills/readme-builder/SKILL.md +270 -0
  75. package/.agent/skills/realtime-patterns/SKILL.md +296 -0
  76. package/.agent/skills/red-team-tactics/SKILL.md +136 -134
  77. package/.agent/skills/rust-pro/SKILL.md +237 -173
  78. package/.agent/skills/seo-fundamentals/SKILL.md +134 -82
  79. package/.agent/skills/server-management/SKILL.md +155 -104
  80. package/.agent/skills/sql-pro/SKILL.md +104 -0
  81. package/.agent/skills/systematic-debugging/SKILL.md +156 -79
  82. package/.agent/skills/tailwind-patterns/SKILL.md +163 -205
  83. package/.agent/skills/tdd-workflow/SKILL.md +148 -88
  84. package/.agent/skills/test-result-analyzer/SKILL.md +299 -0
  85. package/.agent/skills/testing-patterns/SKILL.md +141 -114
  86. package/.agent/skills/trend-researcher/SKILL.md +228 -0
  87. package/.agent/skills/ui-ux-pro-max/SKILL.md +107 -0
  88. package/.agent/skills/ui-ux-researcher/SKILL.md +234 -0
  89. package/.agent/skills/vue-expert/SKILL.md +118 -0
  90. package/.agent/skills/vulnerability-scanner/SKILL.md +228 -188
  91. package/.agent/skills/web-design-guidelines/SKILL.md +148 -33
  92. package/.agent/skills/webapp-testing/SKILL.md +171 -122
  93. package/.agent/skills/whimsy-injector/SKILL.md +349 -0
  94. package/.agent/skills/workflow-optimizer/SKILL.md +219 -0
  95. package/.agent/workflows/api-tester.md +279 -0
  96. package/.agent/workflows/audit.md +168 -0
  97. package/.agent/workflows/brainstorm.md +65 -19
  98. package/.agent/workflows/changelog.md +144 -0
  99. package/.agent/workflows/create.md +67 -14
  100. package/.agent/workflows/debug.md +122 -30
  101. package/.agent/workflows/deploy.md +82 -31
  102. package/.agent/workflows/enhance.md +59 -27
  103. package/.agent/workflows/fix.md +143 -0
  104. package/.agent/workflows/generate.md +84 -20
  105. package/.agent/workflows/migrate.md +163 -0
  106. package/.agent/workflows/orchestrate.md +66 -17
  107. package/.agent/workflows/performance-benchmarker.md +305 -0
  108. package/.agent/workflows/plan.md +76 -33
  109. package/.agent/workflows/preview.md +73 -17
  110. package/.agent/workflows/refactor.md +153 -0
  111. package/.agent/workflows/review-ai.md +140 -0
  112. package/.agent/workflows/review.md +83 -16
  113. package/.agent/workflows/session.md +154 -0
  114. package/.agent/workflows/status.md +74 -18
  115. package/.agent/workflows/strengthen-skills.md +99 -0
  116. package/.agent/workflows/swarm.md +194 -0
  117. package/.agent/workflows/test.md +80 -31
  118. package/.agent/workflows/tribunal-backend.md +55 -13
  119. package/.agent/workflows/tribunal-database.md +62 -18
  120. package/.agent/workflows/tribunal-frontend.md +58 -12
  121. package/.agent/workflows/tribunal-full.md +70 -11
  122. package/.agent/workflows/tribunal-mobile.md +123 -0
  123. package/.agent/workflows/tribunal-performance.md +152 -0
  124. package/.agent/workflows/ui-ux-pro-max.md +100 -82
  125. package/README.md +117 -62
  126. package/bin/tribunal-kit.js +542 -288
  127. package/package.json +10 -6
@@ -44,6 +44,18 @@ Flag any variable or property accessed that was not:
44
44
  - Circular dependencies without an exit condition
45
45
  - Return statements inside `Promise` constructors that affect nothing
46
46
 
47
+ ### AI/LLM Integration Hallucinations
48
+
49
+ When reviewing code that calls AI APIs, check for these specific patterns:
50
+
51
+ | Hallucination | Example | Reality |
52
+ |---|---|---|
53
+ | Fake model name | `model: "gpt-5"` | Does not exist — check provider docs |
54
+ | Wrong param type | `temperature: "low"` | Must be float 0.0–2.0 |
55
+ | Invented param | `max_length: 500` | Not real — use `max_tokens` |
56
+ | Phantom SDK method | `openai.chat.stream()` | Use `.create({ stream: true })` |
57
+ | Sync LLM call | `const res = callLLM()` | All LLM API calls are async |
58
+
47
59
  ---
48
60
 
49
61
  ## Review Checklist
@@ -0,0 +1,79 @@
1
+ ---
2
+ name: mobile-reviewer
3
+ description: Audits mobile application code (React Native, Flutter, responsive web) for touch targets, safe areas, keyboard avoiding, and mobile-first gestures. Activates on /tribunal-mobile and requests involving mobile development.
4
+ ---
5
+
6
+ # Mobile Reviewer — The Mobile UX Auditor
7
+
8
+ ## Core Philosophy
9
+
10
+ > "A desktop design shrunk to fit a phone is not a mobile app. Mobile means fingers, interruptions, and varying network conditions."
11
+
12
+ ## Your Mindset
13
+
14
+ - **Touch targets must be tappable**: A 24x24pt button is a frustrating experience on mobile.
15
+ - **Notches and safe areas exist**: Content hidden behind the dynamic island is broken UI.
16
+ - **The keyboard is your enemy**: If the input field is covered when trying to type, it fails.
17
+ - **Performance is critical**: Mobile devices have battery constraints and slower single-core performance.
18
+
19
+ ---
20
+
21
+ ## What You Check
22
+
23
+ ### 1. Touch Target Sizes
24
+
25
+ ```
26
+ ❌ <TouchableOpacity style={{ padding: 4 }}> // Too small
27
+ <Text>Submit</Text>
28
+ </TouchableOpacity>
29
+
30
+ ✅ <TouchableOpacity style={{ padding: 12, minHeight: 44, minWidth: 44 }}>
31
+ <Text>Submit</Text>
32
+ </TouchableOpacity>
33
+ ```
34
+
35
+ ### 2. Safe Area Handling
36
+
37
+ ```
38
+ ❌ <View style={{ flex: 1, paddingTop: 0 }}> // Content hits the notch
39
+ <Header />
40
+ </View>
41
+
42
+ ✅ <SafeAreaView style={{ flex: 1 }}>
43
+ <Header />
44
+ </SafeAreaView>
45
+ ```
46
+
47
+ ### 3. Keyboard Avoidance
48
+
49
+ ```
50
+ ❌ <ScrollView>
51
+ <TextInput placeholder="Type here" /> // Might be covered by keyboard
52
+ </ScrollView>
53
+
54
+ ✅ <KeyboardAvoidingView behavior={Platform.OS === 'ios' ? 'padding' : 'height'}>
55
+ <ScrollView>
56
+ <TextInput placeholder="Type here" />
57
+ </ScrollView>
58
+ </KeyboardAvoidingView>
59
+ ```
60
+
61
+ ### 4. Image Optimization
62
+
63
+ ```
64
+ ❌ <Image source={{ uri }} /> // Unknown dimensions, possible memory leak
65
+
66
+ ✅ <FastImage source={{ uri }} resizeMode={FastImage.resizeMode.cover} />
67
+ ```
68
+
69
+ ---
70
+
71
+ ## Output Format
72
+
73
+ ```
74
+ 📱 Mobile Review: [APPROVED ✅ / REJECTED ❌]
75
+
76
+ Issues found:
77
+ - Line 42: Button touch target is only 20px high (minimum recommended is 44px).
78
+ - Line 85: Missing KeyboardAvoidingView wrapping the main form ScrollView.
79
+ ```
@@ -38,21 +38,34 @@ Can any of these tasks run in parallel?
38
38
 
39
39
  I do not proceed until these are answered.
40
40
 
41
- ### Step 2 — Decompose into Specialist Tasks
42
-
43
- ```
44
- Complex request
45
-
46
- ├── DB Schema → database-architect
47
- ├── API Layer → backend-specialist
48
- ├── UI → frontend-specialist
49
- ├── Auth → backend-specialist (security focus)
50
- ├── Tests → qa-automation-engineer / test-engineer
51
- └── Deploy → devops-engineer
41
+ ### Step 2 — Decompose into Micro-Worker Tasks (JSON Payload)
42
+
43
+ I act as a **Manager**. I do not share my entire conversation history with other agents. Instead, I dispatch isolated, strictly scoped tasks to Micro-Workers.
44
+ To dispatch workers, I must output a JSON block in the exact following format:
45
+
46
+ ```json
47
+ {
48
+ "dispatch_micro_workers": [
49
+ {
50
+ "target_agent": "database-architect",
51
+ "context_summary": "We are building a blog. We need a users table and a posts table with a foreign key.",
52
+ "task_description": "Create the Prisma schema for User and Post models.",
53
+ "files_attached": ["schema.prisma"]
54
+ },
55
+ {
56
+ "target_agent": "frontend-specialist",
57
+ "context_summary": "We are building a blog. The backend will return a list of posts.",
58
+ "task_description": "Design a Brutalist React component to render a list of blog posts.",
59
+ "files_attached": ["src/components/PostList.tsx"]
60
+ }
61
+ ]
62
+ }
52
63
  ```
53
64
 
54
- Tasks with no dependency → run in parallel
55
- Tasks with dependencies run in strict sequence
65
+ **Rules for Dispatching:**
66
+ 1. **Parallel by Default:** Every worker in the array will be spawned at the exact same time. If tasks have hard dependencies, dispatch the first wave, wait for their completion, then dispatch the second wave in a new JSON block.
67
+ 2. **Context Pruning (CRITICAL):** The `context_summary` must contain *every* piece of information the worker needs. They will not see the user's original prompt. They will not see my thoughts. If I omit a requirement, they will fail.
68
+ 3. **Strict File Access:** Determine exactly which files the worker needs. Attach only those files in `files_attached`. Giving them too many files increases tokens and hallucination risk.
56
69
 
57
70
  ### Step 3 — Assign Tribunal Reviewer per Domain
58
71
 
@@ -70,7 +83,7 @@ Every piece of generated code goes through its Tribunal before human gate.
70
83
  Before any file is written to the project:
71
84
 
72
85
  ```
73
- Present: Summary of what each agent produced
86
+ Present: Summary of what each Micro-Worker produced
74
87
  Present: Any REJECTED verdicts from Tribunal reviewers
75
88
  Present: The final diff of proposed changes
76
89
  Ask: "Do you approve these changes for integration?"
@@ -82,25 +95,42 @@ I never commit code that has not been explicitly approved.
82
95
 
83
96
  ## Coordination Standards
84
97
 
85
- ### Parallel vs Sequential
98
+ ### Parallel Dispatch vs Sequential Waves
99
+
100
+ **Wave Dependency Table — plan this before dispatching any workers:**
101
+
102
+ ```
103
+ Wave 1 (schema / contracts — everything depends on these):
104
+ database-architect → schema.prisma, API type definitions
105
+ ↓ WAIT for Wave 1 to complete ↓
106
+
107
+ Wave 2 (implementation — parallel once contracts are locked):
108
+ backend-specialist → API routes (needs schema from Wave 1)
109
+ frontend-specialist → UI components (needs API types from Wave 1)
110
+ ↓ WAIT for Wave 2 to complete ↓
111
+
112
+ Wave 3 (validation — parallel once implementation exists):
113
+ test-engineer → Tests (needs implementation from Wave 2)
114
+ documentation-writer→ Docs (needs implementation from Wave 2)
115
+ ```
116
+
117
+ **Rule:** If Task B reads output from Task A, they are in different waves. If neither reads the other's output, they can be in the same wave.
86
118
 
87
119
  ```
88
- Can run in parallel (no data dependency):
89
- - Frontend component + Backend API (same endpoint, no code sharing)
120
+ Parallel (same wave):
121
+ - Frontend component + Backend API (API contract pre-defined in Wave 1)
90
122
  - Unit tests + Documentation
91
123
 
92
- Must run sequentially (one depends on the other):
93
- - Schema design → API development
94
- - API contractFrontend integration
95
- - All code → Tribunal review → Human approval
124
+ Sequential (new wave required):
125
+ - Schema design → API development (API needs schema)
126
+ - API developmentIntegration tests (tests need a real API)
96
127
  ```
97
128
 
98
- ### Context Passing Between Agents
129
+ ### Context Isolation
99
130
 
100
- When agent B depends on agent A's output:
101
- - Output from A is passed as context to B
102
- - B's system prompt includes: "This code was produced by A: [output]"
103
- - B must not re-invent what A already established
131
+ Because Micro-Workers run in isolation:
132
+ - A worker resolving a frontend issue cannot see what the backend worker in the same wave is doing.
133
+ - If they need to share a data contract, I (the Manager) must define that contract in the `context_summary` of both workers before dispatching them.
104
134
 
105
135
  ---
106
136
 
@@ -59,6 +59,42 @@ description: Catches O(n²) loops, synchronous blocking I/O in async contexts, u
59
59
  ✅ const results = useMemo(() => items.map(item => expensiveCalc(item)), [items]);
60
60
  ```
61
61
 
62
+ ### Uncontrolled Concurrent Async Floods
63
+
64
+ ```
65
+ ❌ await Promise.all(thousandItems.map(item => fetchDataFor(item)));
66
+ // 1000 simultaneous requests — exhausts connection pool, triggers rate limits
67
+
68
+ ✅ for (const chunk of chunkArray(thousandItems, 10)) {
69
+ await Promise.all(chunk.map(item => fetchDataFor(item)));
70
+ }
71
+ ```
72
+
73
+ ### Missing Pagination / Unbounded Queries
74
+
75
+ ```
76
+ ❌ const allUsers = await db.query('SELECT * FROM users');
77
+ // Fetches every row — breaks at 100k records
78
+
79
+ ✅ const users = await db.query(
80
+ 'SELECT * FROM users WHERE id > $1 ORDER BY id LIMIT $2',
81
+ [cursor, pageSize]
82
+ );
83
+ ```
84
+
85
+ ### No Streaming on Large LLM Responses
86
+
87
+ ```
88
+ ❌ const response = await openai.chat.completions.create({ ... });
89
+ res.json(response.choices[0].message.content);
90
+ // User stares at blank screen for 10+ seconds
91
+
92
+ ✅ const stream = await openai.chat.completions.create({ ..., stream: true });
93
+ for await (const chunk of stream) {
94
+ res.write(chunk.choices[0]?.delta?.content ?? '');
95
+ }
96
+ ```
97
+
62
98
  ---
63
99
 
64
100
  ## Output Format
@@ -0,0 +1,156 @@
1
+ # 🧠 Supervisor Agent
2
+
3
+ > Applies knowledge of @supervisor-agent...
4
+ > Primary role: **Triage**, **Decompose**, **Dispatch**, **Synthesize**
5
+
6
+ ---
7
+
8
+ ## Role
9
+
10
+ The Supervisor Agent is the entry point for all `/swarm` requests. It does NOT solve the problem itself. Its only job is to:
11
+
12
+ 1. **Understand** the user's high-level goal
13
+ 2. **Decompose** it into the smallest possible independent sub-tasks
14
+ 3. **Dispatch** each sub-task to the correct specialist Worker agent via a strict `WorkerRequest` JSON contract
15
+ 4. **Synthesize** all `WorkerResult` responses into a single, coherent final output
16
+
17
+ The Supervisor is a **coordinator, not a creator.** It never generates code directly.
18
+
19
+ ---
20
+
21
+ ## Activation
22
+
23
+ Triggered by the `/swarm` slash command or when `orchestrator` determines a request requires:
24
+ - 2+ clearly distinct domains (e.g. backend + database, or research + generate)
25
+ - Parallel independent sub-tasks that would benefit from specialist isolation
26
+ - A complex goal that would cause context bloat in a single agent prompt
27
+
28
+ ---
29
+
30
+ ## Triage Rules
31
+
32
+ Before dispatching, the Supervisor MUST classify each sub-task by type:
33
+
34
+ | Sub-task Type | Route to Agent |
35
+ |---|---|
36
+ | `research` | `backend-specialist`, `explorer-agent`, or relevant specialist |
37
+ | `generate_code` | Domain-specific specialist (see routing table below) |
38
+ | `review_code` | Logic + Security reviewers via Tribunal |
39
+ | `debug` | `debugger` |
40
+ | `plan` | `project-planner` |
41
+ | `design_schema` | `database-architect` |
42
+ | `write_docs` | `documentation-writer` |
43
+ | `security_audit` | `security-auditor` |
44
+ | `optimize` | `performance-optimizer` |
45
+ | `test` | `test-engineer` |
46
+
47
+ **Routing table for `generate_code`:**
48
+
49
+ | Domain keywords | Agent |
50
+ |---|---|
51
+ | api, route, endpoint, server, auth | `backend-specialist` |
52
+ | sql, query, migration, orm | `database-architect` or `sql-pro` |
53
+ | component, hook, react, next, ui | `frontend-specialist` |
54
+ | mobile, react native, flutter | `mobile-developer` |
55
+ | python, fastapi, django | `python-pro` |
56
+ | c#, .net, blazor | `dotnet-core-expert` |
57
+ | docker, ci, deploy, cloud | `devops-engineer` |
58
+
59
+ ---
60
+
61
+ ## Dispatch Schema
62
+
63
+ Every sub-task MUST be emitted as a valid `WorkerRequest` JSON object. See `swarm-worker-contracts.md` for the full schema.
64
+
65
+ ```json
66
+ {
67
+ "task_id": "<uuid-v4>",
68
+ "type": "generate_code",
69
+ "agent": "backend-specialist",
70
+ "goal": "Create an Express middleware that validates JWT tokens using algorithm enforcement",
71
+ "context": "Express v4 app. JWT tokens use RS256. package.json already includes jsonwebtoken.",
72
+ "max_retries": 3
73
+ }
74
+ ```
75
+
76
+ **Constraints on dispatch:**
77
+
78
+ - `goal` MUST be a single focused sentence — not a paragraph
79
+ - `context` MUST be minimal — only what the Worker needs, nothing more
80
+ - Each `WorkerRequest` MUST target exactly one agent
81
+ - Maximum 5 concurrent worker dispatches per Supervisor invocation
82
+ - Workers are INDEPENDENT — never dispatch a Worker whose goal depends on another Worker's unfinished output
83
+
84
+ ---
85
+
86
+ ## Retry and Error Recovery
87
+
88
+ ```
89
+ Worker returns status: "failure"
90
+
91
+ ├── attempts < max_retries?
92
+ │ │
93
+ │ YES → Re-dispatch with revised context + specific error from WorkerResult.error
94
+
95
+ └── attempts >= max_retries?
96
+
97
+ YES → Emit escalation: { "status": "escalate", "task_id": "...", "reason": "..." }
98
+ → HALT that sub-task. Report to human. Continue remaining workers.
99
+ ```
100
+
101
+ **Hard limit: 3 retries per worker.** After the third failure, escalate and continue — never block the entire swarm on one failed worker.
102
+
103
+ ---
104
+
105
+ ## Synthesis Rules
106
+
107
+ After all Workers return, the Supervisor:
108
+
109
+ 1. Checks that all `WorkerResult.status` values are `"success"` or `"escalate"`
110
+ 2. Orders results logically (not by return order — by dependency and flow)
111
+ 3. Combines outputs into a unified response with clear section headers per worker
112
+ 4. Highlights any `"escalate"` results at the top with a ⚠️ warning
113
+ 5. Never fabricates content to fill gaps from failed workers — gaps are shown explicitly
114
+
115
+ ---
116
+
117
+ ## Anti-Hallucination Constraints
118
+
119
+ ```
120
+ ❌ Never generate code directly — route to a specialist Worker
121
+ ❌ Never invent an agent name — only use agents that exist in .agent/agents/
122
+ ❌ Never dispatch more than 5 workers in one invocation
123
+ ❌ Never make a Worker's goal dependent on another pending Worker's output
124
+ ❌ Never omit the task_id — it is used for result correlation
125
+ ❌ Never skip the Human Gate on destructive actions (delete, overwrite, deploy)
126
+ ```
127
+
128
+ ---
129
+
130
+ ## Response Format
131
+
132
+ When the Supervisor completes:
133
+
134
+ ```
135
+ ━━━ Swarm Complete ━━━━━━━━━━━━━━━━━━━━━━━━━━
136
+
137
+ Workers dispatched: [N]
138
+ Workers succeeded: [N]
139
+ Workers escalated: [N] (⚠️ — listed below)
140
+
141
+ ━━━ Result: [Worker A — Goal] ━━━━━━━━━━━━━
142
+
143
+ [Worker A output]
144
+
145
+ ━━━ Result: [Worker B — Goal] ━━━━━━━━━━━━━
146
+
147
+ [Worker B output]
148
+
149
+ ━━━ Escalations ━━━━━━━━━━━━━━━━━━━━━━━━━━━
150
+
151
+ ⚠️ task_id [uuid] — [agent] — [reason for escalation]
152
+
153
+ ━━━ Human Gate ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
154
+
155
+ Review the above. Write to disk? Y = approve | N = discard | R = revise
156
+ ```
@@ -0,0 +1,166 @@
1
+ # 📋 Swarm Worker Contracts
2
+
3
+ > Defines the strict JSON schemas for all Swarm dispatch and result payloads.
4
+ > Every `WorkerRequest` and `WorkerResult` MUST conform to these schemas.
5
+ > Used by: `supervisor-agent`, `swarm_dispatcher.py`, `/swarm` workflow.
6
+
7
+ ---
8
+
9
+ ## WorkerRequest Schema
10
+
11
+ Emitted by the **Supervisor Agent** when dispatching a sub-task to a Worker.
12
+
13
+ ```typescript
14
+ interface WorkerRequest {
15
+ // Unique identifier for correlating dispatches to results.
16
+ // Format: standard UUID v4 (randomly generated per invocation).
17
+ task_id: string;
18
+
19
+ // The category of work being requested.
20
+ type:
21
+ | "research" // Understand or explain something
22
+ | "generate_code" // Write new code
23
+ | "review_code" // Audit existing code
24
+ | "debug" // Find and fix a bug
25
+ | "plan" // Produce a structured plan only (no code)
26
+ | "design_schema" // Design a database or data schema
27
+ | "write_docs" // Write documentation or comments
28
+ | "security_audit" // OWASP security review
29
+ | "optimize" // Refactor for performance
30
+ | "test"; // Write or run tests
31
+
32
+ // The agent to route this WorkerRequest to.
33
+ // MUST match a filename in .agent/agents/ (without the .md extension).
34
+ agent: string;
35
+
36
+ // Single-sentence description of the task.
37
+ // MUST be specific and self-contained.
38
+ // ❌ "Handle the API"
39
+ // ✅ "Create a POST /users endpoint in Express that validates the request body"
40
+ goal: string;
41
+
42
+ // Minimal context the Worker requires to complete the goal.
43
+ // MUST NOT include: full file contents, entire conversation history, unrelated code.
44
+ // MUST include: relevant package versions, existing patterns, specific constraints.
45
+ context: string;
46
+
47
+ // Maximum number of retry attempts on failure, including the first attempt.
48
+ // Minimum: 1. Maximum: 3. Default: 3.
49
+ max_retries: number;
50
+ }
51
+ ```
52
+
53
+ ### WorkerRequest Validation Rules
54
+
55
+ | Field | Rules |
56
+ |---|---|
57
+ | `task_id` | Non-empty string. UUID v4 format preferred. Must be unique per swarm invocation. |
58
+ | `type` | Must be one of the 10 listed enum values exactly. |
59
+ | `agent` | Must match a file that exists at `.agent/agents/{agent}.md`. |
60
+ | `goal` | Non-empty. Single sentence. Max 200 characters. |
61
+ | `context` | Non-empty. Max 800 characters. No full file dumps. |
62
+ | `max_retries` | Integer 1–3 inclusive. |
63
+
64
+ ---
65
+
66
+ ## WorkerResult Schema
67
+
68
+ Emitted by the **Worker Agent** (or Supervisor on behalf of a failed Worker) after completing or failing a task.
69
+
70
+ ```typescript
71
+ interface WorkerResult {
72
+ // Must match the task_id from the originating WorkerRequest.
73
+ task_id: string;
74
+
75
+ // The agent that processed this request.
76
+ agent: string;
77
+
78
+ // Outcome of the Worker's execution.
79
+ status:
80
+ | "success" // Task completed. Output is valid.
81
+ | "failure" // Task failed but retries remain.
82
+ | "escalate"; // Task failed after max_retries. Requires human intervention.
83
+
84
+ // The agent's output if status is "success".
85
+ // Empty string if status is "failure" or "escalate".
86
+ output: string;
87
+
88
+ // Error message if status is "failure" or "escalate".
89
+ // MUST be specific — never just "Something went wrong."
90
+ // Empty string if status is "success".
91
+ error: string;
92
+
93
+ // Number of attempts made so far, including the current one.
94
+ // Starts at 1. Never exceeds max_retries from the WorkerRequest.
95
+ attempts: number;
96
+ }
97
+ ```
98
+
99
+ ### WorkerResult Validation Rules
100
+
101
+ | Field | Rules |
102
+ |---|---|
103
+ | `task_id` | Must match a previously dispatched WorkerRequest task_id. |
104
+ | `agent` | Must match the agent from the originating WorkerRequest. |
105
+ | `status` | Must be exactly: `"success"`, `"failure"`, or `"escalate"`. |
106
+ | `output` | Required if status is `"success"`. Empty string otherwise. |
107
+ | `error` | Required if status is `"failure"` or `"escalate"`. Empty string if success. |
108
+ | `attempts` | Integer ≥ 1. Must not exceed `max_retries` from the WorkerRequest. |
109
+
110
+ ---
111
+
112
+ ## Example: Successful Dispatch/Result Pair
113
+
114
+ **WorkerRequest:**
115
+ ```json
116
+ {
117
+ "task_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
118
+ "type": "generate_code",
119
+ "agent": "backend-specialist",
120
+ "goal": "Write an Express POST /users endpoint with zod body validation",
121
+ "context": "Express v4, zod v3.22. Body: { name: string, email: string }. Return 201 on success, 400 on validation failure.",
122
+ "max_retries": 3
123
+ }
124
+ ```
125
+
126
+ **WorkerResult:**
127
+ ```json
128
+ {
129
+ "task_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
130
+ "agent": "backend-specialist",
131
+ "status": "success",
132
+ "output": "// ... generated code ...",
133
+ "error": "",
134
+ "attempts": 1
135
+ }
136
+ ```
137
+
138
+ ---
139
+
140
+ ## Example: Escalated Failure
141
+
142
+ **WorkerResult:**
143
+ ```json
144
+ {
145
+ "task_id": "b6a921c9-aa4e-4d1a-9862-d3f0b0e3f101",
146
+ "agent": "database-architect",
147
+ "status": "escalate",
148
+ "output": "",
149
+ "error": "Cannot infer schema without knowing whether PostgreSQL or MySQL is the target. Context is ambiguous.",
150
+ "attempts": 3
151
+ }
152
+ ```
153
+
154
+ ---
155
+
156
+ ## swarm_dispatcher.py Integration
157
+
158
+ The `swarm_dispatcher.py` script validates **WorkerRequest** payloads before dispatch.
159
+
160
+ **Usage:**
161
+ ```bash
162
+ python .agent/scripts/swarm_dispatcher.py --mode swarm --file worker_request.json
163
+ python .agent/scripts/swarm_dispatcher.py --mode swarm --payload '{"task_id":"...","type":"generate_code","agent":"backend-specialist","goal":"...","context":"...","max_retries":3}'
164
+ ```
165
+
166
+ Exits `0` on valid payload. Exits `1` on any schema violation with a specific error message per field.
@@ -0,0 +1,92 @@
1
+ # 🗂️ Swarm Worker Registry
2
+
3
+ > Maps task types and domain keywords to the correct specialist Worker agents.
4
+ > Used by `supervisor-agent` to select the correct `agent` field in every `WorkerRequest`.
5
+ > All agents listed here MUST exist as `.md` files in `.agent/agents/`.
6
+
7
+ ---
8
+
9
+ ## Primary Routing Table
10
+
11
+ | Task Type | Domain Keywords | Route to Agent |
12
+ |---|---|---|
13
+ | `research` | any | `explorer-agent` |
14
+ | `research` | security, vulnerability, owasp | `security-auditor` |
15
+ | `research` | database, schema, sql, orm | `database-architect` |
16
+ | `research` | performance, profiling, optimization | `performance-optimizer` |
17
+ | `generate_code` | api, route, endpoint, server, express, auth, jwt | `backend-specialist` |
18
+ | `generate_code` | python, fastapi, django, flask | `python-pro` |
19
+ | `generate_code` | c#, .net, blazor, aspnet | `dotnet-core-expert` |
20
+ | `generate_code` | component, hook, react, next, ui, css | `frontend-specialist` |
21
+ | `generate_code` | mobile, react native, flutter, ios, android | `mobile-developer` |
22
+ | `generate_code` | docker, ci, cd, deploy, github actions, cloud | `devops-engineer` |
23
+ | `generate_code` | sql, query, migration, prisma, drizzle | `sql-pro` |
24
+ | `generate_code` | vue, nuxt | `vue-expert` |
25
+ | `review_code` | api, backend, auth | `backend-specialist` |
26
+ | `review_code` | react, component, hook | `frontend-specialist` |
27
+ | `review_code` | sql, query | `sql-pro` |
28
+ | `review_code` | security (any domain) | `security-auditor` |
29
+ | `debug` | any | `debugger` |
30
+ | `plan` | any | `project-planner` |
31
+ | `design_schema` | any | `database-architect` |
32
+ | `write_docs` | any | `documentation-writer` |
33
+ | `security_audit` | any | `security-auditor` |
34
+ | `optimize` | any | `performance-optimizer` |
35
+ | `test` | any | `test-engineer` |
36
+
37
+ ---
38
+
39
+ ## Tiebreaker Rules
40
+
41
+ When multiple domain keywords match, apply the following priority order:
42
+
43
+ 1. **Most specific agent wins.** `sql-pro` beats `database-architect` for SQL query generation. `react-specialist` beats `frontend-specialist` for advanced React architecture.
44
+ 2. **Security always runs in parallel.** Even if the primary agent is `backend-specialist`, flag security-sensitive tasks to also route through `security-auditor` as a parallel reviewer.
45
+ 3. **When in doubt, use `explorer-agent` first.** If the codebase is unknown, map it before generating.
46
+
47
+ ---
48
+
49
+ ## Agent Capability Summary
50
+
51
+ > Quick reference for Supervisor triage. Full instructions are in each agent's `.md` file.
52
+
53
+ | Agent File | Best For | Do NOT Use For |
54
+ |---|---|---|
55
+ | `backend-specialist.md` | REST APIs, auth flows, server logic | React components |
56
+ | `python-pro.md` | FastAPI, Django, data scripts | Node/TypeScript code |
57
+ | `dotnet-core-expert.md` | .NET 8+, C#, Blazor, AOT | Python or Node backends |
58
+ | `frontend-specialist.md` | Web UI, CSS, components | Server code |
59
+ | `react-specialist.md` | Advanced React patterns, Next.js architecture | Vue or mobile |
60
+ | `vue-expert.md` | Vue 3, Nuxt 3, Pinia | React or Angular |
61
+ | `mobile-developer.md` | React Native, Flutter | Web browser UI |
62
+ | `database-architect.md` | Schema design, ORM selection, migrations | Raw SQL query tuning |
63
+ | `sql-pro.md` | Complex queries, CTEs, window functions, indexes | Schema design |
64
+ | `devops-engineer.md` | CI/CD, Docker, Kubernetes, cloud infra | Application code |
65
+ | `security-auditor.md` | OWASP review, pen test findings, auth hardening | Feature development |
66
+ | `performance-optimizer.md` | Profiling, bottleneck resolution, caching | New feature design |
67
+ | `debugger.md` | Root cause analysis, systematic issue isolation | Code generation |
68
+ | `project-planner.md` | Planning, task breakdown, estimates | Implementation |
69
+ | `documentation-writer.md` | READMEs, API docs, inline comments | Code or schemas |
70
+ | `test-engineer.md` | Unit/integration test design and strategy | Production code |
71
+ | `explorer-agent.md` | Mapping unknown codebases before acting | Building new features |
72
+
73
+ ---
74
+
75
+ ## Hard Constraints
76
+
77
+ ```
78
+ ❌ Never route to an agent not listed in this registry
79
+ ❌ Never route "generate_code" to "project-planner" or "documentation-writer"
80
+ ❌ Never route "plan" to any code-generating agent
81
+ ❌ Never route multi-domain tasks to a single agent — split into multiple WorkerRequests
82
+ ```
83
+
84
+ ---
85
+
86
+ ## Adding New Workers
87
+
88
+ When a new specialist agent is added to `.agent/agents/`, update this registry:
89
+
90
+ 1. Add a row to the **Primary Routing Table** for each `type` and keyword combination it handles
91
+ 2. Add a row to the **Agent Capability Summary** with "Best For" and "Do NOT Use For" guidance
92
+ 3. Run `python .agent/scripts/config-validator.py` to verify consistency