| name | dr-init |
| description | Initialize new Darkroom project from a satus or novus starter (NOT the same as native /init which writes CLAUDE.md). Triggers "new darkroom project", "satus", "novus", "scaffold from starter". |
| argument-hint | [project-name] |
Initialize Darkroom Project
Create a new project using a Darkroom starter. Darkroom maintains two:
| Starter | Stack | When to use |
|---|
| satus | Next.js 16 + App Router + RSC + React 19 | Content-driven sites, SEO-critical, Vercel-friendly, projects that benefit from Server Components / Server Actions |
| novus | React Router 7 + Vite + React 19 | SPA-leaning apps, projects that prefer the loader/action data model, projects without need for RSC, projects deploying to non-Vercel infra |
Step 1 — Pick the starter
If the user already specified ("/dr-init satus", "/dr-init novus", "create new react-router project"), use that. Otherwise ask:
Which starter?
- satus (Next.js) — App Router, Server Components, Vercel-optimized
- novus (React Router) — RR7, Vite, classic loader/action model
When the user is unsure, prefer satus for marketing/content sites and novus for app-heavy SPAs.
Step 2 — Clone
satus (Next.js)
bunx degit darkroomengineering/satus $ARGUMENTS
cd $ARGUMENTS
bun install
novus (React Router)
bunx degit darkroomengineering/novus $ARGUMENTS
cd $ARGUMENTS
bun install
Step 3 — Post-setup
Both starters:
- Update package.json — change
name, description.
- Configure environment — copy
.env.example to .env (or .env.local for satus).
- Start dev —
bun dev.
- Open debug —
Cmd/Ctrl + O (satus) or Cmd + . / Ctrl + O (novus).
What each starter includes
satus
- Next.js 16 + App Router
- React 19 + React Compiler
- TypeScript strict mode
- Tailwind CSS v4
- Biome
- Lenis smooth scroll
- Hamo performance hooks
- Image / Link component wrappers
- CSS Modules with
s alias
@/ path alias
novus
- React Router 7 + SSR via Vite
- React 19 + React Compiler
- TypeScript strict mode
- Tailwind CSS v4
- Biome
- Optional: WebGL (R3F), Anime.js, Theatre.js
- Sanity CMS integration (optional)
- t3-env + Valibot for typed env
- CSS Modules with
s alias
~/ path alias
Project structure
satus
app/ # Next.js routes
components/ # React components
lib/
├── hooks/ # Custom hooks
├── integrations/ # Third-party clients
├── styles/ # Global CSS, Tailwind
└── utils/ # Pure utilities
novus
app/
├── root.tsx # Root layout
├── routes/ # Route modules (file-based)
└── routes.ts # Optional explicit route config
components/ # React components
hooks/ # Custom hooks
integrations/ # Third-party clients
styles/ # Global CSS, Tailwind
utils/ # Pure utilities
Don't use
create-next-app / create-react-app — missing Darkroom standards
- Manual setup — too many things to configure
Output
After initialization:
- Confirm project created and which starter was used
- List the next steps (env, dev server)
- Offer to start the dev server
Lenis smooth scroll
Both satus and novus starters ship Lenis wired up. For non-Darkroom projects needing Lenis setup, see commit history of the retired lenis skill (git log --all -- skills/lenis/).