Docs
Create a kit
kit.json and, optionally, files that get copied into the project. The fastest way is to generate it from a project you already like.Don't use the terminal? Let your agent do it
Copy a prompt and paste it into your agent: it runs the commands and explains each step.
- 1Open your agent in a folder
- 2Paste the prompt
- 3Answer its questions
Inside a Next.js, Expo, Hono, WXT or Vite project:
$ npx create-first-commit createIt detects the following and lets you review it before writing anything:
- The framework, and with it the official command that creates the base project.
- The libraries from the catalog you use (shadcn, Kokonut UI, Motion, Sentry…), which become options with their rule in
AGENTS.md. - Your own dependencies, minus the ones the base template already brings.
- Your skills (from
skills-lock.json), MCP servers (.mcp.json) and variables (.env.example; it never reads.env). - Your
AGENTS.mdinstructions, minus what first-commit or the scaffolder generate. - Your own files you choose to copy (config, utilities). None by default.
The kit ends up in ./kit. Without questions: npx create-first-commit create -y --name my-kit --include src/lib. If the framework isn't recognized, pass the base command with --base "…".
$ npx create-first-commit create --blank my-kitCreates a minimal kit.json with the schema linked, so your editor autocompletes it. Every field is in the reference.
A kit can start from another one and declare only what changes. Lists (dependencies, skills, tasks) are added up, objects (env, mcp, libraries) are merged, instructions are appended, and an option with the same id is merged field by field with the parent's (so you can change just its default).
{
"name": "landing-dark",
"version": "0.1.0",
"extends": "landing-next",
"title": "Dark landing page",
"libraries": { "addons": ["magicui"] },
"instructions": "## Style\n\nEverything in dark mode."
}The parent can be an official kit, a repo (user/repo/kit) or a local path, with an optional version (landing-next@1.0.0). Up to 3 levels are allowed.
$ npx create-first-commit ./kit my-project --dry-runShows every command and file without running anything. Drop --dry-run to create the project for real, and build it before sharing it.
Push the kit to a public GitHub repo and publish it from the terminal (with a token from your account) or from the website:
$ npx create-first-commit login$ npx create-first-commit publish ./kitIt appears in the catalog as your-user/kit-name, pinned to the published commit and with its integrity hash. Without publishing, it can also be installed straight from GitHub:
$ npx create-first-commit your-user/your-repo/kitEvery change bumps version (semver) in kit.json and creates a git tag with that number. That way a specific version can be installed: npx create-first-commit your-user/your-repo/kit@v1.2.0. To appear in the official catalog, open a PR that adds your kit to registry/kits/.
npx create-first-commit test ./kit installs the kit with several combinations of options in temporary folders, runs its check (verify.command, build by default) and writes a report. For the Verified badge, run it in GitHub Actions: the report is signed with the repository's OIDC token, so nobody can fake it.
# .github/workflows/kit.yml
name: Verify kit
on: { push: { branches: [main] } }
permissions: { contents: read, id-token: write }
jobs:
verify:
strategy: { matrix: { os: [ubuntu-latest, macos-latest] } }
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: Marlon-Chaviano/first-commit/actions/verify@main
with: { kit: ./kit }To choose which combinations to test, define verify.matrix in kit.json (see the reference). Unverified community kits show a warning before running and, with -y, require --allow-commands.
- Write instructions as concrete rules ("add dependencies with npx expo install"), not as descriptions.
- Use catalog libraries instead of loose dependencies: they bring their skill, their config and their rule.
- What can't be automated (creating an account, pasting a key) goes in
setupTasks, not in the instructions. - Prefer official skills from each tool's own organization.
- Don't copy your whole app: a kit is a starting point, not a clone.
A kit runs commands on the machine of whoever installs it. The CLI always shows the full plan and, unless you pass -y, asks for confirmation. Review third-party kits as you would review a script.