Skip to content
Merged
11 changes: 6 additions & 5 deletions affinescript/.claude/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ The following files in `.machine_readable/` contain structured project metadata:
| Language/Tool | Use Case | Notes |
|---------------|----------|-------|
| **AffineScript** | Primary application code | Compiles to JS, type-safe |
| **Bun** | Runtime & package management | Estate JavaScript runtime |
| **Bun** | JS runtime & package management (tier 1) | Default for all new work. Runs compiled ESM/JS directly — no bundler step. Uses an npm-compatible `package.json` plus `bun.lock` — both are expected, not anti-patterns. |
| **Rust** | Performance-critical, systems, WASM | Preferred for CLI tools |
| **Tauri 2.0+** | Mobile apps (iOS/Android) | Rust backend + web UI |
| **Dioxus** | Mobile apps (native UI) | Pure Rust, React-like |
Expand All @@ -43,9 +43,10 @@ The following files in `.machine_readable/` contain structured project metadata:
| Banned | Replacement |
|--------|-------------|
| TypeScript | AffineScript |
| ReScript | AffineScript |
| Deno | Bun |
| Node.js | Bun |
| npm | Bun |
| Deno | Bun |
| pnpm/yarn | Bun |
Comment thread
coderabbitai[bot] marked this conversation as resolved.
| Go | Rust |
| Python (general) | AffineScript/Rust |
Expand All @@ -66,8 +67,8 @@ Both are FOSS with independent governance (no Big Tech).
### Enforcement Rules

1. **No new TypeScript files** - Convert existing TS to AffineScript
2. **Use Bun for JavaScript dependencies** - Record them in package.json with bun.lock
3. **Use locked installs** - Run bun install --frozen-lockfile in CI
2. **Use `package.json` + `bun.lock` for JS runtime deps** - Bun is npm-compatible; a manifest is REQUIRED
3. **`bun install --production --frozen-lockfile` for production deps** - resolved from `package.json` and pinned via `bun.lock`; `--frozen-lockfile` makes a lockfile mismatch a build failure rather than a silent re-resolve
4. **No Go code** - Use Rust instead
5. **Python only for SaltStack** - All other Python must be rewritten
6. **No Kotlin/Swift for mobile** - Use Tauri 2.0+ or Dioxus
Expand All @@ -76,7 +77,7 @@ Both are FOSS with independent governance (no Big Tech).

- **Primary**: Guix (guix.scm)
- **Fallback**: Nix (flake.nix)
- **JS deps**: Bun (package.json and bun.lock)
- **JS deps**: Bun (`package.json` + `bun.lock`). Declare tooling as a devDependency and run `bunx --no-install --bun <tool>` — a bare `bunx <tool>` can fetch an unpinned package and may start Node via its shebang.

### Security Requirements

Expand Down
Loading