Scripts
The @frame/cli package provides the executable command-line tools for the FRAME monorepo. As an on-demand runtime, its defined commands focus strictly on testing and quality assurance.
Project setup
Section titled “Project setup”-
pnpm frame setup: Runs applicable repository configuration, mail compilation, root preparation, and package-owned test setup. -
pnpm frame secrets provision: Runs the administrative secret provisioning flow. It asks for the secret provider first. Infisical provisioning validates that the Infisical CLI is installed, discovers.env.examplefiles underapps/andpackages/, asks for enabled environments, and adds missing remote resources without replacing existing values. It defaults to the managed instance (https://app.infisical.com) and uses an existingINFISICAL_TOKENor the CLI session for the selected domain. When no session exists, it starts a visible interactive login before continuing. Existing projects are selected from the accessible Secret Manager projects. Changing the provider, Infisical URL, or project choice clears dependent saved settings so they are requested again. Creating an Infisical project requires organization-level permission. Successful provisioning prints the Infisical project URL. Bitwarden appears in the provider selector and reports that provisioning is not implemented when selected.Reusable prompt settings are stored in the ignored root file
.env.secretswith owner-only permissions. The file is updated before remote operations and after project creation, so rerunning the command can restore the provider, environments, Infisical URL, project choice, name, and ID after a failure. For each setting present in.env.secrets, the command asks whether to use the existing value or reconfigure it. Settings absent from the file open their regular configuration prompt directly. Access tokens and client credentials are never stored in this file. -
pnpm frame run -- <command>: Fetches configured Bitwarden or Infisical secrets and injects them only into the command process. Canonical package scripts invoke this command internally.
For local development, the runner creates .env.local from .env.example when it is missing. Local secrets may be stored in that ignored file. Runtime configuration follows one precedence rule: fetched provider values override the caller environment, which overrides loaded environment files. Empty caller and file values are treated as missing so provider values and application defaults can apply; an empty value explicitly returned by the provider remains authoritative. Fetched values are never written to an environment file.
Testing
Section titled “Testing”pnpm test: Runs the unit test suite with Vitest. It evaluates environment variable adapters, command loading, and parsers.pnpm test:watch: Runs Vitest in interactive mode, which is essential when iteratively developing complex interactive CLIs (TDD).pnpm test:coverage: Generates a local coverage report for all terminal code.
Code Quality
Section titled “Code Quality”pnpm lint: Analyzes the source withoxlintto enforce a fast, consistent coding standard.pnpm type-check: Thoroughly validates TypeScript types and contracts withtscwithout emitting compiled JavaScript (--noEmit).