feat(core): add multi-tool MCP detection and extract filtering (#86) - #87
Merged
Conversation
Replace hardcoded Claude-only MCP/hooks/commands/skills/workflows/memory detection with registry-driven paths from CAPABILITY_REGISTRY. Add --tool, --component, --scope CLI options to devsync extract. Add mcp_servers_json_key to IDECapability for per-tool JSON key handling (e.g. Copilot uses "servers"). Add source_tool tracking on all Detected* dataclasses and use it in to_package_components for dynamic ide_support.
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
📊 Code Quality ReportLinting Issues |
Coverage reportClick to see where and how coverage changed
This report was generated by python-coverage-comment-action |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #87 +/- ##
==========================================
+ Coverage 84.63% 84.92% +0.29%
==========================================
Files 76 76
Lines 6403 6569 +166
==========================================
+ Hits 5419 5579 +160
- Misses 984 990 +6 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
📊 Code Quality ReportLinting Issues |
7 tasks
…88) - Add --dry-run flag to preview detected components without writing files - Add --include-global flag replacing deprecated --scope option - Display Rich table summarizing detected components before extraction - Show zero-result warning with suggestions when filters match nothing - Enhance extraction output with per-tool breakdown - Add --verbose flag to devsync tools showing capabilities per tool - Update docs/cli/extract.md with new flags and examples
📊 Code Quality ReportLinting Issues |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
ComponentDetectorto useCAPABILITY_REGISTRYfor MCP, hooks, commands, skills, workflows, and memory detection across all 23+ supported AI tools (previously Claude-centric)--tool,--component, and--scopefilter options todevsync extractfor selective extractionmcp_servers_json_keyto handle VS Code/Copilot's"servers"key vs the standard"mcpServers"source_toolon all detected components for accurate IDE support taggingChanges
ai_tools
capability_registry.py— Addedmcp_servers_json_keyfield toIDECapability(Copilot uses"servers")core
component_detector.py— Major refactor: registry-driven detection for MCP/hooks/commands/skills/workflows/memory,source_tooltracking on all detected components,filter_detection_result()for post-detection filtering, scope validation with boundary checking on global pathsextractor.py— Pass-through fortool_filter,component_filter,scopeto detector and filtercli
main.py— Added--tool(repeatable),--component(repeatable),--scopeoptions toextractcommandextract.py— Validation of tool names, component names, scope; wiring filters to extractordocs
CLAUDE.md— Updated architecture docs with new files and extract examplesVISION.md— Refined IDE-agnostic principle to cover extraction, added selective packaging to scopedocs/cli/extract.md— Added documentation for new--tool,--component,--scopeoptionstests
test_component_detector.py— 22 new tests: multi-tool MCP detection (Cursor, Roo, Copilot, Claude), tool filtering, component filtering, scope validation, filter_detection_result with instructionstest_extract.py— 6 new tests: CLI option validation for invalid/valid tool, component, scope valuesIssue References
Closes #86
Test Plan
invoke test-unit(1616 passed, 4 skipped)ruff checkblack --checkmypysource_tooltagging--tool cursor) restricts extraction to specified tools--component mcp) restricts to specified component typesSecurity Considerations
~-prefixed registry entries) are resolved and validated to stay underPath.home()before readingscopeparameter validated against allowlist (project,global,all) inComponentDetector.__init__Vision Alignment
Directly supports IDE-agnostic principle (#2) — extraction now works across all 23+ tools instead of being Claude-centric. Supports selective packaging for teams that only want to share specific component types or tool configs.
Generated with Claude Code