Files
kleinanzeigen-bot/.coderabbit.yaml

188 lines
6.0 KiB
YAML

# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
# CodeRabbit Configuration for Kleinanzeigen Bot
# Maintains project-specific rules for English code and translation system
# =============================================================================
# GLOBAL SETTINGS
# =============================================================================
language: "en"
tone_instructions: "Be strict about English-only code and translation system usage. Non-code may be in german. Focus on simple, maintainable solutions. Avoid unnecessary complexity and abstractions."
enable_free_tier: true
# =============================================================================
# REVIEWS
# =============================================================================
reviews:
profile: "assertive" # More feedback to catch complexity
high_level_summary: true
review_status: false
commit_status: true
changed_files_summary: true
sequence_diagrams: true
estimate_code_review_effort: true
assess_linked_issues: true
related_issues: true
related_prs: true
suggested_labels: false
suggested_reviewers: true
in_progress_fortune: false
poem: false
# Path filters to focus on important files
path_filters:
# Source code
- "src/**/*.py"
- "tests/**/*.py"
- "scripts/**/*.py"
# GitHub automation - workflows, dependabot, templates, etc.
- ".github/**"
# Root config files
- "pyproject.toml"
- "*.yaml"
- "*.yml"
- "**/*.md"
# Exclude build/cache artifacts
- "!**/__pycache__/**"
- "!**/.pytest_cache/**"
- "!**/.mypy_cache/**"
- "!**/.ruff_cache/**"
- "!dist/**"
- "!build/**"
- "!*.egg-info/**"
# Exclude IDE-specific files
- "!.vscode/**"
- "!.idea/**"
- "!.DS_Store"
# Exclude temporary files
- "!*.log"
- "!*.tmp"
- "!*.temp"
# Exclude lock files (too noisy)
- "!pdm.lock"
# Path-specific instructions for different file types
path_instructions:
- path: "src/kleinanzeigen_bot/**/*.py"
instructions: |
CRITICAL RULES FOR KLEINANZEIGEN BOT:
1. ALL code, comments, and text MUST be in English
2. NEVER access live website in tests (bot detection risk)
3. Use WebScrapingMixin for browser automation
4. Handle TimeoutError for all web operations
5. Use ensure() for critical validations
6. Don't add features until explicitly needed
7. Keep solutions simple and straightforward
8. Use async/await for I/O operations
9. Follow Pydantic model patterns
10. Use proper error handling and logging
11. Test business logic separately from web scraping
12. Include SPDX license headers on all Python files
13. Use type hints for all function parameters and return values
14. Use structured logging with context and appropriate log levels.
15. Log message strings should be plain English without `_()` (TranslatingLogger handles translation); wrap non-log user-facing strings with `_()` and add translations
16. NEVER flag PEP 8 whitespace/spacing issues (autopep8 handles these automatically via pdm run format)
- path: "tests/**/*.py"
instructions: |
TESTING RULES:
1. NEVER access live website in tests (bot detection risk)
2. Use @patch for web operations in tests
3. Use test fixtures for browser automation
4. Test Pydantic models without web scraping
5. Mock all web operations in tests
6. Use pytest markers: unit, integration, smoke
7. Unit tests: fast, isolated, no external dependencies
8. Integration tests: use mocks, test with external dependencies
9. Smoke tests: critical path, no mocks, no browser (NOT E2E tests)
10. All test code must be in English
11. Test observable behavior, not implementation
12. Use fakes/dummies instead of mocks in smoke tests
13. Focus on minimal health checks, not full user workflows
14. Include SPDX license headers
15. Use descriptive test names in English
16. NEVER flag PEP 8 whitespace/spacing issues (autopep8 handles these automatically via pdm run format)
- path: "scripts/**/*.py"
instructions: |
SCRIPT RULES:
1. All code must be in English
2. Use proper error handling
3. Follow project conventions
4. Keep scripts simple and focused
5. Use appropriate logging
6. Include SPDX license headers
7. Use type hints for all functions
- path: "docs/**/*.md"
instructions: |
DOCUMENTATION RULES:
1. All documentation must be in English
2. Use clear, concise language
3. Include practical examples
4. Include troubleshooting information
5. Follow markdown best practices
# Auto review configuration
auto_review:
enabled: true
auto_incremental_review: true
drafts: false
ignore_title_keywords: ["wip", "draft", "temp"]
labels: ["!wip", "!draft"] # Review all PRs except those with wip or draft labels
# Tools configuration
tools:
ruff:
enabled: true
gitleaks:
enabled: true
semgrep:
enabled: true
markdownlint:
enabled: true
yamllint:
enabled: true
finishing_touches:
docstrings:
enabled: false
unit_tests:
enabled: false
# =============================================================================
# KNOWLEDGE BASE
# =============================================================================
knowledge_base:
opt_out: false
web_search:
enabled: true
code_guidelines:
enabled: true
filePatterns:
- "**/.cursorrules"
- "**/CLAUDE.md"
- "**/GEMINI.md"
- "**/.cursor/rules/*"
- "**/.windsurfrules"
- "**/.clinerules/*"
- "**/.rules/*"
- "**/AGENT.md"
- "**/AGENTS.md"
- "README.md"
- "CONTRIBUTING.md"
- "docs/**/*.md"
learnings:
scope: "auto"
issues:
scope: "auto"
pull_requests:
scope: "auto"