parallel-fanout
Metaskill that fans out on every interaction, using interaction entropy as SplitMixTernary seed for maximum synergistic parallelism
Best use case
parallel-fanout is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Metaskill that fans out on every interaction, using interaction entropy as SplitMixTernary seed for maximum synergistic parallelism
Teams using parallel-fanout should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/parallel-fanout/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How parallel-fanout Compares
| Feature / Agent | parallel-fanout | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Metaskill that fans out on every interaction, using interaction entropy as SplitMixTernary seed for maximum synergistic parallelism
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# parallel-fanout - Interaction-Entropy-Seeded Parallel Skill Dispatch
## Overview
A **metaskill** that transforms every user interaction into a maximally parallel skill invocation, using the **interaction's entropy** as the seed for deterministic SplitMixTernary forking.
```
┌─────────────────────────────────────────────────────────────────┐
│ USER INTERACTION │
│ "implement feature X with Y constraints" │
└──────────────────────────┬──────────────────────────────────────┘
│
┌──────▼──────┐
│ ENTROPY │
│ EXTRACTION │
│ (Shannon H) │
└──────┬──────┘
│ seed = hash(interaction) & MASK64
┌──────▼──────┐
│ SplitMix64 │
│ .fork(3) │
└──────┬──────┘
│
┌───────────────┼───────────────┐
│ │ │
┌──────▼──────┐ ┌──────▼──────┐ ┌──────▼──────┐
│ GENERATOR │ │ COORDINATOR │ │ VALIDATOR │
│ (+1 RED) │ │ (0 GREEN) │ │ (-1 BLUE) │
│ child[0] │ │ child[1] │ │ child[2] │
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
│ │ │
└───────────────┼───────────────┘
│
┌──────▼──────┐
│ MERGE │
│ GF(3) = 0 │
└─────────────┘
```
## Interaction Entropy → Seed
```ruby
def interaction_to_seed(interaction_text)
# Shannon entropy of interaction
chars = interaction_text.chars
freq = chars.tally
total = chars.size.to_f
h = freq.values.sum { |c|
p = c / total
-p * Math.log2(p)
}
# Hash interaction with entropy weight
fnv1a = 0xcbf29ce484222325
interaction_text.bytes.each do |b|
fnv1a ^= b
fnv1a = (fnv1a * 0x100000001b3) & 0xFFFFFFFFFFFFFFFF
end
# Combine hash with entropy bits
entropy_bits = (h * 1_000_000).to_i
(fnv1a ^ (entropy_bits * GOLDEN)) & MASK64
end
```
## Triadic Skill Selection
Given a task domain, select a **GF(3)-balanced triad**:
```ruby
SKILL_TRIADS = {
sonification: {
generator: 'supercollider-osc', # +1: Create sound
coordinator: 'parameter-mapping', # 0: Map data→audio
validator: 'spectral-invariants' # -1: Verify bounds
},
derivation: {
generator: 'gay-mcp', # +1: Generate colors
coordinator: 'unworld', # 0: Chain derivations
validator: 'three-match' # -1: Verify 3-SAT
},
repl: {
generator: 'cider-clojure', # +1: Evaluate code
coordinator: 'borkdude', # 0: Select runtime
validator: 'slime-lisp' # -1: Type check
},
database: {
generator: 'rama-gay-clojure', # +1: Generate queries
coordinator: 'acsets', # 0: Schema navigation
validator: 'clj-kondo-3color' # -1: Lint/validate
},
proof: {
generator: 'gay-mcp', # +1: Generate terms
coordinator: 'squint-runtime', # 0: JS interop
validator: 'proofgeneral-narya' # -1: Type check
},
game: {
generator: 'rubato-composer', # +1: Compose music
coordinator: 'glass-bead-game', # 0: Connect domains
validator: 'bisimulation-game' # -1: Verify equivalence
}
}
```
## Parallel Fanout Algorithm
```ruby
class ParallelFanout
def initialize(interaction)
@interaction = interaction
@seed = interaction_to_seed(interaction)
@rng = SplitMixTernary::Generator.new(@seed)
@domain = detect_domain(interaction)
@triad = SKILL_TRIADS[@domain]
end
def fanout!
# Fork into 3 independent streams
children = @rng.fork(3)
# Dispatch in parallel (SPI-compliant)
results = Parallel.map(0..2, in_threads: 3) do |i|
role = [:generator, :coordinator, :validator][i]
skill = @triad[role]
child_seed = children[i].seed
{
role: role,
skill: skill,
seed: child_seed,
trit: i - 1, # -1, 0, +1
result: invoke_skill(skill, @interaction, child_seed)
}
end
# Verify GF(3) conservation
trit_sum = results.sum { |r| r[:trit] }
raise "GF(3) violation!" unless trit_sum % 3 == 0
# Merge results
merge_results(results)
end
private
def invoke_skill(skill_name, context, seed)
# Load skill and execute with seeded determinism
skill = Skill.load(skill_name)
skill.execute(context: context, seed: seed)
end
def merge_results(results)
{
domain: @domain,
seed: @seed,
seed_hex: "0x#{@seed.to_s(16)}",
gf3_sum: 0,
generator: results[0],
coordinator: results[1],
validator: results[2],
merged: combine_outputs(results)
}
end
end
```
## Interaction Entropy Metrics
Track entropy across interactions for adaptive seeding:
```sql
CREATE TABLE interaction_entropy (
interaction_id VARCHAR PRIMARY KEY,
timestamp TIMESTAMP,
text_length INT,
char_entropy FLOAT, -- Shannon entropy of characters
word_entropy FLOAT, -- Shannon entropy of words
topic_entropy FLOAT, -- Entropy of detected topics
mode_entropy FLOAT, -- Entropy of interaction type
combined_entropy FLOAT, -- Weighted combination
seed_derived BIGINT, -- SplitMixTernary seed
triad_used VARCHAR[3], -- Skills invoked
gf3_verified BOOLEAN
);
```
## Integration with Existing Skills
### From triad-interleave
- Interleaves 3 parallel skill outputs into single stream
- Maintains per-stream ordering while maximizing parallelism
### From epistemic-arbitrage
- Triangle inequality for skill selection
- Knowledge transfer between domains via propagator network
### From spi-parallel-verify
- Guarantees `sequential == parallel` (bitwise)
- Verifies GF(3) conservation per triplet
## Commands
```bash
# Fan out on interaction
just parallel-fanout "implement X with Y"
# Show skill triad for domain
just fanout-triad sonification
# Verify SPI across all triads
just fanout-spi-verify
# Compute interaction entropy
just interaction-entropy "your message here"
# Demo full pipeline
just parallel-fanout-demo
```
## Justfile Recipes
```just
# Parallel fanout metaskill
parallel-fanout interaction:
@echo "🔀 PARALLEL FANOUT: {{interaction}}"
ruby -I lib -r parallel_fanout -e "ParallelFanout.new('{{interaction}}').fanout!"
# Show triad for domain
fanout-triad domain:
@echo "🎭 SKILL TRIAD for {{domain}}"
ruby -I lib -r parallel_fanout -e "puts ParallelFanout::SKILL_TRIADS[:{{domain}}].to_yaml"
# Interaction entropy
interaction-entropy text:
@echo "📊 INTERACTION ENTROPY"
ruby -I lib -r parallel_fanout -e "puts ParallelFanout.interaction_entropy('{{text}}')"
# Full demo
parallel-fanout-demo:
@echo "🚀 PARALLEL FANOUT DEMO"
ruby -I lib -r parallel_fanout -e "ParallelFanout.demo"
```
## GF(3) Conservation Proof
For any interaction, the metaskill selects exactly one skill per polarity:
```
Σ trits = (+1) + (0) + (-1) = 0 ≡ 0 (mod 3) ✓
```
This ensures **color balance** across the triadic dispatch:
- Generator creates (+1 RED)
- Coordinator transports (0 GREEN)
- Validator constrains (-1 BLUE)
## Self-Reference: Metaskill as Skill
This skill can invoke itself recursively with forked seeds:
```ruby
def meta_fanout(depth: 3)
return fanout! if depth == 0
children = @rng.fork(3)
children.map.with_index do |child, i|
sub = ParallelFanout.new(@interaction)
sub.instance_variable_set(:@seed, child.seed)
sub.meta_fanout(depth: depth - 1)
end
end
```
This creates a **skill tree** of depth N with 3^N leaves, all deterministically seeded.
## See Also
- `triad-interleave` - Stream interleaving
- `spi-parallel-verify` - Parallelism verification
- `epistemic-arbitrage` - Knowledge transfer
- `gay-mcp` - Color generation backend
- `INTERACTION_ENTROPY_FRAMEWORK.md` - Entropy metrics
- `lib/spi_parallel.rb` - SPI implementationRelated Skills
ordered-locale-fanout
UPDATED: Now uses proper ordered-locale (Heunen-van der Schaaf 2024). Cocone construction over triadic ordered locale with open cone condition.
spi-parallel-verify
Verify Strong Parallelism Invariance (SPI) and GF(3) conservation for 3-way color streams with arbitrary precision.
zx-calculus
Coecke's ZX-calculus for quantum circuit reasoning via string diagrams with Z-spiders (green) and X-spiders (red)
zulip-cogen
Zulip Cogen Skill 🐸⚡
zls-integration
zls-integration skill
zig
zig skill
zig-syrup-bci
Multimodal BCI pipeline in Zig: DSI-24 EEG, fNIRS mBLL, eye tracking IVT, LSL sync, EDF read/write, GF(3) conservation
zig-programming
zig-programming skill
zeroth-bot
Zeroth Bot - 3D-printed open-source humanoid robot platform for sim-to-real and RL research. Affordable entry point for humanoid robotics.
xlsx
Comprehensive spreadsheet creation, editing, and analysis with support
wycheproof
Google's Wycheproof test vectors for cryptographic implementation testing.
Writing Hookify Rules
This skill should be used when the user asks to "create a hookify rule", "write a hook rule", "configure hookify", "add a hookify rule", or needs guidance on hookify rule syntax and patterns.