Justfile / Taskfile Generator

Generate a justfile (for the just command runner) or a Taskfile.yml (for Task) from a simple form. Add recipes with commands, dependencies and optional parameters; define global variables. Both formats produce a clean, copy-ready config that replaces a Makefile without the tab gotchas or implicit behaviour.

How to use the Justfile / Taskfile Generator

Choose just or Task as the output format. Define global variables — one KEY=value per line — which appear at the top of the file. In a justfile these become key := "value" assignments; in a Taskfile they become the vars: map.

For each recipe, enter: a name (no spaces), optional space-separated dependencies (recipes that run before this one), optional parameters, and one command per line. In a justfile, parameters become positional arguments: a recipe named deploy with parameter env=dev is called as just deploy prod. In a Taskfile, parameters map to vars: inside the task and use {{.VAR}} interpolation.

Click + Add Recipe to add more rows. Click Example to load a realistic Go project task set. The output textarea is editable so you can tweak details before copying. Click Download to save as justfile or Taskfile.yml.

About just and Task

just is a command runner (not a build system) that reads a justfile defining named recipes. Unlike make, it has no implicit rules, no automatic dependency tracking on file modification times, and does not use tabs for indentation — it uses four spaces or two spaces. Recipes can accept positional arguments, have default values, and depend on other recipes. just is installed as a single binary and available on Linux, macOS and Windows.

Task (taskfile.dev) is a similar tool that uses YAML (Taskfile.yml) instead of a custom DSL. It supports variables, conditional execution, watching for file changes, includes and dependency graphs. The YAML format is more verbose but integrates naturally with CI/CD tools that already parse YAML (GitHub Actions, GitLab CI). Both tools are significantly simpler than make for typical developer workflows like building, testing, linting and deploying.

When to choose each: use just if you want a terse, script-like syntax with minimal boilerplate and your team is comfortable with a small DSL. Use Task if your team prefers YAML, or if you need advanced features like file watching, environment file loading or platform-conditional tasks. Both can coexist in a project — it is common to see a justfile calling Task or vice versa.

Common use cases

  • Project task runner — replace a Makefile with clean, comment-friendly recipes for build, test, lint and deploy that do not require knowing Make syntax.
  • Docker workflow shortcuts — define up, down, logs and exec recipes that wrap multi-flag docker compose commands into single memorable names.
  • CI/CD local parity — define the same tasks that run in CI as justfile recipes so developers run identical commands locally and in the pipeline.
  • Parameterised deployments — a just deploy env=staging target that accepts environment as an argument and passes it through to underlying scripts.
  • Database management — group migrate, seed, reset, and dump recipes with the correct connection string variable for each environment.

Frequently asked questions

How is just different from make?

just has no file-based dependency tracking (it does not check if output files are newer than inputs), no implicit rules, and uses normal indentation instead of mandatory tabs. This makes it better for running arbitrary commands (scripts, deployments) rather than building C/C++ projects where make's file-dependency model is valuable.

How do I pass arguments to a just recipe?

Define the recipe with named parameters: just recipe arg arg2=default. Call it as just recipe value1 value2. Parameters are positional in just. In Taskfile, use CLI_ARGS or define vars inside the task and pass them with task task -- --arg=value.

Can I include environment variables from a .env file?

Yes. In a justfile, add set dotenv-load at the top to automatically load .env. In a Taskfile, use dotenv: ['.env'] at the task or file level.

What is the default recipe?

In just, the first recipe in the file is the default (run with just alone). You can also set default explicitly. In Taskfile, set default: true on a task, or define a task named "default".

Can recipes call each other?

Yes. Add dependency names in the deps field (this generator puts them before the recipe signature). Dependencies run first, in order. Circular dependencies are detected and produce an error.