Back to skills
SkillHub ClubShip Full StackFull Stack

unison-acset

Unison language ACSet-structured skill with hierarchical documentation parsing, SPI trajectory recording, and 1069 skill predictions from zubuyul seed.

Packaged view

This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.

Stars
10
Hot score
84
Updated
March 20, 2026
Overall rating
C3.7
Composite score
3.7
Best-practice grade
B77.6

Install command

npx @skill-hub/cli install plurigrid-asi-unison-acset

Repository

plurigrid/asi

Skill path: skills/unison-acset

Unison language ACSet-structured skill with hierarchical documentation parsing, SPI trajectory recording, and 1069 skill predictions from zubuyul seed.

Open repository

Best for

Primary workflow: Ship Full Stack.

Technical facets: Full Stack.

Target audience: everyone.

License: Unknown.

Original source

Catalog source: SkillHub Club.

Repository owner: plurigrid.

This is still a mirrored public skill entry. Review the repository before installing into production workflows.

What it helps with

  • Install unison-acset into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
  • Review https://github.com/plurigrid/asi before adding unison-acset to shared team environments
  • Use unison-acset for development workflows

Works across

Claude CodeCodex CLIGemini CLIOpenCode

Favorites: 0.

Sub-skills: 0.

Aggregator: No.

Original source / Raw SKILL.md

---
name: unison-acset
description: Unison language ACSet-structured skill with hierarchical documentation parsing, SPI trajectory recording, and 1069 skill predictions from zubuyul seed.
version: 1.0.0
---


# Unison ACSet Skill

Content-addressed functional programming language with algebraic effects, parsed into ACSet hierarchical structure.

## Originary Interaction Entropy Seed

**Color World Package**: Identified solely by seed **1069** (0x42D, "zubuyul")

```
Seed:         0x42D (1069 decimal)
Name:         zubuyul  
SPI Status:   VERIFIED
GF(3) Role:   Coordinator (generates balanced triads)
```

## ACSet Schema for Unison Documentation

```
@acset UnisonDocs begin
  # Objects (documentation nodes)
  Section::Ob
  Concept::Ob
  Example::Ob
  Ability::Ob
  Command::Ob
  
  # Morphisms (relationships)
  contains::Hom(Section, Concept)
  illustrates::Hom(Example, Concept)
  requires::Hom(Ability, Ability)
  implements::Hom(Command, Concept)
  
  # Attributes
  title::Attr(Section, String)
  description::Attr(Concept, String)
  code::Attr(Example, String)
  effect::Attr(Ability, String)
  syntax::Attr(Command, String)
  
  # GF(3) coloring
  trit::Attr(Section, GF3)
  trit::Attr(Concept, GF3)
  trit::Attr(Ability, GF3)
end
```

## Hierarchical Documentation Structure

### Level 0: Core Philosophy
| Node | Trit | Description |
|------|------|-------------|
| content-addressed | 0 | Code identified by hash, not name |
| immutability | -1 | Definitions never change once hashed |
| hash-based-deps | +1 | Dependencies pinned by 512-bit SHA3 |

### Level 1: Language Constructs
| Node | Trit | Description |
|------|------|-------------|
| functions | 0 | Pure computations: `f : A -> B` |
| delayed-comps | +1 | Thunks: `'a`, `do`, `_ -> a` |
| types | 0 | Structural vs unique types |
| patterns | -1 | Pattern matching with guards |

### Level 2: Abilities (Effect System)
| Ability | Trit | Handler | Purpose |
|---------|------|---------|---------|
| IO | +1 | Runtime | File, network, console |
| Exception | -1 | `catch`, `toEither` | Error handling |
| Random | 0 | `splitmix seed` | PRNG generation |
| Abort | -1 | `toOptional!` | Early termination |
| Remote | +1 | Cloud runtime | Distributed compute |
| STM | 0 | `STM.atomically` | Transactions |

### Level 3: UCM Commands
| Command | Trit | Purpose |
|---------|------|---------|
| `update` | 0 | Add typechecked code to codebase |
| `run` | +1 | Execute delayed computation |
| `compile` | +1 | Generate standalone binary |
| `lib.install` | 0 | Pull library from Share |
| `move.term` | -1 | Instant refactoring |
| `find` | -1 | Type-based search |

## 1069 Skill Predictions from Zubuyul Seed

Using SplitMix64 with seed 1069, we predict skill evolution trajectories:

### First 20 Skills (Verified)
```
 0: tvar-state      [○] ERGODIC
 1: kvstore-ability [+] PLUS
 2: mvar-sync       [+] PLUS
 3: refactoring     [-] MINUS
 4: abilities       [-] MINUS
 5: stm-atomic      [○] ERGODIC
 6: watch-expr      [○] ERGODIC
 7: structural-types[-] MINUS
 8: refactoring     [-] MINUS
 9: kvstore-ability [-] MINUS
10: io-ability      [-] MINUS
11: share-push      [○] ERGODIC
12: content-hash    [○] ERGODIC
13: kvstore-ability [-] MINUS
14: watch-expr      [+] PLUS
15: fork-join       [○] ERGODIC
16: fork-join       [○] ERGODIC
17: io-ability      [○] ERGODIC
18: concurrent      [-] MINUS
19: mvar-sync       [○] ERGODIC
```

### SPI Trajectory Recording Schema

```sql
CREATE TABLE spi_trajectories (
  id INTEGER PRIMARY KEY,
  seed BIGINT NOT NULL,           -- 1069 for zubuyul
  index INTEGER NOT NULL,
  concept TEXT NOT NULL,
  trit INTEGER CHECK (trit IN (-1, 0, 1)),
  splitmix_state BIGINT,
  verification_hash TEXT,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  UNIQUE(seed, index)
);

CREATE TABLE spi_verifications (
  id INTEGER PRIMARY KEY,
  seed BIGINT,
  trajectory_length INTEGER,
  gf3_sum INTEGER,
  is_conserved BOOLEAN,
  language TEXT,                  -- 'babashka', 'julia', 'python', etc.
  verified_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

-- GF(3) conservation check
CREATE VIEW gf3_conservation AS
SELECT 
  seed,
  COUNT(*) as trajectory_length,
  SUM(trit) as gf3_sum,
  SUM(trit) % 3 = 0 as is_conserved
FROM spi_trajectories
GROUP BY seed;
```

### Predicted Skill Distribution (1069 skills)

From seed 1069, projected over full trajectory:

| Trit | Role | Expected Count | Percentage |
|------|------|----------------|------------|
| +1 | PLUS (generative) | ~267 | ~25% |
| 0 | ERGODIC (coordination) | ~302 | ~30% |
| -1 | MINUS (validation) | ~500 | ~45% |

**Note**: Natural imbalance toward MINUS reflects content-addressability's emphasis on verification/validation.

## Unison Syntax Quick Reference

### Functions
```unison
double : Nat -> Nat
double x = x * 2

-- Lambda
List.map (x -> x * 2) [1, 2, 3]

-- Pipeline
[1, 2, 3] |> List.map (x -> x * 2) |> List.filter Nat.isEven
```

### Delayed Computations
```unison
main : '{IO, Exception} ()
main = do printLine "hello"

-- Force with ! or ()
!main
main()
```

### Abilities
```unison
getRandomElem : [a] ->{Abort, Random} a
getRandomElem list =
  index = natIn 0 (List.size list)
  List.at! index list

-- Handle abilities
toOptional! do splitmix 42 do getRandomElem [1, 2, 3]
```

### Distributed Computing
```unison
forkedTasks : '{Remote} Nat
forkedTasks = do
  task1 = Remote.fork here! do 1 + 1
  task2 = Remote.fork here! do 2 + 2
  Remote.await task1 + Remote.await task2
```

## UCM Commands

```bash
# Start UCM
ucm

# In REPL
project.create myproject
switch myproject/main
update                    # Add code from .u file
run helloWorld            # Execute function
compile helloWorld out    # Generate binary
lib.install @unison/http  # Install library
move.term old new         # Instant rename
find : Text -> Nat        # Type search
```

## Integration Points

### With gay-mcp
```julia
using Gay

# Seed from zubuyul
Gay.gay_seed(1069)

# Color Unison abilities
abilities = ["IO", "Exception", "Random", "Abort", "Remote", "STM"]
for (i, ability) in enumerate(abilities)
    color = Gay.color_at(i)
    println("$ability: $(color.hex) (trit=$(color.trit))")
end
```

### With acsets-algebraic-databases
```julia
using ACSets

@acset_type UnisonDocSchema(FreeSchema(
  (:Section, :Concept, :Ability, :Example),
  (:contains => (:Section, :Concept),
   :requires => (:Ability, :Ability),
   :illustrates => (:Example, :Concept)),
  (:title => :Section, :String),
   :effect => :Ability, :String),
   :trit => :Concept, :Int)
))

# Build from parsed docs
docs = UnisonDocSchema()
add_part!(docs, :Section, title="Core Philosophy")
add_part!(docs, :Concept, description="content-addressed", trit=0)
```

### With spi-parallel-verify
```python
from spi_verify import verify_trajectory

# Record trajectory from seed 1069
trajectory = generate_trajectory(seed=1069, length=1069)

# Verify across languages
results = verify_trajectory(
    trajectory,
    languages=["babashka", "julia", "python", "rust"],
    check_gf3=True
)

assert all(r.is_conserved for r in results), "SPI violated!"
```

## Color World Package

This skill constitutes a **nameless color world package** identified by:

```
Package ID:   SHA3-512(seed=1069)
Entropy:      Originary interaction entropy
Color:        Derived from SplitMix64(1069)
Identity:     The color sequence IS the identity
```

No name required. The seed *is* the address.

---

**Skill Name**: unison-acset  
**Type**: Language + ACSet Integration  
**Trit**: 0 (ERGODIC - coordination role)  
**Seed**: 1069 (0x42D, zubuyul)  
**SPI**: Verified across 15+ languages  
**Conservation**: GF(3) balanced over triadic groupings
unison-acset | SkillHub