swe-programming-clojurelisted
Install: claude install-skill wahidyankf/ose-primer
# Clojure Coding Standards
## Purpose
Progressive disclosure of Clojure coding standards for agents writing Clojure code.
**Usage**: Auto-loaded for agents when writing Clojure code. Provides quick reference to idioms, best practices, and antipatterns.
**Authoritative Source**: [docs/explanation/software-engineering/programming-languages/clojure/README.md](../../../docs/explanation/software-engineering/programming-languages/clojure/README.md)
## Prerequisite Knowledge
**IMPORTANT**: This skill provides **demo-specific style guides**, not educational tutorials.
Complete the demo Clojure learning path first:
## Quick Standards Reference
### Naming Conventions
**Functions/Variables**: kebab-case - `calculate-zakat`, `total-amount`, `validate-contract`
**Predicates**: end with `?` - `valid-nisab?`, `above-threshold?`
**Side-effecting functions**: end with `!` - `save-transaction!`, `send-notification!`
**Namespaces**: reverse-domain + feature - `com.demo.zakat.calculator`
**Namespace aliases**: standard abbreviations - `(require [clojure.string :as str])`
### Core Idioms
```clojure
;; CORRECT: Pure function for Zakat calculation
(defn calculate-zakat
"Calculate Zakat amount. Returns 2.5% if wealth >= nisab, else 0."
[wealth nisab]
(if (>= wealth nisab)
(* wealth 0.025M)
0M))
;; CORRECT: Threading macro for readability
(defn process-contracts [contracts nisab]
(->> contracts
(filter #(>= (:wealth %) nisab))
(map #(assoc % :zakat-amoun