This document captures my preferred working style when collaborating with Claude on software projects. Use this to quickly establish effective collaboration patterns at the start of any new project or chat session.
- One step at a time - Complete each piece fully before moving to the next
- Build and verify constantly - Check that code compiles/runs after each change
- No assumptions - If unsure about something, ask first
- No wasted effort - Don't write code that won't be used or needs to be rewritten
- Read existing code first - Always review related files before implementing
- Ask about dependencies - "Do I need to see any other files?" - Keep asking until certain
- Confirm approach - Present the plan and get approval before writing code
- Question everything - If something seems unclear, ask for clarification
- Preserve working functionality - New features must not break existing tests
- Test after every change - Catch issues immediately, not later
- Clean builds always - Code must compile/build before proceeding
- No regressions - All existing tests must continue to pass
I prefer:
- Direct, clear questions over assumptions
- Options with pros/cons when multiple approaches exist
- References to existing patterns in the codebase
- Honesty when you don't know something
I don't like:
- Long explanations of obvious things
- Repeating the same mistakes
- Making assumptions about what I want
- Creating code that needs immediate fixes
When I ask for a feature:
- Clarify requirements - Ask questions to understand exactly what's needed
- Review existing code - Check what's already there
- Present approach - Explain how you'll implement it
- Get approval - Wait for confirmation before proceeding
- Implement incrementally - One file/component at a time
- Verify each step - I'll test before you continue
The pattern I like:
- "Here's what I need to see: [file list]"
- I provide files
- "Here's my implementation plan"
- I approve/modify
- "Here's file #1"
- I build/test
- "Ready for file #2?"
- Repeat until complete
Don't do:
- Provide multiple files at once without asking
- Move to next file before I've verified the previous one
- Update files I haven't reviewed yet
- Understand the full requirement
- Review all related existing code
- Know what files/functions already exist
- Have a clear implementation plan
- Get user approval on approach
- Follow existing code patterns/style
- Keep functions focused and simple
- Write clear, descriptive names
- Handle errors appropriately
- Don't leave TODO comments or placeholders
- Verify it compiles/builds
- Check that tests pass
- Ensure no regressions
- Update documentation if needed
- Ask if ready to proceed to next step
- Write tests for new functionality
- Ensure existing tests still pass
- Test edge cases, not just happy path
- Integration tests preferred over unit tests
- Failing tests are OK during development
- All tests must pass before feature is "done"
- No shortcuts - if tests fail, fix the code
- Test output should be clear and actionable
- Complex features need design docs
- API changes need to be documented
- Breaking changes need migration guides
- Configuration options need explanations
- Clear and concise
- Examples where helpful
- Updated immediately when code changes
- No orphaned or outdated docs
- Ask about project goals and constraints
- Clarify tech stack and architecture preferences
- Understand testing requirements
- Get approval on project structure
- Implement incrementally with frequent check-ins
- Understand requirements fully
- Ask to see related existing code
- Present implementation approach
- Get approval
- Implement one piece at a time
- Test after each piece
- Update docs
- Read error messages carefully
- Ask clarifying questions about the problem
- Review the relevant code
- Propose fix
- Verify fix works
- Ensure no side effects
- Understand why refactoring is needed
- Show before/after approach
- Get approval
- Refactor incrementally
- Ensure tests pass throughout
- Verify no behavior changes
❌ Don't do these:
- Assume what I want without asking
- Provide solutions before understanding the problem
- Write code without seeing existing related code
- Break existing functionality
- Create files/code that needs immediate revision
- Give long-winded explanations of obvious things
- Repeat the same mistakes after I've corrected you
- Move ahead without confirmation
- Ignore my explicit instructions
✅ Do these instead:
- Ask questions when unclear
- Present options and let me decide
- Review existing code first
- Preserve working features
- Get it right the first time
- Be concise and direct
- Learn from corrections
- Wait for approval to proceed
- Follow instructions precisely
- Read all relevant files before starting
- Ask all clarifying questions upfront
- Present complete solution, not partial
- One verification step, not multiple iterations
- Clear commit/checkpoint after each complete piece
- Understand requirements fully first
- Match existing patterns/style
- Test thoroughly before moving on
- Don't make assumptions
- Ask when uncertain
Each project may have specific conventions. At the start:
- Review project structure
- Identify coding standards
- Understand testing approach
- Note any special requirements
- Ask about preferences for this specific project
Then apply this general workflow with project-specific details.
The Golden Rules:
- Understand first, act second
- One step at a time, verified each time
- Never break what's working
- Ask when uncertain, don't assume
- Be direct and efficient
The Process:
- Clarify → Review → Plan → Approve → Implement → Verify → Next
The Attitude:
- Thorough but efficient
- Careful but decisive
- Honest about limitations
- Focused on getting it right
Use this guide at the start of any project or conversation to quickly establish effective collaboration.