Help us improve
Share bugs, ideas, or general feedback.
From kickstart
Create and author kickstart templates for project scaffolding. Use when the user wants to create a kickstart template, write template.toml, use Tera templating, add conditional questions, set up hooks, or build a project generator.
npx claudepluginhub tarqd/skills --plugin kickstartHow this skill is triggered — by the user, by Claude, or both
Slash command
/kickstart:creating-kickstart-templatesThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill guides you through creating kickstart templates for project scaffolding.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Breaks plans, specs, or PRDs into thin vertical-slice issues on the project issue tracker using tracer bullets. Useful for converting high-level work into grabbable implementation tickets.
Share bugs, ideas, or general feedback.
This skill guides you through creating kickstart templates for project scaffolding.
A kickstart template is a directory containing:
my-template/
├── template.toml # Configuration (required)
├── {{project_name}}/ # Template files with variables
│ ├── README.md
│ └── src/
│ └── main.py
├── validate_vars.py # Pre-gen hook (optional)
└── setup.sh # Post-gen hook (optional)
template.toml:
name = "My Template"
kickstart_version = 1
[[variables]]
name = "project_name"
default = "my-project"
prompt = "Project name?"
{{project_name}}/README.md:
# {{ project_name | title_case }}
Welcome to {{ project_name }}!
Variables are defined in [[variables]] sections:
# String variable
[[variables]]
name = "project_name"
default = "my-project"
prompt = "Project name?"
validation = "^[a-z][a-z0-9-]+$" # Optional regex
# Boolean variable
[[variables]]
name = "use_docker"
default = true
prompt = "Include Docker support?"
# Choice variable
[[variables]]
name = "database"
default = "postgres"
prompt = "Which database?"
choices = ["postgres", "mysql", "sqlite"]
# Derived variable (computed, not prompted)
[[variables]]
name = "project_slug"
default = "{{ project_name | slugify }}"
derived = true
Use only_if to ask questions based on previous answers:
[[variables]]
name = "database"
default = "postgres"
prompt = "Which database?"
choices = ["postgres", "mysql", "sqlite", "none"]
[[variables]]
name = "pg_version"
default = "15"
prompt = "PostgreSQL version?"
choices = ["15", "14", "13"]
only_if = { name = "database", value = "postgres" }
Use {{ variable }} in filenames and content:
{{project_name}}/src/{{module_name}}.py# {{ project_name | title_case }}Windows note: Use $$ instead of | in filenames:
{{title $$ slugify}}.md → my-title.md
| Filter | Result |
|---|---|
upper_camel_case | MyProject |
camel_case | myProject |
snake_case | my_project |
kebab_case | my-project |
shouty_snake_case | MY_PROJECT |
title_case | My Project |
template.toml with variables{{ variable }} placeholderskickstart . -o test-outputkickstart validate template.tomlRemove files based on user choices:
[[cleanup]]
name = "use_docker"
value = false
paths = ["{{ project_name }}/Dockerfile", "{{ project_name }}/docker-compose.yml"]
For files with Tera-like syntax (HTML, JSON):
copy_without_render = [
"{{project_name}}/templates/*.html",
"*.json"
]
[[pre_gen_hooks]]
name = "validate"
path = "validate.py"
[[post_gen_hooks]]
name = "install deps"
path = "setup.sh"
only_if = { name = "auto_install", value = true }