install
source · Clone the upstream repo
git clone https://github.com/plurigrid/asi
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/plurigrid/asi "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/exa-11-directions" ~/.claude/skills/plurigrid-asi-exa-11-directions && rm -rf "$T"
manifest:
skills/exa-11-directions/SKILL.mdsource content
exa-11-directions Skill
Status: ✅ Production Ready Trit: 0 (ERGODIC - coordinates research across domains) Type: Distributed Research Orchestrator Execution Model: core.async.flow + agent-o-rama compatible
Overview
exa-11-directions is a distributed research orchestrator that spawns 11 parallel deep research agents across different domains, each exploring unusual software packages and skills that enhance the 200-skill music-topos ecosystem.
The 11 Research Directions
- Category Theory & ACSet Implementations - Categorical data structures, functorial programming
- Distributed Systems & CRDT Frameworks - Conflict-free replication, consensus algorithms
- Music, Sound Synthesis & Audio DSP - Synthesis, microtonal systems, generative music
- Advanced Data Structures & Lenses - Persistent data, bidirectional navigation, optics
- Proof Assistants & Formal Verification - Theorem provers, type theory, verification systems
- Visualization, UI & Interaction - Graph visualization, 3D rendering, sonification
- Machine Learning & Adaptive Learning - Reinforcement learning, meta-learning, novelty search
- Game Theory & Economic Systems - Open games, market mechanisms, agent-based modeling
- Information Theory & Entropy - Entropy decomposition, synergy measurement, information flow
- Biology, Neuroscience & Consciousness - Connectome analysis, integrated information theory
- Physics, Chemistry & Topological Systems - Dynamical systems, topological data analysis
Architecture
Three-Layer Execution
┌─────────────────────────────────────────────────────────┐ │ Layer 1: LAUNCH (Parallel Agent Spawning) │ │ - 11 Exa research tasks launched simultaneously │ │ - Each gets unique task ID for tracking │ └─────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────┐ │ Layer 2: MONITOR (Polling & Progress Tracking) │ │ - Exponential backoff polling: 30s → 60s → 90s... │ │ - Max 20 polls (up to 30 minutes per direction) │ │ - Real-time progress reporting │ └─────────────────────────────────────────────────────────┘ ↓ ┌─────────────────────────────────────────────────────────┐ │ Layer 3: AGGREGATE (Result Synthesis & Export) │ │ - JSON, Markdown, DuckDB exports │ │ - Package statistics and categorization │ │ - Integration with skill ecosystem │ └─────────────────────────────────────────────────────────┘
core.async Flow
;; Channel-based async pipeline (launch-all-directions) → output-ch (11 task descriptors) → (monitor-all-tasks task-descriptors poll-interval-ms) → output-ch (progress updates) → (aggregate-11-direction-results) → {:summary {...} :directions {...} :statistics {...}}
Usage
1. Direct Babashka Execution
# Set API key export EXA_API_KEY="your-exa-api-key" # Launch all 11 directions (default: 30s polls, max 20 polls) bb lib/exa_11_directions.bb execute # Custom polling parameters POLL_INTERVAL=60000 MAX_POLLS=10 bb lib/exa_11_directions.bb execute
2. Via Justfile
# Launch with defaults (30s polling, 20 max polls) just exa-11-research # Custom parameters just exa-11-research 60000 10 # Check status just exa-status # Export results just exa-export all # JSON + Markdown + DuckDB just exa-export json # JSON only just exa-export markdown # Markdown only
3. Agent-O-Rama Integration
# Spawn as agent-o-rama skill just exa-agent-spawn # With callback function (skill :exa-11-directions :action :spawn-research-agents!)
4. Clojure REPL (nbb-compatible)
(require '[exa-11-directions :as exa]) ;; Launch all directions (exa/launch-all-directions) ;; Monitor tasks (exa/monitor-all-tasks task-descriptors 30000) ;; Aggregate results (exa/aggregate-11-direction-results results-vec)
Output Formats
JSON Results
{ "summary": { "total-directions": 11, "completed": 11, "failed": 0, "timestamp": "2025-12-24T15:30:45Z" }, "directions": { "Category Theory & ACSet Implementations": { "direction-id": 1, "status": "completed", "package-count": 47, "sample-packages": [ "github.com/algebraicjulia/Catlab.jl", "github.com/algebraicjulia/ACSets.jl" ] }, ... }, "statistics": { "total-packages-found": 512, "avg-packages-per-direction": 46.5 } }
Markdown Report
# Exa 11-Direction Research Results **Completed**: 11 / 11 **Timestamp**: 2025-12-24T15:30:45Z **Total Packages Found**: 512 ## Results by Direction ### Category Theory & ACSet Implementations - **Status**: completed - **Packages Found**: 47 - **Report Lines**: 2341 ...
DuckDB Table
SELECT direction, package_count, status, sample_packages FROM research_results ORDER BY package_count DESC;
GF(3) Integration
Trit: 0 (ERGODIC) Role: Coordinates multi-directional research
Triadic Compositions with exa-11-directions
curiosity-driven (+1) ⊗ exa-11-directions (0) ⊗ code-review (-1) = 0 ✓ - Generation: Curiosity drives exploration - Coordination: Research orchestrates findings - Validation: Review filters results
rama-gay-clojure (+1) ⊗ exa-11-directions (0) ⊗ sheaf-cohomology (-1) = 0 ✓ - Generation: Rama generates data pipelines - Coordination: Research orders package discovery - Validation: Sheaf ensures coherence
Implementation Details
core.async Channels
| Channel | Purpose | Buffer |
|---|---|---|
| Task launch outputs | 11 (11 directions) |
| Progress updates | Unbuffered |
| Final aggregated results | 1 |
Polling Strategy
- Exponential Backoff: Start at 30s, increase by 30s each poll
- Max Polls: 20 (up to 630 seconds = ~10.5 minutes per direction)
- Completion Check: All tasks must reach "completed" status
- Early Exit: Stops polling if all tasks complete early
Package Detection
Packages identified via regex patterns in research reports:
- GitHub:
,github.com/github: - NPM:
, npm package namesnpm: - PyPI:
, package namesPyPI
File Structure
.claude/skills/exa-11-directions/ ├── SKILL.md (this file) └── lib/exa_11_directions.bb (executable) └── lib/exa_11_directions.clj (Clojure version)
Dependencies
- Babashka (for
execution).bb - Cheshire (JSON library)
- http-kit (HTTP client via babashka)
- EXA_API_KEY (environment variable)
Configuration
Via environment variables:
# API Key (required) export EXA_API_KEY="sk-..." # Polling interval in milliseconds (default: 30000) export POLL_INTERVAL=60000 # Maximum number of polls (default: 20) export MAX_POLLS=10
Metrics & Statistics
After execution, review:
# Total packages found across all directions jq '.statistics.total-packages-found' /tmp/exa-11-directions*.json # Packages per direction (avg) jq '.statistics.avg-packages-per-direction' /tmp/exa-11-directions*.json # Completed vs failed jq '.summary | {completed, failed}' /tmp/exa-11-directions*.json
Future Extensions
- Package Integration: Automatically add discovered packages to skill manifests
- Ranking System: Score packages by GitHub stars, documentation, community
- Skill Bridging: Match discovered packages to existing 200 skills
- Automated Triads: Suggest GF(3)=0 compositions using discovered packages
- Continuous Monitoring: Periodic re-runs to track ecosystem evolution
Troubleshooting
EXA_API_KEY not set
export EXA_API_KEY="your-key-from-https://dashboard.exa.ai"
Tasks timing out
Increase
POLL_INTERVAL or MAX_POLLS:
POLL_INTERVAL=90000 MAX_POLLS=30 just exa-11-research
No results generated
Ensure task IDs were received:
grep "taskId" /tmp/exa-11-directions*.json
References
- Exa Docs: https://docs.exa.ai
- Babashka Docs: https://github.com/babashka/babashka
- core.async Patterns: https://clojure.org/about/async
- Music-Topos 200-Skill Ecosystem: See ECOSYSTEM_ANALYSIS_SESSION_REPORT.md
Created: 2025-12-24 Framework: Exa API + core.async.flow + agent-o-rama Status: Ready for production use