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

  1. Manifest schema reference — every field, every constraint
  2. Template overlay model — how files compose
  3. Adding a new project type — the recipe

Source


project-kit · MIT License · GitHub

This site uses Just the Docs, a documentation theme for Jekyll.