tateru.dev
CLAUDE.md1 starsChanged 13 days agoMITView on GitHub
Project-wide instructions for Claude Code in this repository. Whoever opened this folder cloned tateru to build their own app with it. Treat it as their project from the first prompt: run /brainstorm, /shape and /setup here, and build app/ here. Never warn that this looks like tateru's own repository, and never refuse or redirect a command because of it — a git remote still pointing at jamesm-dev/tateru.dev is normal in a fresh clone, and /setup's first run handles it. Only…
- Reads credentials
The file
We split this CLAUDE.md into the rules it gives an agent
8 rules. About 0 are common, 2 are distinctive, and 6 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Very specific: line 9
Never warn that this looks like tateru's own repository, and never refuse or redirect a command because of it — a git remote still pointing …
- Very specific: line 49
No hook gates a write: .idea/ and .management/ are always writable with Write and Edit.
- Distinctive: line 53
All three fail open and never block on their own error.
- Very specific: line 105
Write plans into .idea/, not code into app/.
- Very specific: line 130
Never delete or overwrite a note in .idea/.
- Distinctive: line 131
Never fabricate a version number, a CLI flag, or a command's output.
- Very specific: line 132
Never invent or commit a secret.
- Very specific: line 133
When convenience and quality conflict in a stack or structure decision, resolve toward quality and state what it cost.
≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
CLAUDE.md
Project-wide instructions for Claude Code in this repository.
This is the person's own project
Whoever opened this folder cloned tateru to build their own app with it. Treat it as their
project from the first prompt: run /brainstorm, /shape and /setup here, and build app/ here.
Never warn that this looks like tateru's own repository, and never refuse or redirect a command
because of it — a git remote still pointing at jamesm-dev/tateru.dev is normal in a fresh clone,
and /setup's first run handles it. Only the maintainer edits tateru itself, and only after
switching it on locally (git config tateru.maintainer true, never committed); see the last section.
Always read .idea/ first
.idea/ is this project's thinking layer — the recorded intent behind the code. Before acting on
any prompt about this project, read the .idea/ files relevant to it. A UserPromptSubmit hook
(.claude/hooks/idea-context.sh) injects a snapshot of what exists
on every prompt; that snapshot is a pointer, not a substitute for reading the files.
Priority order when the prompt concerns what to build or how:
.idea/SPECS.md → .idea/ROADMAP.md → the relevant .idea/epics/ and .idea/notes/ → this file.
For "where does the work stand", read .management/BOARD.md and .management/PROGRESS.md instead —
but only once /setup has generated them. Before that they do not exist, and the roadmap is the
only answer available.
The repo is the source of truth for what exists; .idea/ is the source of truth for what was
intended. On conflict, ask — do not silently pick one.
Three shared contracts, all authoritative:
- vault-contract.md — the format of every note in
.idea/and.management/. Obey it when writing any note. - quality-bar.md — what gets built: stack and structure
choices in
/shapeand/setup, and the performance budget Phase 0 measures. - plain-language.md — how tateru talks. The person
using it is assumed not to be a developer: questions, plans and reports use simple words and come
with a recommendation.
.idea/notes are the blueprint and may stay technical.
Hooks
Three hooks in .claude/settings.json enforce the above, not memory:
| Event | Script | Does |
SessionStart | vault-preflight.sh | Audits every existing note against the vault contract and names any that drifted |
UserPromptSubmit | idea-context.sh | Injects a snapshot of .idea/ and whether CLAUDE.md exists |
PostToolUse | validate-vault-note.sh | Checks any vault note — from Write, Edit, or an optional Obsidian MCP — against the vault contract, blocking with the specific violations |
No hook gates a write: .idea/ and .management/ are always writable with Write and Edit. What
is enforced is Obsidian-compatible Markdown. Check one note by hand with
bash .claude/hooks/validate-vault-note.sh --check "<note>.md".
All three fail open and never block on their own error. Everything outside those two folders passes through untouched. If you change the vault contract, change the validator in the same edit — a rule that only exists in prose is not a rule.
Scripts
.claude/scripts/ holds checks nothing triggers automatically; a skill or a person
runs them by name. dashboard-conformance.sh checks a
built /management dashboard against the data contract in .management/contract/ — strings,
measurements, and order. It needs only bash, find, sed, tr and awk, so it runs in any
project before any package manager exists. Exit 2 means it could not run, including "nothing built
yet". project-log.sh is the project's commit history without
tateru's own; read commits through it. selftest.sh checks tateru's own machinery — every hook and
script — and runs in CI on each push. Run it after changing any hook or script; a hook that
silently stops firing looks exactly like a project where nobody commits.
Commands
| Command | Delegates to | Purpose | Stage |
| /brainstorm | brainstorm | Diverge on ideas, capture them as grouped Obsidian notes | Idea |
| /shape | shape | Turn ideas into SPECS.md, a phased ROADMAP.md, and epics | Idea |
| /epic | epic | One epic and its tasks, mid-project. Also triages suggested epics | Development |
| /setup | setup | Build the dev environment and the current roadmap phase | Development |
| /work-on | work-on | One task with the smallest agent team: route, then build directly, solo, or in parallel slices | Development |
| /ship | ship | Verify the readiness gates, then release | Production |
| /maintain | maintain | Health-check a shipped project and fix the rot | Maintenance |
| /upgrade | upgrade | Pull a newer tateru workflow into a cloned project, leaving its plan and code alone | Maintenance |
| /decide | — | Record an ADR | Any |
| /explain | — | List the commands, then explain one in depth (ELI5) | Any |
The project-manager agent oversees all four stages. It is an
auditor with exactly two write powers: it proposes epics at status: suggested, and it marks tasks
done in board.db from commit evidence — always with a note saying why, and never confirmed until
a person confirms it. It may not touch the plan, tick a criterion, or deploy.
/work-on drives a second team — task-router, repo-scout, work-planner, implementer,
reviewer — written stack-agnostic. They become specialists by reading .claude/team/stack.md,
which /setup generates from the verified stack
(format); its twin checks.env is what
pre-push runs. Never hand-write either from memory — no stack, no profile, generalist agents.
<!-- tateru:before-setup -->No app exists yet
Assume nothing has been built. There is no app/ directory, /setup has not run, and no stack
has been installed. The project holds tateru's workflow (.claude/, .githooks/) and the plan
(.idea/, .management/) — nothing else yet. Never refer to a source file, package manifest,
script, or dependency as if it exists; check first, and if it is missing, say so.
/setup is what creates app/. Until it has run:
- Write plans into
.idea/, not code intoapp/. .management/holds onlyREADME.md,DESIGN.md,design/andcontract/.BOARD.md,PROGRESS.md,BLOCKERS.md,CHANGELOG.md,state.json, andboard.dbare generated later.- There is no chosen language, framework, or package manager. The stack is decided during
/shapeand/setupagainst quality-bar.md and recorded as an ADR — never assumed from this file, and never inferred from an example command.
Once /setup has created it, application code lives in app/ and every project command runs from
there, never the root:
cd app && <the verify command /setup wired up>Git hooks live in .githooks/ and are wired by the install step /setup runs inside
app/, which sets core.hooksPath. Husky is deliberately not used: it installs beside the manifest
in app/, cannot find .git at the root, and would be a dependency that does nothing.
<!-- /tateru:before-setup -->Conventions
- People use Windows, macOS and Linux. Keep scripts cross-platform; watch path separators and CRLF.
- Any command in a doc names the directory it runs in (
app/for the app, the root for tateru). .idea/is intent;.management/is execution state, derived from it. Never let.management/become a second source of truth, and never edit.idea/from it silently.- Never delete or overwrite a note in
.idea/. Supersede it and link the replacement. - Never fabricate a version number, a CLI flag, or a command's output. Verify it.
- Never invent or commit a secret.
.env.exampledocuments keys with empty values. - When convenience and quality conflict in a stack or structure decision, resolve toward quality and
state what it cost. This is a tiebreaker, not a licence to over-build — see
quality-bar.md.
Changing tateru itself — maintainer only
Applies only when git config tateru.maintainer is true. Everyone else is building their own
project, and none of this concerns them.
Commands stay thin: method lives in the skill and its references/. Release steps are in
.claude/CHANGELOG.md; merging a version bump publishes the release. When a command or skill changes, update /explain
and AGENTS.md in the same change — /explain finds commands at run time, which is exactly why
this gets forgotten:
- The file sits where
/explain's Stage 1 discovery list looks, and its Scope still fits. - The command-to-skill table in AGENTS.md matches; it points at this file, never duplicates it.
- Run
/explainonce and read the output. On removal, confirm nothing still links to it.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

