Migrated from PR: thvl3/BAR-Devtools#5
Original author: @keithharvey
Created: 2026-03-16T09:07:37Z
Status: Open
Add Just as task runner; decompose devtools.sh
Introduce Just as the cross-repo task runner and break devtools.sh into modular scripts.
| Old |
New |
./devtools.sh up lobby |
just services::up lobby |
./devtools.sh clone extra |
just repos::clone extra |
./devtools.sh engine build linux |
just engine::build linux |
./devtools.sh repos |
just repos::status |
./devtools.sh link |
just link::status |
The Justfile uses mod for domain-based namespacing (services, repos, engine, setup, link), with bash logic extracted into scripts/. This keeps each .just file focused on interface and delegation.
Motivation
I want to add lua-library generation, doc serving, and test runner recipes (next PR), and the 997-line monolith won't scale.
All existing devtools.sh commands are preserved under namespaced modules:

Why Just
Mise might seem like the default option here, since Recoil already uses that in its doc pipeline
However:
- Just is by design JUST a runner -- we're composing commands, not managing tool versions.
- Docker already handles environment provisioning, so mise's tool and configuration management adds no value at this layer.
By design, Just prevents adding configuration here and keeps it purely idempotent bash scripts with some helpers.
Tests
Set up a new machine on my mac. Tested most of these existing and new commands at least once on my linux machine.
LLM Disclosure:
Yes. Gave opus 4.6 "refactor to use Just without changing existing functionality" for the initial conversion commit and it did a decent job
Add Just as task runner; decompose devtools.sh
Introduce Just as the cross-repo task runner and break
devtools.shinto modular scripts../devtools.sh up lobbyjust services::up lobby./devtools.sh clone extrajust repos::clone extra./devtools.sh engine build linuxjust engine::build linux./devtools.sh reposjust repos::status./devtools.sh linkjust link::statusThe Justfile uses
modfor domain-based namespacing (services,repos,engine,setup,link), with bash logic extracted intoscripts/. This keeps each.justfile focused on interface and delegation.Motivation
I want to add lua-library generation, doc serving, and test runner recipes (next PR), and the 997-line monolith won't scale.
All existing
devtools.shcommands are preserved under namespaced modules:Why
JustMise might seem like the default option here, since Recoil already uses that in its doc pipeline
However:
By design, Just prevents adding configuration here and keeps it purely idempotent bash scripts with some helpers.
Tests
Set up a new machine on my mac. Tested most of these existing and new commands at least once on my linux machine.
LLM Disclosure:
Yes. Gave opus 4.6 "refactor to use Just without changing existing functionality" for the initial conversion commit and it did a decent job