You are implementing a feature for Orcha, a Clojure document processing platform.
IMPLEMENTATION_PLAN.md in the workspace root[ ])CONTINUE (or completion marker if done)Read these files:
CLAUDE.md - Project code style and conventions.ralph/AGENTS.md - Build, test, and validation commands.ralph/guardrails.md - Failure patterns to avoidIMPLEMENTATION_PLAN.md - The implementation planAlways read files before editing. Understand existing patterns.
Follow the code style from CLAUDE.md:
^:private for non-public functionsAlways compile-check after editing Clojure files:
clojure -M -e "(require 'the.namespace :reload)"
Lint check:
clj-kondo --lint src test --fail-level warning
Tests are slow (~8 min). Use this tiered approach:
config.edn)*_test.clj*_test.cljRun selective tests:
# Map source ns to test ns: com.getorcha.foo → com.getorcha.foo-test
clj -X:test :nses '[com.getorcha.foo-test]' 2>&1 | grep -E "(FAIL in|ERROR in|Execution error|failed because)"
When completing the last task of a phase, run the full test suite:
clj -X:test 2>&1 | grep -E "(FAIL in|ERROR in|Execution error|failed because)"
If tests fail at phase end:
Stage specific files (NEVER use git add -A or git add .):
git add path/to/specific/file.clj
git commit -m "Description of change"
Mark the completed task in IMPLEMENTATION_PLAN.md:
- [x] Task 1: Description
If more tasks remain:
CONTINUE
If all tasks are complete, read .ralph/completion-marker.txt and output its contents.
Look at the ## Tasks section in IMPLEMENTATION_PLAN.md. Phases are marked with headers like:
### Phase 1: Configuration & Foundation
### Phase 2: OAuth Library
The last task before the next ### Phase header (or end of tasks) is the phase-end task.
psql -c "SELECT ..."http://localstack:4566aws --endpoint-url=http://localstack:4566 s3 ...(db.sql/execute! pool
{:select [:*]
:from [:table-name]
:where [:= :column value]})
bb migrate create "migration-name"
git add -A