Just — A Modern Command Runner and Makefile Alternative
Just is a command runner, like Make but for modern dev workflows. Write recipes in a Justfile, run them with `just recipe-name`. Simpler syntax than Make, no obscure behaviors, cross-platform, and works great for project tasks.
Ready-to-run agent install
This asset can be installed after the agent chooses its runtime, checks the plan, and runs the matching command.
npx -y tokrepo@latest install d3b6480b-35cb-11f1-9bc6-00163e2b0d79 --target codexRun after dry-run confirms the install plan.
What it is
Just is a command runner that serves as a modern replacement for Make. You write recipes in a Justfile with a simple syntax, and run them with just recipe-name. Unlike Make, Just has no file-dependency system -- it focuses purely on running commands with a clean, predictable syntax.
Just targets developers who use Makefiles as command shortcuts rather than build systems. It eliminates Make's quirks (tabs vs spaces, implicit rules, shell differences) and adds features like arguments, variables, and recipe dependencies.
How it saves time or tokens
Just reduces project onboarding time. New team members run just --list to see all available commands. Each recipe has a description and a clear invocation pattern. No more reading through a 200-line Makefile to find the deploy command.
For AI agents, Justfiles are easier to parse and generate than Makefiles because the syntax is simpler and more consistent.
How to use
- Install Just:
brew install just # macOS
cargo install just # Rust
scoop install just # Windows
- Create a Justfile in your project root:
# Start development server
dev:
npm run dev
# Run tests with optional filter
test filter='':
go test ./... -run '{{filter}}'
# Deploy to production
deploy: test
bash deploy.sh production
# Format and lint
check:
go fmt ./...
golangci-lint run
- Run recipes:
just dev
just test MyFunction
just deploy
just --list
Example
# Justfile with variables, arguments, and conditionals
project := 'myapp'
env := env_var_or_default('ENV', 'development')
# Build the project
build target='all':
@echo 'Building {{project}} ({{target}}) for {{env}}'
go build -o bin/{{project}} ./cmd/{{target}}
# Run database migrations
migrate direction='up':
goose -dir migrations {{direction}}
# Docker build and push
docker tag='latest':
docker build -t {{project}}:{{tag}} .
docker push registry.example.com/{{project}}:{{tag}}
# Clean build artifacts
clean:
rm -rf bin/ dist/ tmp/
Related on TokRepo
- CLI and Automation Tools -- More command-line productivity tools
- AI Tools for DevOps -- Development operations and build tools
Common pitfalls
- Justfile recipes use sh by default on Unix. If you write bash-specific syntax (arrays,
[[), setset shell := ['bash', '-cu']at the top of your Justfile. - Just does not track file dependencies like Make does. If you need incremental builds, use a build tool (Go, Cargo, webpack) inside your Just recipes.
- Recipe names cannot contain hyphens in some versions. Use underscores or camelCase for recipe names.
Frequently Asked Questions
Just is command-runner-only: no file-dependency tracking, no implicit rules, no tab-sensitivity. It adds recipe arguments, environment variable support, and cross-platform compatibility. Use Make for build systems, Just for command shortcuts.
Yes. Just works on Windows, macOS, and Linux. On Windows, it uses PowerShell by default but can be configured to use cmd or bash.
Yes. Define parameters after the recipe name: `deploy env='staging':`. Run with `just deploy production`. Default values make arguments optional.
Yes. List dependencies after the recipe name and colon: `deploy: test build`. Just runs dependencies before the recipe. Dependencies only run once even if referenced multiple times.
Yes. Just is language-agnostic. Recipes are shell commands that can invoke any tool: npm, cargo, go, python, docker, or custom scripts.
Citations (3)
- Just GitHub Repository— Just is a command runner and Makefile alternative
- Just Documentation— Cross-platform with variables, arguments, and recipe dependencies
- Just README— Simple syntax without Make's tab sensitivity and implicit rules
Related on TokRepo
Discussion
Related Assets
Task — Fast Cross-Platform Build Tool for Modern Workflows
Task is a task runner and build tool written in Go. It uses simple YAML configuration as a modern, cross-platform alternative to Make — with better syntax, built-in variables, watch mode, and no platform-specific quirks.
Preact — Fast 3kB React Alternative with Same Modern API
Preact is a fast 3kB alternative to React with the same modern API. Virtual DOM, Components, Hooks — all in a tiny package. Drop-in compatible via preact/compat. Perfect for performance-critical apps and islands architecture.
eza — A Modern Colorful Replacement for ls
eza is a modern replacement for the venerable ls command. Adds colors, Git status, file type icons, tree view, and long-format improvements. Actively maintained fork of the archived exa project.
Newman — Run Postman API Collections from the Command Line
Command-line collection runner for Postman that executes API tests in CI/CD pipelines with detailed reporting.