Files
kleinanzeigen-bot/.coderabbit.yaml
Jens 9877f26407 chore: Improve CodeRabbit path filters configuration (#712)
## ℹ️ Description

This PR improves the CodeRabbit configuration to ensure all important
project files are reviewed while excluding only build artifacts and
temporary files.

The previous configuration used a blanket `!**/.*` exclusion that was
unintentionally filtering out the entire `.github` directory, including
workflows, dependabot config, issue templates, and CODEOWNERS files.

## 📋 Changes Summary

- **Added** `.github/**` to include all GitHub automation files
(workflows, dependabot, templates, CODEOWNERS)
- **Added** root config files (`pyproject.toml`, `*.yaml`, `*.yml`,
`**/*.md`)
- **Removed** overly broad `!**/.*` exclusion pattern
- **Added** specific exclusions for Python cache directories
(`.pytest_cache`, `.mypy_cache`, `.ruff_cache`)
- **Added** explicit IDE file exclusions (`.vscode`, `.idea`,
`.DS_Store`)
- **Added** `pdm.lock` exclusion to reduce noise

### ⚙️ Type of Change
- [x] 🐞 Bug fix (non-breaking change which fixes an issue)
- [ ]  New feature (adds new functionality without breaking existing
usage)
- [ ] 💥 Breaking change (changes that might break existing user setups,
scripts, or configurations)

##  Checklist
- [x] I have reviewed my changes to ensure they meet the project's
standards.
- [x] I have tested my changes and ensured that all tests pass (`pdm run
test`).
- [x] I have formatted the code (`pdm run format`).
- [x] I have verified that linting passes (`pdm run lint`).
- [x] I have updated documentation where necessary.

By submitting this pull request, I confirm that you can use, modify,
copy, and redistribute this contribution, under the terms of your
choice.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Summary by CodeRabbit

* **Chores**
  * Updated internal code review configuration and automation settings.

<sub>✏️ Tip: You can customize this high-level summary in your review
settings.</sub>

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
2025-12-05 20:39:10 +01:00

177 lines
5.3 KiB
YAML

# 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. Focus on simple, maintainable solutions. Avoid unnecessary complexity and abstractions."
# =============================================================================
# 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
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
- 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
- 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
# =============================================================================
# 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"