Skip to content

Commit be6f1d2

Browse files
sunwrobertclaude
andcommitted
chore: update biome config and expand project-starter skill
- Add ultracite/react to biome extends - Remove unavailable tags from Better T Stack options - Add linting, CI setup, and gotchas sections to project-starter 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 49a7392 commit be6f1d2

File tree

2 files changed

+74
-17
lines changed

2 files changed

+74
-17
lines changed

biome.jsonc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"$schema": "./node_modules/@biomejs/biome/configuration_schema.json",
3-
"extends": ["ultracite/core"],
3+
"extends": ["ultracite/core", "ultracite/react"],
44
"files": {
55
"includes": ["!bun.lock"]
66
},

skills/project-starter/SKILL.md

Lines changed: 73 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ List of options:
1313

1414
Web Frontend
1515

16-
- TanStack Router (selected) - Modern type-safe router for React
16+
- TanStack Router - Modern type-safe router for React
1717
- React Router - Declarative routing for React
1818
- TanStack Start - Full-stack React and Solid framework powered by TanStack Router
1919
- Next.js - React framework with hybrid rendering
@@ -36,16 +36,16 @@ Backend
3636
- Express - Popular Node.js framework
3737
- Fastify - Fast, low-overhead web framework for Node.js
3838
- Convex - Reactive backend-as-a-service
39-
- Fullstack Next.js (unavailable) - Use Next.js built-in API routes
40-
- Fullstack TanStack Start (unavailable) - Use TanStack Start's built-in API routes
39+
- Fullstack Next.js - Use Next.js built-in API routes
40+
- Fullstack TanStack Start - Use TanStack Start's built-in API routes
4141
- No Backend - Skip backend integration (frontend only)
4242

4343
Runtime
4444

4545
- Bun (selected) - Fast JavaScript runtime & toolkit
4646
- Node.js - JavaScript runtime environment
4747
- Cloudflare Workers - Serverless runtime for the edge
48-
- No Runtime (unavailable) - No specific runtime
48+
- No Runtime - No specific runtime
4949

5050
Api
5151

@@ -65,19 +65,19 @@ Orm
6565

6666
- Drizzle (selected) - TypeScript ORM
6767
- Prisma - Next-gen ORM
68-
- Mongoose (unavailable) - Elegant object modeling tool
69-
- No ORM (unavailable) - Skip ORM integration
68+
- Mongoose - Elegant object modeling tool
69+
- No ORM - Skip ORM integration
7070

7171
Db Setup
7272

7373
- Turso - Distributed SQLite with edge replicas (libSQL)
74-
- Cloudflare D1 (unavailable) - Serverless SQLite-compatible database for Cloudflare Workers
75-
- Neon Postgres (unavailable) - Serverless Postgres with autoscaling and branching
76-
- Prisma PostgreSQL (unavailable) - Managed Postgres via Prisma Data Platform
77-
- MongoDB Atlas (unavailable) - Managed MongoDB clusters in the cloud
78-
- Supabase (unavailable) - Local Postgres stack via Supabase (Docker required)
79-
- PlanetScale (unavailable) - Postgres & Vitess (MySQL) on NVMe
80-
- Docker (unavailable) - Run Postgres/MySQL/MongoDB locally via Docker Compose
74+
- Cloudflare D1 - Serverless SQLite-compatible database for Cloudflare Workers
75+
- Neon Postgres - Serverless Postgres with autoscaling and branching
76+
- Prisma PostgreSQL - Managed Postgres via Prisma Data Platform
77+
- MongoDB Atlas - Managed MongoDB clusters in the cloud
78+
- Supabase - Local Postgres stack via Supabase (Docker required)
79+
- PlanetScale - Postgres & Vitess (MySQL) on NVMe
80+
- Docker - Run Postgres/MySQL/MongoDB locally via Docker Compose
8181
- Basic Setup (selected) - No cloud DB integration
8282

8383
Web Deploy
@@ -87,13 +87,13 @@ Web Deploy
8787

8888
Server Deploy
8989

90-
- Cloudflare (unavailable) - Deploy to Cloudflare Workers using Alchemy
90+
- Cloudflare - Deploy to Cloudflare Workers using Alchemy
9191
- None (selected) - Skip deployment setup
9292

9393
Auth
9494

9595
- Better-Auth (selected) - The most comprehensive authentication framework for TypeScript
96-
- Clerk (unavailable) - More than authentication, Complete User Management
96+
- Clerk - More than authentication, Complete User Management
9797
- No Auth - Skip authentication
9898

9999
Payments
@@ -165,7 +165,7 @@ If following Better T Stack scaffolding:
165165
`rm -rf apps/web/components.json apps/web/src/components/ui`
166166

167167
```
168-
cd apps/web && bunx --bun shadcn@latest create --preset "https://ui.shadcn.com/init?base=base&style=maia&baseColor=neutral&theme=neutral&iconLibrary=hugeicons&font=figtree&menuAccent=subtle&menuColor=default&radius=default&template=start" --template start
168+
cd apps/web && bunx --bun shadcn@latest create --preset "https://ui.shadcn.com/init?base=base&style=maia&baseColor=neutral&theme=neutral&iconLibrary=hugeicons&font=figtree&menuAccent=subtle&menuColor=default&radius=default&template=start" --template start .
169169
```
170170

171171
Add all ShadCN components
@@ -177,3 +177,60 @@ Add all ShadCN components
177177
Set up Storybook through their wizard
178178

179179
`bunx create storybook@latest`
180+
181+
## Linting
182+
183+
If ultracite had troubles installing, run the following:
184+
185+
`bunx ultracite init --pm bun --frameworks "react" --editors vscode --integrations lefthook`
186+
187+
Add the following scripts to the root package.json:
188+
189+
```
190+
"prepare": "lefthook install && effect-language-service patch",
191+
"check": "biome check",
192+
"check-types": "bun run --filter '*' check-types",
193+
"fix": "biome check --write",
194+
"test:unit": "bun run --filter '*' test:unit"
195+
```
196+
197+
## Setup CI
198+
199+
Sample Code Quality workflow:
200+
201+
```
202+
name: Code Quality
203+
204+
on:
205+
push:
206+
branches: [main]
207+
pull_request:
208+
branches: [main]
209+
210+
jobs:
211+
quality:
212+
name: Code Quality
213+
runs-on: ubuntu-latest
214+
steps:
215+
- uses: actions/checkout@v4
216+
217+
- uses: oven-sh/setup-bun@v2
218+
with:
219+
bun-version: latest
220+
221+
- name: Install dependencies
222+
run: bun install --frozen-lockfile
223+
224+
- name: Lint
225+
run: bun run check
226+
227+
- name: Type check
228+
run: bun run check-types
229+
230+
- name: Unit tests
231+
run: bun run test:unit
232+
```
233+
234+
## Gotchas
235+
236+
If using Drizzle + Alchemy, be sure to run `bun db:generate` to generate the schema first.

0 commit comments

Comments
 (0)