clojure-coding-practiceslisted
Install: claude install-skill ryan-brosas/universal-template
# Clojure Coding Practices
Application skill for Clojure style learning (from the archived `awesome-guidelines` style capsules). For ClojureScript-specific tooling, follow project `shadow-cljs` / `cljs` conventions.
## Core Principle
Clojure readability is **consistent layout + idiomatic expressions**, namespaces explicit, names conventional, data as maps/vectors, side effects marked.
## When to Use / NOT
- Clojure/ClojureScript application and library code.
- Setting up clj-kondo, cljfmt, clojure.test in CI.
**NOT when:**
- Non-Clojure code.
- Generated `cljs` from macros, validate generator output.
## Workflow
1. **Layout & ns**, indent, parens, `ns` hygiene (`clojure-style-layout-namespaces.md`).
2. **Naming**, lisp-case, `?`, `!`, dynamics (`clojure-style-naming-types.md`).
3. **Functions**, when/if-let, threading, arity (`clojure-style-functions-idioms.md`).
4. **Data & safety**, collections, errors, macros (`clojure-style-data-safety.md`).
5. **Verify**, cljfmt, clj-kondo, `clojure -M:test` on changed namespaces.
## Red Flags
- `:use` or `:refer :all`
- Single-segment library namespace
- camelCase/snake_case function names
- `def` inside function for local state
- Shadowing `clojure.core` without exclude
- List literals for sequential app data
- Index-based collection loops
- Catching `Throwable`
- Macro where function suffices
- Missing docstring on public API
## Verification
- `cljfmt check` / project formatter
- `clj-kondo --lint` on changed paths
- `clo