Team GEMINI.md: shared AI conventions for multi-developer projects
Read the field note below to see how we apply this pattern in real Gemini CLI projects.
Turn this cable into a shipping system.
We help teams deploy reliable AI workflows with architecture, implementation, and hardening support.
Team GEMINI.md: shared AI conventions for multi-developer projects
When one engineer's Gemini CLI session produces different code shape than another's, the root cause is almost always context — not the tool. One person has a GEMINI.md with naming conventions; another doesn't. One has prohibited patterns listed; another discovers them through code review.
What we tried
We added a project-level GEMINI.md to the repo and had everyone pull it. That solved the conventions problem immediately. The remaining problem was personal preferences — verbosity, response language, preferred explanation style — that varied between team members.
What happened
We split the problem: project conventions go in the checked-in GEMINI.md; personal preferences go in each developer's ~/.gemini/GEMINI.md. The project file is a team contract. The user file is personal configuration.
What we learned
Two-layer structure:
repo/GEMINI.md ← checked into git — the team contract
~/.gemini/GEMINI.md ← local only — personal preferences
Both files load automatically. Conflicts resolve in favor of the project file.
What the project GEMINI.md should contain:
# Stack
Next.js 15 App Router, TypeScript strict, Tailwind CSS v4.
Path alias: @/* → src/*.
# Code conventions
- Functional components only, no class components
- `cn()` from src/lib/utils.ts for conditional classes
- No inline styles
- No `any` type without a comment explaining why
# File placement
- Components → src/components/
- Page-level logic → src/app/ route files only
- Shared utilities → src/lib/
- Never create a new file when editing an existing one solves the problem
# Commit conventions
Imperative subject line, under 72 chars. Format: `type(scope): message`
Types: feat, fix, refactor, docs, chore
# Do not
- Add console.log without removing it
- Install new dependencies without noting it in your PR description
- Suggest class components
What goes in the user-level file:
Personal preferences that don't affect code output:
# Personal preferences
- Keep explanations short — I'll ask follow-up questions if I need more
- When suggesting multiple approaches, lead with your recommendation
- Preferred language: English
Onboarding new developers:
Make GEMINI.md part of the onboarding checklist alongside .env.example and SSH key setup. A new developer who pulls the repo and has no GEMINI.md awareness will produce inconsistent output immediately. A new developer who reads the file understands team conventions before they write their first line of AI-assisted code.
Keeping it current:
GEMINI.md drifts if no one owns it. Assign ownership the same way you'd assign ownership of CONTRIBUTING.md — a specific person, a review in the same PR when conventions change. A stale GEMINI.md that contradicts the codebase is worse than no GEMINI.md.
Review it in retros:
Once a sprint, ask: what did Gemini CLI produce that required rework? If there's a pattern, add a rule. If a rule isn't preventing anything, cut it.
Quick answers
What do I get from this cable?
You get a dated field note that explains how we handle this team-setup workflow in real Gemini CLI projects.
How much time should I budget?
Typical effort is 20 min. The cable is marked intermediate.
How do I install the artifact?
This cable is guidance-only and does not ship an installable artifact.
How fresh is the guidance?
The cable is explicitly last verified on 2026-04-17, and includes source links for traceability.
More from @frenxt
Your first GEMINI.md
Every session without a `GEMINI.md` starts from zero. You re-explain your stack. You re-explain your conventions. You catch mistakes that your context would have prevented. A well…
Install Gemini CLI and run your first prompt
The first time we ran Gemini CLI we expected it to behave like a browser-based chat. It doesn't. It's a terminal agent that reads your project, runs commands, and edits files — th…