FedericoAlcantara

FedericoAlcantara

Successful development with local AI setup

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 quantization on a MacBook Pro M2 Max (32GB RAM).

My development workflow is heavily GitHub-centric: GitHub Issues and PRs are the source of truth and, in many cases, effectively act as the issue/PR state store.

To improve reliability and maintain consistently high code quality, I’ve been building a set of “skills” that act as boundary setters, orchestration layers, and quality gates.

Current skill set (still evolving):

Issue Lifecycle Skills

Skill Target Model Description
improve-issue opus Enriches a raw GitHub issue into a precise, implementation-ready specification persisted directly in the issue body. This is always the first step before coding. The generated spec includes explicit Acceptance Criteria (AC).
evaluate-issue sonnet or qwen Sizes an enriched issue and recommends KEEP, COMPLETED, or SPLIT, including the recommended model tier for execution.
orchestrate-issue sonnet or qwen; opus for complex tasks Runs the full implementation → review → correction loop for an enriched issue. When the issue is considered done, it automatically invokes pr-from-issue.
pr-from-issue qwen or haiku Opens a PR from a completed issue, validates the “ready to be closed” marker, and executes the full test gate beforehand.

The most interesting skill is probably orchestrate-issue, since it behaves as a controlled execution loop coordinating multiple sub-skills:

Implementation & Review Skills

Skill Target Model Description
code-issue sonnet or qwen; haiku for trivial tasks; opus for complex ones Implements every Acceptance Criterion from the enriched specification (or unresolved review gaps) in an Elixir/Phoenix/Ash codebase, including tests.
review-issue sonnet or qwen; opus for complex reviews Performs a senior-reviewer pass over the implementation. Runs mix precommit and mix test, evaluates implementation coverage against the specification, and writes identified gaps back into the GitHub issue using a structured review marker block.

After the PR is generated, I manually review it and add comments for anything that should be discussed, improved, or refactored. If further work is needed before merging, I invoke an additional skill:

PR Review Resolution

Skill Target Model Description
address-pr-review sonnet or qwen Resolves PR review comments, updates tests when necessary, and iterates until the review state is acceptable for merge.

The whole system is still evolving, but at this point it’s already producing surprisingly high-quality code with a fairly reliable workflow.

Performance is actually very good locally, although I do need to keep background activity to a minimum — typically just one Chrome tab open, while Docker and PostgreSQL are always running.

Next step is to separate the testing generation from the code, I’ll probably use a agent swarm…

I’m curious whether others here are experimenting with similar AI-assisted development workflows around Elixir/Phoenix/Ash projects, especially with local-first setups.

Most Liked

Vidar

Vidar

I am certainly experimenting with all things Elixir, Rust and to some degree other languages and aspects (C, Zig, microcontrollers, Nerves, various UI interfaces, industrial network protocols, camera controls, video streaming and using/ tuning AI).

The Elixir and Rust has come the furthest where basically the setup is a using various skills for planning and implementing with hooks forcing use, and with a static code analyzer and a review skill to find, interpret and fix any issues. Do this with TDD active and reiterate until done, then a loop with feedback for the skills, hooks and analyzer. This works surprisingly well. It could use some outer framing for the rest of the environment, but so far looking good and steadily improving.

On the local level I have an old NVidia Orin 64GB just sitting about for the most part, so I play a bit with local ideas on that one.

Vidar

Vidar

I use Claude even for making requirements. Instead of trying to nail all the requirements up front I rather go in early and just document what I got. Then a stepwise plan, and during the implementation I use Claude and the process to fill in the weak spots, do active exploration of alternatives, comparison tests, metrics, etc and documenting it all.

This ends up with a working prototype and with both me and Claude knowing more about the problem space. It clarifies what works well, what doesn’t, and any unclear areas or wrong assumptions from the initial requirements.

Then I iterate and start a new version based on that. The second time is always better. It is based on better information so the project documents are more specific and known to work. LLMs make it easy to iterate over even large problem spaces so this workflow got more viable. And the results are better for it.

That is interesting. Sonnet is quite capable, so I might have to look again at Qwen one of these days. Even if slower a capable local solution would be useful.

Where Next?

Popular in AI / LLMs Top

Vidar
This morning I set out to make an Elixir library for internal use of some specific statistical method that only seemed to exist in some P...
#ai
New
samoloth
Hi, recently I’ve discovered Matt Pocock’s skills for AI agents. They look extremely reasonable, especially after hearing his explanation...
New
asianfilm
For those who haven’t seen it, here is a research paper from August that found that LLMs perform twice as well with Elixir than with Pyth...
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
NickGnd
Hey :waving_hand: Tidewave has just been announced by José Valim :fire: Watch Tidewave transform Claude Desktop into an agent by runni...
New
AstonJ
Saw this and wondered what each stage could or might mean for Elixir - anyone given it any thought? What kind of impact do you think it ...
New
FlyingNoodle
Hi all I have been doing some pretty intensive research over the last few days around agents/vibe coding. I tried some commercial offeri...
New
onnimonni
Hey, I’ve been extensively using claude code for backend development and data wrangling in the last 6 months and it has worked very well...
New
DaAnalyst
The new langauge/framework/library.. developers better start writing very exhaustive docs, ..and intent proving tests/examples, ..and int...
New
dewetblomerus
Setting up Cursor Background Agents to work with Elixir was a pain, which led me to publish a Docker image just for this and write a blog...
New

Other popular topics Top

danschultzer
None of the current solutions worked well for me, so I went ahead and built a user management system from scratch. This project took far...
548 29377 241
New
malloryerik
Hi, this is for people who, like me, have had some friction using .html.heex templates in VSCode. The solution seems to be, in a hyphena...
New
lessless
I believe there are people here who are dealing with CSV files import on the daily basis, and since Excel is a really popular tool there ...
New
JeremM34
Hello, how can I check the Phoenix version ? 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
jay1
Why is it that the mnesia database isn’t the most preferred database for use in Elixir/Phoenix?
New
pmjoe
I have a relationship of love and hate with Elixir. Lots of things are just absolutely right, but there are some things that are kind of ...
New
vonH
When I run the Plug and I recompile I wind up having to use Ctrl C to quit iex and start again. Witht the help of rlwrap I can use the cu...
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
sergio
Kind of like when jquery came out, it was super necessary. Existing drag and drop libraries have a bunch of baggage to support old browse...
New

We're in Beta

About us Mission Statement