Reference
Launch Checklist
Use this when starting a new repo or standardizing an existing one.
Baseline
packageManagerpinned to the settled house pnpm line, currentlypnpm@11.10.0- Node engine pinned to
>=24.18.0 <25for apps and services .node-versionpins the current Node 24 LTS patchturbopinned to2.10.4typescriptpinned to6.0.3lint-stagedpinned to17.0.8@howells/lintinstalled@howells/typescript-configinstalled@howells/envyinstalled when runtime env existstsxandvitestinstalled unless the repo has no script or test surface- workspace layout uses
apps/*andpackages/*
Config
- root
package.jsonuses the standard script contract pnpm-workspace.yamlis presentturbo.jsonis present and smalloxlint.config.tsandoxfmt.config.tsuse@howells/lintpresets when the repo needs explicit lint or format configurationtsconfig.jsonuses explicit leaf presetscomponents.jsonexists for UI repos.husky/pre-commitis installedAGENTS.mdexists and is concise
UI Projects
- the bundled UI baseline is the starting assumption
- shared primitives live in a package, not in the app
- Storybook exists for exported reusable UI
- local wrappers are preferred over primitive forks
- brand expression is handled through tokens and compositions, not component duplication
motion,lucide-react,zod,clsx,tailwind-merge, andsonnerare installed when the repo is UI-first@tanstack/react-queryis used for client server-state andnuqsfor meaningful URL state@howells/stacksheetis used for stacked sheet workflows instead of overextending a basic drawer@howells/apertois considered for thumbnail-to-expanded media transitions instead of rebuilding that interaction locally
Full-Stack and AI Projects
- Drizzle and Neon are the default persistence choice for TypeScript product apps
tRPCis the default typed app API boundary unless the API needs to be language-agnostic@howells/envyowns env access and provider preflight checks@howells/aiis used before adding raw provider SDKs directly to app codehowells/motifpackages are used before adding raw fal.ai clients for image generation or media utilitiesfiles-sdkis used behind a storage/upload boundary when object/blob storage needs provider portability or agent-facing file operations- Mastra is added only when the repo has real agent/workflow structure
- MCP contracts live in
packages/mcporpackages/mcp-server, not hidden in app routes zodvalidates model IO, tool schemas, env schemas, and API boundaries where appropriate
Verification
pnpm installsucceeds cleanlypnpm lintsucceedspnpm typechecksucceedspnpm buildsucceedspnpm testsucceeds or is intentionally not present yet- hooks run without surprising side effects
Guardrails
- cache is disabled by default in Turbo tasks
- task-level env is scoped narrowly
- env parsing and provider checks use
@howells/envywhen the repo has runtime env - there is no direct
oxlint,oxfmt, Biome, Prettier, or ESLint dependency drifting away from@howells/lint - there is no generic local tsconfig base hiding runtime assumptions
- there is no duplicate component system growing beside
packages/uiin a new UI repo - there is no second local motion/transition mini-framework appearing without a strong reason
- there is no local clone of
@howells/stacksheetor@howells/apertobehavior without a strong product-specific reason - there are no raw AI provider clients scattered through app routes
- there are no new-project defaults derived from legacy PHP/Craft dependencies
Agentic Development
Use this reference when a repo is not just calling a model, but exposing agent-facing behavior, agent-owned tools, workflows, memory, traces, MCP, or long-running AI jobs.
Agent Skill Packaging
Scaffold's Project Docs should remain the source of truth, with one agent skill distribution surface exposed to Codex, Claude Code, and Cursor through platform-specific Skill Wrappers. This keeps the Scaffold Baseline coherent across supported coding assistants while still allowing each platform to use its own metadata, command, rules, or install conventions.