skillby tbhb
just-automation-practices
Best practices for using just command runner and task automation in development workflows.
Installs: 0
Used in: 1 repos
Updated: 2d ago
$
npx ai-builder add skill tbhb/just-automation-practicesInstalls to .claude/skills/just-automation-practices/
# Just automation practices
## Purpose
Guide for using the just command runner for task automation, covering recipe design, variable handling, and cross-platform development.
## When to use
This skill activates when:
- Creating Justfiles
- Writing build/test automation
- Defining development workflows
- Setting up task dependencies
- Cross-platform automation
## Core concepts
### Basic recipe
```just
# Run tests
test:
uv run pytest
# Run with arguments
test-file file:
uv run pytest {{file}}
# Default recipe (runs when just called without arguments)
default: lint test
```
### Recipe with dependencies
```just
# Dependencies run first
build: lint test
uv run python -m build
# Clean before build
clean-build: clean build
```
## Variables
### Setting variables
```just
# Simple variables
python := "uv run python"
pytest := "uv run pytest"
# Using variables
test:
{{pytest}} tests/
# Environment variables
export PYTHONPATH := "src"
test:
{{pytest}} tests/
```
### Built-in functions
```just
# Current directory
project_dir := justfile_directory()
# Parent directory
parent := parent_directory(justfile_directory())
# Environment with default
python := env_var_or_default("PYTHON", "python3")
```
## Arguments and parameters
### Positional arguments
```just
# Required argument
test file:
uv run pytest {{file}}
# Optional with default
test file="tests/":
uv run pytest {{file}}
# Variadic (all remaining args)
test *args:
uv run pytest {{args}}
```
### Named parameters
```just
# Named with defaults
build target="release" output="dist":
echo "Building {{target}} to {{output}}"
```
## Conditionals
```just
# Conditional execution
test:
#!/usr/bin/env bash
if [[ -f "tests/integration" ]]; then
uv run pytest tests/integration
fi
# Using just's if
python := if os() == "windows" { "python" } else { "python3" }
```
## Multi-line recipes
```just
# With shebang
setup:
#!/usr/bin/env bash
set -euo pipefail
echo "Setting up environment..."
uv sync
echo "Done!"
# Default shell recipes
install:
uv sync
echo "Dependencies installed"
```
## Common patterns
### Development workflow
```just
# Install dependencies
install:
uv sync
# Format code
format:
uv run ruff format .
# Lint code
lint:
uv run ruff check .
uv run basedpyright
# Run tests
test *args:
uv run pytest {{args}}
# Full check before commit
check: format lint test
# Clean artifacts
clean:
rm -rf dist/ .pytest_cache/ .coverage htmlcov/
```
### Parameterized builds
```just
# Build with options
build target="release":
#!/usr/bin/env bash
case "{{target}}" in
release)
uv run python -m build
;;
dev)
uv pip install -e .
;;
*)
echo "Unknown target: {{target}}"
exit 1
;;
esac
```
### Environment management
```just
# Set environment for recipes
set dotenv-load := true
# Use .env file
test:
uv run pytest
# Override environment
test-ci:
CI=true uv run pytest
```
## Cross-platform
### OS detection
```just
# Different commands per OS
open_browser := if os() == "macos" {
"open"
} else if os() == "windows" {
"start"
} else {
"xdg-open"
}
docs:
{{open_browser}} docs/_build/html/index.html
```
### Path handling
```just
# Cross-platform paths
project_dir := justfile_directory()
src_dir := project_dir / "src"
tests_dir := project_dir / "tests"
```
## Organization
### List recipes
```bash
# Show available recipes
just --list
# Show recipe with description
just --show test
```
### Documentation
```just
# Recipe descriptions appear in --list
# Run all tests with coverage
test:
uv run pytest --cov
# Format code using ruff
format:
uv run ruff format .
```
### Grouping with aliases
```just
# Main recipe
test-all:
uv run pytest
# Aliases for convenience
alias t := test-all
alias tests := test-all
```
## Checklist
- [ ] Default recipe defined
- [ ] Recipes have descriptions (comments)
- [ ] Variables used for repeated values
- [ ] Dependencies properly declared
- [ ] Cross-platform compatible (if needed)
- [ ] Error handling in complex recipes
---
**Additional resources:**
- [just documentation](https://just.systems/man/en/)Quick Install
$
npx ai-builder add skill tbhb/just-automation-practicesDetails
- Type
- skill
- Author
- tbhb
- Slug
- tbhb/just-automation-practices
- Created
- 6d ago