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/joker-lint" ~/.claude/skills/plurigrid-asi-joker-lint-5474a2 && rm -rf "$T"
manifest:
skills/joker-lint/SKILL.mdsource content
joker-lint Skill
"Fast Clojure linting in Go. No JVM. Instant feedback."
Overview
Joker Lint uses the Joker interpreter (Clojure in Go) for fast static analysis and linting. Sub-second startup, no JVM required.
GF(3) Role
| Aspect | Value |
|---|---|
| Trit | -1 (MINUS) |
| Role | VALIDATOR |
| Function | Validates Clojure code style and correctness |
Installation
# macOS brew install candid82/brew/joker # From source go install github.com/candid82/joker@latest
Core Commands
# Lint a file joker --lint src/core.clj # Lint with specific rules joker --lint --working-dir . src/**/*.clj # Format check joker --format src/core.clj # REPL mode joker
Lint Rules
;; .joker configuration {:rules {:no-unused-fn true :no-unused-bindings true :no-private-access true :no-redeclare true :if-without-else :warning}}
Integration with clj-kondo
;; Use both for comprehensive linting (defn lint-project [] (let [joker-results (joker-lint "src/") kondo-results (clj-kondo-lint "src/")] {:joker joker-results :kondo kondo-results :total-issues (+ (count joker-results) (count kondo-results))}))
GF(3) Lint Triads
;; Linting as validation (-1) ;; Code generation as (+1) ;; Formatting as coordination (0) (def lint-triad {:generator {:tool "cursive-gen" :trit +1} :coordinator {:tool "cljfmt" :trit 0} :validator {:tool "joker-lint" :trit -1}}) (defn balanced-code-flow [code] (-> code (generate) ; +1 (format-code) ; 0 (lint))) ; -1 ;; Σ = +1 + 0 + (-1) = 0 ✓
Babashka Integration
#!/usr/bin/env bb (require '[babashka.process :refer [shell]]) (defn joker-lint [path] (let [result (shell {:out :string :err :string :continue true} "joker" "--lint" path)] {:exit (:exit result) :issues (parse-lint-output (:out result)) :trit -1})) ; Validation role (defn lint-and-report [paths] (->> paths (map joker-lint) (mapcat :issues) (group-by :severity)))
Performance
| Tool | Startup | 1000 lines |
|---|---|---|
| Joker | 10ms | 50ms |
| clj-kondo | 100ms | 200ms |
| Eastwood | 5s | 10s |
GF(3) Triads
joker-lint (-1) ⊗ cljfmt (0) ⊗ cursive-gen (+1) = 0 ✓ joker-lint (-1) ⊗ babashka-clj (0) ⊗ clojure (+1) = 0 ✓ joker-lint (-1) ⊗ clj-kondo-3color (0) ⊗ squint-runtime (+1) = 0 ✓
Skill Name: joker-lint Type: Static Analysis / Linting Trit: -1 (MINUS - VALIDATOR) GF(3): Validates Clojure code correctness
Cat# Integration
This skill maps to Cat# = Comod(P) as a bicomodule in the Prof home:
Trit: 0 (ERGODIC) Home: Prof (profunctors/bimodules) Poly Op: ⊗ (parallel composition) Kan Role: Adj (adjunction bridge)
GF(3) Naturality
The skill participates in triads where:
(-1) + (0) + (+1) ≡ 0 (mod 3)
This ensures compositional coherence in the Cat# equipment structure.