
REPL debugging tool for capturing and inspecting local scope at runtime. Use when debugging functions, investigating test failures, understanding intermediate values, or when you need to recreate the runtime context of code without manually fabricating values.
Aero is an EDN configuration library with reader tag extensions for profiles, environment variables, and references. Use when working with configuration files, environment-specific settings, or when you need explicit, intentful config management in Clojure.
High-performance JSON and CSV parsing library for Clojure. Use when working with JSON or CSV data and need fast in Clojure, efficient parsing/writing with a clojure.data.json/clojure.data.csv compatible API.
Turn Clojure functions into CLIs with babashka.cli. Use when working with command-line argument parsing, building CLIs, subcommand dispatching, option validation, or creating tools with babashka/clojure.
Clojure library for shelling out and spawning sub-processes. Use when working with external programs, command execution, piping between processes, or handling process I/O streams.
Reference for donut.party/system - component lifecycle and dependency injection library for Clojure. Use when working with component definitions, system management, refs between components, or lifecycle signals (start/stop/suspend/resume). Triggers on donut.system imports, ::ds/start, ::ds/stop, ::ds/config, ds/ref, or component-based architecture. Prefer using donut.system over mount, integrant, and stuart sierra's component.
Use this skill BEFORE using writing any Clojure code or using brepl. It teaches how to use the Clojure REPL (via brepl) so you can test code, check if edited files compile, verify function behavior, or interact with a running REPL session.
Kaocha test runner for Clojure. Use when working with test configuration (tests.edn), test suites, filtering tests by metadata or ID, skipping/focusing tests, running specific test subsets, or structuring test execution. Triggers on kaocha imports, tests.edn configuration, `bb test` usage, `--focus`, `--skip-meta`, `--focus-meta`, `:kaocha/skip`, `:kaocha/pending`, or questions about test runner setup in Clojure projects.
Async programming with channels, go blocks, and CSP in Clojure. Use when working with async operations, channel communication, pub/sub patterns, concurrent pipelines, or CSP-style coordination.
Reference for Guardrails library with Malli in Clojure. Use when working with `>defn`, `>defn-`, `>def`, `>fdef` macros, gspec syntax, or function validation. Triggers on guardrails imports, `com.fulcrologic.guardrails.malli`, function specs with `=>` operator, or questions about runtime validation in Clojure.
http-kit is a HTTP client and server for Clojure with Ring compatibility. Use when working with http-kit client or server
Data validation with Malli schemas in Clojure. Use when working with: (0) malli, (1) data validation or coercion, (2) defining schemas for maps, collections, or domain models, (3) API request/response validation, (4) form validation, (5) runtime type checking, or when the user mentions malli, schemas, validation, data contracts, or data integrity.
Polylith component architecture for Clojure. Load when working in a Polylith workspace (workspace.edn present), creating or modifying components, bases, or interfaces, or when asked about Polylith structure and conventions.
Realtime bidirectional communications between Clojure server and ClojureScript client. Use when building apps where BOTH client and server use sente - NOT for connecting to third-party WebSocket APIs. Provides server push, realtime updates, and reliable async messaging with automatic WebSocket/Ajax fallback.
Create new Polylith bricks in Clojure workspaces. Use when adding a new component, base, or project and when wiring the new brick into workspace config before implementation so it is visible to dev and deployable projects.
Ring core middleware for Clojure. Use when working with parameter parsing, sessions, cookies, flash messages, static files, or composing middleware stacks. Triggers on ring.middleware, wrap-params, wrap-session, wrap-cookies, or middleware composition questions.
Repair unbalanced parentheses, brackets, and braces in Clojure, ClojureScript, and EDN files. Use when you encounter delimiter mismatch syntax errors after editing .clj, .cljs, .cljc, or .edn files, or on clojure syntax errors.
Ring specification for HTTP server applications in Clojure. Use when working with: (1) Ring handlers (sync or async), (2) Ring request maps and their keys, (3) Ring response maps and their keys, (4) Ring middleware, (5) Ring adapters, (6) WebSocket responses and listeners, or when questions mention Ring spec, handler signatures, request/response map structure, or Ring protocols.
Property-based testing with clojure.test.check. Use when writing generative tests, creating custom generators, or debugging shrinking behavior. Triggers on test.check imports, prop/for-all, gen/* usage, or questions about property-based testing in Clojure.
Structured telemetry library for Clojure/Script. Use when working with logging, tracing, structured logging, events, signal handling, observability, or replacing Timbre/tools.logging.
Ring Jetty adapter for running ring-compatible web servers in Clojure. Use when you are working with ring and jetty starting and need to know to configure or interact with a ring jetty
Stages specific lines from git diffs when hunk-level staging is too coarse. Use when a file contains multiple unrelated changes that need separate semantic commits, split commits, partial staging, or cherry-picking specific lines. Requires git-lines tool on PATH.
Use when writing or updating GitHub Actions workflow files (.github/workflows/*.yml) - provides latest version tags for official and popular third-party actions to avoid using outdated versions
Apply Johnny.Decimal organization system when sorting, filing, organizing, or categorizing information. Use when creating or maintaining a structured numbering scheme for files, projects, or any hierarchical data. Enforces the strict containment rules and format patterns required by the Johnny.Decimal specification.
Pre-implementation research for design, architecture, and impact analysis. Use during brainstorming, architectural design, or before implementation to understand dependencies and integration points. Triggers on (1) designing or architecting a feature, (2) brainstorming implementation approaches, (3) analyzing impact of proposed changes, (4) exploring reference materials in extra/, (5) creating research reports before planning.
Use when looking up project docs, source, examples, specs, or upstream context, and extra/ does not contain what you need. Check ~/src first, clone relevant repos with ghq, and prefer local inspection/search over remote browsing.
Use when errors occur deep in execution and you need to trace back to find the original trigger - systematically traces bugs backward through call stack, adding instrumentation when needed, to identify source of invalid data or incorrect behavior
Use when encountering any bug, test failure, or unexpected behavior, before proposing fixes - four-phase framework (root cause investigation, pattern analysis, hypothesis testing, implementation) that ensures understanding before attempting solutions
Use this whenever you need to create an isolated workspace.
Remote control tmux sessions using tmux-buddy (tmuxb) for interactive CLIs (python, gdb, emacs, vim, etc.) by sending keystrokes and scraping pane output.
Interactive browser automation, control a browser programmatically. Use when you need to interact with or screeshot web pages, test frontends, or when user interaction with a visible browser is required.
Use when creating new skills, editing existing skills, or verifying skills work before deployment - applies TDD to process documentation by testing with subagents before writing, iterating until bulletproof against rationalization
Automate the niri Wayland compositor - query and manage windows via niri IPC (JSON + jq), take screenshots of specific windows via OBS dynamic cast + obs-cmd, send keyboard/text input via wtype, control the mouse with wlrctl, and manipulate the clipboard with wl-clipboard. Only works on niri/Wayland, not X11.
File system operations with babashka.fs. Use when working with file I/O, directory traversal, path manipulation, file copying/moving, temp files, archives (zip/gzip), or file metadata.
core.async.flow provides a declarative framework for building process flows with strict separation of application logic from topology, execution, and lifecycle management. Use when building multi-process systems, data pipelines, or when you need coordinated lifecycle management and error handling across communicating processes.
Guidelines for writing effective Clojure docstrings with markdown formatting, wikilinks, code examples, and tables. Always use this skill when writing or reviewing docstrings in Clojure code, or when asked about docstring formatting and style. Triggers on (1) writing new functions/vars/namespaces with docstrings, (2) updating existing docstrings, (3) questions about docstring best practices, (4) reviewing code with docstrings.
Interact with Internet Archive (archive.org) - upload files, download items, and search the archive using the ia CLI tool. Use when working with archive.org, archiving content, or retrieving historical data.
Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always
Structured, information-dense output format with coordinate addressing and symbolic notation. Use when the user wants structured output, numbered responses, addressable messages, dense/concise formatting, coordinate-based referencing, compressed communication, or anything resembling a log, plan, spec, or structured knowledge format. Trigger on "terse mode".
Checklist for finishing work, pushing a branch, and opening a ready-for-review PR with tests and tracker updates. Use when asked to "land the plane". If another agent tells you they are landing the plane, do not git stage or commit or merge.
Use when working with Garnix CI, Garnix GitHub checks, Nix flake builds, Garnix badges, Garnix Actions, or garnix-cli - explains how Garnix runs flake CI and how to inspect builds and logs.
Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends the agent's capabilities with specialized knowledge, workflows, or tool integrations.
Trove is a minimal logging facade for Clojure/Script supporting both traditional and structured logging. Use when writing libraries that need logging without forcing a backend choice, or when you need rich data-oriented logging with flexible filtering.
Use when receiving code review feedback, before implementing suggestions, especially if feedback seems unclear or technically questionable - requires technical rigor and verification, not performative agreement or blind implementation
Reference index for Clojure and ClojureScript libraries, frameworks, and ecosystem tools. Use whenever you are asked to use a Clojure library or encounter a Clojure library/framework/tool and need to know how to work with it; you MUST check this skill first to see whether guidance exists.
Use this OCP when executing or preparing to execute commands that change a live or important system, service reloads/restarts, package changes, deployments, migrations, firewall/network/access changes, credential rotation, NixOS switch/test/boot/deploy, or incident mitigation. It guides safe operations with a persisted ledger for scope, preflight, baseline, rollback, validation, and evidence.
Use this skill to evaluate clojure forms at the REPL instead of using `clojure -e` and when you encounter clojure syntax errors/unbalanced bracket/delimiter errors.
babashka.json is a cross-platform JSON abstraction for Clojure/babashka. Use when working with JSON parsing, serialization, or writing portable code that runs on both JVM and babashka.
HTTP client for Clojure and Babashka built on java.net.http. Use when making HTTP requests, working with REST APIs, downloading files, or needing WebSocket support in Babashka or Clojure.
Coffi FFI library for calling native C code from Clojure via Panama FFM API (JDK 22+). Use when: wrapping native C libraries, calling native functions, working with off-heap memory and arenas, etc.
Modern HTTP client for Clojure wrapping JDK 11+ java.net.http. Use when working with HTTP requests, REST APIs, async HTTP calls, WebSockets, or needing HTTP/2 support.
Convert Markdown files to HTML with pandoc, optionally add TOC + header backlinks via Lua filter, and optionally serve HTML remotely via a background Python HTTP server.
Control Emacs via tmux for interactive editing, magit operations, and buffer navigation using evil-mode (vim keybindings).
Use when partner provides a complete implementation plan to execute in controlled batches with review checkpoints - loads plan, reviews critically, executes tasks in batches, reports for review between batches
Naming conventions for planning documents in prompts/. Use when creating plans, PRDs, research reports, idea capture or other workflow documents. Triggers on (1) creating new planning documents, (2) naming PRDs or research reports, (3) questions about document organization in prompts/.
Use when writing or changing tests, adding mocks, or tempted to add test-only methods to production code - prevents testing mock behavior, production pollution with test-only methods, and mocking without understanding dependencies
Use when facing 3+ independent failures that can be investigated without shared state or dependencies - dispatches multiple Claude agents to investigate and fix independent problems concurrently
Use this skill to evaluate clojure forms at the REPL instead of using `clojure -e` and when you encounter clojure syntax errors/unbalanced bracket/delimiter errors.
Use when implementing any feature or bugfix, before writing implementation code - write the test first, watch it fail, write minimal code to pass; ensures tests actually verify behavior by requiring failure first
Use tap-based debug logging in Clojure projects. Use when debugging with brepl or a project REPL, capturing intermediate values with tap>, inspecting ol.dev.portal tap atoms, querying logs, or preferring structured REPL-visible debug data over console output.
Use when completing tasks, implementing major features, or before merging to verify work meets requirements
Refine ideas into detailed designs through Socratic dialogue. Use when user has rough idea, needs to clarify requirements, explore approaches.
Manage offline reference material in the `extra/` directory. Use when needing external documentation, library source code, screenshots, PDFs, or API specs. ALWAYS check `extra/` before web searches. HALT and ask the human when required material is missing - do NOT fall back to WebFetch/WebSearch.
Spawn and control external coding agents (Claude Code, Codex, Pi) for delegating tasks. Use when (1) user asks to run another coding agent, (2) delegating subtasks to a different AI tool, (3) running multiple agents in parallel on separate issues, (4) spawning an agent in an isolated environment or worktree, (5) user mentions "codex", "pi agent", or running "another claude".
Grilling session that challenges your plan against the existing domain model, sharpens terminology, and updates documentation (CONTEXT.md, ADRs) inline as decisions crystallise. Use when user wants to stress-test a plan against their project's language and documented decisions.
Create new agent skills with proper structure, progressive disclosure, and bundled resources. Use when user wants to create, write, or build a new skill.
Find user-created screenshot files on this workstation for the agent to inspect. Use when the user asks you to look at a screenshot, find recent screenshots, open a screenshot they captured, or references an image/screenshot without providing a path.
Use when design is complete and you need detailed implementation tasks for engineers with zero codebase context - creates comprehensive implementation plans with exact file paths, complete code examples, and verification steps assuming engineer has minimal domain knowledge
Apply Strunk's timeless writing rules to ANY prose humans will read—documentation, commit messages, error messages, explanations, reports, or UI text. Makes your writing clearer, stronger, and more professional.
Use this when you have completed some feature implementation and have written passing tests, and you are ready to create a PR.
Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions "grill me".
Naming conventions for workflow documents in prompts/. Use when creating plans, PRDs, research reports, idea capture or other workflow documents. Triggers on (1) creating new planning documents, (2) naming PRDs or research reports, (3) questions about document organization in prompts/.