Command reference

September 8, 2026 ยท View on GitHub

The root manifest owns command definitions; Turbo configuration owns task dependencies and caching. Package manifests own the scripts that Turbo invokes.

CommandPurposeNotes
pnpm devRun package watch tasksPersistent and uncached
pnpm buildBuild all packagesProduces package dist/ directories
pnpm typecheckType-check all packagesDepends on upstream builds
pnpm testRun documentation, release, source, built CLI, and installed-package testsArtifact suites build their dependencies
pnpm test:e2eRun the built CLI against real template fixturesBuilds the CLI and its dependencies; does not contact AWS
pnpm test:packagesInstall local package archives and verify public entry pointsBuilds packages; requires public npm access; uncached; never publishes
pnpm lintCheck package source and tests with BiomeRead-only
pnpm lint:fixApply Biome fixesMutates files and is uncached
pnpm docs:checkCheck the repository knowledge systemValidates links, fragments, aliases, reachability, and entry points
pnpm docs:testTest the public documentation checker CLIUses dependency-free node:test fixtures
pnpm release:testTest changelog lookup recovery and GitHub link formattingUses a local synthetic GraphQL server; never versions or publishes packages
pnpm exec turbo boundariesEnforce cli -> sdk -> rulesThis is the supported boundary command
pnpm verifyRun documentation, boundaries, lint, typecheck, and all testsFull local gate; --affected limits package tasks
pnpm cleanRemove package build outputDestructive only to generated dist/ output
pnpm depupdateUpdate the pnpm pin and dependenciesMutates manifests and the lockfile

Discovery timeout

cloudburn discover --timeout <seconds> sets the total discovery deadline (default: 300 seconds). The value must be an integer from 1 to 2147483. An expired deadline stops AWS work and exits with code 2. SDK callers can set timeoutMs and provide an AbortSignal to CloudBurnClient.discover().

Discovery evidence cache

OptionDefaultBehavior
--cache normalnormalReuse fresh, complete evidence; load missing or expired evidence. Rules and configuration are evaluated on every run.
--cache refreshCollect current evidence without falling back to cached evidence if collection fails. Only complete successful loads replace entries.
--cache offBypass persistent evidence reads and writes.
--cache-dir <path>$XDG_CACHE_HOME/cloudburn/evidence, or ~/.cache/cloudburn/evidenceSelect local persistent storage for normalized AWS evidence and independent public pricing artifacts.
--cache-context <id>Temporary AWS credential session scope when derivableIdentify the effective authorization and session-policy revision. Change this value when those permissions change; an account ID or role ARN alone is insufficient.

Without a safe temporary credential scope or an explicit context, customer evidence reuse is disabled. Public pricing can still be reused independently. Cache entries never include credentials. --cache off also disables public pricing persistence. A cache read does not prove AWS discovery coverage: source delays and unknown resources remain visible through evidence completeness, coverage, and diagnostics.

Table output summarizes cached and newly collected evidence, incomplete entries, and the oldest observation timestamp. JSON output preserves the full evidence array, including collection and observation times, cache source, and coverage. Freshness TTLs are tunable starting policies, not measured optimal defaults; use the SDK cache options to tune them, or --cache refresh when a run needs newly collected evidence. See the SDK README for freshness policies and configured SDK reuse.

Turbo filters

pnpm turbo run build --filter @cloudburn/sdk
pnpm turbo run test --filter cloudburn...
pnpm turbo run lint --filter ...[main]

Package layer tags live in each package's turbo.json, not its package.json. Root turbo.json maps those tags to denied dependency directions and defines task caching: cloudburn is layer:cli, @cloudburn/sdk is layer:sdk, and @cloudburn/rules is layer:rules.

build depends on upstream builds and caches dist/**; its inputs exclude test/** because fixtures do not affect published output. typecheck depends on upstream builds. Source test tasks use the test:inputs transit task to inherit upstream source hashes without waiting for builds or upstream tests. test:e2e and test:package depend on the current package build. test:package is uncached because it installs archives with public registry dependencies. dev is persistent and uncached, while lint:fix and clean are uncached because they mutate or remove files. Changes to tsconfig.base.json, biome.jsonc, pnpm-lock.yaml, or the root package.json invalidate the shared task cache.

Release-only commands

pnpm changeset:version and pnpm release mutate versioned artifacts or publish packages. They are reserved for the automated release flow or explicit maintainer operations; do not run them during normal feature work. See the release guide.