Skip to content

Search is only available in production builds. Try building and previewing the site to test it out locally.

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.

  • 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.example files under apps/ and packages/, 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 existing INFISICAL_TOKEN or 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.secrets with 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.

  • 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.
  • pnpm lint: Analyzes the source with oxlint to enforce a fast, consistent coding standard.
  • pnpm type-check: Thoroughly validates TypeScript types and contracts with tsc without emitting compiled JavaScript (--noEmit).