git clone https://github.com/plurigrid/asi
T=$(mktemp -d) && git clone --depth=1 https://github.com/plurigrid/asi "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/skill-tour" ~/.claude/skills/plurigrid-asi-skill-tour && rm -rf "$T"
skills/skill-tour/SKILL.mdSkill Tour Skill
Trit: 0 (ERGODIC/Coordinator)
Domain: skill-navigation, graph-traversal, discovery
Traversal: Knight moves, random walks, Hamiltonian paths
Overview
Skill Tour = systematic traversal through the 524+ skill ecosystem using graph-theoretic patterns. Like a knight on a chessboard, hop through skill space maintaining GF(3) balance.
╔════════════════════════════════════════════════════════════════════╗ ║ SKILL TOUR PATTERNS ║ ╠════════════════════════════════════════════════════════════════════╣ ║ ║ ║ KNIGHT TOUR RANDOM WALK HAMILTONIAN PATH ║ ║ ┌─────────┐ ┌─────────┐ ┌─────────┐ ║ ║ │ ○ │ │ ○───○ │ │ ○───○───○│ ║ ║ │ ╲ │ │ │╲ │ │ │ │ ││ ║ ║ │ ○ │ │ ○ ○─○ │ │ ○───○───○│ ║ ║ │ ╱ │ │ ╲│ │ │ ││ ║ ║ │ ○ │ │ ○ │ │ ○───○───○│ ║ ║ └─────────┘ └─────────┘ └─────────┘ ║ ║ L-shaped hops Probabilistic Visit all once ║ ║ ║ ╚════════════════════════════════════════════════════════════════════╝
Tour Types
1. Knight Tour (GF(3) Balanced)
L-shaped hops through skill space, maintaining triadic balance:
Step 0: [-1] clj-kondo-3color Step 1: [ 0] acsets Step 2: [+1] gay-mcp ↓ Triad complete: -1 + 0 + 1 = 0 ✓ Step 3: [-1] structured-decomp Step 4: [ 0] glass-bead-game Step 5: [+1] rama-gay-clojure ↓ Triad complete: -1 + 0 + 1 = 0 ✓ ...
2. Random Walk (Spectral)
Probabilistic traversal weighted by skill adjacency:
(defn random-walk-skills [start-skill n-steps seed] (let [rng (SplitMix64. seed)] (loop [current start-skill path [current] steps 0] (if (>= steps n-steps) path (let [neighbors (get-skill-neighbors current) next (nth neighbors (mod (.nextLong rng) (count neighbors)))] (recur next (conj path next) (inc steps)))))))
3. Hamiltonian Path (Complete Coverage)
Visit every skill exactly once - NP-hard but approximable:
function hamiltonian_tour(skills::Vector{Symbol}, seed::UInt64) n = length(skills) visited = falses(n) path = Symbol[] # Greedy nearest-neighbor with GF(3) priority current = skills[1] push!(path, current) visited[1] = true for _ in 2:n # Find unvisited neighbor that best balances GF(3) best = find_gf3_optimal_neighbor(current, visited, path) push!(path, best) visited[skill_index(best)] = true current = best end path end
Skill Categories (GF(3))
MINUS (-1): Validators/Analyzers
clj-kondo-3color, structured-decomp, proofgeneral-narya, slime-lisp, three-match, hatchery-papers, siggraph, yoneda-directed, sheaf-cohomology, persistent-homology
ERGODIC (0): Coordinators/Bridges
acsets, glass-bead-game, unworld, bisimulation-game, transitive-weep, world-hopping, topos-catcolab, narya-proofs, mcp-tripartite, skill-dispatch
PLUS (+1): Generators/Creators
gay-mcp, rama-gay-clojure, cider-clojure, frontend-design, xogot, open-games, algorithmic-art, iroh-p2p, siggraph, topos-generate, free-monad-gen, operad-compose
Balanced Triads
Every 3-step segment forms a conserved triad:
clj-kondo-3color (-1) ⊗ acsets (0) ⊗ gay-mcp (+1) = 0 ✓ structured-decomp (-1) ⊗ glass-bead-game (0) ⊗ rama-gay-clojure (+1) = 0 ✓ proofgeneral-narya (-1) ⊗ unworld (0) ⊗ cider-clojure (+1) = 0 ✓ slime-lisp (-1) ⊗ bisimulation-game (0) ⊗ frontend-design (+1) = 0 ✓
Knight Move Geometry
On a skill grid, knight moves are L-shaped (2+1):
-2 -1 0 +1 +2 ┌───┬───┬───┬───┬───┐ +2 │ ● │ │ │ │ ● │ ├───┼───┼───┼───┼───┤ +1 │ │ │ │ │ │ ├───┼───┼───┼───┼───┤ 0 │ │ │ ♞ │ │ │ ← Current skill ├───┼───┼───┼───┼───┤ -1 │ │ │ │ │ │ ├───┼───┼───┼───┼───┤ -2 │ ● │ │ │ │ ● │ └───┴───┴───┴───┴───┘ 8 possible knight moves from any position
Implementation
#!/usr/bin/env bb (def knight-moves [[2 1] [2 -1] [-2 1] [-2 -1] [1 2] [1 -2] [-1 2] [-1 -2]]) (defn skill->position [skill-name grid-size] (let [h (Math/abs (hash skill-name))] [(mod h grid-size) (mod (quot h grid-size) grid-size)])) (defn knight-tour [skills n-steps seed] (let [grid-size (int (Math/ceil (Math/sqrt (count skills)))) pos->skill (into {} (map (fn [s] [(skill->position s grid-size) s]) skills))] (loop [pos [0 0] path [] visited #{} steps 0] (if (or (>= steps n-steps) (nil? (pos->skill pos))) path (let [skill (pos->skill pos) neighbors (filter #(and (not (visited %)) (pos->skill %)) (map (fn [[dx dy]] [(+ (first pos) dx) (+ (second pos) dy)]) knight-moves)) next-pos (first neighbors)] (recur (or next-pos pos) (conj path {:pos pos :skill skill :step steps}) (conj visited pos) (inc steps)))))))
Tour Statistics
| Metric | Value |
|---|---|
| Total Skills | 524 |
| MINUS skills | ~175 |
| ERGODIC skills | ~175 |
| PLUS skills | ~174 |
| Max knight tour length | ~420 (80% coverage) |
| Average triad per tour | 140 |
DuckDB Integration
CREATE TABLE skill_tour_traces ( tour_id VARCHAR PRIMARY KEY, tour_type VARCHAR NOT NULL, -- 'knight', 'random', 'hamiltonian' seed UBIGINT NOT NULL, steps INT NOT NULL, path VARCHAR[] NOT NULL, trits TINYINT[] NOT NULL, gf3_conserved BOOLEAN NOT NULL ); CREATE VIEW tour_triads AS SELECT tour_id, path[i] AS skill_a, path[i+1] AS skill_b, path[i+2] AS skill_c, trits[i] + trits[i+1] + trits[i+2] AS trit_sum FROM skill_tour_traces, generate_series(1, array_length(path) - 2) AS t(i) WHERE i % 3 = 1;
Related Skills
| Skill | Trit | Relation |
|---|---|---|
| +1 | Probabilistic traversal |
| 0 | 3-way parallel decomposition |
| 0 | GF(3) prime geodesics |
| 0 | Triadic task routing |
| 0 | Flow through skill graph |
Commands
# Run knight tour demo bb skill-tour.bb --knight --steps 24 # Random walk through skills bb skill-tour.bb --random --seed 1069 --steps 12 # Check tour balance bb skill-tour.bb --verify path.edn # Export to DuckDB bb skill-tour.bb --export zubyul_interactome.duckdb
Skill Name: skill-tour
Type: Graph Traversal / Discovery
Trit: 0 (ERGODIC)
GF(3): Maintains balance via triadic hopping
Autopoietic Marginalia
The interaction IS the skill improving itself.
Every use of this skill is an opportunity for worlding:
- MEMORY (-1): Record what was learned
- REMEMBERING (0): Connect patterns to other skills
- WORLDING (+1): Evolve the skill based on use
Add Interaction Exemplars here as the skill is used.