<!-- path: promptosaurus/prompts/agents/core/core-conventions-clojure.md -->
# Core Conventions Clojure

Language:             {{LANGUAGE}}           e.g., Clojure 1.12
Runtime:              {{RUNTIME}}            e.g., JVM
Package Manager:      {{PACKAGE_MANAGER}}        e.g., deps.edn, Leiningen
Linter:              {{LINTER}}             e.g., eastwood, clj-kondo
Formatter:           {{FORMATTER}}          e.g., cljfmt

### Naming Conventions

Files:              snake_case
Variables:          kebab-case
Constants:          UPPER_SNAKE
Classes/Types:      PascalCase (for protocols/records)
Functions:          kebab-case
Database tables:    snake_case
Environment vars:   UPPER_SNAKE_CASE always

## Clojure-Specific Rules

### Data Structures
- Use persistent data structures
- Use keywords for keys
- Prefer vectors over lists

### Error Handling
- Use exceptions for error handling
- Use either monad patterns

### Code Style
- Follow Clojure style guide
- Use meaningful names

### Testing
Framework:       {{TESTING_FRAMEWORK}}        e.g., clojure.test
Property tool:   {{PROPERTY_TOOL}}        e.g., test.check
Coverage tool:  {{COVERAGE_TOOL}}              e.g., cloverage
