Template
A TypeScript monorepo starter with pnpm workspaces, Turborepo, oxlint, oxfmt, tsdown, Vitest, Changesets, and CI.
Highlights
Monorepo starter
gh repo create my-project --template stijnvanhulle/templateFork it and start writing code
Build, test, lint, format, release, and CI are set up from the first commit.
- pnpmTurborepooxlintoxfmttsdownVitestChangesetsCodecov
Tooling, already wired
The same setup in every project, so they stay consistent.
CI on every push
GitHub Actions runs lint, type-check, and test.
- 3 days
Upgrades soak first
taze waits three days before a new release lands.
Releases with provenance
Changesets open a Version Packages PR and publish to npm.
- Claude CodeCodexCopilotCursorGemini
One AGENTS.md for every agent
Symlinks keep one source instead of drifting copies.
Hooks for agents
Dependencies install on session start, and files format on edit.
What it is
A TypeScript monorepo starter. Fork it, update a few fields, and you get a repository with build, test, lint, format, release, and CI workflows.
Why I built it
I kept copying the same configuration between repositories: the linter, formatter, test runner, release flow, and CI workflow. This template puts that setup in one repository so the projects I build stay consistent.
Tooling
pnpm workspaces and Turborepo run the monorepo. oxlint and oxfmt handle linting and formatting, tsdown builds the packages, and Vitest runs the tests with coverage reported to Codecov. A GitHub Actions workflow runs lint, type-check, and test on every push.
Releases go through Changesets: add a
changeset, and when it lands on main a release workflow opens a Version Packages PR that
publishes the affected packages to npm with provenance.
Dependency upgrades run through taze with a
three-day maturity period, so new releases soak before they land.
Set up for AI agents
AGENTS.md is the canonical instruction file, and AGENT.md is a symlink to it, so every
tool reads from one source instead of drifting copies.
Claude Code, Codex,
Copilot, Cursor,
Gemini, and other AGENTS.md runtimes all read
from it. Hooks under .claude/ install dependencies and format on edit.
Shared skills, rules, commands, and subagents live in a separate project, agents.
Start a new project
gh repo create my-project --template stijnvanhulle/template
Fork it, update the package fields, and start writing code.