project-kit
Generic project scaffolding platform built on declarative manifests, capability overlays, upstream ecosystem generators, and code patchers.
gem install project_kit
project-kit new ruby-gem my_gem
project-kit new rails-app my_app
project-kit new ruby-script my_script
project-kit new ts-cli color-tool
Why
New repositories repeatedly require the same setup work: README, LICENSE, .editorconfig, .gitignore, AGENTS.md, mise.toml, CI workflows, and project-type-specific bootstrapping. Existing generators like bundle gem and rails new solve only part of the problem. project-kit composes them with shared conventions so every repo starts from the same baseline.
How it composes
1. Run upstream initializer (bundle gem, rails new, ...) ← when a manifest declares one
2. Apply shared baseline templates ← README, LICENSE, .editorconfig, AGENTS.md
3. Apply language overlay ← templates/ruby, templates/ts
4. Apply project-type overlay ← templates/<id>
5. Apply capability overlays ← templates/capabilities/<set> per enabled flag
6. Generate project-local mise.toml ← from manifest.mise
7. Run patchers ← imperative cleanup in Ruby
Each step is composable. Logic lives in Ruby; manifests describe structure only.
Built-in project types
| Type | Initializer | Default capabilities |
|---|---|---|
ruby-gem | bundle gem | mise, github-actions, coverage |
rails-app | rails new | mise, github-actions, coverage |
ruby-script | (template-only) | mise, github-actions, coverage |
ts-cli | (template-only) | mise, github-actions, coverage |
Capabilities
Capability flags map to optional template overlays and initializer arguments:
| Flag | Effect |
|---|---|
--cli / --no-cli | toggle CLI scaffolding |
--typed / --no-typed | add inline RBS / Sorbet support |
--coverage / --no-coverage | wire coverage tooling (SimpleCov / Vitest v8) |
--github-actions / --no-github-actions | emit .github/workflows/ci.yml |
--mise / --no-mise | emit project-local mise.toml |
Each manifest declares which capabilities it supports and which are on by default. Flags on unsupported capabilities are rejected.
Reading order
- Manifest schema reference — every field, every constraint
- Template overlay model — how files compose
- Adding a new project type — the recipe
Source
- GitHub: https://github.com/andrewmcodes/project-kit
- License: MIT