Skip to main content

Available now for Elixir work. Two weeks. One problem. $6,000. Details →

Mike Zornek

An Agent Skill for Updating Elixir Dependencies

Posted on

If you have experimented with AI coding tools or are considering it, one feature of the coding harness (the interactive shell you work in) you’ll encounter is skills.

What is a skill?

As described by Agent Skills:

Agent Skills are a lightweight, open format for extending AI agent capabilities with specialized knowledge and workflows.

At its core, a skill is a folder containing a SKILL.md file. This file includes metadata (name and description, at minimum) and instructions that tell an agent how to perform a specific task. Skills can also bundle scripts, reference materials, templates, and other resources.

my-skill/
├── SKILL.md          # Required: metadata + instructions
├── scripts/          # Optional: executable code
├── references/       # Optional: documentation
├── assets/           # Optional: templates, resources
└── ...               # Any additional files or directories

If there is something you do regularly, you can capture it as a skill. There is a loose community specification, but plenty of vendor-specific settings exist as well. In Claude, for example, I use disable-model-invocation to limit some skills to manual invocation, while many others can be invoked directly by the model. Skills can live in your global user account or inside a specific project.

My first skill: updating Elixir dependencies

I’ve long used Dependabot to open pull requests that signal when a repo has out-of-date dependencies.

One frustration (which a better configuration could resolve) is that I’d prefer Dependabot to group the updates. I see no need to update Oban and Oban Web in separate PRs, for example. I also don’t need to see this every day; limiting it to weekly, or even monthly for quiet side projects, is preferred and seems like a better balance of signal to noise.

The other frustration, and the opportunity that led to the skill, is that a Dependabot PR only ever changes the mix.lock file. Some updates really are that simple, but many involve reading through the changelogs and code diffs to understand how a change affects my project, and sometimes that means project code changes should accompany the version bumps.

That is what my skill does:

  • Identifies the outdated libraries.
  • Figures out what to update. The default is everything, but I sometimes start the skill with instructions to skip specific updates, either because I plan to update those later or because they are known compatibility issues.
  • Applies the updates.
  • Reviews the changelogs to understand what is changing and makes any required code changes.
  • Verifies the project still builds green with all CI guardrails in check.
  • Builds a PR with inline changelogs and links out to hex diffs. The diffs help when I want to dig in for confidence or out of curiosity; reading other people’s code is how you get better. The PR also lists the transitive dependencies, since those can have fun side effects too.

(I still keep the Dependabot tool running; its PRs are valuable signals, but often I make my own PRs these days.)

Here are examples of the output from my Flick and LocalCents projects.

And here is the skill itself to copy or draw inspiration from. I keep updating it over time, including recent additions to make sure any changelog reference like #123 links to the library’s repo rather than my own.

I also host a skill on writing skills. It is a fork of Matt’s skill, but I changed some things, such as a preference for US English.

Read the code

This may feel repetitive if you’ve read my other posts, but having a skill that automates the monotony does not absolve you of reading the code, the changelog, and the diffs yourself. The skill automates PR assembly. You are still on the hook for understanding how these library updates affect your project.


About the Author. Mike Zornek is a developer and teacher focusing on product design and development with a heavy focus on Elixir and LiveView. In between his projects, Mike helps other teams through consulting. During off hours, he enjoyed watching Phillies baseball and playing relaxing video games.

Hopefully, you found interest in my scribbles. If you have commentary or a response, I'd love to hear it.