Taskfile Structure
All repos use Taskfile.yaml with the task CLI. Always prefer task commands over raw tool invocations.
- Discovery:
task --listshows all available tasks - Common tasks:
task setup,task build,task test,task lint,task format,task cov:all, and a repo-specific benchmark task (e.g.benchmark:run,bench:run,rust:bench— checktask --list) - Language-scoped: namespaced per language, but the set is NOT uniform -- only some
languages expose a given verb. In xberg,
task rust:test,task swift:test,task dart:testandtask zig:testexist whilepython:test/node:testdo not (those run undertask test:bindings, which drives them via alef). Checktask --listrather than assuming<lang>:<verb>resolves. - Core build:
task buildis core-only. Usetask build:bindingsfor language bindings andtask build:allfor core plus bindings. - Build profiles:
BUILD_PROFILEsupports dev/release/ci variants —BUILD_PROFILE=release task build,task build:release, or matching explicit binding/all variants. - Alef regeneration:
task alef:generaterunsalef all --clean; it regenerates Alef-managed files without compiling bindings. Formatting is handled solely by poly (task format/poly fmt --fix .) — there is no separate Alef formatting task. - Alef build:
task alef:buildandtask build:bindingscompile language bindings explicitly;task build:allincludes core and bindings. - Alef verification:
task alef:verifychecks generated output freshness when needed; do not hide verification inside fast regeneration. - E2E tasks: repos with generated e2e suites expose
task e2e:generate,task e2e:build,task e2e:test, andtask e2e:all. Do not add legacy aliases. - Lock files: always commit lock files (uv.lock, pnpm-lock.yaml, go.sum, Cargo.lock, composer.lock) for reproducible builds.
- Discipline: never use manual commands instead of
task, never hardcode paths, never skip lock-file commits.