1.8 KiB
Developer Setup
This page is the short path for contributors who already have the repository checked out and want a working local SF development environment.
Prerequisites
- Node.js 26.1 or newer
- npm
- Git
- Rust toolchain for native engine work
- GitHub CLI for label, issue, and PR workflows
- Docker or a compatible container runtime for devcontainer verification
First-Time Setup
npm install
npm run secret-scan:install-hook
node scripts/tech-debt-scan.mjs
Optional but recommended:
devcontainer build --workspace-folder .
Daily Checks
Use the narrowest command that proves the change:
npm run lint
npm run typecheck:extensions
npm run test:unit
Before shipping changes that affect the CLI runtime:
npm run build:core
npm run test:smoke
For coverage-sensitive changes:
npm run test:coverage
The global floor is intentionally modest, but autonomous paths have stricter
coverage thresholds in vitest.config.ts.
Environment Variables
SF-specific environment variables are parsed through src/env.ts for typed
callers. Add new SF_* variables there before introducing new production reads.
Document user-facing variables in docs/user-docs/configuration.md.
Common local overrides:
| Variable | Purpose |
|---|---|
SF_HOME |
Redirect global SF runtime state away from ~/.sf. |
SF_AGENT_DIR |
Override the managed agent directory used by headless/runtime loaders. |
SF_PROJECT_ID |
Override the project state key; must be alphanumeric, hyphen, or underscore. |
SF_BIN_PATH |
Point child processes at a specific SF loader. |
Contribution Contract
Every behavioral change starts with a failing behavior test or executable
evidence. Keep commits focused, avoid drive-by formatting, and do not commit
transient .sf/ runtime state.