Metadata-Version: 2.4
Name: cast-by-matt
Version: 0.1.0
Summary: Spin up projects in seconds — clone your own repos as templates, layer on add-ons, and land in your editor.
Author-email: Matthew Garcia <gmatt.devs@gmail.com>
License-Expression: MIT
License-File: LICENSE
Keywords: cli,project-generator,scaffolding,templates
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Software Development :: Code Generators
Requires-Python: >=3.10
Requires-Dist: jinja2>=3.1
Requires-Dist: questionary>=2.0
Requires-Dist: rich>=13.0
Requires-Dist: typer>=0.12
Provides-Extra: dev
Requires-Dist: pytest>=8; extra == 'dev'
Requires-Dist: ruff>=0.15; extra == 'dev'
Description-Content-Type: text/markdown

# cast — outline

Spin up projects in seconds. Save your own repos (local or from GitHub) as templates, scaffold new projects from them, layer on add-ons like Tailwind, Supabase, or Prisma, and land straight in your editor.

## Install

```sh
coming soon!
```

## Usage

Run `cast` with no arguments for the interactive menu:

```sh
cast
```

Or use it directly:

```sh
cast init myapp nextjs      # scaffold 'myapp' from the 'nextjs' template
cast add nextjs ~/code/my-starter   # save a local directory as a template
cast list                   # list saved templates
cast info nextjs            # show a template's variables, add-ons, and docs
cast remove nextjs          # delete a template
cast starter                # install the bundled starter templates
```

`init` is fully scriptable: `--var KEY=VALUE` sets template variables without prompting, `--addons tailwind,prisma` runs add-ons, and `--open` launches your editor.

### Works with AI coding agents

Every command runs headless, so agents like Claude Code can drive `cast` directly: discover templates with `cast list --json`, inspect a template's variables and add-ons with `cast info <template> --json`, then scaffold with `cast init <name> <template> --var KEY=VALUE --addons ...`. No plugin needed — the CLI is the integration.

New here? Just run `cast` — on first run it offers to install two starter templates: `starter`, a dependency-free mini site whose README explains how templating works, and `web`, a minimal Vite app. Scaffold one and you've seen the whole workflow.

Templates live in `~/.project_templates`. When scaffolding, files are rendered with Jinja2 (`{{ project_name }}` is available), `git init` runs automatically, and dependency installs (`npm install`, `pip install`, `cargo build`, …) are detected and run for you.

## Template manifest (`cast.json`)

Optionally drop a `cast.json` at the root of a template to customize scaffolding. Every field is optional, and templates without a manifest work exactly as described above. The manifest itself is never copied into generated projects.

```jsonc
{
  // shown in the template picker and `cast list`
  "description": "Next.js 15 + App Router starter",

  // prompted at init; every value is available to Jinja, e.g. {{ db_name }}
  "variables": [
    { "name": "db_name", "prompt": "Database name", "default": "app_db" }
  ],

  "addons": {
    "recommended": ["tailwind", "shadcn"],  // pre-checked in the add-on picker
    "supported": ["tailwind", "shadcn", "prisma"]  // limits built-ins shown; omit to show all
  },

  // replaces automatic install detection (git init still always runs);
  // use [] to skip installs entirely
  "post_init": ["npm install", "cp .env.example .env"],

  // printed after scaffolding so you never hunt for docs again
  "docs": ["https://nextjs.org/docs"]
}
```

Without a TTY (scripts, CI), variables fall back to their defaults instead of prompting.
