Squint ClojureScript runtime for minimal JS output compilation
/plugin marketplace add plurigrid/asi/plugin install plurigrid-asi-skills@plurigrid/asiThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Status: ✅ Production Ready Author: Michiel Borkent (borkdude) Trit: 0 (ERGODIC - neutral transport) Stars: 1.2k+
Squint is a light-weight ClojureScript dialect that compiles to JavaScript with minimal runtime overhead. It's the "minimal" alternative in borkdude's browser runtime spectrum.
| Aspect | Squint | Cherry 🍒 |
|---|---|---|
| Runtime size | Minimal (~10KB) | Full cljs.core (~100KB) |
| Semantics | JS-like | Full CLJS |
| Data structures | JS objects/arrays | Persistent immutable |
| Keywords | Strings | CLJS keywords |
| Interop | Seamless | Requires macros |
| JSX | ❌ | ✅ |
| Use case | Small scripts, interop | Full applications |
npm install squint-cljs@latest
;; example.cljs
(ns example)
;; Functions compile to regular JS functions
(defn greet [name]
(str "Hello, " name "!"))
;; JS interop is seamless
(js/console.log (greet "World"))
;; Object destructuring works naturally
(defn process [{:keys [a b c]}]
(+ a b c))
(process #js {:a 1 :b 2 :c 3}) ; => 6
# Compile to JS
npx squint compile example.cljs
# Run directly
npx squint run example.cljs
Data structures are JS native:
{:a 1} ; => {a: 1} in JS (plain object)
[1 2 3] ; => [1, 2, 3] in JS (array)
Keywords become strings:
:foo ; => "foo" in JS
No persistent data structures (use JS mutation)
Faster interop (no conversion needed)
(ns squint.gay-colors)
;; SplitMix64 constants
(def GOLDEN 0x9E3779B97F4A7C15)
(def MASK64 0xFFFFFFFFFFFFFFFF)
(defn splitmix64 [state]
(let [s (bit-and (+ state GOLDEN) MASK64)
z (-> s
(bit-xor (unsigned-bit-shift-right s 30))
(* 0xBF58476D1CE4E5B9)
(bit-and MASK64))
z (-> z
(bit-xor (unsigned-bit-shift-right z 27))
(* 0x94D049BB133111EB)
(bit-and MASK64))]
(bit-xor z (unsigned-bit-shift-right z 31))))
(defn color-at [seed idx]
(loop [state seed i idx]
(if (zero? i)
(let [v (splitmix64 state)
l (+ 10 (* 85 (/ (bit-and v 0xFF) 255)))
c (* 100 (/ (bit-and (unsigned-bit-shift-right v 8) 0xFF) 255))
h (* 360 (/ (bit-and (unsigned-bit-shift-right v 16) 0xFFFF) 65535))]
{:L l :C c :H h})
(recur (splitmix64 state) (dec i)))))
just squint-compile file.cljs # Compile CLJS to JS
just squint-run file.cljs # Run CLJS file
just squint-watch # Watch mode compilation
Skill Name: squint-runtime Type: ClojureScript Compiler Trit: 0 (ERGODIC) Invariant: ✅ Deterministic compilation