network-ai 3.3.0 β†’ 3.3.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/SKILL.md CHANGED
@@ -1,578 +1,578 @@
1
- ---
2
- name: Network-AI
3
- description: Multi-agent swarm orchestration for complex workflows. Coordinates multiple agents, decomposes tasks, manages shared state via a local blackboard file, and enforces permission walls before sensitive operations. All execution is local and sandboxed.
4
- metadata:
5
- openclaw:
6
- emoji: "\U0001F41D"
7
- homepage: https://github.com/jovanSAPFIONEER/Network-AI
8
- requires:
9
- bins:
10
- - python3
11
- ---
12
-
13
- # Swarm Orchestrator Skill
14
-
15
- Multi-agent coordination system for complex workflows requiring task delegation, parallel execution, and permission-controlled access to sensitive APIs.
16
-
17
- ## 🎯 Orchestrator System Instructions
18
-
19
- **You are the Orchestrator Agent** responsible for decomposing complex tasks, delegating to specialized agents, and synthesizing results. Follow this protocol:
20
-
21
- ### Core Responsibilities
22
-
23
- 1. **DECOMPOSE** complex prompts into 3 specialized sub-tasks
24
- 2. **DELEGATE** using the budget-aware handoff protocol
25
- 3. **VERIFY** results on the blackboard before committing
26
- 4. **SYNTHESIZE** final output only after all validations pass
27
-
28
- ### Task Decomposition Protocol
29
-
30
- When you receive a complex request, decompose it into exactly **3 sub-tasks**:
31
-
32
- ```
33
- β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
34
- β”‚ COMPLEX USER REQUEST β”‚
35
- β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
36
- β”‚
37
- β–Ό
38
- β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
39
- β”‚ β”‚ β”‚
40
- β–Ό β–Ό β–Ό
41
- β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
42
- β”‚ SUB-TASK 1 β”‚ β”‚ SUB-TASK 2 β”‚ β”‚ SUB-TASK 3 β”‚
43
- β”‚ data_analyst β”‚ β”‚ risk_assessor β”‚ β”‚strategy_advisorβ”‚
44
- β”‚ (DATA) β”‚ β”‚ (VERIFY) β”‚ β”‚ (RECOMMEND) β”‚
45
- β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
46
- β”‚ β”‚ β”‚
47
- β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
48
- β–Ό
49
- β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
50
- β”‚ SYNTHESIZE β”‚
51
- β”‚ orchestrator β”‚
52
- β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
53
- ```
54
-
55
- **Decomposition Template:**
56
- ```
57
- TASK DECOMPOSITION for: "{user_request}"
58
-
59
- Sub-Task 1 (DATA): [data_analyst]
60
- - Objective: Extract/process raw data
61
- - Output: Structured JSON with metrics
62
-
63
- Sub-Task 2 (VERIFY): [risk_assessor]
64
- - Objective: Validate data quality & compliance
65
- - Output: Validation report with confidence score
66
-
67
- Sub-Task 3 (RECOMMEND): [strategy_advisor]
68
- - Objective: Generate actionable insights
69
- - Output: Recommendations with rationale
70
- ```
71
-
72
- ### Budget-Aware Handoff Protocol
73
-
74
- **CRITICAL:** Before EVERY `sessions_send`, call the handoff interceptor:
75
-
76
- ```bash
77
- # ALWAYS run this BEFORE sessions_send
78
- python {baseDir}/scripts/swarm_guard.py intercept-handoff \
79
- --task-id "task_001" \
80
- --from orchestrator \
81
- --to data_analyst \
82
- --message "Analyze Q4 revenue data"
83
- ```
84
-
85
- **Decision Logic:**
86
- ```
87
- IF result.allowed == true:
88
- β†’ Proceed with sessions_send
89
- β†’ Note tokens_spent and remaining_budget
90
- ELSE:
91
- β†’ STOP - Do NOT call sessions_send
92
- β†’ Report blocked reason to user
93
- β†’ Consider: reduce scope or abort task
94
- ```
95
-
96
- ### Pre-Commit Verification Workflow
97
-
98
- Before returning final results to the user:
99
-
100
- ```bash
101
- # Step 1: Check all sub-task results on blackboard
102
- python {baseDir}/scripts/blackboard.py read "task:001:data_analyst"
103
- python {baseDir}/scripts/blackboard.py read "task:001:risk_assessor"
104
- python {baseDir}/scripts/blackboard.py read "task:001:strategy_advisor"
105
-
106
- # Step 2: Validate each result
107
- python {baseDir}/scripts/swarm_guard.py validate-result \
108
- --task-id "task_001" \
109
- --agent data_analyst \
110
- --result '{"status":"success","output":{...},"confidence":0.85}'
111
-
112
- # Step 3: Supervisor review (checks all issues)
113
- python {baseDir}/scripts/swarm_guard.py supervisor-review --task-id "task_001"
114
-
115
- # Step 4: Only if APPROVED, commit final state
116
- python {baseDir}/scripts/blackboard.py write "task:001:final" \
117
- '{"status":"SUCCESS","output":{...}}'
118
- ```
119
-
120
- **Verdict Handling:**
121
- | Verdict | Action |
122
- |---------|--------|
123
- | `APPROVED` | Commit and return results to user |
124
- | `WARNING` | Review issues, fix if possible, then commit |
125
- | `BLOCKED` | Do NOT return results. Report failure. |
126
-
127
- ---
128
-
129
- ## When to Use This Skill
130
-
131
- - **Task Delegation**: Route work to specialized agents (data_analyst, strategy_advisor, risk_assessor)
132
- - **Parallel Execution**: Run multiple agents simultaneously and synthesize results
133
- - **Permission Wall**: Gate access to SAP_API, FINANCIAL_API, or DATA_EXPORT operations
134
- - **Shared Blackboard**: Coordinate agent state via persistent markdown file
135
-
136
- ## Quick Start
137
-
138
- ### 1. Initialize Budget (FIRST!)
139
-
140
- **Always initialize a budget before any multi-agent task:**
141
-
142
- ```bash
143
- python {baseDir}/scripts/swarm_guard.py budget-init \
144
- --task-id "task_001" \
145
- --budget 10000 \
146
- --description "Q4 Financial Analysis"
147
- ```
148
-
149
- ### 2. Delegate a Task to Another Session
150
-
151
- Use OpenClaw's built-in session tools to delegate work:
152
-
153
- ```
154
- sessions_list # See available sessions/agents
155
- sessions_send # Send task to another session
156
- sessions_history # Check results from delegated work
157
- ```
158
-
159
- **Example delegation prompt:**
160
- ```
161
- Use sessions_send to ask the data_analyst session to:
162
- "Analyze Q4 revenue trends from the SAP export data and summarize key insights"
163
- ```
164
-
165
- ### 3. Check Permission Before API Access
166
-
167
- Before accessing SAP or Financial APIs, evaluate the request:
168
-
169
- ```bash
170
- # Run the permission checker script
171
- python {baseDir}/scripts/check_permission.py \
172
- --agent "data_analyst" \
173
- --resource "SAP_API" \
174
- --justification "Need Q4 invoice data for quarterly report" \
175
- --scope "read:invoices"
176
- ```
177
-
178
- The script will output a grant token if approved, or denial reason if rejected.
179
-
180
- ### 4. Use the Shared Blackboard
181
-
182
- Read/write coordination state:
183
-
184
- ```bash
185
- # Write to blackboard
186
- python {baseDir}/scripts/blackboard.py write "task:q4_analysis" '{"status": "in_progress", "agent": "data_analyst"}'
187
-
188
- # Read from blackboard
189
- python {baseDir}/scripts/blackboard.py read "task:q4_analysis"
190
-
191
- # List all entries
192
- python {baseDir}/scripts/blackboard.py list
193
- ```
194
-
195
- ## Agent-to-Agent Handoff Protocol
196
-
197
- When delegating tasks between agents/sessions:
198
-
199
- ### Step 1: Initialize Budget & Check Capacity
200
- ```bash
201
- # Initialize budget (if not already done)
202
- python {baseDir}/scripts/swarm_guard.py budget-init --task-id "task_001" --budget 10000
203
-
204
- # Check current status
205
- python {baseDir}/scripts/swarm_guard.py budget-check --task-id "task_001"
206
- ```
207
-
208
- ### Step 2: Identify Target Agent
209
- ```
210
- sessions_list # Find available agents
211
- ```
212
-
213
- Common agent types:
214
- | Agent | Specialty |
215
- |-------|-----------|
216
- | `data_analyst` | Data processing, SQL, analytics |
217
- | `strategy_advisor` | Business strategy, recommendations |
218
- | `risk_assessor` | Risk analysis, compliance checks |
219
- | `orchestrator` | Coordination, task decomposition |
220
-
221
- ### Step 3: Intercept Before Handoff (REQUIRED)
222
-
223
- ```bash
224
- # This checks budget AND handoff limits before allowing the call
225
- python {baseDir}/scripts/swarm_guard.py intercept-handoff \
226
- --task-id "task_001" \
227
- --from orchestrator \
228
- --to data_analyst \
229
- --message "Analyze Q4 data" \
230
- --artifact # Include if expecting output
231
- ```
232
-
233
- **If ALLOWED:** Proceed to Step 4
234
- **If BLOCKED:** Stop - do not call sessions_send
235
-
236
- ### Step 4: Construct Handoff Message
237
-
238
- Include these fields in your delegation:
239
- - **instruction**: Clear task description
240
- - **context**: Relevant background information
241
- - **constraints**: Any limitations or requirements
242
- - **expectedOutput**: What format/content you need back
243
-
244
- ### Step 5: Send via sessions_send
245
-
246
- ```
247
- sessions_send to data_analyst:
248
- "[HANDOFF]
249
- Instruction: Analyze Q4 revenue by product category
250
- Context: Using SAP export from ./data/q4_export.csv
251
- Constraints: Focus on top 5 categories only
252
- Expected Output: JSON summary with category, revenue, growth_pct
253
- [/HANDOFF]"
254
- ```
255
-
256
- ### Step 4: Check Results
257
-
258
- ```
259
- sessions_history data_analyst # Get the response
260
- ```
261
-
262
- ## Permission Wall (AuthGuardian)
263
-
264
- **CRITICAL**: Always check permissions before accessing:
265
- - `SAP_API` - SAP system connections
266
- - `FINANCIAL_API` - Financial data services
267
- - `EXTERNAL_SERVICE` - Third-party APIs
268
- - `DATA_EXPORT` - Exporting sensitive data
269
-
270
- ### Permission Evaluation Criteria
271
-
272
- | Factor | Weight | Criteria |
273
- |--------|--------|----------|
274
- | Justification | 40% | Must explain specific task need |
275
- | Trust Level | 30% | Agent's established trust score |
276
- | Risk Assessment | 30% | Resource sensitivity + scope breadth |
277
-
278
- ### Using the Permission Script
279
-
280
- ```bash
281
- # Request permission
282
- python {baseDir}/scripts/check_permission.py \
283
- --agent "your_agent_id" \
284
- --resource "FINANCIAL_API" \
285
- --justification "Generating quarterly financial summary for board presentation" \
286
- --scope "read:revenue,read:expenses"
287
-
288
- # Output if approved:
289
- # βœ… GRANTED
290
- # Token: grant_a1b2c3d4e5f6
291
- # Expires: 2026-02-04T15:30:00Z
292
- # Restrictions: read_only, no_pii_fields, audit_required
293
-
294
- # Output if denied:
295
- # ❌ DENIED
296
- # Reason: Justification is insufficient. Please provide specific task context.
297
- ```
298
-
299
- ### Restriction Types
300
-
301
- | Resource | Default Restrictions |
302
- |----------|---------------------|
303
- | SAP_API | `read_only`, `max_records:100` |
304
- | FINANCIAL_API | `read_only`, `no_pii_fields`, `audit_required` |
305
- | EXTERNAL_SERVICE | `rate_limit:10_per_minute` |
306
- | DATA_EXPORT | `anonymize_pii`, `local_only` |
307
-
308
- ## Shared Blackboard Pattern
309
-
310
- The blackboard (`swarm-blackboard.md`) is a markdown file for agent coordination:
311
-
312
- ```markdown
313
- # Swarm Blackboard
314
- Last Updated: 2026-02-04T10:30:00Z
315
-
316
- ## Knowledge Cache
317
- ### task:q4_analysis
318
- {"status": "completed", "result": {...}, "agent": "data_analyst"}
319
-
320
- ### cache:revenue_summary
321
- {"q4_total": 1250000, "growth": 0.15}
322
- ```
323
-
324
- ### Blackboard Operations
325
-
326
- ```bash
327
- # Write with TTL (expires after 1 hour)
328
- python {baseDir}/scripts/blackboard.py write "cache:temp_data" '{"value": 123}' --ttl 3600
329
-
330
- # Read (returns null if expired)
331
- python {baseDir}/scripts/blackboard.py read "cache:temp_data"
332
-
333
- # Delete
334
- python {baseDir}/scripts/blackboard.py delete "cache:temp_data"
335
-
336
- # Get full snapshot
337
- python {baseDir}/scripts/blackboard.py snapshot
338
- ```
339
-
340
- ## Parallel Execution
341
-
342
- For tasks requiring multiple agent perspectives:
343
-
344
- ### Strategy 1: Merge (Default)
345
- Combine all agent outputs into unified result.
346
- ```
347
- Ask data_analyst AND strategy_advisor to both analyze the dataset.
348
- Merge their insights into a comprehensive report.
349
- ```
350
-
351
- ### Strategy 2: Vote
352
- Use when you need consensus - pick the result with highest confidence.
353
-
354
- ### Strategy 3: First-Success
355
- Use for redundancy - take first successful result.
356
-
357
- ### Strategy 4: Chain
358
- Sequential processing - output of one feeds into next.
359
-
360
- ### Example Parallel Workflow
361
-
362
- ```
363
- 1. sessions_send to data_analyst: "Extract key metrics from Q4 data"
364
- 2. sessions_send to risk_assessor: "Identify compliance risks in Q4 data"
365
- 3. sessions_send to strategy_advisor: "Recommend actions based on Q4 trends"
366
- 4. Wait for all responses via sessions_history
367
- 5. Synthesize: Combine metrics + risks + recommendations into executive summary
368
- ```
369
-
370
- ## Security Considerations
371
-
372
- 1. **Never bypass the permission wall** for gated resources
373
- 2. **Always include justification** explaining the business need
374
- 3. **Use minimal scope** - request only what you need
375
- 4. **Check token expiry** - tokens are valid for 5 minutes
376
- 5. **Validate tokens** - use `python {baseDir}/scripts/validate_token.py TOKEN` to verify grant tokens before use
377
- 6. **Audit trail** - all permission requests are logged
378
-
379
- ## πŸ“ Audit Trail Requirements (MANDATORY)
380
-
381
- **Every sensitive action MUST be logged to `data/audit_log.jsonl`** to maintain compliance and enable forensic analysis.
382
-
383
- ### What Gets Logged Automatically
384
-
385
- The scripts automatically log these events:
386
- - `permission_granted` - When access is approved
387
- - `permission_denied` - When access is rejected
388
- - `permission_revoked` - When a token is manually revoked
389
- - `ttl_cleanup` - When expired tokens are purged
390
- - `result_validated` / `result_rejected` - Swarm Guard validations
391
-
392
- ### Log Entry Format
393
-
394
- ```json
395
- {
396
- "timestamp": "2026-02-04T10:30:00+00:00",
397
- "action": "permission_granted",
398
- "details": {
399
- "agent_id": "data_analyst",
400
- "resource_type": "DATABASE",
401
- "justification": "Q4 revenue analysis",
402
- "token": "grant_abc123...",
403
- "restrictions": ["read_only", "max_records:100"]
404
- }
405
- }
406
- ```
407
-
408
- ### Reading the Audit Log
409
-
410
- ```bash
411
- # View recent entries (last 10)
412
- tail -10 {baseDir}/data/audit_log.jsonl
413
-
414
- # Search for specific agent
415
- grep "data_analyst" {baseDir}/data/audit_log.jsonl
416
-
417
- # Count actions by type
418
- cat {baseDir}/data/audit_log.jsonl | jq -r '.action' | sort | uniq -c
419
- ```
420
-
421
- ### Custom Audit Entries
422
-
423
- If you perform a sensitive action manually, log it:
424
-
425
- ```python
426
- import json
427
- from datetime import datetime, timezone
428
- from pathlib import Path
429
-
430
- audit_file = Path("{baseDir}/data/audit_log.jsonl")
431
- entry = {
432
- "timestamp": datetime.now(timezone.utc).isoformat(),
433
- "action": "manual_data_access",
434
- "details": {
435
- "agent": "orchestrator",
436
- "description": "Direct database query for debugging",
437
- "justification": "Investigating data sync issue #1234"
438
- }
439
- }
440
- with open(audit_file, "a") as f:
441
- f.write(json.dumps(entry) + "\n")
442
- ```
443
-
444
- ## 🧹 TTL Enforcement (Token Lifecycle)
445
-
446
- Expired permission tokens are automatically tracked. Run periodic cleanup:
447
-
448
- ```bash
449
- # Validate a grant token
450
- python {baseDir}/scripts/validate_token.py grant_a1b2c3d4e5f6
451
-
452
- # List expired tokens (without removing)
453
- python {baseDir}/scripts/revoke_token.py --list-expired
454
-
455
- # Remove all expired tokens
456
- python {baseDir}/scripts/revoke_token.py --cleanup
457
-
458
- # Output:
459
- # 🧹 TTL Cleanup Complete
460
- # Removed: 3 expired token(s)
461
- # Remaining active grants: 2
462
- ```
463
-
464
- **Best Practice**: Run `--cleanup` at the start of each multi-agent task to ensure a clean permission state.
465
-
466
- ## ⚠️ Swarm Guard: Preventing Common Failures
467
-
468
- Two critical issues can derail multi-agent swarms:
469
-
470
- ### 1. The Handoff Tax πŸ’Έ
471
-
472
- **Problem**: Agents waste tokens "talking about" work instead of doing it.
473
-
474
- **Prevention**:
475
- ```bash
476
- # Before each handoff, check your budget:
477
- python {baseDir}/scripts/swarm_guard.py check-handoff --task-id "task_001"
478
-
479
- # Output:
480
- # 🟒 Task: task_001
481
- # Handoffs: 1/3
482
- # Remaining: 2
483
- # Action Ratio: 100%
484
- ```
485
-
486
- **Rules enforced**:
487
- - **Max 3 handoffs per task** - After 3, produce output or abort
488
- - **Max 500 chars per message** - Be concise: instruction + constraints + expected output
489
- - **60% action ratio** - At least 60% of handoffs must produce artifacts
490
- - **2-minute planning limit** - No output after 2min = timeout
491
-
492
- ```bash
493
- # Record a handoff (with tax checking):
494
- python {baseDir}/scripts/swarm_guard.py record-handoff \
495
- --task-id "task_001" \
496
- --from orchestrator \
497
- --to data_analyst \
498
- --message "Analyze sales data, output JSON summary" \
499
- --artifact # Include if this handoff produces output
500
- ```
501
-
502
- ### 2. Silent Failure Detection πŸ‘»
503
-
504
- **Problem**: One agent fails silently, others keep working on bad data.
505
-
506
- **Prevention - Heartbeats**:
507
- ```bash
508
- # Agents must send heartbeats while working:
509
- python {baseDir}/scripts/swarm_guard.py heartbeat --agent data_analyst --task-id "task_001"
510
-
511
- # Check if an agent is healthy:
512
- python {baseDir}/scripts/swarm_guard.py health-check --agent data_analyst
513
-
514
- # Output if healthy:
515
- # πŸ’š Agent 'data_analyst' is HEALTHY
516
- # Last seen: 15s ago
517
-
518
- # Output if failed:
519
- # πŸ’” Agent 'data_analyst' is UNHEALTHY
520
- # Reason: STALE_HEARTBEAT
521
- # β†’ Do NOT use any pending results from this agent.
522
- ```
523
-
524
- **Prevention - Result Validation**:
525
- ```bash
526
- # Before using another agent's result, validate it:
527
- python {baseDir}/scripts/swarm_guard.py validate-result \
528
- --task-id "task_001" \
529
- --agent data_analyst \
530
- --result '{"status": "success", "output": {"revenue": 125000}, "confidence": 0.85}'
531
-
532
- # Output:
533
- # βœ… RESULT VALID
534
- # β†’ APPROVED - Result can be used by other agents
535
- ```
536
-
537
- **Required result fields**: `status`, `output`, `confidence`
538
-
539
- ### Supervisor Review
540
-
541
- Before finalizing any task, run supervisor review:
542
- ```bash
543
- python {baseDir}/scripts/swarm_guard.py supervisor-review --task-id "task_001"
544
-
545
- # Output:
546
- # βœ… SUPERVISOR VERDICT: APPROVED
547
- # Task: task_001
548
- # Age: 1.5 minutes
549
- # Handoffs: 2
550
- # Artifacts: 2
551
- ```
552
-
553
- **Verdicts**:
554
- - `APPROVED` - Task healthy, results usable
555
- - `WARNING` - Issues detected, review recommended
556
- - `BLOCKED` - Critical failures, do NOT use results
557
-
558
- ## Troubleshooting
559
-
560
- ### Permission Denied
561
- - Provide more specific justification (mention task, purpose, expected outcome)
562
- - Narrow the requested scope
563
- - Check agent trust level
564
-
565
- ### Blackboard Read Returns Null
566
- - Entry may have expired (check TTL)
567
- - Key may be misspelled
568
- - Entry was never written
569
-
570
- ### Session Not Found
571
- - Run `sessions_list` to see available sessions
572
- - Session may need to be started first
573
-
574
- ## References
575
-
576
- - [AuthGuardian Details](references/auth-guardian.md) - Full permission system documentation
577
- - [Blackboard Schema](references/blackboard-schema.md) - Data structure specifications
578
- - [Agent Trust Levels](references/trust-levels.md) - How trust is calculated
1
+ ---
2
+ name: Network-AI
3
+ description: Multi-agent swarm orchestration for complex workflows. Coordinates multiple agents, decomposes tasks, manages shared state via a local blackboard file, and enforces permission walls before sensitive operations. All execution is local and sandboxed.
4
+ metadata:
5
+ openclaw:
6
+ emoji: "\U0001F41D"
7
+ homepage: https://github.com/jovanSAPFIONEER/Network-AI
8
+ requires:
9
+ bins:
10
+ - python3
11
+ ---
12
+
13
+ # Swarm Orchestrator Skill
14
+
15
+ Multi-agent coordination system for complex workflows requiring task delegation, parallel execution, and permission-controlled access to sensitive APIs.
16
+
17
+ ## 🎯 Orchestrator System Instructions
18
+
19
+ **You are the Orchestrator Agent** responsible for decomposing complex tasks, delegating to specialized agents, and synthesizing results. Follow this protocol:
20
+
21
+ ### Core Responsibilities
22
+
23
+ 1. **DECOMPOSE** complex prompts into 3 specialized sub-tasks
24
+ 2. **DELEGATE** using the budget-aware handoff protocol
25
+ 3. **VERIFY** results on the blackboard before committing
26
+ 4. **SYNTHESIZE** final output only after all validations pass
27
+
28
+ ### Task Decomposition Protocol
29
+
30
+ When you receive a complex request, decompose it into exactly **3 sub-tasks**:
31
+
32
+ ```
33
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
34
+ β”‚ COMPLEX USER REQUEST β”‚
35
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
36
+ β”‚
37
+ β–Ό
38
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
39
+ β”‚ β”‚ β”‚
40
+ β–Ό β–Ό β–Ό
41
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
42
+ β”‚ SUB-TASK 1 β”‚ β”‚ SUB-TASK 2 β”‚ β”‚ SUB-TASK 3 β”‚
43
+ β”‚ data_analyst β”‚ β”‚ risk_assessor β”‚ β”‚strategy_advisorβ”‚
44
+ β”‚ (DATA) β”‚ β”‚ (VERIFY) β”‚ β”‚ (RECOMMEND) β”‚
45
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
46
+ β”‚ β”‚ β”‚
47
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
48
+ β–Ό
49
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
50
+ β”‚ SYNTHESIZE β”‚
51
+ β”‚ orchestrator β”‚
52
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
53
+ ```
54
+
55
+ **Decomposition Template:**
56
+ ```
57
+ TASK DECOMPOSITION for: "{user_request}"
58
+
59
+ Sub-Task 1 (DATA): [data_analyst]
60
+ - Objective: Extract/process raw data
61
+ - Output: Structured JSON with metrics
62
+
63
+ Sub-Task 2 (VERIFY): [risk_assessor]
64
+ - Objective: Validate data quality & compliance
65
+ - Output: Validation report with confidence score
66
+
67
+ Sub-Task 3 (RECOMMEND): [strategy_advisor]
68
+ - Objective: Generate actionable insights
69
+ - Output: Recommendations with rationale
70
+ ```
71
+
72
+ ### Budget-Aware Handoff Protocol
73
+
74
+ **CRITICAL:** Before EVERY `sessions_send`, call the handoff interceptor:
75
+
76
+ ```bash
77
+ # ALWAYS run this BEFORE sessions_send
78
+ python {baseDir}/scripts/swarm_guard.py intercept-handoff \
79
+ --task-id "task_001" \
80
+ --from orchestrator \
81
+ --to data_analyst \
82
+ --message "Analyze Q4 revenue data"
83
+ ```
84
+
85
+ **Decision Logic:**
86
+ ```
87
+ IF result.allowed == true:
88
+ β†’ Proceed with sessions_send
89
+ β†’ Note tokens_spent and remaining_budget
90
+ ELSE:
91
+ β†’ STOP - Do NOT call sessions_send
92
+ β†’ Report blocked reason to user
93
+ β†’ Consider: reduce scope or abort task
94
+ ```
95
+
96
+ ### Pre-Commit Verification Workflow
97
+
98
+ Before returning final results to the user:
99
+
100
+ ```bash
101
+ # Step 1: Check all sub-task results on blackboard
102
+ python {baseDir}/scripts/blackboard.py read "task:001:data_analyst"
103
+ python {baseDir}/scripts/blackboard.py read "task:001:risk_assessor"
104
+ python {baseDir}/scripts/blackboard.py read "task:001:strategy_advisor"
105
+
106
+ # Step 2: Validate each result
107
+ python {baseDir}/scripts/swarm_guard.py validate-result \
108
+ --task-id "task_001" \
109
+ --agent data_analyst \
110
+ --result '{"status":"success","output":{...},"confidence":0.85}'
111
+
112
+ # Step 3: Supervisor review (checks all issues)
113
+ python {baseDir}/scripts/swarm_guard.py supervisor-review --task-id "task_001"
114
+
115
+ # Step 4: Only if APPROVED, commit final state
116
+ python {baseDir}/scripts/blackboard.py write "task:001:final" \
117
+ '{"status":"SUCCESS","output":{...}}'
118
+ ```
119
+
120
+ **Verdict Handling:**
121
+ | Verdict | Action |
122
+ |---------|--------|
123
+ | `APPROVED` | Commit and return results to user |
124
+ | `WARNING` | Review issues, fix if possible, then commit |
125
+ | `BLOCKED` | Do NOT return results. Report failure. |
126
+
127
+ ---
128
+
129
+ ## When to Use This Skill
130
+
131
+ - **Task Delegation**: Route work to specialized agents (data_analyst, strategy_advisor, risk_assessor)
132
+ - **Parallel Execution**: Run multiple agents simultaneously and synthesize results
133
+ - **Permission Wall**: Gate access to SAP_API, FINANCIAL_API, or DATA_EXPORT operations
134
+ - **Shared Blackboard**: Coordinate agent state via persistent markdown file
135
+
136
+ ## Quick Start
137
+
138
+ ### 1. Initialize Budget (FIRST!)
139
+
140
+ **Always initialize a budget before any multi-agent task:**
141
+
142
+ ```bash
143
+ python {baseDir}/scripts/swarm_guard.py budget-init \
144
+ --task-id "task_001" \
145
+ --budget 10000 \
146
+ --description "Q4 Financial Analysis"
147
+ ```
148
+
149
+ ### 2. Delegate a Task to Another Session
150
+
151
+ Use OpenClaw's built-in session tools to delegate work:
152
+
153
+ ```
154
+ sessions_list # See available sessions/agents
155
+ sessions_send # Send task to another session
156
+ sessions_history # Check results from delegated work
157
+ ```
158
+
159
+ **Example delegation prompt:**
160
+ ```
161
+ Use sessions_send to ask the data_analyst session to:
162
+ "Analyze Q4 revenue trends from the SAP export data and summarize key insights"
163
+ ```
164
+
165
+ ### 3. Check Permission Before API Access
166
+
167
+ Before accessing SAP or Financial APIs, evaluate the request:
168
+
169
+ ```bash
170
+ # Run the permission checker script
171
+ python {baseDir}/scripts/check_permission.py \
172
+ --agent "data_analyst" \
173
+ --resource "SAP_API" \
174
+ --justification "Need Q4 invoice data for quarterly report" \
175
+ --scope "read:invoices"
176
+ ```
177
+
178
+ The script will output a grant token if approved, or denial reason if rejected.
179
+
180
+ ### 4. Use the Shared Blackboard
181
+
182
+ Read/write coordination state:
183
+
184
+ ```bash
185
+ # Write to blackboard
186
+ python {baseDir}/scripts/blackboard.py write "task:q4_analysis" '{"status": "in_progress", "agent": "data_analyst"}'
187
+
188
+ # Read from blackboard
189
+ python {baseDir}/scripts/blackboard.py read "task:q4_analysis"
190
+
191
+ # List all entries
192
+ python {baseDir}/scripts/blackboard.py list
193
+ ```
194
+
195
+ ## Agent-to-Agent Handoff Protocol
196
+
197
+ When delegating tasks between agents/sessions:
198
+
199
+ ### Step 1: Initialize Budget & Check Capacity
200
+ ```bash
201
+ # Initialize budget (if not already done)
202
+ python {baseDir}/scripts/swarm_guard.py budget-init --task-id "task_001" --budget 10000
203
+
204
+ # Check current status
205
+ python {baseDir}/scripts/swarm_guard.py budget-check --task-id "task_001"
206
+ ```
207
+
208
+ ### Step 2: Identify Target Agent
209
+ ```
210
+ sessions_list # Find available agents
211
+ ```
212
+
213
+ Common agent types:
214
+ | Agent | Specialty |
215
+ |-------|-----------|
216
+ | `data_analyst` | Data processing, SQL, analytics |
217
+ | `strategy_advisor` | Business strategy, recommendations |
218
+ | `risk_assessor` | Risk analysis, compliance checks |
219
+ | `orchestrator` | Coordination, task decomposition |
220
+
221
+ ### Step 3: Intercept Before Handoff (REQUIRED)
222
+
223
+ ```bash
224
+ # This checks budget AND handoff limits before allowing the call
225
+ python {baseDir}/scripts/swarm_guard.py intercept-handoff \
226
+ --task-id "task_001" \
227
+ --from orchestrator \
228
+ --to data_analyst \
229
+ --message "Analyze Q4 data" \
230
+ --artifact # Include if expecting output
231
+ ```
232
+
233
+ **If ALLOWED:** Proceed to Step 4
234
+ **If BLOCKED:** Stop - do not call sessions_send
235
+
236
+ ### Step 4: Construct Handoff Message
237
+
238
+ Include these fields in your delegation:
239
+ - **instruction**: Clear task description
240
+ - **context**: Relevant background information
241
+ - **constraints**: Any limitations or requirements
242
+ - **expectedOutput**: What format/content you need back
243
+
244
+ ### Step 5: Send via sessions_send
245
+
246
+ ```
247
+ sessions_send to data_analyst:
248
+ "[HANDOFF]
249
+ Instruction: Analyze Q4 revenue by product category
250
+ Context: Using SAP export from ./data/q4_export.csv
251
+ Constraints: Focus on top 5 categories only
252
+ Expected Output: JSON summary with category, revenue, growth_pct
253
+ [/HANDOFF]"
254
+ ```
255
+
256
+ ### Step 4: Check Results
257
+
258
+ ```
259
+ sessions_history data_analyst # Get the response
260
+ ```
261
+
262
+ ## Permission Wall (AuthGuardian)
263
+
264
+ **CRITICAL**: Always check permissions before accessing:
265
+ - `SAP_API` - SAP system connections
266
+ - `FINANCIAL_API` - Financial data services
267
+ - `EXTERNAL_SERVICE` - Third-party APIs
268
+ - `DATA_EXPORT` - Exporting sensitive data
269
+
270
+ ### Permission Evaluation Criteria
271
+
272
+ | Factor | Weight | Criteria |
273
+ |--------|--------|----------|
274
+ | Justification | 40% | Must explain specific task need |
275
+ | Trust Level | 30% | Agent's established trust score |
276
+ | Risk Assessment | 30% | Resource sensitivity + scope breadth |
277
+
278
+ ### Using the Permission Script
279
+
280
+ ```bash
281
+ # Request permission
282
+ python {baseDir}/scripts/check_permission.py \
283
+ --agent "your_agent_id" \
284
+ --resource "FINANCIAL_API" \
285
+ --justification "Generating quarterly financial summary for board presentation" \
286
+ --scope "read:revenue,read:expenses"
287
+
288
+ # Output if approved:
289
+ # βœ… GRANTED
290
+ # Token: grant_a1b2c3d4e5f6
291
+ # Expires: 2026-02-04T15:30:00Z
292
+ # Restrictions: read_only, no_pii_fields, audit_required
293
+
294
+ # Output if denied:
295
+ # ❌ DENIED
296
+ # Reason: Justification is insufficient. Please provide specific task context.
297
+ ```
298
+
299
+ ### Restriction Types
300
+
301
+ | Resource | Default Restrictions |
302
+ |----------|---------------------|
303
+ | SAP_API | `read_only`, `max_records:100` |
304
+ | FINANCIAL_API | `read_only`, `no_pii_fields`, `audit_required` |
305
+ | EXTERNAL_SERVICE | `rate_limit:10_per_minute` |
306
+ | DATA_EXPORT | `anonymize_pii`, `local_only` |
307
+
308
+ ## Shared Blackboard Pattern
309
+
310
+ The blackboard (`swarm-blackboard.md`) is a markdown file for agent coordination:
311
+
312
+ ```markdown
313
+ # Swarm Blackboard
314
+ Last Updated: 2026-02-04T10:30:00Z
315
+
316
+ ## Knowledge Cache
317
+ ### task:q4_analysis
318
+ {"status": "completed", "result": {...}, "agent": "data_analyst"}
319
+
320
+ ### cache:revenue_summary
321
+ {"q4_total": 1250000, "growth": 0.15}
322
+ ```
323
+
324
+ ### Blackboard Operations
325
+
326
+ ```bash
327
+ # Write with TTL (expires after 1 hour)
328
+ python {baseDir}/scripts/blackboard.py write "cache:temp_data" '{"value": 123}' --ttl 3600
329
+
330
+ # Read (returns null if expired)
331
+ python {baseDir}/scripts/blackboard.py read "cache:temp_data"
332
+
333
+ # Delete
334
+ python {baseDir}/scripts/blackboard.py delete "cache:temp_data"
335
+
336
+ # Get full snapshot
337
+ python {baseDir}/scripts/blackboard.py snapshot
338
+ ```
339
+
340
+ ## Parallel Execution
341
+
342
+ For tasks requiring multiple agent perspectives:
343
+
344
+ ### Strategy 1: Merge (Default)
345
+ Combine all agent outputs into unified result.
346
+ ```
347
+ Ask data_analyst AND strategy_advisor to both analyze the dataset.
348
+ Merge their insights into a comprehensive report.
349
+ ```
350
+
351
+ ### Strategy 2: Vote
352
+ Use when you need consensus - pick the result with highest confidence.
353
+
354
+ ### Strategy 3: First-Success
355
+ Use for redundancy - take first successful result.
356
+
357
+ ### Strategy 4: Chain
358
+ Sequential processing - output of one feeds into next.
359
+
360
+ ### Example Parallel Workflow
361
+
362
+ ```
363
+ 1. sessions_send to data_analyst: "Extract key metrics from Q4 data"
364
+ 2. sessions_send to risk_assessor: "Identify compliance risks in Q4 data"
365
+ 3. sessions_send to strategy_advisor: "Recommend actions based on Q4 trends"
366
+ 4. Wait for all responses via sessions_history
367
+ 5. Synthesize: Combine metrics + risks + recommendations into executive summary
368
+ ```
369
+
370
+ ## Security Considerations
371
+
372
+ 1. **Never bypass the permission wall** for gated resources
373
+ 2. **Always include justification** explaining the business need
374
+ 3. **Use minimal scope** - request only what you need
375
+ 4. **Check token expiry** - tokens are valid for 5 minutes
376
+ 5. **Validate tokens** - use `python {baseDir}/scripts/validate_token.py TOKEN` to verify grant tokens before use
377
+ 6. **Audit trail** - all permission requests are logged
378
+
379
+ ## πŸ“ Audit Trail Requirements (MANDATORY)
380
+
381
+ **Every sensitive action MUST be logged to `data/audit_log.jsonl`** to maintain compliance and enable forensic analysis.
382
+
383
+ ### What Gets Logged Automatically
384
+
385
+ The scripts automatically log these events:
386
+ - `permission_granted` - When access is approved
387
+ - `permission_denied` - When access is rejected
388
+ - `permission_revoked` - When a token is manually revoked
389
+ - `ttl_cleanup` - When expired tokens are purged
390
+ - `result_validated` / `result_rejected` - Swarm Guard validations
391
+
392
+ ### Log Entry Format
393
+
394
+ ```json
395
+ {
396
+ "timestamp": "2026-02-04T10:30:00+00:00",
397
+ "action": "permission_granted",
398
+ "details": {
399
+ "agent_id": "data_analyst",
400
+ "resource_type": "DATABASE",
401
+ "justification": "Q4 revenue analysis",
402
+ "token": "grant_abc123...",
403
+ "restrictions": ["read_only", "max_records:100"]
404
+ }
405
+ }
406
+ ```
407
+
408
+ ### Reading the Audit Log
409
+
410
+ ```bash
411
+ # View recent entries (last 10)
412
+ tail -10 {baseDir}/data/audit_log.jsonl
413
+
414
+ # Search for specific agent
415
+ grep "data_analyst" {baseDir}/data/audit_log.jsonl
416
+
417
+ # Count actions by type
418
+ cat {baseDir}/data/audit_log.jsonl | jq -r '.action' | sort | uniq -c
419
+ ```
420
+
421
+ ### Custom Audit Entries
422
+
423
+ If you perform a sensitive action manually, log it:
424
+
425
+ ```python
426
+ import json
427
+ from datetime import datetime, timezone
428
+ from pathlib import Path
429
+
430
+ audit_file = Path("{baseDir}/data/audit_log.jsonl")
431
+ entry = {
432
+ "timestamp": datetime.now(timezone.utc).isoformat(),
433
+ "action": "manual_data_access",
434
+ "details": {
435
+ "agent": "orchestrator",
436
+ "description": "Direct database query for debugging",
437
+ "justification": "Investigating data sync issue #1234"
438
+ }
439
+ }
440
+ with open(audit_file, "a") as f:
441
+ f.write(json.dumps(entry) + "\n")
442
+ ```
443
+
444
+ ## 🧹 TTL Enforcement (Token Lifecycle)
445
+
446
+ Expired permission tokens are automatically tracked. Run periodic cleanup:
447
+
448
+ ```bash
449
+ # Validate a grant token
450
+ python {baseDir}/scripts/validate_token.py grant_a1b2c3d4e5f6
451
+
452
+ # List expired tokens (without removing)
453
+ python {baseDir}/scripts/revoke_token.py --list-expired
454
+
455
+ # Remove all expired tokens
456
+ python {baseDir}/scripts/revoke_token.py --cleanup
457
+
458
+ # Output:
459
+ # 🧹 TTL Cleanup Complete
460
+ # Removed: 3 expired token(s)
461
+ # Remaining active grants: 2
462
+ ```
463
+
464
+ **Best Practice**: Run `--cleanup` at the start of each multi-agent task to ensure a clean permission state.
465
+
466
+ ## ⚠️ Swarm Guard: Preventing Common Failures
467
+
468
+ Two critical issues can derail multi-agent swarms:
469
+
470
+ ### 1. The Handoff Tax πŸ’Έ
471
+
472
+ **Problem**: Agents waste tokens "talking about" work instead of doing it.
473
+
474
+ **Prevention**:
475
+ ```bash
476
+ # Before each handoff, check your budget:
477
+ python {baseDir}/scripts/swarm_guard.py check-handoff --task-id "task_001"
478
+
479
+ # Output:
480
+ # 🟒 Task: task_001
481
+ # Handoffs: 1/3
482
+ # Remaining: 2
483
+ # Action Ratio: 100%
484
+ ```
485
+
486
+ **Rules enforced**:
487
+ - **Max 3 handoffs per task** - After 3, produce output or abort
488
+ - **Max 500 chars per message** - Be concise: instruction + constraints + expected output
489
+ - **60% action ratio** - At least 60% of handoffs must produce artifacts
490
+ - **2-minute planning limit** - No output after 2min = timeout
491
+
492
+ ```bash
493
+ # Record a handoff (with tax checking):
494
+ python {baseDir}/scripts/swarm_guard.py record-handoff \
495
+ --task-id "task_001" \
496
+ --from orchestrator \
497
+ --to data_analyst \
498
+ --message "Analyze sales data, output JSON summary" \
499
+ --artifact # Include if this handoff produces output
500
+ ```
501
+
502
+ ### 2. Silent Failure Detection πŸ‘»
503
+
504
+ **Problem**: One agent fails silently, others keep working on bad data.
505
+
506
+ **Prevention - Heartbeats**:
507
+ ```bash
508
+ # Agents must send heartbeats while working:
509
+ python {baseDir}/scripts/swarm_guard.py heartbeat --agent data_analyst --task-id "task_001"
510
+
511
+ # Check if an agent is healthy:
512
+ python {baseDir}/scripts/swarm_guard.py health-check --agent data_analyst
513
+
514
+ # Output if healthy:
515
+ # πŸ’š Agent 'data_analyst' is HEALTHY
516
+ # Last seen: 15s ago
517
+
518
+ # Output if failed:
519
+ # πŸ’” Agent 'data_analyst' is UNHEALTHY
520
+ # Reason: STALE_HEARTBEAT
521
+ # β†’ Do NOT use any pending results from this agent.
522
+ ```
523
+
524
+ **Prevention - Result Validation**:
525
+ ```bash
526
+ # Before using another agent's result, validate it:
527
+ python {baseDir}/scripts/swarm_guard.py validate-result \
528
+ --task-id "task_001" \
529
+ --agent data_analyst \
530
+ --result '{"status": "success", "output": {"revenue": 125000}, "confidence": 0.85}'
531
+
532
+ # Output:
533
+ # βœ… RESULT VALID
534
+ # β†’ APPROVED - Result can be used by other agents
535
+ ```
536
+
537
+ **Required result fields**: `status`, `output`, `confidence`
538
+
539
+ ### Supervisor Review
540
+
541
+ Before finalizing any task, run supervisor review:
542
+ ```bash
543
+ python {baseDir}/scripts/swarm_guard.py supervisor-review --task-id "task_001"
544
+
545
+ # Output:
546
+ # βœ… SUPERVISOR VERDICT: APPROVED
547
+ # Task: task_001
548
+ # Age: 1.5 minutes
549
+ # Handoffs: 2
550
+ # Artifacts: 2
551
+ ```
552
+
553
+ **Verdicts**:
554
+ - `APPROVED` - Task healthy, results usable
555
+ - `WARNING` - Issues detected, review recommended
556
+ - `BLOCKED` - Critical failures, do NOT use results
557
+
558
+ ## Troubleshooting
559
+
560
+ ### Permission Denied
561
+ - Provide more specific justification (mention task, purpose, expected outcome)
562
+ - Narrow the requested scope
563
+ - Check agent trust level
564
+
565
+ ### Blackboard Read Returns Null
566
+ - Entry may have expired (check TTL)
567
+ - Key may be misspelled
568
+ - Entry was never written
569
+
570
+ ### Session Not Found
571
+ - Run `sessions_list` to see available sessions
572
+ - Session may need to be started first
573
+
574
+ ## References
575
+
576
+ - [AuthGuardian Details](references/auth-guardian.md) - Full permission system documentation
577
+ - [Blackboard Schema](references/blackboard-schema.md) - Data structure specifications
578
+ - [Agent Trust Levels](references/trust-levels.md) - How trust is calculated