Skip to content
Agentmart
Submit a tool

clojure

Clojure, ClojureScript, EDN, and Babashka development with runtime validation.

Skill by cormacc

IndexedMIT★ 1
Write a review

Chalk Labs

Need help deploying clojure?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/cormacc-clojure

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Clojure, ClojureScript, EDN, and Babashka development with runtime validation. Use for .clj/.cljs/.cljc/.edn/.bb files, deps.edn, project.clj, bb.edn, shadow-cljs, lein, nREPL, or clojure-lsp / clj-kondo workflows. Covers reading, editing, debugging, and testing.

Use cases: testing, writing

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md and code. Checked Nov 1, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/clojure

What's inside

Skill name
clojure
Description
Clojure, ClojureScript, EDN, and Babashka development with runtime validation. Use for .clj/.cljs/.cljc/.edn/.bb files, deps.edn, project.clj, bb.edn, shadow-cljs, lein, nREPL, or clojure-lsp / clj-kondo workflows. Covers reading, editing, debugging, and testing.
License
MIT
Instructions
38 lines in SKILL.md · view on GitHub

Files (5)

  • SKILL.md
  • idioms.md · references/
  • review.md · references/
  • runtime-testing.md · references/
  • tool-guide.md · references/

SKILL.md (first lines)

# Clojure development

Follow the project's `AGENTS.md`, commands, and conventions. Use the local [style digest](references/idioms.md) when the project does not specify a style; no web lookup is needed.

For error handling, JVM/CLJS portability, Java interop or test design, read the [runtime and testing cautions](references/runtime-testing.md). They preserve concrete failure modes and local findings without expanding the core workflow.

When you review or simplify Clojure code, read the [review reference](references/review.md) for language-specific defect hazards, readability items, and simplification candidates.

## Workflow

1. Read the target code, namespace dependencies, and callers. Use `lsp` for symbol definitions and references.
2. Prefer an existing REPL verified to belong to the target project. Use `clojure_find_nrepl_port` and `clojure_eval` when available; see the [tool guide](references/tool-guide.md) for CLI fallback and session handling. A port file or occupied port alone does not identify a live project REPL.
3. If no suitable REPL is available, use the project's test command or a focused Babashka check. Start a server only when needed, using the project's startup instructions.
4. Validate changed behaviour in the intended runtime, including relevant edge cases. Check unfamiliar Java interop in that runtime: JVM support does not imply Babashka support.
5. After saving, reload changed namespaces or confirm the watch build has loaded them. Run the relevant tests against the saved code.

`require` (including `:reload`), `load-file`, and `bb -e` execute code. Inspect top-level effects before loading; use a non-evaluating reader or the project's static checker when only a syntax check is intended. Parse EDN as data rather than evaluating it.

For JVM/Babashka tests, use `clojure.test/run-test-var` or `clojure.test/run-tests`, not direct test-function calls, so fixtures run. Use the project's CLJS test runner for CLJS. Check test failures and errors, not just whether evaluation returned. In cross-platform regex tests, assert matching and non-matching inputs rather than regex equality or printed forms.

## Debugging and discovery

Inspect values in the REPL before you add `println` or log calls to source. The REPL gives the value at the point of failure without an edit-and-rerun cycle.

- To capture a value inside a function, evaluate a copy of the function in the REPL with a temporary `(def dbg-x x)`, call the function, then inspect `dbg-x`. Do not write the capture into the file. Use a capture name that does not resolve in the namespace, because `def` replaces an existing var of the same name.
- When you finish, reload the namespace from the saved file, then remove each capture var with `ns-unmap`. A reload restores the file's definitions but does not remove vars that only the REPL defined.
- A REPL redefinition changes the user's running program (see the [tool guide](references/tool-guide.md)). During a review, do not redefine project code; see the [review reference](references/review.md).
- A running system that holds a function value, such as a handler or a lifecycle component, keeps the old definition after you redefine the var. Restart it with the project's documented reset before you trust the result.
- `tap>` is an alternative to a capture var when the project has a tap consumer. The `dataspex` skill covers inspection of tapped values.
- Test the fix in the REPL, apply it to the file, then reload and run the tests as in [#Workflow](#workflow).

Before you rely on an unfamiliar macro or Java API:

- Expand the macro with `macroexpand-1` (one step) or `macroexpand` (until the head is not a macro).
- List a Java class's members with `clojure.reflect/reflect`. Select methods with `(filter :return-type)`, not `(instance? clojure.reflect.Method %)`: Babashka 1.13.228 returned the same members as the JVM for `java.time.LocalDateTime` but could not resolve the `clojure.reflect.Method` class symbol. A listed member does not prove that Babashka can call it; probe the call as in workflow step 4.
- Before you add a dependency for a Java API, check whether the project already depends on a Clojure wrapper for it.

## ClojureScript

Confirm the selected build and attached JS runtime before evaluating CLJS. Opening a browser tab alone does not switch a CLJ nREPL session to CLJS. `clojure_eval` keeps one session for each host and port, so a CLJS selection persists until `:cljs/quit` or `reset`. See the [tool guide](references/tool-guide.md) for a shadow-cljs example.

## Delimiter repair

Correct small delimiter errors directly. If an available repair tool helps, inspect its changes and rerun normal verification. Repair is not syntax validation; the native `clojure_paren_repair` check can miss mismatched delimiter types and misread character literals. It repairs strings only: apply the repair to the file with an edit.

## Babashka caveats

- Run tasks from the project's documented task directory. `-cp` replaces configured `:paths`; include all roots needed by a focused run.
- In bare scripts without an `ns` form, names such as `source`, `doc`, and `dir` are already referred from `clojure.repl`; choose distinct names.
- Convert `babashka.fs` Path values to strings before passing them to `slurp` or `spit`.
- `bb.edn` is read as EDN, so task code cannot use `#(...)`; write `(fn [x] ...)`.
- A `$HOME` override does not necessarily change `user.home`. Isolate tests through the path source the code actually uses.
- For `babashka.fs/glob` walks that must traverse directory symlinks, use `{:follow-links true}` and test with an actual symlink.

From cormacc/dotagents, MIT.

More from cormacc/dotagents

Signals

Stars
1
Forks
1
Open issues
0
Last commit (this folder)
Oct 17, 2026 (15 days ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from cormacc

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get clojure running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying clojure?

CallGet help
Cite this page

clojure skill. Agent Mart. https://agentmart.dev/skills/cormacc-clojure (last updated 2026-10-24)