Asi skill-tour

Skill Tour Skill

install
source · Clone the upstream repo
git clone https://github.com/plurigrid/asi
Claude Code · Install into ~/.claude/skills/
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"
manifest: skills/skill-tour/SKILL.md
source content

Skill 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

MetricValue
Total Skills524
MINUS skills~175
ERGODIC skills~175
PLUS skills~174
Max knight tour length~420 (80% coverage)
Average triad per tour140

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

SkillTritRelation
random-walk-fusion
+1Probabilistic traversal
tripartite-decompositions
03-way parallel decomposition
chromatic-walk
0GF(3) prime geodesics
skill-dispatch
0Triadic task routing
transitive-weep
0Flow 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.