SKILL.md
Just Command Runner
Create readable task automation that matches the repository's installed Just version and existing justfile conventions.
Defaults
- Inspect
just --version, the existing justfile/module tree, andjust --listbefore editing. Installed capabilities
and existing syntax are authoritative over this skill's examples.
- Preserve bespoke formatting. Do not rewrite a justfile with
just --fmt; usejust --fmt --checkonly when the
repository explicitly treats the built-in formatter as authoritative. just --dump is inspection output, not a formatting source.
- Define multi-item string sequences one item per line with a parenthesized concatenation. Keep a trailing separator in
every non-final item; do not collapse them into one long string. Triple-quoted strings are for values whose newlines are semantic, not visual wrapping. For example:
``just check-steps := ( "event-class-coverage " + "orphan-disposal " + "price-coverage" ) ``
- Prefer explicit, small recipes; Just-native executable checks; private helpers; check/write recipe pairs; and aliases
after their target recipes. Prefer which() plus assert() with actionable install guidance over shell command -v or backtick which checks when the justfile already enables set unstable and set lists. Otherwise, use require() when its generic missing-executable error is sufficient. Put an assertion at top level only when every recipe needs that tool; otherwise make it a private prerequisite of the affected recipes.
- Make recipes quiet by default: prefix the recipe name with
@unless echoing commands has clear value. Recipe-level
@ inverts per-line @, so never also prefix lines inside a @recipe. Never add @ to a [script] recipe: scripts are already quiet, and @ un-mutes them. See "Quiet Recipes and Command Prefixes" in references/recipes.md.
- On stock macOS, assume
/bin/bash3.2 unless the recipe explicitly selects a newer shell. - Use the user's section-banner style when creating a new standalone justfile; existing repository organization
overrides it.
Workflow
- Determine the requested recipe behavior, inputs, outputs, cwd, shell, environment, dependencies, and success
condition.
- Use the installed manual (
just --help,just --man, or <https://just.systems/man/en/>) for version-sensitive
syntax. Read only the task-specific reference:
| Task | Reference |
|---|---|
| Recipes, parameters, dependencies, cache | references/recipes.md |
| Settings, dotenv, lists, modules | references/settings.md |
| Expressions, functions, constants | references/syntax.md |
| Shell or script recipes | references/inline-scripts.md |
| Check/write, status, aliases, organization | references/patterns.md |
- Make the smallest recipe or setting change. Do not enable unstable features unless the requested design needs them
and the installed version supports them.
- Validate parsing with
just --listorjust --summary, then execute the narrowest safe recipe path. For
state-changing recipes, use an existing dry-run/check mode or inspect the expanded command first.
Opinionated Organization
For a new standalone file, prefer dependency declarations, constants, public recipes, checks, then private helpers. Use set default-list := true when no single default action makes sense and the installed version supports it. Example starting points live in examples/standalone.just and examples/devkit.just; load one only when creating that shape.
Completion requires a parsable justfile, the requested recipe behavior, and execution or dry-run evidence appropriate to its side effects. Finish with ### ✅ Just workflow ready, a compact recipe/alias/purpose table when several entries changed, and ### 🧪 Verification with exact commands and outcomes. Keep confirmation prompts, recipe data output, compiler output, and just --list output undecorated; preserve the repository's own banner vocabulary.