Agent Skills: Borkdude Skill: ClojureScript Runtime Selection

Guidance for selecting the right ClojureScript runtime across scripting, browser, Node, and embedded use.

UncategorizedID: plurigrid/asi/borkdude

Install this agent skill to your local

pnpm dlx add-skill https://github.com/plurigrid/asi/tree/HEAD/plugins/asi/skills/borkdude

Skill Files

Browse the full folder contents for borkdude.

Download Skill

Loading file tree…

plugins/asi/skills/borkdude/SKILL.md

Skill Metadata

Name
borkdude
Description
Babashka and ClojureScript runtime selection guidance by @borkdude
<!-- Propagated to amp | Trit: 0 | Source: .ruler/skills/borkdude -->

Borkdude Skill: ClojureScript Runtime Selection

Status: ✅ Production Ready Trit: 0 (ERGODIC - runtime neutral) Principle: Right tool for context Author: Michiel Borkent (@borkdude)


Overview

Borkdude provides guidance for selecting the appropriate ClojureScript runtime based on execution context. Named after Michiel Borkent, creator of Babashka, SCI, Cherry, Squint, and other Clojure tools.

Runtime Matrix

| Runtime | Context | JVM | Node | Browser | REPL | |---------|---------|-----|------|---------|------| | Babashka | Scripting | ✗ | ✗ | ✗ | ✓ | | SCI | Embedded | ✓ | ✓ | ✓ | ✓ | | Cherry | Compiler | ✗ | ✓ | ✓ | ✓ | | Squint | Compiler | ✗ | ✓ | ✓ | ✓ | | Scittle | Browser | ✗ | ✗ | ✓ | ✓ | | nbb | Node | ✗ | ✓ | ✗ | ✓ |

Decision Tree

Start
  │
  ├── Need fast startup? ─────────► Babashka (bb)
  │
  ├── Browser target?
  │     ├── Minimal bundle? ──────► Squint
  │     ├── Full ClojureScript? ──► Cherry  
  │     └── Script tag? ──────────► Scittle
  │
  ├── Node scripting? ────────────► nbb
  │
  └── Embedded interpreter? ──────► SCI

Commands

# Babashka (scripting)
bb script.clj

# nbb (Node)
npx nbb script.cljs

# Squint (compile to JS)
npx squint compile src/main.cljs

# Cherry (compile with macros)
npx cherry compile src/main.cljs

# Scittle (browser)
# <script src="https://cdn.jsdelivr.net/npm/scittle@0.6.15/dist/scittle.js"></script>

SCI (Small Clojure Interpreter)

Embedded interpreter for sandboxed evaluation:

(require '[sci.core :as sci])

(def ctx (sci/init {:namespaces {'user {'foo (fn [] "bar")}}}))

(sci/eval-string* ctx "(user/foo)")
;; => "bar"

Cherry vs Squint

| Feature | Cherry | Squint | |---------|--------|--------| | ClojureScript compat | High | Medium | | Bundle size | Larger | Smaller | | Macros | Full support | Limited | | Interop | CLJS-style | JS-native | | Target audience | CLJS developers | JS developers |

Babashka Pods

Extend Babashka with pods:

(require '[babashka.pods :as pods])

(pods/load-pod 'org.babashka/go-sqlite3 "0.1.0")
(require '[pod.babashka.go-sqlite3 :as sqlite])

(sqlite/execute! "test.db" ["CREATE TABLE users (id INTEGER PRIMARY KEY)"])

Integration with Music Topos

;; Use Babashka for scripts
(ns ruler.propagate
  (:require [babashka.fs :as fs]))

;; Use SCI for embedded color evaluation
(def color-ctx
  (sci/init {:namespaces 
             {'gay {'color-at (fn [idx] (gay/color-at idx))}}}))

When to Use Each

Babashka

  • Shell scripts
  • Build automation
  • CLI tools
  • Data processing

SCI

  • Sandboxed evaluation
  • Plugin systems
  • Configuration DSLs
  • Interactive REPLs

Cherry

  • Full CLJS features in browser
  • Macro-heavy code
  • CLJS library compat

Squint

  • Minimal JS output
  • JS-first interop
  • Small bundles

Scittle

  • Browser scripting
  • No build step
  • Quick prototypes

nbb

  • Node.js scripting
  • npm library access
  • Server scripts

Example: Skill Propagation

#!/usr/bin/env bb
;; .ruler/propagate.clj

(require '[babashka.fs :as fs]
         '[clojure.string :as str])

(defn propagate-skill! [skill-name]
  (let [source (str ".ruler/skills/" skill-name "/SKILL.md")
        content (slurp source)]
    (doseq [agent ["codex" "claude" "cursor"]]
      (let [target (str "." agent "/skills/" skill-name "/SKILL.md")]
        (fs/create-dirs (fs/parent target))
        (spit target content)))))

(propagate-skill! "unworld")

Skill Name: borkdude Type: Runtime Selection / ClojureScript Tooling Trit: 0 (ERGODIC) Runtimes: Babashka, SCI, Cherry, Squint, Scittle, nbb

Scientific Skill Interleaving

This skill connects to the K-Dense-AI/claude-scientific-skills ecosystem:

Graph Theory

  • networkx [○] via bicomodule
    • Universal graph hub

Bibliography References

  • general: 734 citations in bib.duckdb

Cat# Integration

This skill maps to Cat# = Comod(P) as a bicomodule in the equipment structure:

Trit: 0 (ERGODIC)
Home: Prof
Poly Op: ⊗
Kan Role: Adj
Color: #26D826

GF(3) Naturality

The skill participates in triads satisfying:

(-1) + (0) + (+1) ≡ 0 (mod 3)

This ensures compositional coherence in the Cat# equipment structure.