bradley

bradley

Claude - Opinionated Claude Code integration for Elixir

I’ve been working with Claude Code extensively and absolutely love it. However, I’ve come across the challenge of managing configuration across multiple projects. For example, some projects I want hooks, other projects I don’t. There are a few projects I want to share hooks. And I just found that reusing hooks in general was something that was messy.

Additionally, I see a lot more potential for managing Claude from the Elixir side and deeply integrating it into the Elixir ecosystem. For example, imagine being able to pull in Usage Rules, which is an awesome library by Zach Daniel and all other configuration that is necessary for Claude to work effectively. Or libraries can define their own sub-agents. Or libraries can even define their own hooks that should be hooked into Claude Code. All of this, I think, can be done with this library, though the support still needs to be added.

How It Works

You use Claude as the library name by adding it to your deps and then running mix claude.install as a mix task, and it will automatically add all of the hooks that are needed for Claude to operate effectively and within bounds. There are only a few hooks right now, but I want to add a lot more, in addition to sub-agents being able to extend hooks with your own custom hooks and more.

Vision

The goal is to create a seamless integration between Claude Code and the Elixir ecosystem, allowing:

  • Project-specific configuration management - Different hook configurations per project
  • Shared hook libraries - Reusable hooks across multiple projects
  • Deep ecosystem integration - Libraries can define their own Claude-specific rules and behaviors
  • Extensible sub-agent system - Libraries can register their own specialized agents
  • Automatic setup - One command to configure Claude Code optimally for your Elixir project

Current Status

This is early-stage development with basic hook management implemented. Much more functionality is planned, including better integration with existing tools like Usage Rules and expanded sub-agent capabilities.

Let me know what you think. I’d love to hear your feedback!

https://github.com/bradleygolden/claude

Most Liked

bradley

bradley

Big update, I’ve completely migrated the repo to the new claude marketplace structure. My previous approach was novel when released but is now irrelevant with plugins. I considered archiving the repo and creating a new one but since the whole point of this repo was to make it easy to do elixir dev with claude code, I felt the migration with the current repo was appropriate.

Contributions are welcome!

https://github.com/bradleygolden/claude-marketplace-elixir

bradley

bradley

Hi everyone,

I just released v0.3 which now lets you use any mix task or generic command as a hook. Check out the full details in the hooks cheatsheet.

This release also includes a few quality-of-life improvements:

  • Tidewave now auto-installs if Phoenix is detected
  • Updated docs with new guides and cheatsheets
  • Hooks are now more robust and reliable

Happy hook building!

https://github.com/bradleygolden/claude

bradley

bradley

I just released v0.2.0. With this new update, I’ve added:

  • Subagent configuration w/ automatic usage rules integration
  • An extensible hook system so you can write your own hooks, in elixir!
  • A new meta subagent following best practices to make it easier to create claude code subagents
  • Automatically pull in usage docs into your CLAUDE.md file following best practices
  • A new mix claude.install igniter task

You can get started with mix igniter.install claude. There’s still so much more to add to scale up claude code’s capabilities and I’m excited to explore that more. See this link below for a full list of features/capabilities.

https://github.com/bradleygolden/claude

Where Next?

Popular in Announcing Top

sasajuric
I’d like to announce a small library called boundaries. This is an experimental project which explores the idea of enforcing boundaries ...
New
martinthenth
Hello everybody :wave: Recently, some of my colleagues talked about database ids and uuids and their problems, and I remembered the pain...
New
ityonemo
Currently just starting out on a new mini-project - getting zig NIFs to run in elixir. https://github.com/ityonemo/zigler The idea here...
New
ostinelli
Let’s write a database! Well not really, but I think it’s a little sad that there doesn’t seem to be a simple in-memory distributed KV da...
New
brainlid
LangChain is short for Language Chain. An LLM, or Large Language Model, is the “Language” part. This library makes it easier for Elixir a...
New
cjen07
parameterized pipe in elixir: |n> edit: negative index in |n> and mixed usage with |> are supported example: use ParamPipe ...
New
achempion
Hi, I would like to tell about my initiative to further maintain and develop Waffle project which is the fork of Arc library. The progre...
New
OvermindDL1
Been making an MLElixir thing (not released yet…) for fun in spare time in the past day. I’m just trying to see how much I can get an ML...
132 13966 106
New
anshuman23
Hello all, I have been working on my proposed project called Tensorflex as part of Google Summer of Code 2018.. Tensorflex can be used f...
New
pkrawat1
Hey guyz We at @aviabird are working on a payment library in elixir/phoenix. We are targeting March 2018 to add 56 Gateways to it. Have...
New

Other popular topics Top

gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID<0.412.0> terminating ** (Postgrex.Error) FATAL...
New
ovidiubadita
Hey all, I discovered Elixir and I love it. I always wanted to learn a functional programming and I intended to go for Haskell, but afte...
New
jononomo
I am trying to figure out how Mix knows whether the environment is test, dev, or prod – where is this set? Thanks.
New
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
grych
Hi folks, Few months ago I have announced the proof-of-concept of the library to manipulate the browsers DOM objects directly from Elixi...
639 52341 488
New
jason.o
In the code below, if the create action is not set to accept “extra_key” as an input, it errors out with a message shown above. Is there ...
New
klo
Got a question about when to concat vs. prepending items to list then reversing to achieve appending. So i know lists boil down to [1 | ...
New
komlanvi
Hi everyone, I was playing with phoenix liveView but I run into an issue. I have a form and want to validate each input text when the te...
New

We're in Beta

About us Mission Statement