# Recursive String Diagrams

> recursive-string-diagrams

- Skill: `plurigrid/recursive-string-diagrams` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add plurigrid/recursive-string-diagrams`
- Raw SKILL.md: https://api.skillmd.com/api/skills/plurigrid/recursive-string-diagrams/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: plurigrid (https://skillmd.com/u/plurigrid)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/plurigrid/recursive-string-diagrams

---


# recursive-string-diagrams

Recursive random string diagram generation with white trapezoid as the atomic skill primitive.

## Primitives

| Symbol | Name | Meaning |
|--------|------|---------|
| `◁═══▷` | **White Trapezoid** | Skill = morphism with typed ports |
| `∘` | Compose | Sequential skill chaining |
| `⊗` | Tensor | Parallel skill execution |
| `↺` | Trace | Feedback loop / recursion |

## GF(3) Trit Assignment

Each white trapezoid carries a trit:
- **MINUS (-1)**: Constraining/validating skill
- **ERGODIC (0)**: Neutral/transforming skill
- **PLUS (+1)**: Generating/expanding skill

Conservation: `Σ trits ≡ 0 (mod 3)` across diagram

## Usage

```clojure
;; Generate random diagram depth 4
(random-diagram 0 4)

;; Render ASCII
(render-ascii diagram 0)
```

## Example Output

```
⊗ tensor
  ↺ trace[1]
    ◁═══▷ [3→2] ergodic
  ∘ compose
    ◁═══▷ [2→2] minus
    ◁═══▷ [3→3] plus
```

## Semantics (Rama Connection)

| String Diagram | Rama Primitive |
|----------------|----------------|
| White Trapezoid | ETL topology |
| Compose (∘) | Depot chain |
| Tensor (⊗) | Parallel PStates |
| Trace (↺) | Recursive query |

## DisCoPy Integration

```python
from discopy import Ty, Box, Diagram

# White trapezoid as Box
skill = Box('skill', Ty('in'), Ty('out'))

# Compose
d1 >> d2

# Tensor
d1 @ d2

# Trace
d.trace(n)
```

## Skill Creation Protocol

1. **Seed**: White trapezoid with `[inputs → outputs]`
2. **Recurse**: Apply random `{∘, ⊗, ↺}` up to depth
3. **Color**: Assign GF(3) trits, verify conservation
4. **Render**: ASCII or DisCoPy SVG
5. **Save**: Write to `~/.claude/skills/<name>/SKILL.md`

## Related

- `discopy` - String diagram library
- `acsets` - Algebraic databases
- `rama-gay-clojure` - Rama + GF(3) colors

## SDF Interleaving

This skill connects to **Software Design for Flexibility** (Hanson & Sussman, 2021):

### Primary Chapter: 3. Variations on an Arithmetic Theme

**Concepts**: generic arithmetic, coercion, symbolic, numeric

### GF(3) Balanced Triad

```
recursive-string-diagrams (−) + SDF.Ch3 (○) + [balancer] (+) = 0
```

**Skill Trit**: -1 (MINUS - verification)

### Secondary Chapters

- Ch1: Flexibility through Abstraction

### Connection Pattern

Generic arithmetic crosses type boundaries. This skill handles heterogeneous data.

