This is an example CLAUDE.md file showing how to configure Claude Code for your project.
- Stack: React, TypeScript, Node.js
- Test Command:
npm test - Lint Command:
npm run lint - Build Command:
npm run build
src/components/- React componentssrc/hooks/- Custom React hookssrc/utils/- Utility functionssrc/api/- API client codesrc/mcp/- MCP server implementationsduckdb/- DuckDB init scripts and examplestests/- Test files
- TypeScript strict mode enabled
- Prefer
interfaceovertype(except unions/intersections) - No
any- useunknowninstead - Use early returns, avoid nested conditionals
- Prefer composition over inheritance
- Branch naming:
{initials}/{description}(e.g.,jd/fix-login) - Commit format: Conventional Commits (
feat:,fix:,docs:, etc.) - PR titles: Same as commit format
- NEVER swallow errors silently
- Always show user feedback for errors
- Log errors for debugging
- Always handle: loading, error, empty, success states
- Show loading ONLY when no data exists
- Every list needs an empty state
- Disable buttons during async operations
- Show loading indicator on buttons
- Always have onError handler with user feedback
- Write failing test first (TDD)
- Use factory pattern:
getMockX(overrides) - Test behavior, not implementation
- Run tests before committing
Before implementing ANY task, check if relevant skills apply:
- Creating tests →
testing-patternsskill - Building forms →
formik-patternsskill - GraphQL operations →
graphql-schemaskill - Debugging issues →
systematic-debuggingskill - UI components →
react-ui-patternsskill - SQL/Analytics/DuckDB →
duckdb-analyticsskill
# Development
npm run dev # Start dev server
npm test # Run tests
npm run lint # Run linter
npm run typecheck # Check types
# Docker Services
docker compose -f docker-compose.dev.yml up -d # Start all services
docker compose -f docker-compose.dev.yml up duckdb -d # Start DuckDB only
# Git
npm run commit # Interactive commit
gh pr create # Create PR- MCP servers in
src/mcp/<server_name>/withpyproject.toml+server.py - Use
uv syncto install dependencies,uv run python -m <module>to run - In
.mcp.json: use absolute paths, not${CLAUDE_PROJECT_DIR}(doesn't resolve on Windows) - Test MCP module loads:
uv run python -c "from module.server import mcp; print('OK')"