ies
> FloxHub `bmorphism/ies` - Clojure/Julia/Python/multimedia environment with Gay.jl coloring, Flox composition, and DuckDB social analysis.
Best use case
ies is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
> FloxHub `bmorphism/ies` - Clojure/Julia/Python/multimedia environment with Gay.jl coloring, Flox composition, and DuckDB social analysis.
Teams using ies 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/ies/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How ies Compares
| Feature / Agent | ies | 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?
> FloxHub `bmorphism/ies` - Clojure/Julia/Python/multimedia environment with Gay.jl coloring, Flox composition, and DuckDB social analysis.
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
# ies
> FloxHub `bmorphism/ies` - Clojure/Julia/Python/multimedia environment with Gay.jl coloring, Flox composition, and DuckDB social analysis.
**Trit Assignment**: 0 (ERGODIC) - Coordinator role for environment orchestration.
**Canonical Triads**:
```
polyglot-spi (-1) ⊗ ies (0) ⊗ gay-mcp (+1) = 0 ✓ [Environment]
three-match (-1) ⊗ ies (0) ⊗ pulse-mcp-stream (+1) = 0 ✓ [Social Analysis]
influence-propagation (-1) ⊗ ies (0) ⊗ agent-o-rama (+1) = 0 ✓ [Cognitive Surrogate]
```
---
## Quick Start
```bash
# Activate from FloxHub
flox activate -r bmorphism/ies
# Or clone locally
flox pull -r bmorphism/ies ~/ies
flox activate -d ~/ies
# Verify Gay.jl integration
echo $GAY_SEED # 69
echo $GAY_PORT # 42069
```
---
## Installed Packages (10)
| Package | Version | Description |
|---------|---------|-------------|
| babashka | 1.12.208 | Clojure scripting (no JVM startup) |
| clojure | 1.12.2.1565 | JVM Lisp |
| jdk | 21.0.8 | OpenJDK |
| julia-bin | 1.11.7 | Technical computing |
| ffmpeg | 7.1.1 | Media processing |
| python312 | 3.12.11 | Python interpreter |
| coreutils | 9.8 | GNU utilities |
| tailscale | 1.88.4 | Mesh VPN |
| enchant2 | 2.6.9 | Spell checking |
| pkg-config | 0.29.2 | Build configuration |
---
## Environment Composition
### Include Syntax
Compose environments via `manifest.toml`:
```toml
[include]
environments = [
# FloxHub remote environments
{ remote = "bmorphism/effective-topos" },
{ remote = "flox/python-dev" },
# Local environments (relative or absolute path)
{ dir = "../shared-tools" },
{ dir = "/Users/bob/.flox/environments/common" },
]
```
### Merge Rules by Section
| Section | Merge Behavior |
|---------|----------------|
| `[install]` | **Union** - packages from all envs combined |
| `[vars]` | **Last wins** - later env overrides earlier |
| `[hook]` | **Concatenate** - all on-activate scripts run in order |
| `[profile]` | **Concatenate** - all shell init scripts run in order |
| `[services]` | **Union with override** - later service definitions win |
| `[options]` | **Last wins** - later options override |
### Priority Order
When composing `[A, B, C]`:
1. **A** is loaded first (lowest priority)
2. **B** overrides A for conflicts
3. **C** overrides both (highest priority)
4. **Current manifest** overrides all includes
### Example: IES + effective-topos Composition
```toml
# ~/ies/.flox/env/manifest.toml
version = 1
[include]
environments = [
{ remote = "bmorphism/effective-topos" } # guile, ghc, cargo
]
[install]
# IES-specific packages (merged with effective-topos)
babashka.pkg-path = "babashka"
julia-bin.pkg-path = "julia-bin"
ffmpeg.pkg-path = "ffmpeg"
[vars]
# Overrides effective-topos GAY_SEED if set there
GAY_SEED = "69"
GAY_PORT = "42069"
[hook]
on-activate = '''
# Runs AFTER effective-topos hook
echo "IES environment ready"
echo "Gay seed: $GAY_SEED"
'''
[profile]
common = '''
# Appended to effective-topos profile
alias gaybb="bb gay.bb"
'''
```
### Nested Composition
Environments can include environments that include other environments:
```
ies
└── includes effective-topos
└── includes flox/base-dev
└── includes common-tools
```
Merge proceeds depth-first, left-to-right.
---
## DuckDB Social Analysis
### Schema for Bluesky/Social Data
```sql
-- Create tables for social analysis
CREATE TABLE posts (
post_id VARCHAR PRIMARY KEY,
author_did VARCHAR NOT NULL,
author_handle VARCHAR,
text TEXT,
created_at TIMESTAMP,
indexed_at TIMESTAMP,
likes INT DEFAULT 0,
reposts INT DEFAULT 0,
replies INT DEFAULT 0,
gay_color VARCHAR, -- Deterministic color from Gay.jl
gay_index INT -- Index in color stream
);
CREATE TABLE interactions (
interaction_id VARCHAR PRIMARY KEY,
post_id VARCHAR REFERENCES posts(post_id),
actor_did VARCHAR,
actor_handle VARCHAR,
interaction_type VARCHAR, -- 'like', 'repost', 'reply', 'quote'
created_at TIMESTAMP,
text TEXT, -- For replies/quotes
sentiment VARCHAR
);
CREATE TABLE network (
user_did VARCHAR PRIMARY KEY,
handle VARCHAR,
interaction_count INT,
first_seen TIMESTAMP,
last_seen TIMESTAMP,
relationship_type VARCHAR,
entropy_score FLOAT
);
-- Indexes for fast queries
CREATE INDEX idx_posts_author ON posts(author_did);
CREATE INDEX idx_posts_created ON posts(created_at);
CREATE INDEX idx_interactions_post ON interactions(post_id);
CREATE INDEX idx_interactions_type ON interactions(interaction_type);
```
### Ingestion from Babashka
```clojure
#!/usr/bin/env bb
(require '[babashka.http-client :as http])
(require '[cheshire.core :as json])
(require '[babashka.pods :as pods])
;; Load DuckDB pod
(pods/load-pod 'org.babashka/go-sqlite3 "0.1.0")
(require '[pod.babashka.go-sqlite3 :as sqlite])
(def db "social_analysis.duckdb")
(defn fetch-user-posts [handle]
(-> (http/get (str "https://public.api.bsky.app/xrpc/app.bsky.feed.getAuthorFeed"
"?actor=" handle "&limit=100"))
:body
(json/parse-string true)
:feed))
(defn gay-color [index seed]
(let [z (+ seed index)
z (bit-xor z (unsigned-bit-shift-right z 30))
z (* z 0xbf58476d1ce4e5b9)]
(format "#%06X" (bit-and z 0xFFFFFF))))
(defn ingest-posts! [posts]
(doseq [[idx post] (map-indexed vector posts)]
(let [p (:post post)
color (gay-color (inc idx) 69)]
(sqlite/execute! db
["INSERT INTO posts (post_id, author_did, author_handle, text, created_at, gay_color, gay_index)
VALUES (?, ?, ?, ?, ?, ?, ?)"
(:uri p) (:did (:author p)) (:handle (:author p))
(:text (:record p)) (:createdAt (:record p))
color (inc idx)]))))
;; Usage
(def posts (fetch-user-posts "barton.bsky.social"))
(ingest-posts! posts)
```
### Analysis Queries
```sql
-- Top engagers in network
SELECT handle, interaction_count, entropy_score
FROM network
ORDER BY interaction_count DESC
LIMIT 20;
-- Posting frequency by hour
SELECT EXTRACT(HOUR FROM created_at) as hour,
COUNT(*) as post_count
FROM posts
GROUP BY hour
ORDER BY hour;
-- Topic clustering via text patterns
SELECT
CASE
WHEN text ILIKE '%category%' OR text ILIKE '%topos%' THEN 'math'
WHEN text ILIKE '%code%' OR text ILIKE '%julia%' THEN 'programming'
WHEN text ILIKE '%music%' OR text ILIKE '%sound%' THEN 'music'
ELSE 'other'
END as topic,
COUNT(*) as count,
AVG(likes) as avg_likes
FROM posts
GROUP BY topic
ORDER BY count DESC;
-- Interaction entropy over time
SELECT
DATE_TRUNC('day', created_at) as day,
COUNT(DISTINCT interaction_type) as type_diversity,
COUNT(*) as total_interactions,
-SUM(p * LN(p)) as entropy
FROM (
SELECT created_at, interaction_type,
COUNT(*) OVER (PARTITION BY DATE_TRUNC('day', created_at), interaction_type) * 1.0 /
COUNT(*) OVER (PARTITION BY DATE_TRUNC('day', created_at)) as p
FROM interactions
) sub
GROUP BY day
ORDER BY day;
-- Gay color distribution (verify determinism)
SELECT gay_color, COUNT(*) as count
FROM posts
GROUP BY gay_color
ORDER BY count DESC
LIMIT 10;
```
### Time-Travel Queries
```sql
-- Install temporal versioning extension
INSTALL temporal;
LOAD temporal;
-- Query posts as of specific timestamp
SELECT * FROM posts
FOR SYSTEM_TIME AS OF TIMESTAMP '2025-12-01 00:00:00';
-- Compare states between two points
SELECT
a.post_id,
a.likes as likes_before,
b.likes as likes_after,
b.likes - a.likes as delta
FROM posts FOR SYSTEM_TIME AS OF '2025-12-01' a
JOIN posts FOR SYSTEM_TIME AS OF '2025-12-15' b
ON a.post_id = b.post_id
WHERE b.likes > a.likes
ORDER BY delta DESC;
```
---
## Gay.jl/Gay.bb Integration
### Environment Variables
```bash
GAY_SEED=69 # Master seed for reproducibility
GAY_PORT=42069 # MCP server port
GAY_INTERVAL=30 # Color refresh interval (seconds)
GAY_MCP_PROJECT=~/Gay.jl # Julia project path
```
### Gay.bb (Babashka Implementation)
```clojure
;; gay.bb - included in ies environment
(ns gay
(:require [clojure.string :as str]))
(def ^:dynamic *seed* (parse-long (or (System/getenv "GAY_SEED") "69")))
(defn splitmix64 [state]
(let [z (unchecked-add state 0x9e3779b97f4a7c15)
z (unchecked-multiply
(bit-xor z (unsigned-bit-shift-right z 30))
0xbf58476d1ce4e5b9)
z (unchecked-multiply
(bit-xor z (unsigned-bit-shift-right z 27))
0x94d049bb133111eb)]
(bit-xor z (unsigned-bit-shift-right z 31))))
(defn color-at [index]
(let [h (splitmix64 (+ *seed* index))
hue (/ (mod h 360) 360.0)
hex (format "#%06X" (bit-and h 0xFFFFFF))]
{:index index :hue hue :hex hex}))
(defn palette [n]
(mapv color-at (range 1 (inc n))))
;; Triadic stream (GF(3) conservation)
(defn triadic-colors [n]
(let [colors (palette (* 3 n))]
{:minus (take-nth 3 colors) ; trit -1
:ergodic (take-nth 3 (drop 1 colors)) ; trit 0
:plus (take-nth 3 (drop 2 colors))})) ; trit +1
```
### Gay.jl (Julia Implementation)
```julia
# Activated via: julia --project=$GAY_MCP_PROJECT
using Gay
# Set environment seed
Gay.set_seed!(parse(Int, get(ENV, "GAY_SEED", "69")))
# Generate colors for IES packages
ies_packages = ["babashka", "clojure", "jdk", "julia-bin", "ffmpeg",
"python312", "coreutils", "tailscale", "enchant2", "pkg-config"]
for (i, pkg) in enumerate(ies_packages)
c = Gay.color_at(i)
println("$(pkg): $(c.hex)")
end
# Triadic palette (GF(3) = 0)
triadic = Gay.triadic_palette(10)
# Returns: (minus=Color[], ergodic=Color[], plus=Color[])
```
---
## Triadic Workflow
```
┌─────────────────────────────────────────────────────────┐
│ Trit 0 (ERGODIC): Julia Analysis │
│ └── Gay.jl color assignment │
│ └── DuckDB queries │
│ └── Statistical summaries │
├─────────────────────────────────────────────────────────┤
│ Trit 1 (PLUS): Babashka Transform │
│ └── Gay.bb processing │
│ └── HTTP/API integration │
│ └── Data pipelines │
├─────────────────────────────────────────────────────────┤
│ Trit 2 (MINUS): FFmpeg Render │
│ └── Media encoding │
│ └── Visualization output │
│ └── Validation/verification │
└─────────────────────────────────────────────────────────┘
```
### Pipeline Example
```clojure
#!/usr/bin/env bb
(require '[babashka.process :as p])
(require '[cheshire.core :as json])
(defn triadic-pipeline [input-file]
;; Trit 0: Julia analysis
(let [analysis (-> (p/shell {:out :string}
(format "julia -e 'using JSON; include(\"analyze.jl\"); println(JSON.json(analyze(\"%s\")))'"
input-file))
:out
(json/parse-string true))
;; Trit 1: Clojure transform
transformed (-> analysis
(update :gamma #(* % 1.2))
(assoc :processed_at (java.time.Instant/now)))
;; Trit 2: FFmpeg render
_ (p/shell (format "ffmpeg -i %s -vf 'eq=gamma=%f' -y output.mp4"
input-file
(:gamma transformed)))]
{:analysis analysis
:transformed transformed
:output "output.mp4"}))
```
---
## Services
```toml
# manifest.toml services section
[services.gaybb]
command = "bb -e '(require (quote gay)) (gay/start-server!)'"
shutdown.command = "pkill -f 'bb.*gay'"
[services.gaymcp]
command = "julia --project=$GAY_MCP_PROJECT $GAY_MCP_PROJECT/bin/gay-mcp"
shutdown.command = "pkill -f gay-mcp"
```
```bash
# Service management
flox services start # Start all services
flox services start gaybb # Start specific service
flox services status # Check status
flox services logs gaybb # View logs
flox services stop # Stop all
```
---
## Interoperability
### With effective-topos
```bash
# Compose environments
cd ~/ies
cat >> .flox/env/manifest.toml << 'EOF'
[include]
environments = [{ remote = "bmorphism/effective-topos" }]
EOF
flox activate # Now has guile, ghc, cargo + ies packages
```
### Connection Points
| ies-flox | effective-topos | Bridge |
|----------|-----------------|--------|
| babashka | guile | Both Lisps, S-expressions |
| julia | ocaml | ML-family, ADTs |
| ffmpeg | imagemagick | Media processing |
| tailscale | guile-goblins | Distributed networking |
---
## FloxHub Publication
- **Owner**: bmorphism
- **Name**: ies
- **URL**: https://hub.flox.dev/bmorphism/ies
- **Systems**: aarch64-darwin, x86_64-darwin, aarch64-linux, x86_64-linux
```bash
# Push updates to FloxHub
flox push -d ~/ies
# Pull latest
flox pull -r bmorphism/ies
# Fork to your namespace
flox pull -r bmorphism/ies --copy
flox push # Pushes to your FloxHub
```
---
## Aliases & Shortcuts
```bash
# Defined in [profile.common]
alias gaybb="bb gay.bb"
alias gaymcp="julia --project=\$GAY_MCP_PROJECT \$GAY_MCP_PROJECT/bin/gay-mcp"
alias ies-duck="duckdb social_analysis.duckdb"
alias ies-ingest="bb ingest.bb"
```
---
## References
- [Flox Documentation](https://flox.dev/docs)
- [FloxHub](https://hub.flox.dev)
- [Gay.jl](https://github.com/bmorphism/Gay.jl)
- [Babashka](https://babashka.org)
- [DuckDB](https://duckdb.org)Related Skills
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.
worldmat-tidar
worldmat-tidar
worlding
Gay.jl world_ pattern: persistent composable state builders with GF(3) conservation, Möbius invertibility, and Narya verification