@mrk-us/create-app
v0.1.5
Published
Create a composable mrk.us application
Downloads
414
Readme
@mrk-us/create-app
Interactive Bun CLI for composing projects from
mrk-us/starter-boilerplate.
Requires Bun 1.3.14 or newer, Node.js 22.11 or newer, and Git. The CLI checks
the node executable on PATH before starting the prompts.
Run the published CLI with:
bunx @mrk-us/create-appThe published CLI downloads and verifies the exact starter commit pinned to that CLI version. It does not generate from a moving branch.
On the current development machine, activate the installed Node.js 22 runtime with:
export PATH="$HOME/Library/Application Support/Herd/config/nvm/versions/node/v22.16.0/bin:$PATH"
node --versionLocal development
Install dependencies:
bun installRun against a local template checkout:
CREATE_APP_TEMPLATE_PATH=/Users/markus/Dev/starter-boilerplate bun run devThe CLI creates the project in the current directory. Setting
CREATE_APP_TEMPLATE_PATH or passing --template-path replaces the pinned
download with a local Git checkout for template development.
Use --skip-install while iterating on prompts and file composition. It also
skips the generated project's checks, skill installation, provider setup, and
initial commit:
CREATE_APP_TEMPLATE_PATH=/Users/markus/Dev/starter-boilerplate \
bun run dev --skip-installUse --skip-provision to install and validate a generated project without
creating cloud resources:
CREATE_APP_TEMPLATE_PATH=/Users/markus/Dev/starter-boilerplate \
bun run dev --skip-provisionProject skills and initial commit
Every normal generation installs the official Turborepo skill plus these core
skills from mrk-us/skills under .agents/skills: add-component-reference,
choose-library, laws-of-ux, microcopy, organize-files, and park-that.
The selected architecture adds its own guidance:
- Next.js installs the skills published by
vercel/next.jswhen either the marketing site or product app uses Next.js. - Convex runs
bunx convex ai-files install. - WorkOS installs
workos/skills. - Clerk installs
clerk/skillswhen the generated dependencies use Clerk. - Stripe installs the skills published by
https://docs.stripe.com. - Resend installs
resend/resend-skills.
After project and provider setup completes, the CLI stages every generated
file and creates the repository's first commit with the message init. If
provider setup is interrupted, --resume creates that commit after setup
finishes.
Development provider setup
Selections that include Convex now continue into provider setup after the source passes static checks. Before creating anything, the CLI lists the resources and asks for confirmation.
The complete WorkOS, Resend, and Stripe selection does the following:
- Creates a Convex project and cloud development deployment.
- Uses Convex's AuthKit development integration to create and configure the WorkOS environment.
- Creates the WorkOS webhook for the generated Convex HTTP endpoint.
- Stores the entered full-access Resend API key for the generated app and uses
it to create the Resend webhook. Enter it through the masked prompt or
supply it as
CREATE_APP_RESEND_API_KEY. - Asks whether to use a sandbox from the Stripe Dashboard or create a temporary claimable sandbox. The Dashboard path is the default. It directs you to the sandbox manager and asks for a sandbox test API key. The temporary path prints its claim link before setup continues and can switch to a Dashboard sandbox if claiming is unavailable.
- Adds the Pro product, the
pro_monthlyUSD 8 price, thepro_yearlyUSD 80 price, a customer portal configuration, and the required webhook to the selected Stripe sandbox. - Writes ignored local environment files at
.env.local,apps/app/.env.local, andpackages/backend/.env.local. Server secrets are also stored on the Convex development deployment. - Pushes the configured Convex functions once more so
bun run devcan start with the complete environment.
The default [email protected] sender only delivers to the email address
associated with the Resend account. Use a sender on a verified domain for other
recipients.
Stripe automatic tax is not enabled. Configure registrations and tax behavior before using the billing flow in production.
Stripe does not require live account activation to use a Dashboard sandbox.
Create one from the account picker under Switch to sandbox > Manage sandboxes,
then copy a restricted test key from Developers > API keys. A standard
sk_test_ sandbox key also works, but a restricted key is preferable.
Setup progress lives in the ignored .starter/setup-state.json. The file
contains resource IDs and stage status, not API keys or webhook secrets. Resume
an interrupted local run with:
bun run /Users/markus/Dev/create-app/src/index.ts --resume ./acme-booksThe published command is:
bunx @mrk-us/create-app --resume ./acme-booksLocal bunx test
Register the package once:
bun linkThen link it into a scratch project and invoke the package by its published name:
mkdir -p /tmp/create-app-consumer
cd /tmp/create-app-consumer
bun init -y
bun link @mrk-us/create-app --no-save
CREATE_APP_TEMPLATE_PATH=/Users/markus/Dev/starter-boilerplate \
bunx --bun --no-install @mrk-us/create-appRun bun unlink in this repository when the link is no longer needed.
Checks
bun run validatePackage rehearsal
bun pm packInstall the resulting tarball in a clean scratch project to test the published
create-app executable without publishing it.
Provider prompts enforce the V1 dependency rules. The setup only creates development resources. It does not create production deployments, live Stripe resources, domains, or deployment-platform configuration.
