@linnify/cli
v0.10.0
Published
CLI tool to pull boilerplate from the Linnify starter repository
Readme
@linnify/cli
CLI tool that pulls boilerplate from the Linnify starter repository.
Installation
pnpm add -g @linnify/cliOr run directly:
pnpm dlx @linnify/cli boilerplate --helpPrerequisites
- GitHub CLI installed and authenticated (
gh auth login) - Access to the
linnify/linnify-starterprivate repo
App Starters
| Type | Default name | Stack |
|------|-------------|-------|
| web | web | Next.js 16, React 19, App Router, ShadCN, better-auth |
| api | api | Fastify, Zod |
| job | job | Node.js background jobs with tsx |
| mobile | mobile | Expo, React Native, Expo Router, NativeWind |
Run linnify list (alias linnify apps) to print this table from the CLI.
Commands
Boilerplate
Pull the full monorepo boilerplate with selected app starters. Each --app flag takes a JSON object with name (target folder inside apps/) and app (starter to use).
linnify boilerplate \
--app='{"name":"web","app":"web"}' \
--app='{"name":"admin","app":"web"}' \
--app='{"name":"jobs","app":"job"}' \
--app='{"name":"mobile","app":"mobile"}'This copies the entire boilerplate (root configs, packages/, .github/, etc.) into the current directory, and creates only the selected apps inside apps/:
| --app value | Result |
|---------------|--------|
| {"name":"web","app":"web"} | apps/web/ using the web starter (Next.js) |
| {"name":"admin","app":"web"} | apps/admin/ using the web starter (Next.js) |
| {"name":"jobs","app":"job"} | apps/jobs/ using the job starter (background jobs) |
| {"name":"api","app":"api"} | apps/api/ using the api starter (Fastify) |
| {"name":"mobile","app":"mobile"} | apps/mobile/ using the mobile starter (Expo) |
Flags
| Flag | Description |
|------|-------------|
| --app <json> | App to include (repeatable) |
| --force | Overwrite existing app directories |
| --skip-install | Skip running pnpm install after setup |
| --branch <b> | Pull from a specific branch (default: main) |
Development
pnpm install
pnpm dev boilerplate --help # run in dev mode
pnpm build # bundle to dist/index.js
pnpm type-check # typecheck onlyAdding new starters
Edit src/lib/config.ts — starters are listed in boilerplate.apps, each with its type, defaultName, and stack. The corresponding app folder must exist in the linnify-starter repository under apps/.
Publishing a new version
The package is published to the public npm registry as @linnify/cli.
Prerequisites: you must be logged in to npm with an account that has publish access to the @linnify org:
npm loginSteps:
Bump the version in
package.jsonfollowing semver:| Change type | Command | |-------------|---------| | Bug fix |
npm version patch| | New feature (backwards-compatible) |npm version minor| | Breaking change |npm version major|Or edit the
"version"field manually.Publish — the
prepublishOnlyscript builds automatically:npm publishCommit and push the version bump:
git add package.json git commit -m "chore(cli): release v$(node -p "require('./package.json').version")" git push
Note: The package is scoped (
@linnify/cli) and published with"access": "public", so no extra flags are needed.
