browser-repl-debug

A debugging guide for checking DanNet's frontend in a live browser through a ClojureScript REPL, an interactive programming console.

In plain words
What is it for?
Use it to inspect client state, reproduce navigation issues, examine the page's DOM, and compare text or layout measurements.
Why use it?
It helps find browser-only problems that may not appear when rendering or inspecting the source code alone.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/kuhumcst/dannet/browser-repl-debug
Any agent
npx skills add kuhumcst/DanNet --skill browser-repl-debug
Clone the repo
git clone --depth 1 https://github.com/kuhumcst/DanNet

Made for: Claude Code, Codex.

Per session 95 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 821 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00095 $0.00821
Opus 5 $0.00048 $0.00411
Sonnet 5 $0.00019 $0.00164
Haiku 4.5 $0.00010 $0.00082

Measured 3d ago against content hash 968bc9020fa2, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

browser-repl-debug scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.claude/skills/browser-repl-debug/SKILL.md · 77 lines

How it starts

The opening of the file, as written. The whole thing — 77 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Browser REPL Debugging (shadow-cljs)

Frontend bugs are debugged in the live browser tab, not by reading source and guessing. The shadow-cljs nREPL runs alongside the regular clj nREPL (7888); its port is in .shadow-cljs/nrepl.port and clj-nrepl-eval --discover-ports finds it. Sessions persist per port, so once switched to CLJS mode, later evaluations on that port stay in the browser until :cljs/quit.

Connect

;; On the shadow-cljs nREPL port:
(shadow.cljs.devtools.api/repl-runtimes :app)  ; confirm a browser tab is connected
(shadow.cljs.devtools.api/repl :app)           ; switch session to CLJS (:cljs/quit to leave)

Inspect and reproduce

;; Client state, e.g. the current page data:
(:data @dk.cst.dannet.web.router/location)

;; Drive navigation to reproduce a bug on a specific page:
(dk.cst.dannet.web.app/navigate-to "/dannet/data/synset-52")
;; (this var has moved between namespaces before — if undefined, locate the
;;  current navigate-to rather than assuming)

;; Query and measure the DOM, incl. glyph-level baseline comparisons:
(.querySelector js/document "tr[property=\"dns:inherited\"]")
;; use Range/getClientRects on single characters to compare baselines

Instrument non-invasively

Capture args/stacks in an atom deref-able from the REPL; keep the original so it can be restored:

(defonce orig-f some.ns/suspect-fn)
(defonce captured (atom []))
(set! some.ns/suspect-fn (fn [x]
                           (swap! captured conj [(pr-str x) (.-stack (js/Error.))])
                           (orig-f x)))

Trial CSS before touching main.css

;; Inject a temporary <style> and re-measure:
(let [style (.createElement js/document "style")]
  (set! (.-id style) "exp-style")
  (set! (.-textContent style) "span.inheritance sub { line-height: 0; }")
  (.appendChild (.-head js/document) style))

;; Cache-bust stylesheets after editing main.css:
(doseq [link (array-seq (.querySelectorAll js/document "link[rel=stylesheet]"))]
  (set! (.-href link) (str (first (clojure.string/split (.-href link) #"\?"))
                           "?v=" (js/Date.now))))

Read the full file on GitHub · 77 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 3d ago First seen · 77 lines · 95 tokens per session scan A 968bc9020fa2

Subscribe to this mod's changes

browser-repl-debug is a skill published in the GitHub repository kuhumcst/DanNet (29 stars, last pushed 5d ago), licensed MIT. It adds 95 tokens to every session and 821 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

graph-mutation-plan

Cookbook for composing an applygraphmutations plan — stable entitykey patterns, the canonical label/edge vocabulary, evidence/invalidation/confidence discipline, and a worked example. Load this when building a non-trivial mutation plan.

potpie-ai/potpie · 51 tokens

tinker-dev

Development guidance for the Apache TinkerPop monorepo. Use when building, testing, or contributing to TinkerPop's graph computing framework and its multi-language Gremlin ecosystem (Java, Python, JavaScript, .NET, Go). Covers coding conventions, build recipes, test evaluation, documentation, development environment…

apache/tinkerpop · 75 tokens

review

Structured PR review for pygraphistry. Input: PR number/branch (default current branch PR). Output: findings and convergence artifacts under plans/ /. Method: multi-wave, evidence-first review across spec, correctness, tests, security, code quality, DRY, concurrency, performance, architecture, operability, and…

graphistry/pygraphistry · 69 tokens

test-amplification

Methodical bug-driven test amplification for pygraphistry features. Use when hardening a feature area via user-workflow exploration, 5-Whys retrospectives, bug-taxonomy derivation, concrete test planning, implementation, and safety-gated validation.

graphistry/pygraphistry · 56 tokens

plan

OPT-IN file-based planning for multi-session tasks. Only use when user explicitly requests it or work spans multiple sessions. For single-session work, prefer your platform's native planning features.

graphistry/pygraphistry · 38 tokens

portaljs-add-dcat

Make a PortalJS portal harvestable by national/EU/US open-data portals — emit standards-compliant DCAT catalog feeds (DCAT 2/3, DCAT-AP, DCAT-US, national profiles) in JSON-LD, Turtle, and RDF/XML at build, with autodiscovery and per-profile conformance checking. Use when a portal needs to be harvested by…

datopian/portaljs · 99 tokens