Scripts
Shared CLI presentation helpers plus the native dev bootstrap — fast and dependency-free.
@halostack/scripts provides the shared command-line presentation used across the repo's ops scripts — colors, logging, prompts, progress, spinners, and run reporting — alongside the native dev bootstrap. It has zero runtime dependencies: the ANSI handling is hand-rolled rather than pulling in third-party logger/color deps, which keeps the scripts fast and self-contained.
Importing
There's no . barrel — import the specific subpath you need:
Structure
Beyond the presentation helpers above, two scripts carry the package's real work:
src/commands/dev-setup.tsis the boot orchestrator (run bybun run dev:setup): it installs dependencies, waits for Postgres, waits for storage, and seeds the database, all behind a figlet banner. It's dependency-free and readsBun.envdirectly, since it runs beforebun install. Postgres readiness uses Bun's TCP socket probe, so it's host-portable and needs nopg_isreadybinary. The native one-shotbun run setupruns this afterservices:up, waiting on the host and port fromDATABASE_URL(localhost).src/commands/sync-icons.tscopies@halostack/iconsassets into a--target <dir>(for example, an app'spublic/) using the sharedlogger. Consumers invoke it from their pre-hooks, e.g.bun ../../tools/scripts/src/commands/sync-icons.ts --target public.
Conventions
Keep the package free of third-party dependencies — reach for the standard library or Bun built-ins before adding one. The lone workspace dependency is @halostack/icons, which sync-icons.ts resolves through that package's ./assets/* export. Interactive polish must stay TTY-aware: spinners/progress can redraw in terminals, but CI and redirected output should get plain append-only status lines.
Because it's consumed by ops and seed scripts (such as @halostack/seed), keep it app-agnostic.