A collection of example fledge lane configurations for common project types.
Each directory contains a fledge.toml with fully-documented tasks, lanes, parallel groups, dependencies, and fail-fast settings.
| Path | Description |
|---|---|
rust-ci/ |
Rust CI — fmt, clippy, test, release build with parallel fmt+lint |
node-ci/ |
Node.js / TypeScript CI — lint, typecheck, test, production build |
release/ |
Release lane — version bump, changelog, git tag, npm publish, push |
docker/ |
Docker build + push — lint Dockerfile, build, test image, push to registry |
python/ |
Python — lint (ruff), format (ruff), typecheck (mypy), test (pytest) |
node-typescript/ |
Node/TypeScript — build (tsc), lint (eslint), format (prettier), test (vitest) |
rust/ |
Rust — clippy, test, fmt, build, release |
go/ |
Go — vet, test, build, staticcheck |
fledge lane --searchThis searches GitHub for repos tagged with the fledge-lane topic and lists available lane collections.
# Import by repo and path
fledge lane --import CorvidLabs/fledge-lanes/rust
# Import into current project's fledge.toml
fledge lane --import CorvidLabs/fledge-lanes/pythonImported lanes are merged into your project's fledge.toml. Existing tasks/lanes with the same name are not overwritten unless you pass --force.
Copy the relevant fledge.toml into your project and adjust commands to match your toolchain:
curl -sL https://raw.githubusercontent.com/CorvidLabs/fledge-lanes/main/rust/fledge.toml \
>> fledge.tomlTasks are the building blocks — named shell commands with optional dependencies, environment variables, and working directories:
[tasks.test]
cmd = "cargo test"
description = "Run test suite"
[tasks.build]
cmd = "cargo build --release"
deps = ["test"] # test runs before buildShort-form tasks (just a command string) are also supported:
[tasks]
fmt = "cargo fmt --check"
lint = "cargo clippy -- -D warnings"Lanes compose tasks into pipelines:
[lanes.ci]
description = "Full CI pipeline"
fail_fast = true
steps = [
{ parallel = ["fmt", "lint"] }, # run concurrently
"test", # sequential step
"build",
]Wrap multiple task names in { parallel = [...] } to run them concurrently on separate threads:
steps = [
{ parallel = ["lint", "typecheck", "fmt"] }, # all run at the same time
"test", # waits for the group to finish
]fail_fast = true(default) — stop at first failurefail_fast = false— run all steps, collect and report all failures at the end
[lanes.audit]
description = "Surface all issues, not just the first one"
fail_fast = false
steps = ["security-check", "license-audit", "dependency-scan"]For one-off commands that don't need a named task:
steps = [
{ run = "echo Running CI..." },
"test",
{ run = "echo Done!" },
]Dependencies are declared on tasks, not lanes. When a lane runs a task, its deps run first automatically:
[tasks.publish]
cmd = "cargo publish"
deps = ["build-release"] # build-release runs before publish, always
[lanes.release]
steps = ["publish"] # fledge resolves: build-release -> publishPRs welcome for other languages or frameworks. Tag your repo with fledge-lane to make it discoverable via fledge lane --search.