bsmnt 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/package.json +7 -2
  2. package/.changeset/README.md +0 -10
  3. package/.changeset/config.json +0 -16
  4. package/.cursor/rules/README.md +0 -184
  5. package/.cursor/rules/architecture.mdc +0 -437
  6. package/.cursor/rules/components.mdc +0 -436
  7. package/.cursor/rules/integrations.mdc +0 -447
  8. package/.cursor/rules/main.mdc +0 -278
  9. package/.cursor/rules/styling.mdc +0 -433
  10. package/.github/PULL_REQUEST_TEMPLATE.md +0 -14
  11. package/.github/workflows/.gitkeep +0 -0
  12. package/.github/workflows/ci.yml +0 -37
  13. package/.github/workflows/release.yml +0 -56
  14. package/.tldr/cache/call_graph.json +0 -7
  15. package/.tldr/languages.json +0 -6
  16. package/.tldr/status +0 -1
  17. package/.tldrignore +0 -84
  18. package/.vscode/extensions.json +0 -20
  19. package/.vscode/settings.json +0 -98
  20. package/CHANGELOG.md +0 -68
  21. package/CLAUDE.md +0 -156
  22. package/biome.json +0 -45
  23. package/bun.lock +0 -496
  24. package/changelog/04-02-26.md +0 -86
  25. package/changelog/05-02-26.md +0 -101
  26. package/changelog/09-02-26.md +0 -83
  27. package/docs/architecture.drawio +0 -250
  28. package/docs/architecture.mermaid +0 -85
  29. package/docs/fix-studio-hydration.md +0 -46
  30. package/docs/plans/2026-01-29-sanity-smart-merge-design.md +0 -196
  31. package/docs/plans/2026-01-29-sanity-smart-merge-implementation.md +0 -695
  32. package/docs/sanity-setup-steps.md +0 -199
  33. package/packages/cli/package.json +0 -16
  34. package/tasks/.last-branch +0 -1
  35. package/tasks/CLAUDE.md +0 -104
  36. package/tasks/archive/2026-02-09-next-starter-dynamic-layers/prd.json +0 -153
  37. package/tasks/archive/2026-02-09-next-starter-dynamic-layers/progress.txt +0 -115
  38. package/tasks/prd-next-starter-dynamic-layers.md +0 -184
  39. package/tasks/prd-project-restructure.md +0 -375
  40. package/tasks/prd.json +0 -289
  41. package/tasks/progress.txt +0 -309
  42. package/tasks/ralph.sh +0 -113
@@ -1,14 +0,0 @@
1
- ## Summary
2
-
3
- <!-- Brief description of what this PR does -->
4
-
5
- ## Changes
6
-
7
- -
8
-
9
- ## Checklist
10
-
11
- - [ ] `bun lint` passes
12
- - [ ] Tested locally in dev mode
13
- - [ ] No breaking changes (or documented in summary)
14
-
File without changes
@@ -1,37 +0,0 @@
1
- name: CI
2
-
3
- on:
4
- pull_request:
5
- branches:
6
- - main
7
- push:
8
- branches:
9
- - main
10
-
11
- jobs:
12
- validate:
13
- runs-on: ubuntu-latest
14
-
15
- steps:
16
- - name: Checkout
17
- uses: actions/checkout@v4
18
- with:
19
- fetch-depth: 0
20
-
21
- - name: Setup Bun
22
- uses: oven-sh/setup-bun@v2
23
- with:
24
- bun-version: latest
25
-
26
- - name: Install dependencies
27
- run: bun install --frozen-lockfile
28
-
29
- - name: Type check
30
- run: bun run check
31
-
32
- - name: Build
33
- run: bun run build
34
-
35
- - name: Ensure changeset exists for PR changes
36
- if: github.event_name == 'pull_request'
37
- run: bunx changeset status --since=origin/${{ github.base_ref }}
@@ -1,56 +0,0 @@
1
- name: Version and Release
2
-
3
- on:
4
- push:
5
- branches:
6
- - main
7
- workflow_dispatch:
8
-
9
- permissions:
10
- contents: write
11
- pull-requests: write
12
- id-token: write
13
-
14
- jobs:
15
- release:
16
- runs-on: ubuntu-latest
17
-
18
- steps:
19
- - name: Checkout
20
- uses: actions/checkout@v4
21
- with:
22
- fetch-depth: 0
23
-
24
- - name: Setup Bun
25
- uses: oven-sh/setup-bun@v2
26
- with:
27
- bun-version: latest
28
-
29
- - name: Setup Node for npm publishing
30
- uses: actions/setup-node@v4
31
- with:
32
- node-version: 24
33
-
34
- - name: Use npm 11.6.2
35
- run: npm i -g npm@11.6.2
36
-
37
- - name: Install dependencies
38
- run: bun install --frozen-lockfile
39
-
40
- - name: Configure npm for publishing
41
- run: |
42
- cat > ~/.npmrc <<'EOF'
43
- registry=https://registry.npmjs.org/
44
- access=public
45
- EOF
46
-
47
- - name: Version packages or publish
48
- uses: changesets/action@v1
49
- with:
50
- version: bun run version-packages
51
- publish: bun run release
52
- createGithubReleases: true
53
- env:
54
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
55
- NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
56
- NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
@@ -1,7 +0,0 @@
1
- {
2
- "edges": [],
3
- "languages": [
4
- "typescript"
5
- ],
6
- "timestamp": 1769018359.8225532
7
- }
@@ -1,6 +0,0 @@
1
- {
2
- "languages": [
3
- "typescript"
4
- ],
5
- "timestamp": 1769018359.822764
6
- }
package/.tldr/status DELETED
@@ -1 +0,0 @@
1
- stopped
package/.tldrignore DELETED
@@ -1,84 +0,0 @@
1
- # TLDR ignore patterns (gitignore syntax)
2
- # Auto-generated - review and customize for your project
3
- # Docs: https://git-scm.com/docs/gitignore
4
-
5
- # ===================
6
- # Dependencies
7
- # ===================
8
- node_modules/
9
- .venv/
10
- venv/
11
- env/
12
- __pycache__/
13
- .tox/
14
- .nox/
15
- .pytest_cache/
16
- .mypy_cache/
17
- .ruff_cache/
18
- vendor/
19
- Pods/
20
-
21
- # ===================
22
- # Build outputs
23
- # ===================
24
- dist/
25
- build/
26
- out/
27
- target/
28
- *.egg-info/
29
- *.whl
30
- *.pyc
31
- *.pyo
32
-
33
- # ===================
34
- # Binary/large files
35
- # ===================
36
- *.so
37
- *.dylib
38
- *.dll
39
- *.exe
40
- *.bin
41
- *.o
42
- *.a
43
- *.lib
44
-
45
- # ===================
46
- # IDE/editors
47
- # ===================
48
- .idea/
49
- .vscode/
50
- *.swp
51
- *.swo
52
- *~
53
-
54
- # ===================
55
- # Security (always exclude)
56
- # ===================
57
- .env
58
- .env.*
59
- *.pem
60
- *.key
61
- *.p12
62
- *.pfx
63
- credentials.*
64
- secrets.*
65
-
66
- # ===================
67
- # Version control
68
- # ===================
69
- .git/
70
- .hg/
71
- .svn/
72
-
73
- # ===================
74
- # OS files
75
- # ===================
76
- .DS_Store
77
- Thumbs.db
78
-
79
- # ===================
80
- # Project-specific
81
- # Add your custom patterns below
82
- # ===================
83
- # large_test_fixtures/
84
- # data/
@@ -1,20 +0,0 @@
1
- {
2
- "recommendations": [
3
- // Formatting & Linting
4
- "biomejs.biome",
5
-
6
- // CSS & Styling
7
- "bradlc.vscode-tailwindcss",
8
- "csstools.postcss",
9
-
10
- // GraphQL (Shopify, etc.)
11
- "graphql.vscode-graphql-syntax",
12
-
13
- // Sanity CMS (GROQ syntax + validation)
14
- "sanity-io.vscode-sanity",
15
-
16
- // DX Enhancements
17
- "yoavbls.pretty-ts-errors",
18
- "waderyan.gitblame"
19
- ]
20
- }
@@ -1,98 +0,0 @@
1
- {
2
- // Formatting
3
- "editor.formatOnSave": true,
4
- "editor.defaultFormatter": "biomejs.biome",
5
- "editor.codeActionsOnSave": {
6
- "source.fixAll.biome": "always",
7
- "source.organizeImports.biome": "always"
8
- },
9
-
10
- // TypeScript
11
- "typescript.suggest.autoImports": true,
12
- "typescript.preferences.importModuleSpecifier": "non-relative",
13
- "typescript.tsdk": "node_modules/typescript/lib",
14
- // "typescript.experimental.useTsgo": true, // Disabled: tsgo doesn't support Next.js plugin
15
- "javascript.suggest.autoImports": true,
16
-
17
- // Editor labels (fixed for .tsx files)
18
- "workbench.editor.customLabels.patterns": {
19
- "**/app/**/page.tsx": "${dirname(1)}/${dirname} <page>",
20
- "**/app/**/layout.tsx": "${dirname(1)}/${dirname} <layout>",
21
- "**/app/api/**/route.ts": "${dirname(1)}/${dirname} <route>",
22
- "**/components/**/index.tsx": "${dirname} <component>"
23
- },
24
-
25
- // File associations
26
- "files.associations": {
27
- "*.json": "jsonc"
28
- },
29
-
30
- // CSS (Tailwind v4)
31
- "css.lint.validProperties": ["user-drag"],
32
- "css.lint.unknownAtRules": "ignore",
33
- "tailwindCSS.experimental.configFile": "./lib/styles/css/tailwind.css",
34
- "tailwindCSS.includeLanguages": {
35
- "typescriptreact": "html"
36
- },
37
- "tailwindCSS.classFunctions": ["cn", "cva", "twMerge", "cx"],
38
- "tailwindCSS.classAttributes": [
39
- "class",
40
- "className",
41
- ".*ClassName",
42
- ".*Styles"
43
- ],
44
- "tailwindCSS.experimental.classRegex": [
45
- ["cn\\(([^)]*)\\)", "(?:'|\"|`)([^\"'`]*)(?:'|\"|`)"],
46
- ["cva\\(([^)]*)\\)", "[\"'`]([^\"'`]*).*?[\"'`]"]
47
- ],
48
-
49
- // Search exclusions (performance)
50
- "search.exclude": {
51
- "**/node_modules": true,
52
- "**/.next": true,
53
- "**/bun.lock": true,
54
- "**/.vercel": true,
55
- "**/lib/integrations/sanity/sanity.types.ts": true
56
- },
57
-
58
- // Language-specific formatters
59
- "[css]": {
60
- "editor.defaultFormatter": "biomejs.biome"
61
- },
62
- "[javascript]": {
63
- "editor.defaultFormatter": "biomejs.biome"
64
- },
65
- "[typescript]": {
66
- "editor.defaultFormatter": "biomejs.biome"
67
- },
68
- "[javascriptreact]": {
69
- "editor.defaultFormatter": "biomejs.biome"
70
- },
71
- "[typescriptreact]": {
72
- "editor.defaultFormatter": "biomejs.biome"
73
- },
74
- "[json]": {
75
- "editor.defaultFormatter": "biomejs.biome"
76
- },
77
- "[jsonc]": {
78
- "editor.defaultFormatter": "biomejs.biome"
79
- },
80
-
81
- // General
82
- "files.eol": "\n",
83
- "workbench.editorAssociations": {
84
- "*.svg": "default"
85
- },
86
- "colorize.languages": [
87
- "javascript",
88
- "typescript",
89
- "css",
90
- "scss",
91
- "less",
92
- "html",
93
- "json",
94
- "yaml",
95
- "markdown",
96
- "glsl"
97
- ]
98
- }
package/CHANGELOG.md DELETED
@@ -1,68 +0,0 @@
1
- # @basementstudio/cli
2
-
3
- ## 0.1.2
4
-
5
- ### Patch Changes
6
-
7
- - [#40](https://github.com/basementstudio/basement-cli/pull/40) [`bf969b1`](https://github.com/basementstudio/basement-cli/commit/bf969b1908fc8bfc0bcca0b1de24721c1de9c992) Thanks [@BertovDev](https://github.com/BertovDev)! - Fix bunx compatibility by aligning bin name with package name
8
-
9
- ## 0.1.1
10
-
11
- ### Patch Changes
12
-
13
- - [#39](https://github.com/basementstudio/basement-cli/pull/39) [`43a5857`](https://github.com/basementstudio/basement-cli/commit/43a5857a33350e344494d85c70a2400ac038695c) Thanks [@BertovDev](https://github.com/BertovDev)! - Add WebGPU template support
14
-
15
- - [#33](https://github.com/basementstudio/basement-cli/pull/33) [`9bef7ca`](https://github.com/basementstudio/basement-cli/commit/9bef7ca91ba7fa5928263c76adcc9f6bf77c3143) Thanks [@BertovDev](https://github.com/BertovDev)! - Remove BaseHub CMS integration. BaseHub was a stub that was never fully implemented. Sanity remains as the only CMS option.
16
-
17
- - [#36](https://github.com/basementstudio/basement-cli/pull/36) [`ffa1407`](https://github.com/basementstudio/basement-cli/commit/ffa1407c299a50dbf27c4472e3e8d89bf66ed4fa) Thanks [@mustache-dev](https://github.com/mustache-dev)! - One r3f canvas for webgl-webgpu avoids redundancy
18
-
19
- ## 0.1.0
20
-
21
- ### Minor Changes
22
-
23
- - [#29](https://github.com/basementstudio/basement-cli/pull/29) [`e30588e`](https://github.com/basementstudio/basement-cli/commit/e30588e8609835add7314cbbfc4453ca6d47c195) Thanks [@BertovDev](https://github.com/BertovDev)! - Restructure project into a bun workspaces monorepo with two packages: @basementstudio/cli and @basementstudio/create-basement-app.
24
-
25
- Split CLI entry point and commands into packages/cli
26
-
27
- Move template scaffolding, mergers, integrations, hooks, and plugins into packages/create-basement-app
28
-
29
- Replace remote tiged template downloads with local standalone templates (default, webgl, webgpu, experiment)
30
-
31
- Move Sanity and BaseHub integration files locally with declarative config manifests (config.js)
32
-
33
- Centralize animation and hook dependency configs in create-basement-app/src/configs/
34
-
35
- Update CI workflow and changeset config for workspace publishing
36
-
37
- Remove old root-level bin/, src/, layers/, and dead
38
- code
39
-
40
- ## 0.0.2
41
-
42
- ### Patch Changes
43
-
44
- - [#27](https://github.com/basementstudio/basement-cli/pull/27) [`3c4844f`](https://github.com/basementstudio/basement-cli/commit/3c4844f4e8de13a7618e655badc9be96a39bd059) Thanks [@valebearzotti](https://github.com/valebearzotti)! - Test changeset to validate the release PR and publish workflow flow after 0.0.1.
45
-
46
- ## 0.0.1
47
-
48
- ### Patch Changes
49
-
50
- - [#24](https://github.com/basementstudio/basement-cli/pull/24) [`378fa57`](https://github.com/basementstudio/basement-cli/commit/378fa579a5b4ee1ad5364090fff10d7fb3acecd6) Thanks [@valebearzotti](https://github.com/valebearzotti)! - Rename package to bsmnt and trigger first patch release to 0.0.1.
51
-
52
- ## 0.2.3
53
-
54
- ### Patch Changes
55
-
56
- - [#22](https://github.com/basementstudio/basement-cli/pull/22) [`56ab8fe`](https://github.com/basementstudio/basement-cli/commit/56ab8fe4e1bbbfb014887719ba308af26e1a7c1c) Thanks [@valebearzotti](https://github.com/valebearzotti)! - Test changeset to trigger automated patch version bump flow.
57
-
58
- ## 0.2.2
59
-
60
- ### Patch Changes
61
-
62
- - [#14](https://github.com/basementstudio/basement-cli/pull/14) [`c3e43db`](https://github.com/basementstudio/basement-cli/commit/c3e43db93e417b46ffc6dbe9d7120a5600a1bf08) Thanks [@valebearzotti](https://github.com/valebearzotti)! - Retry npm release after fixing trusted publisher workflow configuration.
63
-
64
- ## 0.2.1
65
-
66
- ### Patch Changes
67
-
68
- - [#12](https://github.com/basementstudio/basement-cli/pull/12) [`9af1be7`](https://github.com/basementstudio/basement-cli/commit/9af1be7701eeea3d1843cacdce52e144954aac0d) Thanks [@valebearzotti](https://github.com/valebearzotti)! - Set up automated npm releases with Changesets and GitHub Actions.
package/CLAUDE.md DELETED
@@ -1,156 +0,0 @@
1
- # CLAUDE.md
2
-
3
- This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
4
-
5
- ## Project Overview
6
-
7
- This is **basement**, a CLI tool that scaffolds Next.js projects with AI agent integration. It creates projects from templates (Default, WebGL, WebGPU, Experiment) and optionally injects CMS integrations (Sanity) and animation libraries (GSAP, Framer Motion).
8
-
9
- ## Commands
10
-
11
- ### CLI Development
12
- ```bash
13
- cd packages/cli && npm link # Install CLI locally for testing
14
- basement # Run the CLI
15
- ```
16
-
17
- ### Generated Project Commands
18
- Projects created by this CLI use these commands:
19
- ```bash
20
- bun dev # Start dev server with Turbopack
21
- bun build # Build for production
22
- bun lint # Run Biome linter
23
- bun lint:fix # Auto-fix linting issues
24
- bun typecheck # Type check with tsgo
25
- bun generate # Scaffold components/hooks
26
- bun analyze # Bundle size analysis
27
- ```
28
-
29
- Sanity-specific (when Sanity CMS is selected):
30
- ```bash
31
- bun sanity:extract # Extract Sanity schema
32
- bun sanity:typegen # Generate TS types from Sanity schema
33
- ```
34
-
35
- ## Architecture
36
-
37
- This project is a **bun workspaces monorepo** with two packages:
38
-
39
- ```
40
- basement-starter-cli/
41
- ├── packages/
42
- │ ├── cli/ # @basementstudio/cli
43
- │ │ ├── bin/index.js # CLI entry point (basement command)
44
- │ │ └── src/commands/
45
- │ │ ├── create.js # Main project creation logic
46
- │ │ ├── add-integration.js # Add CMS to existing projects
47
- │ │ ├── worktree.js # Git worktree management
48
- │ │ └── setup-sanity.js # Sanity project provisioning
49
- │ └── create-basement-app/ # @basementstudio/create-basement-app
50
- │ ├── src/
51
- │ │ ├── index.js # Barrel exports (public API)
52
- │ │ ├── mergers/ # File merge logic (layout, sitemap, config)
53
- │ │ └── configs/animations.js # Animation dependency configs
54
- │ ├── templates/ # Standalone project templates
55
- │ │ ├── default/ # Next.js 16 + React 19 + Tailwind v4
56
- │ │ ├── webgl/ # + React Three Fiber + Three.js
57
- │ │ ├── webgpu/ # + R3F WebGPU renderer (alpha)
58
- │ │ └── experiment/ # + Creative coding navigation UI
59
- │ ├── integrations/ # CMS integration files + config manifests
60
- │ │ └── sanity/ # Sanity files, mergers, config.js
61
- │ ├── template-hooks/ # Reusable React hooks + config.js
62
- │ └── plugins/ # Biome linting rules (Grit patterns)
63
- ├── .changeset/ # Changeset config for versioning
64
- ├── .github/workflows/release.yml # CI: publish both packages to npm
65
- ├── biome.json # Shared Biome config (root-level)
66
- └── package.json # Workspace root (private, no runtime deps)
67
- ```
68
-
69
- ### CLI Flow (packages/cli/src/commands/create.js)
70
- 1. **Prompts**: Collect project name, template type, CMS, animation library, agent preference, hooks
71
- 2. **Template Copy**: Copy standalone template from `create-basement-app/templates/{type}/` (instant, no network)
72
- 3. **Integration Injection**: Merge CMS files from local `create-basement-app/integrations/{cms}/files/`
73
- 4. **Package Hydration**: Inject CMS deps, animation deps, hook deps, and scripts (all from config manifests)
74
- 5. **Agent Skills**: Install AI agent skills via `bunx skills add`
75
- 6. **Hooks**: Copy selected hooks from `create-basement-app/template-hooks/`
76
-
77
- ## Generated Project Stack
78
-
79
- Projects created by this CLI use:
80
- - **Next.js 16+** with App Router, Turbopack, Cache Components
81
- - **React 19+** with React Compiler (no manual useMemo/useCallback needed)
82
- - **TypeScript** strict mode with `noUncheckedIndexedAccess`
83
- - **Tailwind CSS v4** (CSS-first configuration)
84
- - **Biome** for linting/formatting
85
- - **Zustand** for state management
86
- - **Bun** as runtime/package manager
87
-
88
- ## Key Guidelines from Cursor Rules
89
-
90
- ### React Compiler
91
- React Compiler is enabled - do NOT use `useMemo`, `useCallback`, or `React.memo`. Exception: use `useRef` for object instantiation to prevent infinite loops.
92
-
93
- ```tsx
94
- // ❌ DON'T
95
- const instance = new SomeClass()
96
-
97
- // ✅ DO
98
- const instanceRef = useRef<SomeClass | null>(null)
99
- if (!instanceRef.current) instanceRef.current = new SomeClass()
100
- ```
101
-
102
- ### React 19 Features
103
- - `<Activity />` - Defer off-screen component updates (tabs, carousels, WebGL scenes)
104
- - `useEffectEvent` - Separate event logic from effect dependencies
105
- - `cacheSignal()` - Auto-abort signal for server component data fetching
106
- - Refs as regular props (no forwardRef needed)
107
-
108
- ### Image Components
109
- - Use `@/components/ui/image` for standard images (not `next/image` directly)
110
- - For WebGL: use `@/lib/webgl/components/image`
111
-
112
- ### CSS Modules
113
- Import as `s`, use `cn` from `@/styles/cn` for className conditionals:
114
- ```tsx
115
- import s from './component.module.css'
116
- import { cn } from '@/styles/cn'
117
- ```
118
-
119
- ### Custom PostCSS Functions
120
- - `tovw(pixels)` - Convert to viewport width
121
- - `torem(pixels)` - Convert to rem
122
- - `columns(n)` - Width based on grid columns
123
-
124
- ### Sanity CMS
125
- - All files in `/lib/integrations/sanity/`
126
- - Use `defineType`, `defineField`, `defineArrayMember` for schemas
127
- - GROQ queries use `SCREAMING_SNAKE_CASE`, wrap with `defineQuery`
128
- - Use `sanityFetch` (includes `cacheSignal()` automatically)
129
- - Visual editing: add `data-sanity` attributes
130
- - Nested layouts (e.g. `app/studio/layout.tsx`) must NOT render `<html>` or `<body>` tags — the root layout already provides them. Just return `children`.
131
- - Studio route guard: site chrome (nav, skip link, footer) is wrapped in `<SanityStudioGuard>` — a `"use client"` component using `useSelectedLayoutSegment()` that returns `null` on `/studio` routes. This prevents layout duplication in the Sanity Presentation tool.
132
-
133
- ### Next.js Dynamic Rendering Rules
134
- **NEVER call `headers()`, `cookies()`, `draftMode()`, or `searchParams` in root layouts** — these trigger "uncached data / Runtime data accessed outside `<Suspense>`" errors that block the entire page. Instead:
135
- - For route detection in layouts: use `useSelectedLayoutSegment()` in a `"use client"` wrapper component
136
- - For draft mode / visual editing: extract into an async server component wrapped in its own `<Suspense>` boundary (see `components/sanity/visual-editing.tsx`)
137
- - Root layouts should have ZERO dynamic function calls — encapsulate all dynamic behavior in child components with proper Suspense boundaries
138
-
139
- ### Integration File Sources
140
- - **Templates** (`packages/create-basement-app/templates/`) are standalone, complete Next.js projects (no layer overlay needed)
141
- - **CMS integrations** (`packages/create-basement-app/integrations/`) are LOCAL files with config manifests — no remote GitHub cloning
142
- - **Config manifests** (`config.js` in each integration) declare deps, scripts, additivePaths, and mergeFiles
143
- - Files that need to exist in generated projects but aren't in the integration directory must be **generated inline by the merger** (e.g., `SanityStudioGuard` component is written by `layout-merger.js`)
144
-
145
- ### Debug Components
146
- Always gate debug UI (not auto-removed in production):
147
- ```tsx
148
- {process.env.NODE_ENV === 'development' && <Stats />}
149
- ```
150
-
151
- ## Biome Plugins
152
-
153
- Custom linting rules in `packages/create-basement-app/plugins/`:
154
- - `no-anchor-element.grit` - Enforce Next.js `<Link>` over `<a>`
155
- - `no-unnecessary-forwardref.grit` - Prevent forwardRef with React 19
156
- - `no-relative-parent-imports.grit` - Enforce `@/` alias imports
package/biome.json DELETED
@@ -1,45 +0,0 @@
1
- {
2
- "$schema": "https://biomejs.dev/schemas/2.3.14/schema.json",
3
- "vcs": {
4
- "enabled": true,
5
- "clientKind": "git",
6
- "useIgnoreFile": true
7
- },
8
- "files": {
9
- "ignoreUnknown": false,
10
- "includes": [
11
- "bin/**",
12
- "src/**",
13
- "integrations/**",
14
- "layers/**",
15
- "template-hooks/**",
16
- "plugins/**",
17
- "packages/**",
18
- "biome.json",
19
- "package.json"
20
- ]
21
- },
22
- "formatter": {
23
- "enabled": true,
24
- "indentStyle": "tab"
25
- },
26
- "linter": {
27
- "enabled": true,
28
- "rules": {
29
- "recommended": true
30
- }
31
- },
32
- "javascript": {
33
- "formatter": {
34
- "quoteStyle": "double"
35
- }
36
- },
37
- "assist": {
38
- "enabled": true,
39
- "actions": {
40
- "source": {
41
- "organizeImports": "on"
42
- }
43
- }
44
- }
45
- }