Files
freecad-robust-mcp-fc111/.coderabbit.yaml
T
Sean P. KaneGitHubcoderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
e11ba127cd docs: update repository name and add clear acknowledgements section to primary README (#12)
* docs: Update git repo name

* docs: add acknowledgements section

* docs: clarifications and consistency improvements

* ci: Update CodeRabbit configuration

* Update README.md

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>

* docs: Fix repo path everywhere

---------

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
2026-01-05 06:26:06 -08:00

174 lines
5.5 KiB
YAML

# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json
# CodeRabbit Configuration
# https://docs.coderabbit.ai/guides/configure-coderabbit
language: en-US
# Tone instructions for reviews
tone_instructions: |
Be concise and direct. Focus on actionable feedback.
Python project using modern tooling (uv, ruff, mypy).
Integrates with FreeCAD CAD software via MCP protocol.
early_access: false
# Enable or disable reviews
reviews:
# Enable automated code reviews
auto_review:
enabled: true
# Don't review drafts until ready
drafts: false
# Review base branches (PRs to main)
base_branches:
- main
- master
# Review profile - assertive catches more issues
profile: assertive
# Request changes when issues found
request_changes_workflow: true
# High-level summary in PR comments
high_level_summary: true
high_level_summary_placeholder: "@coderabbitai summary"
# Add poem to review (disabled - keep it professional)
poem: false
# Collapse walkthrough in large PRs
collapse_walkthrough: true
# Review labeling
labeling_instructions:
- label: "security"
instructions: "Apply when security vulnerabilities are found"
- label: "breaking-change"
instructions: "Apply when changes break backward compatibility"
- label: "documentation"
instructions: "Apply when documentation changes are needed"
# Paths to always review carefully
path_instructions:
- path: "src/freecad_mcp/**/*.py"
instructions: >
This is the core MCP server code. Pay attention to:
- Async/await patterns
- Error handling for FreeCAD operations
- Type hints and Pydantic models
- Security of execute_python functionality
- path: "src/freecad_mcp/tools/**/*.py"
instructions: >
These are MCP tool implementations. Ensure:
- Proper docstrings for tool discovery
- Consistent error handling patterns
- GUI-safe checks (FreeCAD.GuiUp) for view operations
- path: "src/freecad_mcp/freecad_plugin/**/*.py"
instructions: >
This code runs inside FreeCAD's Python environment.
It cannot import packages from the project's virtualenv (mcp, pydantic).
Watch for accidental imports of project dependencies.
- path: "macros/**/*.FCMacro"
instructions: >
FreeCAD macro files. These are standalone Python scripts.
They run in FreeCAD's environment with access to FreeCAD, Part, etc.
- path: "tests/**/*.py"
instructions: >
Test files. Ensure good test coverage and clear assertions.
Integration tests require FreeCAD MCP bridge to be running.
- path: ".github/workflows/**/*.yaml"
instructions: >
GitHub Actions workflows. Check for:
- Proper caching configuration
- Security of secrets handling
- Correct job dependencies
INTENTIONAL PATTERNS (do not flag as issues):
- continue-on-error: true on test steps is intentional during stabilization
- upload-artifact@v6 and download-artifact@v7 work on GitHub-hosted runners
- Actions version jumps (v4 to v6/v7) are intentional Dependabot updates
- path: "pyproject.toml"
instructions: >
Project configuration. Watch for:
- Dependency version constraints
- Tool configuration consistency (ruff, mypy, pytest)
CRITICAL: Python 3.11 is required - FreeCAD bundles libpython3.11.
Using a different Python version causes ABI incompatibility crashes.
- path: "README.md"
instructions: >
INTENTIONAL NAMING: The repo is "freecad-robust-mcp-and-more" but Docker
image and PyPI package are "freecad-robust-mcp". This is documented and
intentional - do NOT flag as a naming mismatch or inconsistency.
- path: "Dockerfile"
instructions: >
INTENTIONAL NAMING: Image name "freecad-robust-mcp" differs from repo name
"freecad-robust-mcp-and-more". This is intentional and documented in README.
Do NOT flag as a naming mismatch.
- path: ".mise.toml"
instructions: >
Tool version management via mise. All versions use fuzzy matching:
- "0.9" means "0.9.x" (allows patch updates)
- "1.43" means "1.43.x" (allows patch updates)
This is consistent and intentional. Do not flag as inconsistent pinning.
CRITICAL: Python must stay at 3.11 to match FreeCAD's bundled Python.
# Tools to use for analysis
tools:
# Python-specific tools
ruff:
enabled: true
# General tools
shellcheck:
enabled: true
markdownlint:
enabled: true
yamllint:
enabled: true
hadolint:
enabled: true
# Files and paths to ignore in reviews (! prefix = exclude)
path_filters:
# Lock files - auto-generated
- "!uv.lock"
- "!poetry.lock"
- "!package-lock.json"
# Generated/cached files
- "!**/.mypy_cache/**"
- "!**/.pytest_cache/**"
- "!**/.ruff_cache/**"
- "!**/__pycache__/**"
- "!**/*.pyc"
# Virtual environments
- "!.venv/**"
- "!venv/**"
# IDE settings (except shared configs)
- "!.idea/**"
# Build artifacts
- "!dist/**"
- "!build/**"
- "!*.egg-info/**"
# Documentation build output
- "!site/**"
# Secrets baseline (reviewed separately)
- "!.secrets.baseline"
# Chat configuration
chat:
auto_reply: true
# Knowledge base for context
knowledge_base:
opt_out: false
learnings:
scope: auto
issues:
scope: auto
jira:
project_keys: []
pull_requests:
scope: auto