Agent-ready at the first commit
A Turborepo monorepo with a TanStack Start app, every dependency pinned, and the rules your coding agent reads already written.
pnpm create @draekien/d9-app my-app- my-app/
- ├── apps/web/TanStack Start on Vite
- ├── packages/ui/shadcn, exported as @workspace/ui
- ├── .agents/skills/agent skills, upgrade-dependencies among them
- ├── .claude/rules, skills and hooks for Claude Code
- ├── .intent/TanStack Intent gate
- ├── AGENTS.mdproject rules for coding agents
- └── biome.jsonGritQL plugins for React and TanStack
cd my-apppnpm devAgent setup ships in the scaffold
The generated project configures Claude Code and Codex, and Cursor reads .cursor/mcp.json. Other agents that read AGENTS.md and .agents/skills/ get the rules and the skills without extra setup.
ls -A my-app| file | purpose |
|---|---|
| AGENTS.md, CLAUDE.md | project rules: run tasks from the root, exact pins only |
| .claude/rules/*.md | path-scoped rules, loaded only for matching files |
| .claude/settings.json | SessionStart and PreToolUse hooks for the Intent gate |
| .codex/hooks.json | the same hooks for Codex |
| .intent/hooks/ | denies the first edit until the agent loads a matching skill |
| .agents/skills/ | shadcn, turborepo, motion, hugeicons, upgrade-dependencies |
| .mcp.json, .cursor/mcp.json | shadcn and hugeicons as pinned npx commands, motion over HTTP |
| biome.json | GritQL plugins: no fetch in an effect, no inline query key |
Pinned and predictable
Every dependency is pinned to an exact version. The project never receives an upstream release until you run the bundled upgrade-dependencies skill or change a pin yourself. Template pins refresh from the npm registry on the 1st and 15th of each month.
grep saveExact pnpm-workspace.yaml/upgrade-dependencies| Package | Old | New | Type | | -------------- | ----- | ----- | ----- | | @base-ui/react | 1.8.0 | 1.9.0 | minor | held: major - @types/node 22.20.5 -> 26.6.4 (apps/web, packages/ui): declined
What you get
One tool per concern, the default stack preselected.
| concern | tool |
|---|---|
| App framework | TanStack Start (Router, Query, Form, Table, Hotkeys) |
| UI | React 19 with React Compiler |
| Language | TypeScript 7 |
| Build and test | Vite, Vitest |
| Monorepo | Turborepo, pnpm workspaces |
| Lint and format | Biome |
| Git hooks | Lefthook |
| Components | shadcn on Base UI, Hugeicons |
| Styling | Tailwind 4, Motion |
Minimal by default
/ is a minimal page. The query, form, table, hotkeys and motion examples render at /examples and live in one directory. Delete it to remove every example; the next build regenerates the route tree without it.
rm -r apps/web/src/routes/examplespnpm build| command | runs |
|---|---|
| pnpm dev | vite dev for apps/web |
| pnpm build | vite build for apps/web, dependencies first |
| pnpm check | Biome, the comment check, and every package check task |
| pnpm typecheck | tsc --noEmit in every package |
| pnpm test | vitest run in every package |
pnpm create @draekien/d9-app my-app