refactor(plugin): rename recce-dev to recce, add recce-dev for internal tooling#13
Conversation
The recce-dev plugin serves end-user dbt developers, not Recce internal development — the name was misleading. Rename to "recce" for clarity. Updates all internal references: - MCP server name: recce-dev → recce (mcp__recce__*) - Settings paths: .claude/recce-dev/ → .claude/recce/ - Agent tool declarations, scripts, README - Marketplace registry: version bumped to 0.2.0 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
New plugin for Recce developers (separate from end-user "recce" plugin):
- /mcp-e2e-validate skill: full event chain validation + benchmark
- preflight.sh: environment checks with cross-plugin path resolution
- pass-criteria.md: validation criteria and report template
Uses sibling path (${CLAUDE_PLUGIN_ROOT}/../recce) to reference the
recce plugin's MCP scripts, keeping the two plugins decoupled.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
iamcxa
left a comment
There was a problem hiding this comment.
Self-review: key design decisions and cross-plugin architecture notes.
MCP E2E Benchmark ReportDate: 2026-03-12 Event Chain Results
Agent Performance
Comparison (baseline from previous session — recce 1.39.x, pre-PR#1197)
Data Review SummaryModels reviewed: stg_customers, customers, customer_order_pattern, customer_segments
Known Issues
Verdict: PASS (with known limitations)5/6 event chain steps passed. Tier 1 failure is a platform limitation, not a plugin bug. 🤖 Generated with Claude Code |
- Add packages/recce-docs-mcp/scripts/build-bundle.sh (CJS format, import.meta.url polyfill) - Replace broken symlinks with committed dist/cli.js bundles (~2.1MB each) - Add build:bundle script to packages/recce-docs-mcp/package.json - Gitignore dist-bundle/ intermediate build output - Fix recce-quickstart/.mcp.json: dist/index.js -> dist/cli.js (MKTD-04) - Both plugin bundles are byte-for-byte identical (verified with diff -q)
…tion - Change PLUGIN_ROOT from plugins/recce-dev to plugins/recce - Update Test 1: assert plugin name is 'recce' (not 'recce-dev') - Update Test 6: assert marketplace.json references 'recce' and './plugins/recce' - Update Test 7: remove servers/ exclusion — real dirs replace symlinks (MKTD-02) - Add Test 8: bundle distribution assertions with MCP handshake validation (MKTD-03) - All 32 tests pass (0 failures)
- Add resolve-recce-root.sh: auto-detects monorepo vs cache layout to locate sibling recce plugin (fixes broken sibling path in cache) - Update preflight.sh: use resolve script, remove hardcoded fallback - Update SKILL.md: CSO-compliant description, shell variable note, Tier 1 fallback, dispatch mechanism, Common Mistakes section - Add test-resolve-recce-root.sh: 10 test cases covering both layouts, multiple versions, error cases, and preflight integration Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Addresses plugin-validator WARN about missing script documentation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add esbuild@0.27.3 as exact devDependency (no ^) to packages/recce-docs-mcp - Update build-bundle.sh to use $PKG/node_modules/.bin/esbuild (was $REPO_ROOT) - Add node_modules/ to root .gitignore to prevent accidental commit - Verified: bundle rebuilds successfully, MCP handshake smoke test passes
…heck - scripts/hooks/pre-push: git timestamp comparison staleness guard - scripts/install-hooks.sh: copies hook to .git/hooks/ with chmod +x - scripts/check-bundle-freshness.sh: local CI simulation (npm ci + rebuild + git diff) - Verified: hook exits 0 on fresh tree, freshness check reports PASS
- Triggers on push and pull_request with path filter packages/recce-docs-mcp/src/** - Installs exact esbuild@0.27.3 via npm ci --prefix packages/recce-docs-mcp - Rebuilds bundle via bash packages/recce-docs-mcp/scripts/build-bundle.sh - Fails PR if git diff shows any diff in plugins/*/servers/recce-docs-mcp/dist/cli.js - Uploads expected bundle as artifact on failure for contributor download - Determinism confirmed: two consecutive freshness checks both exit 0
Root README was outdated (only described recce-quickstart). Now covers recce, recce-dev, and recce-quickstart with installation, components, and troubleshooting sections. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
This PR refactors the Claude Code plugin structure by renaming the end-user plugin from recce-dev to recce, introducing a new recce-dev plugin for internal tooling, and updating MCP server/tool naming and marketplace distribution accordingly.
Changes:
- Renames end-user MCP server/tool namespace from
recce-dev→recceand updates plugin settings paths (.claude/recce-dev/→.claude/recce/). - Adds a new internal
recce-devplugin focused on MCP E2E validation/benchmarking, including cross-pluginrecceroot resolution. - Switches
recce-docs-mcpdistribution from symlinks to bundleddist/cli.js, plus adds a CI freshness check and local helper scripts/hooks.
Reviewed changes
Copilot reviewed 27 out of 39 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/test-resolve-recce-root.sh | Adds unit tests for recce plugin root resolution from the internal recce-dev plugin. |
| tests/smoke/test-marketplace-install.sh | Updates smoke validation to target the new recce plugin and enforces bundled docs server artifacts. |
| scripts/install-hooks.sh | Adds a helper to install repo git hooks locally. |
| scripts/hooks/pre-push | Adds a pre-push guard to prevent pushing stale bundled recce-docs-mcp artifacts. |
| scripts/check-bundle-freshness.sh | Adds a local script to reproduce the CI bundle freshness check. |
| plugins/recce/skills/recce-review/SKILL.md | Introduces the /recce-review skill under the renamed end-user recce plugin. |
| plugins/recce/settings/defaults.json | Adds default settings for the recce plugin (including MCP port). |
| plugins/recce/scripts/stop-mcp.sh | Updates plugin naming in stop script comments for recce. |
| plugins/recce/scripts/start-mcp.sh | Updates settings file paths from recce-dev → recce and related messaging. |
| plugins/recce/scripts/check-mcp.sh | Updates settings file paths from recce-dev → recce. |
| plugins/recce/hooks/scripts/track-changes.sh | Adds hook script to track dbt model edits into a project-scoped temp file. |
| plugins/recce/hooks/scripts/suggest-review.sh | Adds hook script to suggest /recce-review after dbt commands when changes are tracked. |
| plugins/recce/hooks/scripts/session-start.sh | Adds SessionStart hook to detect dbt context and auto-start MCP when possible. |
| plugins/recce/hooks/scripts/pre-commit-guard.sh | Adds non-blocking pre-commit warning hook when tracked models haven’t been reviewed. |
| plugins/recce/hooks/hooks.json | Registers the new hooks for the recce plugin. |
| plugins/recce/agents/recce-reviewer.md | Updates tool names and MCP server name to recce. |
| plugins/recce/README.md | Adds end-user documentation for the renamed recce plugin. |
| plugins/recce/LICENSE | Adds plugin-level MIT license file for the new recce plugin directory. |
| plugins/recce/.mcp.json | Renames MCP server from recce-dev → recce and points docs server to dist/cli.js. |
| plugins/recce/.claude-plugin/plugin.json | Adds marketplace plugin metadata for recce. |
| plugins/recce-quickstart/servers/recce-docs-mcp | Removes the symlink in favor of bundled docs server artifacts. |
| plugins/recce-quickstart/.mcp.json | Updates docs server entrypoint from dist/index.js to bundled dist/cli.js. |
| plugins/recce-dev/skills/mcp-e2e-validate/scripts/preflight.sh | Adds preflight checks for the new internal recce-dev E2E validation flow. |
| plugins/recce-dev/skills/mcp-e2e-validate/references/pass-criteria.md | Adds pass criteria and benchmark reporting template for internal validation. |
| plugins/recce-dev/skills/mcp-e2e-validate/SKILL.md | Adds /mcp-e2e-validate skill for internal validation/benchmarking. |
| plugins/recce-dev/servers/recce-docs-mcp | Removes the symlink in favor of bundled docs server artifacts. |
| plugins/recce-dev/scripts/resolve-recce-root.sh | Adds cross-plugin resolver to locate sibling recce plugin in monorepo or cache layouts. |
| plugins/recce-dev/README.md | Reorients recce-dev plugin docs to internal tooling purpose. |
| plugins/recce-dev/.claude-plugin/plugin.json | Updates recce-dev metadata to reflect internal tooling and new keywords/description. |
| packages/recce-docs-mcp/scripts/build-bundle.sh | Adds bundling script to produce a self-contained cli.js for plugin distribution. |
| packages/recce-docs-mcp/package.json | Adds build:bundle script and pins esbuild for bundling. |
| packages/recce-docs-mcp/package-lock.json | Updates lockfile for esbuild and dependency graph changes. |
| packages/recce-docs-mcp/.gitignore | Ignores dist-bundle/ output directory. |
| README.md | Updates root docs to describe the three-plugin layout and updated install commands. |
| .gitignore | Ignores root node_modules/ to avoid accidental commits. |
| .github/workflows/bundle-freshness.yml | Adds CI workflow to ensure committed bundled artifacts match current source. |
| .claude-plugin/marketplace.json | Adds recce to marketplace registry and updates recce-dev description. |
Files not reviewed (1)
- packages/recce-docs-mcp/package-lock.json: Language not supported
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
You can also share your feedback on Copilot code review. Take the survey.
| - 'packages/recce-docs-mcp/src/**' | ||
| pull_request: | ||
| paths: | ||
| - 'packages/recce-docs-mcp/src/**' |
There was a problem hiding this comment.
Valid observation. Build script changes are rare and the current filter covers the primary case (src changes). Adding build-bundle.sh and package.json to the paths filter is a reasonable improvement — will address as a follow-up.
- Remove misleading "source this file" guidance from resolve-recce-root.sh (exit terminates caller shell; eval is the correct usage) - Fix README hook descriptions to match hooks.json implementation - Replace outdated symlink limitation with current bundle distribution note Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
All review feedback addressed — please see individual thread replies for details. |
Summary
recce-devplugin →recce— the plugin serves end-user dbt developers, not Recce internal devrecce-devplugin for internal development tools (MCP E2E validation, benchmarking)Reviewer Guide
plugin.json,.mcp.json,recce-reviewer.md,start-mcp.sh,check-mcp.shplugins/recce-dev/,SKILL.md,preflight.shDesign notes:
recce-devtorecce→ allmcp__recce-dev__*tool refs becomemcp__recce__*${CLAUDE_PLUGIN_ROOT}/../recceassumes sibling layout (works in monorepo + marketplace install).claude/recce-dev/→.claude/recce/(breaking for existing users with custom settings)Test plan
/mcp-e2e-validateagainst jaffle_shop_golden to verify the full event chain works with renamed pluginrecce-revieweragent dispatches correctly with newmcp__recce__*tool names🤖 Generated with Claude Code