Add a Template
Folder structure
Templates follow this structure:
templates/
<language>/
<category>/
<library>/
<template-id>/
tempora.json
README.md
... starter filesExample:
templates/typescript/frontend/nextjs/next-tailwind/tempora.json
Every template needs a tempora.json — this is what registers it in the CLI registry.
{
"id": "next-tailwind",
"name": "Next.js + Tailwind",
"language": "typescript",
"category": "frontend",
"library": "nextjs",
"description": "Next.js 14 app router with Tailwind CSS preconfigured.",
"tags": ["nextjs", "tailwind", "typescript"],
"version": "1.0.0",
"nextSteps": ["pnpm install", "pnpm dev"]
}| Field | Required | Description |
|---|---|---|
id | ✔ | Unique kebab-case identifier — this is what users type in tempora init <id>. Must be unique across ALL templates. |
name | ✔ | Human readable name shown in the guided selector. |
language | ✔ | Primary language e.g. typescript, javascript, python, rust. |
category | ✔ | Project category e.g. frontend, backend, fullstack, cli, library. |
library | ✔ | Framework or library e.g. nextjs, fastapi, express, angular. |
description | ✔ | One sentence description shown in the CLI. |
tags | ✔ | Array of relevant tags for filtering. |
version | ✔ | The template’s own version in semver format e.g. 1.0.0. Bump this when you update the template files — it is independent of the CLI version. |
nextSteps | — | Commands printed after scaffolding e.g. pnpm install, pnpm dev. |
Important: The
idis the unique identifier for your template. If two templates share the sameidthe build will fail and stop. Choose something specific e.g.next-tailwind,express-prisma-pg,angular-standalone.
README.md
The README.md is synced automatically to this docs site on every build. It must include a Quick Start section showing the install command:
# Template Name
Short description.
## Quick Start
npx tempora-cli init <template-id> my-app
## Stack
- List technologies and versions
## Getting Started
pnpm install
pnpm devYou can add as much detail as you want beyond that — configuration guides, environment variables, deployment instructions, screenshots.
Verify locally
pnpm build
tempora init <template-id> test-outputThe build will validate your tempora.json, check for duplicate IDs, and sync your README to the docs. If it passes you’re good.
Open a pull request
git checkout -b feat/add-your-template
git add .
git commit -m "feat(templates): add your-template"
git push