penpot/.serena/memories/scripts/paren-repair.md
2026-07-22 15:23:25 +02:00

1.2 KiB

Paren-Repair

scripts/paren-repair fixes mismatched parentheses, brackets, and braces in Clojure/ClojureScript files, then reformats them with cljfmt.

When to use

  • After LLM edits introduce broken delimiters — proactively run it on files you just touched.
  • When lint (clj-kondo), the Clojure compiler, or shadow-cljs report syntax errors mentioning mismatched/unclosed delimiters, reader errors, or unexpected EOF.
  • Before running lint/format checks — delimiter errors make linter output misleading. Fix them first, then lint.

How to use (CLI)

# File mode (in-place fix + format)
bb scripts/paren-repair path/to/file.clj

# Pipe mode (stdin → fixed code to stdout)
echo '(def x 1' | bb scripts/paren-repair

# Help
bb scripts/paren-repair --help

bb must be invoked from the repo root so the path scripts/paren-repair resolves.

Native Tool Available (opencode)

A native opencode tool paren-repair is available at .opencode/scripts/paren-repair.ts. The LLM can call it directly with:

  • files: Array of file paths to fix
  • code: Code string to fix via stdin

Example usage by the LLM:

paren-repair(files="src/foo.clj, src/bar.cljs")
paren-repair(code="(defn foo [x")