CLAUDE.starter.md — the new-repo starter template
CLAUDE.md: <PROJECT NAME>
Starter template. Copy this to the root of a new repo asCLAUDE.md, delete this line, and fill the<…>placeholders. It wires a fresh project into Tjakoen's personal standards (how I build with AI, voice, badges, AI-use posture) from day one. The standards live publicly athttps://tjakoen.github.io/standards(source: thestandards/dir in the portfolio repo) — reference them, don't fork them. The published index is the map; point this repo at it rather than copying files that will drift. Make it tool-agnostic. SymlinkAGENTS.md → CLAUDE.md(ln -s CLAUDE.md AGENTS.md) so any agent that reads the cross-toolAGENTS.mdconvention (Codex, Cursor, Copilot, Gemini CLI, …) gets the same instructions Claude Code reads fromCLAUDE.md. One file, every tool.
What this is
How I work here (non-negotiables)
The full rulebook is AI-DEVELOPMENT.md (the standards) + SESSION-LOOP.md (the session mechanics, memory, handoff, model economy). The short version for this repo:
- I build with AI, out loud, on purpose. The work is co-authored with Claude as a practice —
not a git trailer (see the commit convention below; no Co-Authored-By lines). The receipt is the README badge + footer and the flagship note, not commit metadata.
- AI multiplies, it doesn't add. The AI types; I engineer. I keep the judgment, the architecture,
and the final call. If I can't explain it, I didn't build it.
- Definition of done = code + tests + docs synced + green gate. <Name the check/test commands for
this repo.> Not one of these — all of them.
- Write the decision down. Keep a short record of why non-obvious choices were made so the next
session inherits the reasoning instead of relitigating it (format: SESSION-LOOP §4).
- Hand off when a task finishes. Gate green, committed, decisions recorded → emit a compact
handoff prompt for the next session (SESSION-LOOP §5).
Voice (for any prose in my name)
Follow VOICE.md. The short version: honest, quirky, self-deprecating, concrete, opinionated-with-the-why; no backticks in prose; contractions in casual writing, expanded in formal docs. Never publish a claim I haven't earned; keep money vague.
README presentation (do this once, at repo start)
Follow README-STANDARD.md. In short:
- Title emoji. One emoji before the H1 that fits this repo (my repos lean a bread/baking family).
- A curated badge row (~5–7, honesty rule: only true, ideally verifiable badges), always led by:
[](https://tjakoen.github.io/notes/ten-times-zero)
- The text footer at the bottom of the README:
--- 🤖 Built with Claude. I don't prompt and pray, I prompt and prove. Every commit here is co-authored with an AI, on purpose. How I actually work with AI, receipts and all →
The fastest way: paste the "reusable prompt" from README-STANDARD.md into a Claude session here, and it reads this codebase and proposes the emoji + honest badge set for you.
Commit convention
No AI attribution trailers on commits (Co-Authored-By: Claude etc.). The receipt behind the "built with Claude" claim is the README badge + footer and the flagship note, not commit metadata.
Enforce it, do not assume it. Set this in ~/.claude/settings.json:
{ "includeCoAuthoredBy": false }Claude Code appends the trailer by default, so without that key an agent will add it while believing it is following house style. This paragraph used to say the rule was "enforced globally via attribution settings" and named no setting. It was set on no machine, so the rule quietly did not hold: one repo accumulated 28 trailered commits before anyone noticed, and clearing them meant rewriting published history. A convention that names no mechanism is a preference, not enforcement.
Check a repo with git log -E --grep="^Co-Authored-By:" --oneline before trusting it is clean. Anchor the pattern to the line start: unanchored, it also matches any doc that merely names the trailer, this section included, so a clean repo reports itself dirty.