Every new project, every new machine — same setup. Here's the checklist that gets Claude Code working well from the start.
1. Create CLAUDE.md
Empty project root. Create CLAUDE.md with at minimum:
# Project
[One sentence about what this is]
## Stack
[Language, framework, key libraries — one line each]
## Conventions
- [How you name files]
- [Where different types of code live]
- [Any non-obvious patterns]
## Rules
- Minimal footprint. Only modify files directly required for the task.
- Do not ask for confirmation before making changes. Execute and report.
- Do not push to remote. Commit locally.
- Never claim work is done without showing test output.
You'll add to this as you discover friction points. Start with these four rules — they prevent the most common problems.
2. Create .claude/settings.json
{
"defaultMode": "acceptEdits",
"allowedTools": ["Read", "Write", "Edit", "Bash", "Glob", "Grep"]
}
This removes confirmation prompts for basic file operations. If you want Claude to also be able to fetch URLs, add "WebFetch" to allowedTools.
3. Create tasks/ directory
mkdir -p tasks/history
When you start your first task, Claude can immediately write tasks/current-task.md. This directory is where session state lives.
4. Add to .gitignore (optional)
If you don't want tasks committed:
tasks/
.claude/
If you want tasks committed (useful for teams): don't add them.
5. Write your first task file
cat > tasks/current-task.md << 'END'
## Active Task
goal: "[What you're building first]"
started: $(date -u +%Y-%m-%dT%H:%M:%SZ)
steps:
- [ ] [First step]
- [ ] [Second step]
last_checkpoint: "Starting fresh"
END
Now Claude has a state file to read and update.
The startup prompt
Your first prompt to Claude in any session:
Read CLAUDE.md and tasks/current-task.md. Tell me what task we were working on and what the next step is.
This gets you back on track in under a minute regardless of what happened last session.
What you'll add later
As you work, you'll add to CLAUDE.md:
- Specific libraries to use or avoid
- Testing commands
- Deployment notes
- Gotchas you discovered
Every friction point you hit becomes a rule. Over a few sessions, CLAUDE.md becomes a project-specific configuration that makes Claude significantly more effective on your codebase than it would be on a generic project.
CLAUDE.md templates for different project types: builtbyzac.com/claudemd-templates.html.
Top comments (0)