AI agent skill · by @mizchi
Justfile
Reference for the `just` command runner — justfile syntax and GitHub Actions integration. Use when an existing repo already has a `justfile` and tasks must be added, modified, or audited. For new mizchi-owned repos, prefer the `pkfire` skill (`Taskfile.pkl` + `pkf`) instead; justfile is kept only for compatibility with existing repos.
Archived 2026-10-23 · Source updated 2026-09-16. Check the original repository for the latest version.
SKILL.md instructions
# justfile Skill
just is a command runner for project-specific commands. Similar to Make but simpler.
## Basic Syntax
```just
# Default recipe (runs when just is called without arguments)
default:
@echo "Available: just --list"
# Basic recipe
build:
cargo build --release
# Dependencies
test: build
cargo test
# Arguments
greet name:
echo "Hello, {{name}}!"
# Default arguments
serve port="8080":
python -m http.server {{port}}
# Variadic arguments
run *args:
cargo run -- {{args}}
```
## Variables
```just
# String
version := "1.0.0"
# Shell command result
git_hash := `git rev-parse --short HEAD`
# Environment variable with default
home := env_var_or_default("HOME", "/tmp")
# Usage
info:
echo "Version: {{version}}, Hash: {{git_hash}}"
```
## Settings
```just
# Shell
set shell := ["bash", "-cu"]
# Load .env
set dotenv-load
# Continue on error
set ignore-errors
# Suppress command echo
set quiet
# Working directory
set working-directory := "subdir"
```
## Conditionals
```just
# OS detection
install:
{{if os() == "macos" { "brew install foo" } else { "apt install foo" }}}
# Architecture detection
build:
{{if arch() == "aarch64" { "make arm" } else { "make x86" }}}
```
## Built-in Functions
| Function | Description |
|----------|-------------|
| `os()` | OS name (linux, macos, windows) |
| `arch()` | Architecture (x86_64, aarch64) |
| `env_var("NAME")` | Get environment variable |
| `justfile_directory()` | Directory containing justfile |
| `invocation_directory()` | Directory where just was invoked |
## Common Commands
```bash
just # Run default recipe
just recipe # Run specific recipe
just recipe arg # Run with arguments
just --list # List recipes
just --dry-run # Show without running
just --choose # Select with fzf
just --fmt # Format justfile
```
## GitHub Actions
Use `extractions/setup-just@v4`. See `assets/gh_action_example.yaml` for full example.
```yaml
steps:
- uses: actions/checkout@v7
- uses: extractions/setup-just@v4
# with:
# just-version: '1.58.0' # Optional pin (latest as of 2026-09)
- run: just build
- run: just test
```
## Practical Example
```just
set dotenv-load
set shell := ["bash", "-cu"]
default:
@just --list
# Dev server
dev:
npm run dev
# Build
build:
npm run build
# Test
test *args:
npm test {{args}}
# Lint + format
check:
npm run lint
npm run format:check
# CI (called from GitHub Actions)
ci: check build test
# Release
release version:
git tag -a v{{version}} -m "Release v{{version}}"
git push origin v{{version}}
# Cleanup
clean:
rm -rf dist node_modules
```
## References
- https://github.com/casey/just
- https://just.systems/man/en/
- https://github.com/extractions/setup-just