# Zuke > Code-first, strongly-typed build automation for Deno/TypeScript. Define a build by extending `Build`; declare targets with the `target()` fluent builder, wiring dependencies as `this.` references (not strings) for compile-time safety. Every external tool has a typed `*Tasks` wrapper in a settings-lambda style — never shell out by hand. ## Get the exact API — do not guess - Whole typed surface of every package, in one file: [llms-full.txt](./llms-full.txt) - Scaffold/install: `deno run -A jsr:@zuke/cli setup` - A single package's API on the command line: `deno doc jsr:@zuke/` ## Example ```ts import { Build, run, target } from "jsr:@zuke/core"; import { DenoTasks } from "jsr:@zuke/deno"; class CI extends Build { lint = target().executes(() => DenoTasks.lint()); test = target().dependsOn(this.lint) .executes(() => DenoTasks.test((s) => s.allowAll())); } await run(CI); ``` ## CLI Run a build with the `zuke` command — `deno run -A zuke.ts ` (or the `./zuke` launcher). The CLI is self-describing: ```sh zuke [--skip ] [--parallel[=N]] # run a target and its deps zuke --list [--json] # list targets (JSON: full surface) zuke graph [--output=html] # dependency graph zuke generate-ci [--check] # write declared CI files zuke completions # shell completion ``` `zuke --help` prints the usage grammar plus the build's live targets and parameters; `zuke --list --json` emits the whole surface for tools. Reserved commands: - `graph` — Show the dependency graph - `generate-ci` — Write declared CI configuration files - `completions` — Print a shell-completion script - `mcp` — Run an MCP server over the build (for AI agents) - `resume` — Resume a suspended run (or --check all suspended runs) - `runs` — List, show, or prune persisted run records - `cancel` — Cancel a run and run its compensations - `register` — Register this build in the build registry - `doc` — Print a package's API docs (deno doc), isolated from the repo Option flags: - `--list` — List all targets with descriptions - `--json` — Print the build surface (commands, flags, targets) as JSON - `--skip` — Skip the named dependency - `--parallel` — Run independent targets concurrently - `--no-cache` — Ignore the incremental cache - `--no-remote-cache` — Use the local cache only; skip the remote cache store - `--affected` — Run only targets affected by changes since a git base - `--dry-run` — Print the plan without running targets - `--state` — Persist durable run state to .zuke/runs - `--actor` — Attribute the run to in its state record - `--output` — Graph output format: text or html - `--no-open` — With --output=html, do not open a browser - `--check` — With generate-ci verify files; with resume re-check suspended runs - `--signal` — With resume, deliver a named external signal - `--data` — With resume --signal, the signal's JSON payload - `--force-graph` — With resume, continue even if the build graph changed - `--resume-degraded` — With resume, continue even if a state write was dropped - `--status` — With runs list, keep only runs with this status - `--target` — With runs list, keep only runs whose graph has this target - `--since` — With runs list, keep only runs created at/after this time - `--limit` — With runs list, return at most this many runs (newest) - `--counts` — With runs list, print aggregate counts (total + per status) - `--keep` — With runs prune, keep runs newer than this age (e.g. 90d) - `--keep-last` — With runs prune, always keep the newest N terminal runs - `--allow-run` — With mcp, let agents run targets (optional = allow-list) - `--protect` — With mcp, require an operator token to run these targets - `--allowed-origin` — With mcp --http, an extra allowed Origin (repeatable; loopback-only otherwise) - `--confirm-destructive` — With mcp, require confirm:true before a destructive run - `--registry` — With mcp, serve the build registry (dynamic pipeline discovery) - `--max-concurrent-runs` — With mcp --registry, cap concurrent run-tool spawns (default 4) - `--http` — With mcp, serve over HTTP on instead of stdio - `--help` — Show usage Full reference: [docs/cli.md](./docs/cli.md). ## Packages - [@zuke/core](https://jsr.io/@zuke/core) — a code-first, strongly-typed build automation system for Deno - [@zuke/deno](https://jsr.io/@zuke/deno) — typed `DenoTasks` wrappers for the `deno` CLI, for use in - [@zuke/docs](https://jsr.io/@zuke/docs) — typed tasks that turn already-generated API documentation into - [@zuke/npm](https://jsr.io/@zuke/npm) — typed `NpmTasks` wrappers for the `npm` CLI, for use in Zuke - [@zuke/npx](https://jsr.io/@zuke/npx) — typed `NpxTasks` wrappers for the `npx` package runner, for use - [@zuke/bun](https://jsr.io/@zuke/bun) — typed `BunTasks` wrappers for the `bun` CLI, for use in Zuke - [@zuke/pnpm](https://jsr.io/@zuke/pnpm) — typed `PnpmTasks` wrappers for the `pnpm` CLI, for use in Zuke - [@zuke/yarn](https://jsr.io/@zuke/yarn) — typed `YarnTasks` wrappers for the `yarn` CLI, for use in Zuke - [@zuke/cmd](https://jsr.io/@zuke/cmd) — generic command execution for Zuke builds: the fallback for - [@zuke/console](https://jsr.io/@zuke/console) — task-shaped console output for Zuke builds, so a build never - [@zuke/cli](https://jsr.io/@zuke/cli) — the `zuke` command. Install it globally with - [@zuke/docker](https://jsr.io/@zuke/docker) — typed `docker` CLI task wrappers for Zuke builds - [@zuke/docker-compose](https://jsr.io/@zuke/docker-compose) — typed Docker Compose task wrappers for Zuke builds - [@zuke/kubectl](https://jsr.io/@zuke/kubectl) — typed `kubectl` CLI task wrappers for Zuke builds, for - [@zuke/helm](https://jsr.io/@zuke/helm) — typed `HelmTasks` wrappers for the Helm (https://helm.sh) CLI, - [@zuke/kustomize](https://jsr.io/@zuke/kustomize) — typed `KustomizeTasks` wrappers for the - [@zuke/oxlint](https://jsr.io/@zuke/oxlint) — typed `oxlint` task wrappers for Zuke builds - [@zuke/eslint](https://jsr.io/@zuke/eslint) — typed `eslint` task wrappers for Zuke builds - [@zuke/cspell](https://jsr.io/@zuke/cspell) — typed `cspell` task wrappers for Zuke builds - [@zuke/jest](https://jsr.io/@zuke/jest) — typed `jest` task wrappers for Zuke builds - [@zuke/vitest](https://jsr.io/@zuke/vitest) — typed `vitest` task wrappers for Zuke builds - [@zuke/playwright](https://jsr.io/@zuke/playwright) — typed `PlaywrightTasks` wrappers for the Playwright CLI, - [@zuke/cypress](https://jsr.io/@zuke/cypress) — typed `CypressTasks` wrappers for the - [@zuke/biome](https://jsr.io/@zuke/biome) — typed `BiomeTasks` wrappers for the Biome (https://biomejs.dev) - [@zuke/knip](https://jsr.io/@zuke/knip) — a typed `KnipTasks` wrapper for the Knip (https://knip.dev) - [@zuke/dpdm](https://jsr.io/@zuke/dpdm) — a typed `DpdmTasks` wrapper for the - [@zuke/jsr](https://jsr.io/@zuke/jsr) — tools for the JSR (https://jsr.io) registry in Zuke builds: - [@zuke/vite](https://jsr.io/@zuke/vite) — typed `ViteTasks` wrappers for the Vite (https://vitejs.dev) - [@zuke/tsup](https://jsr.io/@zuke/tsup) — a typed `TsupTasks` wrapper for the - [@zuke/turbo](https://jsr.io/@zuke/turbo) — typed `TurboTasks` wrappers for the - [@zuke/nx](https://jsr.io/@zuke/nx) — typed `NxTasks` wrappers for the Nx (https://nx.dev) CLI, for - [@zuke/tsx](https://jsr.io/@zuke/tsx) — typed `tsx` task wrappers for Zuke builds - [@zuke/tsc](https://jsr.io/@zuke/tsc) — typed `tsc` task wrappers for Zuke builds - [@zuke/tsc-alias](https://jsr.io/@zuke/tsc-alias) — typed `tsc-alias` task wrappers for Zuke builds - [@zuke/tsdown](https://jsr.io/@zuke/tsdown) — a typed `TsdownTasks` wrapper for the - [@zuke/nest](https://jsr.io/@zuke/nest) — typed NestJS CLI (`nest`) task wrappers for Zuke builds - [@zuke/openapi-ts](https://jsr.io/@zuke/openapi-ts) — typed `openapi-ts` task wrappers for Zuke builds - [@zuke/orval](https://jsr.io/@zuke/orval) — typed `orval` task wrappers for Zuke builds - [@zuke/husky](https://jsr.io/@zuke/husky) — typed `husky` task wrappers for Zuke builds - [@zuke/node](https://jsr.io/@zuke/node) — typed Node.js task wrappers for Zuke builds - [@zuke/dprint](https://jsr.io/@zuke/dprint) — typed `dprint` task wrappers for Zuke builds - [@zuke/gcloud](https://jsr.io/@zuke/gcloud) — typed Google Cloud tooling for Zuke builds: the `gcloud` - [@zuke/git](https://jsr.io/@zuke/git) — typed `git` task wrappers for Zuke builds - [@zuke/gh](https://jsr.io/@zuke/gh) — typed GitHub tooling for Zuke builds: the `gh` (GitHub CLI) task - [@zuke/codecov](https://jsr.io/@zuke/codecov) — a typed Codecov CLI (`codecovcli`) task wrapper for Zuke - [@zuke/claude](https://jsr.io/@zuke/claude) — a typed Claude Code (https://docs.claude.com/en/docs/claude-code) - [@zuke/codex](https://jsr.io/@zuke/codex) — a typed OpenAI Codex (https://developers.openai.com/codex/cli) - [@zuke/gemini](https://jsr.io/@zuke/gemini) — a typed Gemini CLI (https://github.com/google-gemini/gemini-cli) - [@zuke/terraform](https://jsr.io/@zuke/terraform) — typed `TerraformTasks` wrappers for the `terraform` CLI, - [@zuke/tofu](https://jsr.io/@zuke/tofu) — typed `TofuTasks` wrappers for the OpenTofu CLI (`tofu`), for - [@zuke/release-please](https://jsr.io/@zuke/release-please) — typed `ReleasePleaseTasks` wrappers for the - [@zuke/security](https://jsr.io/@zuke/security) — typed task wrappers for free, open-source security scanners - [@zuke/ai](https://jsr.io/@zuke/ai) — AI-powered code review for Zuke builds - [@zuke/otel](https://jsr.io/@zuke/otel) — an OpenTelemetry (OTLP/HTTP JSON) export plugin for Zuke