From bopen-tools
Guided full-stack Next.js project scaffolding with Biome, Tailwind v4, shadcn/ui, better-auth, and Vercel deployment. Six interactive steps using agent teams for parallel execution.
How this skill is triggered — by the user, by Claude, or both
Slash command
/bopen-tools:create-next-projectThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Guided full-stack Next.js project scaffolding. Six interactive steps that scaffold, configure, and deploy a production-ready app using agent teams for parallel execution.
Guided full-stack Next.js project scaffolding. Six interactive steps that scaffold, configure, and deploy a production-ready app using agent teams for parallel execution.
src/ directoryuseQuery/useMutation for all client data. NO TanStack Query needed.BEFORE any work, invoke these skills to load guidance into context:
Skill(vercel-react-best-practices) - React/Next.js optimization rulesSkill(vercel-composition-patterns) - Component composition patternsSkill(better-auth-best-practices) - Auth integration patternsApply their guidance throughout all steps.
This step gets the bare project on disk and into version control.
If the target directory already has files (e.g., a .claude/ directory), move them to /tmp first, scaffold, then move them back.
create-next-app now has a --biome flag (its interactive prompt asks "Which linter would you like to use? ESLint / Biome / None") -- pass it directly instead of scaffolding with ESLint and removing it afterward:
bunx create-next-app@latest <project-name> \
--typescript --tailwind --app --src-dir \
--import-alias "@/*" --use-bun --turbopack --biome --yes
cd <project-name>
The generated biome.json is a reasonable default, but overwrite it with the house config -- see references/stack-defaults.md for the exact JSON and the full list of Biome 2.x rule differences (organizeImports location, no files.ignore, folder ignore syntax, css.parser.tailwindDirectives).
Update package.json scripts:
{
"scripts": {
"dev": "next dev --turbopack",
"build": "next build",
"start": "next start",
"lint": "biome check .",
"lint:fix": "biome check --write ."
}
}
Auto-fix all files:
bunx biome check --write .
git init
bun run build
bun run lint
git add .
git commit -m "Initial Next.js scaffold with Biome"
Prompt the user with 3 options:
gh org list, ask the user which one, then run gh repo create <org>/<name> --private --source=. --remote=origin (do NOT push yet). Never guess the org name from conversation -- always look it up.git remote add origin <url> (do NOT push yet)IMPORTANT: Do NOT push to GitHub yet. Pushing triggers a Vercel deploy, and the deploy will fail if the database isn't provisioned. The first push happens in Step 6 after all infrastructure is set up.
Now that the scaffold exists, gather ALL requirements in one round. Use AskUserQuestion with multiple questions.
Auth methods (multi-select):
Database:
Optional packages (multi-select):
@ai-sdk/openai + ai - AI/agent features@bsv/sdk - BSV blockchain@1sat-lexi/js - 1Sat Ordinals@1sat/connect + @1sat/react - 1Sat wallet integrationclawnet - ClawNet agent platformresend - Transactional emailTheme: "Pick a preset (nova, vega, maia, lyra, mira), create a custom one at ui.shadcn.com/create, or pick a theme at tweakcn.com and paste the registry URL."
Skills to reference in CLAUDE.md (multi-select from installed plugins):
vercel-react-best-practices and vercel-composition-patternsRecord all answers -- they inform the research agents and build team.
Send parallel research agents (using the Agent tool with run_in_background: true) to gather context for each build workstream. Each agent reads relevant source code, docs, or skills so the build agents have everything they need.
Research Agent 1: UI + Layout
references/layout-architecture.md and references/stack-defaults.mdResearch Agent 2: Auth
references/auth-setup.mdSkill(sigma-auth:setup-convex) or Skill(sigma-auth:setup-nextjs)@convex-dev/better-auth adapter patternResearch Agent 3: Data Layer
Skill(convex-best-practices), read Convex schema patternsreferences/tanstack-query-setup.mdResearch Agent 4: Optional Packages (only if user selected packages)
Wait for all research agents to complete before Step 4.
Create an agent team (using TeamCreate) with specialized agents. Provide each agent with FULL context from Step 2 answers and Step 3 research results.
.claude/CLAUDE.md, .env.vercel, final build/lint checkEvery agent MUST receive the project path, the Step 2 answers, the relevant Step 3 research, the specific reference file contents they need, the Biome 2.x rules (no non-null assertions, etc.), and instructions to run bun run build + bun run lint before committing with a descriptive message.
See references/build-team.md for the exact command-by-command responsibilities of each agent.
After all agents complete and the build passes locally, provision the database BEFORE the first deploy. Deploying without a database creates broken deployments and can cause duplicate/disconnected database instances.
This is a human-in-the-loop sequence: the user creates the Vercel project and adds storage themselves (the agent should NOT create the Vercel project). Then link the local project with vercel link, pull env vars with vercel env pull, and complete database-specific setup -- Convex requires walking through a 4-step guide via the Vercel Marketplace integration; Turso/PostgreSQL/SQLite are simpler CLI or dashboard steps.
See references/database-provisioning.md for the full step-by-step (Vercel project + storage setup, linking, env pull, and per-database configuration for Convex/Turso/PostgreSQL/SQLite), the Convex _generated/ stub files, and the complete list of Convex-specific pitfalls.
Once the database is provisioned and env vars are set, push to trigger the first deploy:
git push -u origin main
Or if the user hasn't set up a GitHub remote yet, list orgs with gh org list, ask the user which one, then gh repo create <org>/<name> --private --source=. --remote=origin --push.
Ongoing development runs two terminals: bunx convex dev (if using Convex, pushes to the dev deployment) alongside bun dev (Next.js, connects to dev Convex via .env.local). Production connects to the production Convex deployment via convex deploy during the Vercel build -- dev and production have separate data, env vars, and function code.
After deploy, verify the app loads without client errors, auth works, and the theme toggle works. Run Skill(react-doctor) and bun run lint and fix everything flagged -- a brand-new project should score 100, not just "pass".
See references/deployment-workflow.md for the full first-deploy sequence, the two-terminal dev workflow, the dev-vs-production comparison table, the complete verification checklist, and the .env.vercel file pattern (create this file in Step 1/4 with ALL env vars the project needs, committed to the repo as a .gitignore exception).
bun, bunx for everything--biome directly -- create-next-app has a --biome flag now; pass it at scaffold time instead of removing ESLint afterward. Still overwrite the generated biome.json with the house configassist.actions.source.organizeImports, negation patterns in files.includes (no files.ignore), css.parser.tailwindDirectives: trueSkill(react-doctor) before calling the project done. A new project has no excuse for anything less than a 100 scoreprocess.env.FOO!. Always validate env vars and throw informatively:
// WRONG
const url = process.env.DATABASE_URL!;
// RIGHT
const url = process.env.DATABASE_URL;
if (!url) throw new Error("DATABASE_URL environment variable is required");
useQuery/useMutation from convex/react. Do NOT install TanStack Query.create-next-app, shadcn, biome, vercel, gh CLIs--dry-run and --diff when iterating on component additions to preview changes before applying@latest for all installationsbun run build at every commit checkpointTeamCreate to parallelize Phases 2-7. Provide each agent thorough context since they lack conversation history.references/stack-defaults.md -- read when configuring Biome, the theme provider, Tailwind, or shadcn/ui; exact configs, presets, and safety flagsreferences/layout-architecture.md -- read when restructuring the dashboard-01 block into the single-layout pattern (navbar/sidebar shell + route content)references/auth-setup.md -- read when wiring better-auth for any auth method (email/password, OAuth, Sigma, passkeys) or database adapterreferences/tanstack-query-setup.md -- read when setting up the data layer for non-Convex projects (provider, custom hooks)references/build-team.md -- read before dispatching Step 4's build team; the exact command-by-command responsibilities and context checklist for each agentreferences/database-provisioning.md -- read during Step 5; full Vercel + database provisioning steps (Convex, Turso, PostgreSQL, SQLite), Convex _generated/ stubs, and Convex pitfallsreferences/deployment-workflow.md -- read during Step 6; first-deploy sequence, ongoing dev workflow, dev-vs-prod table, verification checklist, and the .env.vercel patternvercel-react-best-practices -- React/Next.js optimization rulesvercel-composition-patterns -- Component composition for scalable appsfrontend-design -- UI design avoiding generic aestheticsbetter-auth-best-practices -- Auth integration patternsconvex-best-practices -- Convex patterns (when using Convex)sigma-auth:setup-convex -- Sigma auth with Convexsigma-auth:setup-nextjs -- Sigma auth with Next.js (non-Convex)npx claudepluginhub b-open-io/claude-plugins --plugin bopen-toolsScaffolds new apps, APIs, backends, fullstack projects, monorepos, or starters using Better-T-Stack. Supports frameworks like Hono, Express, Next.js, Nuxt, Svelte, Astro, React Native, and more.
Creates a new Next.js 15 project with domain templates (Todo, Blog, Dashboard, E-commerce) and configurable stack presets including App Router, ShadCN, Zustand, and Tanstack Query.
Guides React and Next.js 14+ development with App Router, Server Components, TypeScript, and Tailwind CSS. Covers project setup, component architecture, styling, data fetching, and routing.