clj-debug

Inspect Clojure intermediate values in a REPL during debugging.

31|Updated Mar 8, 2026
One-click install
npx skills add https://github.com/humorless/clj-native-agent --skill clj-debug
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: clj-debug
Source: https://github.com/humorless/clj-native-agent/tree/main/skills/clj-debug
Command: npx skills add https://github.com/humorless/clj-native-agent --skill clj-debug

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

It prevents slow, invasive debugging cycles in Clojure by replacing print/log-driven troubleshooting with fast REPL-based inspection.

Core Features & Use Cases

  • Stop Before Logging: Redirects attempts to add println, tap>, or log statements toward non-invasive investigation.
  • Inline Inspection with def: Captures intermediate values in the REPL and inspects structure via normal Clojure access patterns.
  • Integrant Component Lifecycle Awareness: Helps you reset Integrant components when code changes would otherwise be masked by already-running instances.

Use clj-debug when a test fails, behavior is unexpected, or you need to verify what a transformation pipeline is doing without touching the source file.

Quick Start

Use clj-debug to reproduce the failure in /brepl, pin the relevant intermediate values with def, inspect their keys and structure, and only then adjust your code if needed.

Frequently Asked Questions about clj-debug

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I debug Clojure code without adding println or log statements?

Debug Clojure code without logging by using REPL-based inline inspection to capture intermediate values with def and inspect their structure, replacing slow print-driven troubleshooting cycles with fast non-invasive investigation.

What's the best way to inspect intermediate values in a Clojure transformation pipeline?

Inspect intermediate values in a Clojure transformation pipeline by pinning them with def in the REPL, then examining their keys and structure using normal Clojure access patterns to verify pipeline behavior without touching source files.

Can I debug failing Clojure unit tests using the REPL?

Debug failing Clojure unit tests by reproducing the failure in the REPL, pinning relevant intermediate values with def, inspecting their structure, and adjusting code only after understanding the unexpected behavior through hypothesis-driven checks.

Does REPL debugging work with Integrant component lifecycles?

REPL debugging works with Integrant by supporting component lifecycle resets, ensuring evaluated code changes are reflected during debugging so already-running instances do not mask modifications made while inspecting intermediate values.

Do I need /brepl access to inspect Clojure code inline?

Inline inspection of Clojure code requires /brepl access to capture intermediate values and investigate failing tests or unexpected runtime behavior without adding invasive logging statements to the source file.

Why should I avoid tap> and println when troubleshooting Clojure runtime behavior?

Avoid tap> and println when troubleshooting Clojure runtime behavior because logging-based debugging is slow and invasive, whereas REPL-based inline inspection captures intermediate values quickly without modifying source files or restarting components.