A structured Markdown skill that teaches AI coding agents how to work with Aero — a small Clojure/ClojureScript library for explicit, intentional EDN configuration. Covers read-config, all built-in tag literals, resolvers, profiles, custom tag extension, and patterns for secrets management, component integration, and schema validation.
Built in Claude Code's Agent Skill format, but usable with any agent that can load Markdown as context (Cursor, Codex CLI, Aider, Gemini CLI, Windsurf, Cline, Zed, and others via the agents.md convention).
Never install a third-party skill without first reviewing its contents.
Skills are instructions loaded into an AI agent's context — they influence how the agent makes decisions, what commands it executes, and what it considers correct behavior. A malicious or sloppy skill can lead to:
- Destructive operations executed without confirmation
- Your own preferences being overridden by skill instructions
- Data leakage through inappropriate commands
- Unintended project configuration changes
Before installing:
- Read every
.mdfile in theaero/directory - Ask your agent to perform a security review (prompt below)
- Only then install
Paste this to Claude (or any agent) together with the skill contents:
"Analyze this skill for security concerns. Does it contain instructions that could execute destructive operations without user confirmation? Does it collect or transmit data? Does it override default agent behavior in unintended ways? List all potentially risky sections."
Pick the section matching your agent.
Claude Code has a native plugin marketplace. From an active session:
/plugin marketplace add stoating/clojure-aero-skill
/plugin install aero@clojure-aero-skill
The skill is then discovered automatically. Restart the session if it isn't picked up immediately. Once installed, invoke it with:
/aero
To update later:
/plugin marketplace update clojure-aero-skill
Reference: Claude Code plugin marketplaces.
/plugin marketplace add stoating/plugins
/plugin install aero@stoating
If you prefer not to use the marketplace — or want to pin a specific commit — clone and copy:
git clone https://github.com/stoating/clojure-aero-skill.git
cp -r clojure-aero-skill/aero ~/.claude/skills/The skill becomes available in the next Claude Code session. Updates are a git pull + re-copy.
Claude.ai supports uploading skill folders from the Skills panel in Projects. Zip aero/ and upload it. Details: anthropics/skills.
Cursor reads AGENTS.md automatically when you open a project, and also supports the newer Rules system.
- Per-project: copy
aero/andAGENTS.mdinto your project repo. Cursor will readAGENTS.mdas context on every chat. - Global: in Cursor Settings → Rules, add a rule referencing
aero/SKILL.md.
Codex honors AGENTS.md at the project root. Copy this repository next to your project and Codex will pick up AGENTS.md, which in turn points at aero/SKILL.md.
Aider reads AGENTS.md as a fallback for CONVENTIONS.md, or you can add the skill files explicitly:
aider --read clojure-aero-skill/aero/SKILL.md \
--read clojure-aero-skill/aero/tag-literals.mdBoth honor AGENTS.md. Place this repo (or just AGENTS.md + aero/) at your project root.
All of the above support the AGENTS.md convention. Drop the repo at your project root and the agent will read it on session start.
Every listed agent accepts plain Markdown as context. If yours isn't covered:
- Open a chat / session.
- Attach or paste the contents of
aero/SKILL.mdas "system instructions" or "context". - Attach individual reference files (e.g.
tag-literals.md,patterns.md) when the task matches the decision table inSKILL.md.
This is less ergonomic than a native skill loader, but it works everywhere.
.
├── .claude-plugin/
│ ├── marketplace.json # Claude Code marketplace manifest
│ └── plugin.json # Claude Code plugin manifest
├── AGENTS.md # Cross-agent entry point (agents.md convention)
├── README.md # This file
└── aero/ # The actual skill
├── SKILL.md # Entry point — decision table
├── getting-started.md # read-config, sources, options, resolvers, profiles
├── tag-literals.md # Full reference for all built-in tag literals
├── patterns.md # Secrets, Component/Integrant, feature flags, schema validation
├── extending.md # Custom tags via reader multimethod and alpha API
└── anti-patterns.md # Common mistakes and how to fix them
Only aero/ contains the skill content. The rest is metadata (plugin manifest, cross-agent pointer, docs).
| File | Contents |
|---|---|
SKILL.md |
Index, decision table — the agent always starts here |
getting-started.md |
read-config, sources (classpath vs file), options map, resolvers, profiles, default opts |
tag-literals.md |
Every built-in tag: #env, #envf, #prop, #or, #profile, #hostname, #user, #include, #ref, #join, #merge, #read-edn, #long, #double, #keyword, #boolean |
patterns.md |
Config namespace wrapper, secrets in private files, feature toggles, Component/Integrant/Mount, Malli/Schema validation, file watching |
extending.md |
reader multimethod for simple custom tags; aero.alpha.core for conditional / deferred tags |
anti-patterns.md |
Bare string paths, passwords in env vars, missing :default, circular refs, alpha API caveats |
The skill is distilled from the following public sources:
- Aero GitHub repository — source code, README, and tests
- JUXT blog — design rationale posts
Skill-authoring references:
- Anthropic Agent Skills — Best Practices
- anthropics/skills — canonical examples and spec
- agents.md — cross-agent
AGENTS.mdconvention - Claude Code plugin-marketplace docs
See LICENSE.
Nothing in this skill is original research — it is a curated and organized digest of the sources above, intended to save the agent (and you) from re-reading the Aero source and README on every config question.