About genesis
A skill for scaffolding new repositories with the genesis CLI and the live `lwlee2608/genesis` template. It guides developers through selecting and adapting only the required project structure and files.
Key features
- 01Flag-mode CLI setup
- 02Template-based repository structure
- 03Scoped copying of template files
- 04Project-name and database-name adaptation
- 05Oxlint frontend configuration
Use cases
- 01Starting a new repository
- 02Adding selected server components
- 03Adapting template files to a project
- 04Setting up frontend linting
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ lwlee2608/ genesis --skill genesisAfter installing, type/genesisin Claude Code to confirm it loaded.
Details
From the project READMEGenesis Scaffolding
Start new repos with the genesis CLI. Add everything else from the reference/project-00 template in lwlee2608/genesis. Never write these files from scratch or from memory.
Structure
reference/project-00/
├── docker-compose.yml # dev stack: Postgres only
└── services/
├── project-00-server/ # Go API
│ ├── cmd/project-00/ # main, config, logger
│ ├── internal/
│ │ ├── api/http/ # router, handlers, dto, middleware
│ │ └── db/ # migrations, queries, sqlc (generated)
│ ├── Dockerfile
│ ├── Makefile
│ └── sqlc.yaml
└── project-00-web/ # React/Vite/TS app
├── src/ # main.tsx, App.tsx
├── Dockerfile # build + nginx serve
├── nginx.conf
└── entrypoint.sh
Arguments
new, or no argument in a directory that is empty apart from.git: follow rule 1.- Any other argument (e.g. "Add the server", "Set up sqlc") scopes the work. Copy only the matching files, not the whole template.
- No argument in a non-empty directory: ask which parts to scaffold.
Rules
-
Start a new repo with
genesisin flag mode. Rungenesis -name <app> -module <module>from the target directory, then add the parts the CLI does not generate from the template.- Never run bare
genesis. It opens a TUI, and exits 1 when there is no TTY. -namedefaults to the directory name and-moduleto theoriginremote. Pass both if either is missing or wrong.-fullstackand-httpdefault totrue. Turn them off with=false.- Add
-readme -desc "<one line>"only if the user asks for an AI README. It needsOPENROUTER_API_KEY. - The CLI refuses a non-empty directory. Add
-forceonly after the user confirms overwriting, because it replaces files silently. - If
genesisis missing, or fails withflag provided but not defined(it predates flag mode), ask the user before you install it withcurl -fsSL https://raw.githubusercontent.com/lwlee2608/genesis/main/scripts/install.sh | bash.
- Never run bare
-
Clone the live repo, never work from memory. Clone
https://github.com/lwlee2608/genesis(branchmain) once with--depth=1into/tmp/genesis-template. Then read files underreference/project-00. The monorepo layout is part of the template, not only the files. The repo evolves, so content from memory drifts. -
Adapt, don't blind-copy. Replace every
project-00with the project name. It appears in directory names, the Go modulegithub.com/lwlee2608/project-00, thecmd/project-00/path and binary,APP :=in the Makefile, and the Docker image and container names. Use the underscore form for the Postgres database and user (project_00). Keep the rest of the template's structure and conventions. -
Use Oxlint for the web frontend. Copy
.oxlintrc.json, theoxlintdependency, and the lint script from the reference. Keep the React Hooks and React Refresh rules. Remove the ESLint config and dependencies it replaces, then regenerate the lockfile with pnpm.
For deploying the result to Railway, use /genesis-railway. The prod compose for a VM with Overwatcher comes from /genesis-cicd overwatcher.