newproject
Composes a project from the templates in this organization: infra at the root, then backend-python, frontend-svelte and caddy on top, each with its own answers file in .copier/.
source ~/projects/templates/newproject/shell.sh
newproject ~/projects/my-thing
updateproject # every part
updateproject backend # one part
newproject asks for the parts, the backend language, the frontend framework and how the frontend is served, then hands over to each template's own questions. Every prompt has a flag for non-interactive use:
newproject ~/projects/my-thing --parts backend,frontend,caddy --backend python --frontend svelte --serve bun --defaults
One part alone is rendered at the root of the project; two parts live in backend/ and frontend/. After rendering, make env creates .env and every docker-compose.override.yml from their examples. updateproject needs a clean working tree and commits each part's update separately, so the next part starts from a clean tree again; conflicts stay in those commits for you to resolve. Templates are cloned from https://git.kotikot.com/templates unless TEMPLATES_DIR points at a directory with local checkouts; TEMPLATES_REF=HEAD renders their working trees instead of the latest tag.
Renovate
A new repo needs the renovate, wait-3d and deps-code labels before the bot
ever runs against it: Renovate fails on a label that does not exist, and until
today these were created by hand for every repo.
giteaproject ms-agents/my-thing
Then drop a renovate.jsonc into the repo root with nothing but the shared
preset:
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": ["local>templates/renovate"]
}
Extending the preset does not subscribe the repo to anything. The bot walks
an explicit list, so the repo also has to be added to repositories in
projects/personal/renovate/renovate-config.js of infra/komodo, and the
renovate team of its organization needs write access to it. Miss that step and
the config sits there doing nothing, silently.
Requires uv; bun, docker and pre-commit are used by the generated projects.