Vidar

Vidar

Elixir, Rustler, Rust skills for Claude

So in case others find them useful here are 3 of the skills I use. They work pretty well together. Avoid Claude starting agents to plan and implement as the agents will typically not use the skills, and well, that is not optimal. They are substantial but only core Skill is loaded into context until it needs any specialized part.

Elixir skill

This is a rather ambitious project to make Claude do idiomatic Elixir both in architecture and code. The skill has a hub structure with a core skill aiming to cover the most crucial and daily bits, and with referenced supporting files covering more specialized topics. Only the core skill is loaded into the context when the skill is invoked.

So far I’ve only sanitized this and the rust-nif skill. Other related skills might follow time and motivation permitting.

Rust_NIF (Rustler)

Rust NIFs with Rustler for Elixir — safe native code, BEAM/OTP integration, error handling, scheduler management, and process communication. ALWAYS use when writing Rust NIFs or Rustler code. ALWAYS use when integrating native Rust code with Elixir/BEAM. ALWAYS use when debugging NIF performance, crashes, or type conversion issues.

Rust skill

A comprehensive Claude Code skill for idiomatic Rust development. Covers ownership, traits, generics, async/await, error handling, serde, tracing, macros, design patterns, and production best practices. Current for Rust 2024 edition.

Most Liked

Vidar

Vidar

So these skills have been through another iteration and some major reorganizing. The goal has been to get Claude to:

  1. Invoke the relevant skills before planning or implementing.
  2. Actively use the skills while working.
  3. Option for semi-forced TDD (which still allows refactoring without issue).
  4. Use milestone plans, and force Claude to actively use the skills before implementing each milestone.
  5. Hooks to catch some slop so it can be replaced while still implementing and context is fresh.
  6. When making key code decisions, and there are relevant rules/ guidance/ decisions in the skills, Claude should add a §§ code in the comments about which skill guidance were followed. (Easily removed later with a script when done). This helps make Claude stop and consider decisions using the skills.

With this setup using hooks there are additive edits to existing files and many new files. Thus for convenience there is an install and uninstall file. It is purely additive, and it is namespaced bb, so it should not collide with anything else.

The Elixir pack and the Rust pack can be used alone or together. The install script will ask to install the common third repo with the hooks they share. The idea is that more languages can easily follow the same pattern later and be added or removed without messing up the existing configuration of other languages.

So now the Elixir and Rust skills have repos including these skills (with subskills):

Elixir:
elixir-planning
elixir-implementing
elixir-reviewing
phoenix
phoenix-liveview

Rust:
rust-planning
rust-implementing
rust-reviewing
rust-nif

These are big skills so they do spend tokens loading. But to the degree they improve the Claude output closer to directly usable code I’m ok with that. Might be an issue for 200k contexts (haven’t tried), but works fine with 1M.

There is a user_guide included, but the most important things are two keywords:

  • [use-skills] which forces invoking of relevant skills, and activates more hooks to encourage actual skill use.
  • [TDD] which forces tests to be written before the implementation. Apart from getting the test workflow it also makes it harder for Claude to get lazy or skip work. Once the test is in place the implementation has to be done. And it forces Claude to think about the code two times instead of just one, which is likely good.
  • Mentioning milestone plan will make a milestone plan, and with [use-skills] active Claude then have to actively check the relevant skills before implementing each step.

Links:

Older Elixir and Rust skills marked as having been superceded.

Vidar

Vidar

I sanitized two more skills for anyone who might find them useful.

Phoenix skill

Comprehensive Phoenix skill for Claude which I’ve used for a while. Further cleaned up and validated against 10 production code bases.

Phoenix LiveView skill

Comprehensive Phoenix Liveview skill for Claude. There is likely a bit more than normal focus on use with SVGs as I use that for dashboards, gauges, slider controls and charts. Apart from some overdue clean up it was also validated against 10 production code bases.

frankdugan3

frankdugan3

You might give this ClaudePlans a try. It watches and renders plans, memories, and extra folders you add using MDex with syntax highlighting, Mermaid charts, etc. Keyboard navigation, supports the PLUG_EDITOR conventions so you can open in editor of choice, inline annotations, etc. Makes plan mode much more pleasant.

Where Next?

Popular in AI / LLMs Top

woohaaha
Sorry if I’m overthinking this. To date, Elixir is my favorite language. I don’t think of reaching for another language if I don’t have ...
New
bradley
Hi everyone, I’m curious how people in the Elixir community are approaching evaluation frameworks for AI applications, whether you’re us...
New
AstonJ
With AI being a hot topic in the mainstream right now and with our industry at its helm (so making us the people who might be able to do...
#ai
New
calebjosue
What sort of libraries are available to integrate LLMs into your Phoenix Web Framework applications? e.g. Mistral, since these guys have ...
New
sergio
Code agents work best in Elixir because it’s a functional language with minimal implicit configurations and conventions. The code you se...
#ai
New
AstonJ
What kind of impact do you think AI will have on programming/tech jobs? Have you or anyone you know been impacted directly? Does it conce...
New
Cheezy
I spent the month of January building and refining a tool to help with Team / AI collaboration. Several friends have provided feedback an...
New
nathanl
This isn’t an Elixir library, but if you’re testing with phoenix_test_playwright | Hex , you might like a new tool I recently made. When...
New
FedericoAlcantara
Hi guys, I’ve been running Qwen locally for the last two weeks using an opencode + Ollama + qwen3.6:35b-A3B setup with q4_k_m quantizati...
New
sergio
Smart people online are talking about loops. Frankly I don’t understand what these things are in terms of tangibles. I use opencode a...
#ai
New

Other popular topics Top

rms.mrcs
Hi, I need to transform a list of numbers into a map where the keys are the indexes and the values are the original values of the list. ...
New
RisingFromAshes
I’ve read in another post that it may be possible with a router helper - but I couldn’t find an appropriate one, and tbh, I’m still just ...
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
AstonJ
Please see the new poll here: Which code editor or IDE do you use? (Poll) (2022 Edition) It’s been a while since we first asked this, I...
208 31307 143
New
openscript
Hello! Sorry for this astonishing simple question, but I’m really stuck. I try to set up the intellij-elixir plugin, but I don’t know ho...
New
9mm
I am constructing a JSON object (map) and I need to conditionally set a field. I’m trying to write proper elixir-way code… and I’m at a l...
New
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
saif
Hello everyone, Long time lurker first time poster here. I’ve recently begun working on Elixir full-time again! :raised_hands: It’s been...
New
svb
Hi! Currently I want to submit a form by pressing the Enter key. However, since my input field is of type “textarea” this is just adds a...
New
Harrisonl
We have an ECS cluster with 4 services, where each task joins a single cluster, via discovery ECS discovery service. Currently when I de...
New

We're in Beta

About us Mission Statement