init-app-stack
Installation
SKILL.md
Init App Stack
Bootstrap a full-stack project with:
- Frontend: Vite 8+ + React + TanStack Router + TanStack Query + TanStack Form + TanStack Table + TanStack Virtual + Zustand +
@bmsuisse/ui(BMS's shared shadcn/ui-based component library, public npm package) +@bmsuisse/datagrid(shared<DataGrid>/<TreeDataGrid>) + TailwindCSS v4, managed with bun — the shadcn CLI stays wired up as a fallback for anything@bmsuisse/uidoesn't cover - Backend: FastAPI + Granian + pgdevkit (psycopg, no ORM), managed with uv, targeting Python 3.14
- DB: Postgres 17 via
docker-compose.ymlfor dev; pgdevkit'spgdb testdbfor tests; schema lives as.sqlfiles underdatabase/ - Types:
@hey-api/openapi-tsgenerates a typed SDK, TanStack Query options, and Zod runtime validators from FastAPI's OpenAPI schema — the generated output is committed, not gitignored - Task runner:
just— the scaffold writes a rootjustfile(install,db-up,db-down,backend,frontend,dev,agent-preview,agent-preview-status,agent-preview-stop,generate-api,test).just devruns backend + frontend together (Ctrl+C stops both); it does not start Postgres — runjust db-upfirst. It usesset shell := ["bash", "-uc"]for&/wait, so Git Bash must be onPATHon Windows. Runjustwith no args to list recipes; always drive the project throughjust <recipe>instead of rawuv run/bun run/docker composecommands. - Ports: randomly assigned high ports (seeded by project name, so deterministic per project — printed on scaffold completion)
- Agent preview:
just agent-preview(scripts/agent_preview.py) is the parallel-safe alternative tojust dev— for multiple worktrees/agents running on the same machine at once. It provisions its own pgdevkit-scoped Postgres database (project + git branch), builds the frontend once, and serves it from the backend (via aStaticFilesmount inbackend/main.py) on a port the OS picks itself, so it never collides with or kills another worktree's dev server or database. The port is overridable with--port <n>orBACKEND_PORT.just agent-preview-status/-stopcheck/stop the instance for the current workspace.
Step 1: Run the scaffold script
This creates the full project structure deterministically — do not scaffold manually.
uv run python scripts/create.py <project-name>