Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,20 @@
"email": "support@datarecce.io"
}
},
{
"name": "recce",
"source": "./plugins/recce",
"description": "Intelligent data review workflow for dbt developers",
"version": "0.2.0",
"author": {
"name": "DataRecce",
"email": "support@datarecce.io"
}
},
{
"name": "recce-dev",
"source": "./plugins/recce-dev",
"description": "Intelligent data review workflow for dbt developers",
"description": "Internal development and testing tools for the Recce project",
"version": "0.1.0",
"author": {
"name": "DataRecce",
Expand Down
63 changes: 63 additions & 0 deletions .github/workflows/bundle-freshness.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Validates that committed bundles match what would be produced from current source.
# Fails PRs where packages/recce-docs-mcp/src/** changed but dist/cli.js was not rebuilt.
#
# Pattern: check-dist (canonical from actions/typescript-action)
# Ref: https://github.com/actions/typescript-action/blob/main/.github/workflows/check-dist.yml
name: Check Bundle Freshness

on:
push:
paths:
- 'packages/recce-docs-mcp/src/**'
pull_request:
paths:
- 'packages/recce-docs-mcp/src/**'
Comment on lines +11 to +14
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.


permissions:
contents: read

jobs:
bundle-freshness:
name: bundle-freshness
runs-on: ubuntu-latest

steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Install dependencies
run: npm ci --prefix packages/recce-docs-mcp

- name: Rebuild bundle
run: bash packages/recce-docs-mcp/scripts/build-bundle.sh

- name: Check bundle freshness
id: diff
run: |
DIFF_LINES=$(git diff --ignore-space-at-eol --text -- "plugins/*/servers/recce-docs-mcp/dist/cli.js" | wc -l)
if [ "$DIFF_LINES" -gt "0" ]; then
echo "ERROR: bundle is stale after rebuild. Did you forget to commit the updated bundle?"
echo ""
echo "Rebuild with:"
echo " cd packages/recce-docs-mcp && npm run build:bundle"
echo " git add plugins/recce/servers/recce-docs-mcp/dist/cli.js"
echo " git add plugins/recce-quickstart/servers/recce-docs-mcp/dist/cli.js"
echo " git commit -m 'chore: rebuild bundle'"
git diff --stat -- "plugins/*/servers/recce-docs-mcp/dist/cli.js"
exit 1
fi
echo "Bundle is fresh."

- name: Upload expected bundle on failure
if: failure() && steps.diff.outcome == 'failure'
uses: actions/upload-artifact@v4
with:
name: expected-bundle
path: |
plugins/recce/servers/recce-docs-mcp/dist/cli.js
plugins/recce-quickstart/servers/recce-docs-mcp/dist/cli.js
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
# Design documents (personal drafts, not for version control)
docs/plans/

# Root node_modules (esbuild installed here is not tracked; use packages/recce-docs-mcp/node_modules)
node_modules/

# GSD planning (local-only)
.planning/

Expand Down
129 changes: 43 additions & 86 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,110 +1,99 @@
# Recce Quickstart Plugin for Claude Code
# Recce Plugins for Claude Code

A Claude Code plugin that helps dbt users quickly onboard to [Recce](https://datarecce.io) - the open-source data validation and diff tool for dbt.
Official [Recce](https://datarecce.io) plugins for Claude Code — data validation and diff tools for dbt developers.

## Features
## Plugins

- **Guided Setup** - `/recce-setup` walks you through environment configuration
- **PR Analysis** - `/recce-pr` analyzes data impact of pull requests
- **Data Checks** - `/recce-check` runs validation checks between environments
- **CI/CD Setup** - `/recce-ci` generates GitHub Actions workflows for Recce Cloud
| Plugin | Description | Audience |
|--------|-------------|----------|
| **recce-quickstart** | Guided onboarding — `/recce-setup`, `/recce-pr`, `/recce-check`, `/recce-ci` | New Recce users |
| **recce** | Intelligent data review workflow — auto-tracks model changes, triggers progressive validation via MCP | dbt developers using Recce daily |
| **recce-dev** | Internal MCP E2E validation and benchmarking (`/mcp-e2e-validate`) | Recce project developers |

## Installation

### Method 1: From GitHub Marketplace (Recommended)
### From GitHub Marketplace (Recommended)

**Step 1: Add the Recce marketplace to Claude Code**

In Claude Code, run:
```
/plugin marketplace add DataRecce/recce-claude-plugin
```

**Step 2: Install the plugin**
**Step 2: Install a plugin**

```
/plugin install recce-quickstart@recce-claude-plugin
/plugin install recce@recce-claude-plugin
```

Or use the interactive installer:
```
/plugin
```
Then navigate to **Discover** tab, find `recce-quickstart`, and press Enter to install.
Then navigate to **Discover** tab and select the plugin to install.

### Method 2: Local Installation (For Development)
### Local Installation (For Development)

**Step 1: Clone the repository**
```bash
git clone https://github.com/DataRecce/recce-claude-plugin.git
cd recce-claude-plugin
```

**Step 2: Add as local marketplace**

In Claude Code, run:
In Claude Code:
```
/plugin marketplace add /path/to/recce-claude-plugin
```

**Step 3: Install the plugin**
```
/plugin install recce-quickstart@recce-claude-plugin
/plugin install recce@recce-claude-plugin
```

### Installation Scopes

You can install the plugin at different scopes:

| Scope | Command | Description |
|-------|---------|-------------|
| User (default) | `/plugin install ...` | Available across all your projects |
| Project | `/plugin install ... --scope project` | Shared with team via `.claude/settings.json` |
| Local | `/plugin install ... --scope local` | Only for current repository, not shared |

### Verify Installation

After installation, verify the plugin is working:
```
/plugin
```
Navigate to the **Installed** tab to see `recce-quickstart`.

## Quick Start
## Plugin Details

1. Navigate to your dbt project directory
2. Run `/recce-setup` to configure your environment
3. Use `/recce-pr` or `/recce-check` to analyze data changes
### recce-quickstart

## Commands
Guided setup for new Recce users:

| Command | Description |
|---------|-------------|
| `/recce-setup` | Guided environment setup (installs dependencies, generates artifacts, starts MCP server) |
| `/recce-setup` | Environment setup (installs dependencies, generates artifacts, starts MCP server) |
| `/recce-pr [url]` | Analyze PR data changes (auto-detects PR from current branch) |
| `/recce-check [type] [selector]` | Run data validation checks (row-count, schema, profile, query-diff) |
| `/recce-ci` | Set up Recce Cloud CI/CD for GitHub Actions (PR review + main branch workflows) |
| `/recce-ci` | Set up Recce Cloud CI/CD for GitHub Actions |

### recce

Automated data review workflow for daily dbt development:

- **Skill:** `/recce-review` — dispatches the recce-reviewer agent with tracked model context
- **Agent:** `recce-reviewer` — runs progressive diff analysis (lineage, row count, schema) and produces a risk-assessed summary
- **Hooks:** auto-tracks model file changes, suggests review after `dbt run`, warns before unreviewed commits
- **MCP Servers:** `recce` (SSE, localhost:8081), `recce-docs` (stdio)

### recce-dev

Internal tools for Recce project developers:

- **Skill:** `/mcp-e2e-validate` — full event chain validation + benchmark report
- **Script:** `resolve-recce-root.sh` — cross-plugin path resolution (monorepo + cache layouts)
- **Requires:** the `recce` plugin installed alongside

## Requirements

- **Python 3.8+**
- **dbt** (any adapter: duckdb, postgres, bigquery, snowflake, etc.)
- **Git**
- **Recce >= 1.39.0** — `pip install "recce>=1.39.0"` (SSE transport requires this version)

The plugin will guide you to install these if missing:
- `pip install recce` - Recce CLI
- `pip install 'recce[mcp]'` - Recce MCP Server (for AI-powered analysis)
## MCP Server Tools

## How It Works

This plugin:
1. **Detects** when you're in a dbt project (via `dbt_project.yml`)
2. **Guides** you to set up base and current dbt artifacts
3. **Starts** a Recce MCP server for AI-powered analysis
4. **Provides** Claude with tools to analyze data changes

### MCP Server Tools

When the Recce MCP server is running, Claude has access to these tools:
When the Recce MCP server is running, Claude has access to:

| Tool | Description |
|------|-------------|
Expand All @@ -114,36 +103,6 @@ When the Recce MCP server is running, Claude has access to these tools:
| `profile_diff` | Statistical profiling comparison |
| `query_diff` | Run custom SQL queries for comparison |

## Managing the Plugin

**Disable the plugin:**
```
/plugin disable recce-quickstart@recce-claude-plugin
```

**Re-enable the plugin:**
```
/plugin enable recce-quickstart@recce-claude-plugin
```

**Uninstall the plugin:**
```
/plugin uninstall recce-quickstart@recce-claude-plugin
```

**Update marketplace:**
```
/plugin marketplace update recce-claude-plugin
```

## Recce Cloud

Want to automate data validation in CI/CD? [Recce Cloud](https://cloud.datarecce.io) offers:
- Automatic PR analysis
- Data quality gates
- Team collaboration
- Historical tracking

## Troubleshooting

### Plugin not loading?
Expand All @@ -155,11 +114,9 @@ Want to automate data validation in CI/CD? [Recce Cloud](https://cloud.datarecce
1. Ensure you're in a dbt project directory (has `dbt_project.yml`)
2. Verify Recce is installed: `pip install 'recce[mcp]'`
3. Check if port 8081 is available (or set `RECCE_MCP_PORT=8085`)
4. Run the setup command: `/recce-setup`

### Commands not recognized?
1. Ensure plugin is enabled: `/plugin` → **Installed** tab → check status
2. Restart Claude Code to reload plugins
### Mid-session plugin install?
Hooks and MCP tools require a fresh session to activate. Restart Claude Code after installing plugins.

## Links

Expand Down
1 change: 1 addition & 0 deletions packages/recce-docs-mcp/.gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
node_modules/
cache/*.json
cache/pages/
dist-bundle/
Loading