R package ecosystem orchestrator for Claude Code β 16 commands, R-aware hooks, validation skills.
Self-contained R package analysis for Claude Code. As of v1.3.0 the plugin is fully self-sufficient β pure-Python lib/ modules handle discovery, dependencies, status, and init. No MCP server required.
- π 3 commands renamed for cleaner namespacing β
/rforge:doc-checkβ/rforge:docs:check,/rforge:ecosystem-healthβ/rforge:health,/rforge:rpkg-checkβ/rforge:r:check. The other 13 commands are unchanged. Typing an old name produces a helpful rename-error pointing at the new name β no silent failures. Seedocs/migration/v2.0.0-rename.mdfor the full mapping table and asedrecipe to mass-update local scripts.
- π― MCP absorption complete β
rforge-mcphas been absorbed into the plugin. All 7 implemented tools now ship as pure-Pythonlib/modules. The MCP server is no longer required (and is being archived). Seedocs/migration/rforge-mcp-deprecation.md. - π
lib/status.pyβ ecosystem health snapshot (DESCRIPTION+.STATUSparsing).python3 -m lib.status [--path .] [--format text|json]. - π±
lib/init.pyβ initialize~/.rforge/context.jsonfor cross-package state.python3 -m lib.init [--quick]. New/rforge:initcommand. - π¦ No runtime dependencies beyond Python 3.10+ β the plugin works on any system with a modern Python.
- π Marketplace install β one-shot setup via
/plugin marketplace add Data-Wise/rforge(no clone, no symlinks). Seedocs/configuration.mdfor tunable options (CRAN mirror, vignette engine, R version pin, CLAUDE.md budget). - πͺ R-aware
PreToolUsehook β four rules that fire on everyWrite/Edit: blocks hand-edits to roxygen-generatedman/*.Rd, warns whenR/*.Redits may need NAMESPACE/DESCRIPTION sync, warns on non-SemVerDESCRIPTIONVersion bumps, warns on writes outside the active worktree. Diagnostic, not adversarial β only theman/*.Rdrule blocks. Seedocs/hooks-and-skills.md. - π
description-syncvalidation skill β pure-shell sanity check thatDESCRIPTIONVersion matches the top entry inNEWS.md/CHANGELOG.md. Catches the most common pre-CRAN release-prep failure. No R required. - π Plugin Surface architecture diagram β new Mermaid diagram in
docs/architecture.mdshowing how marketplace, config, commands, agents, hooks, and skills relate.
Full changelog: CHANGELOG.md.
# Quick analysis (< 30 seconds)
/rforge:analyze "Update RMediation bootstrap algorithm"
# Ultra-fast (< 10 seconds)
/rforge:quick
# Comprehensive (2-5 minutes)
/rforge:thorough "Prepare for CRAN release"β¨ Auto-delegation - Recognizes task patterns, selects appropriate tools
β‘ Parallel execution - Invokes multiple lib/ modules simultaneously
π Live progress - Real-time updates as tools complete
π― Smart synthesis - Combines results into actionable summary
π§ ADHD-friendly - Fast feedback, clear structure, visual progress
π Pure-Python lib/ - lib/discovery.py, lib/deps.py, lib/status.py, lib/init.py. No R subprocess, no MCP server, no Node.js. See docs/lib-modules.md.
User Request
β
Pattern Recognition (CODE_CHANGE, BUG_FIX, etc.)
β
Tool Selection (impact, tests, docs, health)
β
Parallel `lib/` invocations (python3 -m lib.* in subprocess)
β
Results Synthesis (impact + quality + maintenance + next steps)
β
Actionable Summary
Balanced analysis with recommendations (< 30 seconds)
/rforge:analyze "Update code"Ultra-fast status check (< 10 seconds)
/rforge:quickComprehensive analysis with R CMD check (2-5 minutes)
/rforge:thorough "Prepare for CRAN"- Python 3.10+ (the
lib/modules run viapython3 -m lib.<tool>) - R Environment
- R >= 4.0.0
- devtools package (optional, for
/rforge:thorough) - testthat package (optional)
- covr package (optional, for coverage analysis)
- Claude Code CLI or Claude Desktop
- Plugin works in both environments
Migrating from v1.2.x? If you have an
mcpServers.rforgeentry in~/.claude/settings.json, you can remove it β v1.3.0 no longer needs the MCP server. Seedocs/migration/rforge-mcp-deprecation.md.
From inside Claude Code:
/plugin marketplace add Data-Wise/rforge
/plugin install rforge
The marketplace install reads .claude-plugin/marketplace.json from the
repository, fetches the plugin into ~/.claude/plugins/rforge, and wires
it up automatically. Works on macOS, Linux, and Windows. Update later with
/plugin update rforge.
# Add the Data-Wise tap
brew tap data-wise/tap
# Install rforge plugin
brew install rforgeThe Homebrew formula automatically:
- Installs the plugin to
~/.claude/plugins/rforge - Makes it available in Claude Code CLI and Claude Desktop
# Install from npm (after publishing)
npm install -g @data-wise/rforge-plugin
# Plugin will auto-install to ~/.claude/plugins/rforgeFor Claude Code CLI and Claude Desktop:
# Clone the repository
git clone https://github.com/Data-Wise/rforge.git
cd rforge
# Install in development mode (symlink - changes reflected immediately)
ln -s $(pwd) ~/.claude/plugins/rforge
# Or install in production mode (copy - stable)
cp -r . ~/.claude/plugins/rforgeInstallation locations:
- Plugin directory:
~/.claude/plugins/rforge - Commands:
~/.claude/plugins/rforge/commands/ - Agent:
~/.claude/plugins/rforge/agents/orchestrator.md - Lib:
~/.claude/plugins/rforge/lib/
Step 1: Check plugin
# Check plugin directory exists
ls -la ~/.claude/plugins/rforge
# Verify plugin.json
cat ~/.claude/plugins/rforge/.claude-plugin/plugin.jsonStep 2: Check Python
python3 --version # Expect 3.10+Step 3: Test end-to-end
# Navigate to an R package
cd ~/projects/r-packages/active/RMediation
# Start Claude Code
claude
# Test a command
/rforge:statusExpected output:
π RMediation - Single Package
βββββββββββββββββββββββββββββ
Version: 2.4.0
Tests: 187 passing
Health: 87/100 (B+)
After installation, commands are immediately available:
# Navigate to any R package
cd ~/my-r-package
# Start Claude Code
claude
# Use rforge commands
/rforge:analyze "Update bootstrap algorithm"
/rforge:status
/rforge:quickRForge automatically loads when you open Claude Desktop. Commands work the same way:
- Open Claude Desktop app
- Navigate conversation to an R package directory (or specify path)
- Use slash commands:
/rforge:analyze,/rforge:status, etc.
- From v1.2.x: the
mcpServers.rforgeentry in~/.claude/settings.jsonis no longer needed in v1.3.0. Remove it manually (we don't auto-edit user settings). Seedocs/migration/rforge-mcp-deprecation.mdfor the full migration table.
Only relevant if you skipped v1.2.x and are coming from a much older
rforge-orchestratorsetup. v1.3.0 doesn't use any MCP server, so the end state is just: remove these entries entirely.
If your ~/.claude/settings.json has either an rforge-orchestrator or rforge-mcp entry under mcpServers, delete it:
// Delete BOTH of these patterns if present:
{
"mcpServers": {
"rforge-orchestrator": { ... },
"rforge-mcp": { ... }
}
}In v1.3.0+ the plugin runs entirely in-process via lib/ modules β there's no MCP server to configure. The plugin loads via /plugin install rforge; no settings.json entries are required.
For the full transition narrative, see docs/migration/rforge-mcp-deprecation.md.
The orchestrator automatically detects what you're doing:
| Your Request | Pattern | Tools Used |
|---|---|---|
| "Update algorithm" | CODE_CHANGE | impact, tests, docs, health |
| "Add function" | NEW_FUNCTION | detect, tests, docs |
| "Fix bug" | BUG_FIX | tests, impact |
| "Update docs" | DOCUMENTATION | docs, detect |
| "Release 2.1.0" | RELEASE | health, impact, tests, docs |
β‘ Quick analysis running...
β
Done! (8.2 seconds)
π QUICK SUMMARY:
β
Impact: 2 packages (MEDIUM)
β
Tests: 187/187 passing
β οΈ Docs: NEWS.md needs update
β
Health: 87/100 (B+)
π― IMPACT: MEDIUM
β’ 2 packages affected (mediate, sensitivity)
β’ Estimated cascade: 4 hours
β
QUALITY: EXCELLENT
β’ Tests: 187/187 passing (94% coverage)
β’ CRAN: Clean
π MAINTENANCE: 2 items
β’ NEWS.md needs entry
β’ Vignette example outdated
π NEXT STEPS:
1. Implement changes (3 hours)
2. Auto-fix documentation
3. Run cascade for dependents
βββββββββββββββββββββββββββββββββββββββ
β Claude Code Session β
β β
β βββββββββββββββββββββββββββββββββ β
β β RForge Orchestrator Plugin β β
β β β β
β β β’ Pattern Recognition β β
β β β’ Tool Selection β β
β β β’ Parallel Execution β β
β β β’ Progress Display β β
β β β’ Results Synthesis β β
β βββββββββ¬ββββββββββββββββββββββββ β
β β β
ββββββββββββΌβββββββββββββββββββββββββββ
β Parallel python3 -m lib.* calls
β
ββββββββ΄βββββββ¬βββββββ¬βββββββ
β β β β
[discovery] [deps] [status] [init]
β β β β
(8s) (5s) (3s) (7s)
β β β β
βββββββββββββββ΄βββββββ΄βββββββ
β
β
Results synthesized
by orchestrator
| Mode | Tools | Time | Use Case |
|---|---|---|---|
| Quick | 4 quick tools | ~10s | Status check |
| Analyze | 4 quick + synthesis | ~30s | Daily dev |
| Thorough | Background R | 2-5m | Pre-release |
Time savings: Parallel execution = 4x faster than sequential!
- Fast feedback - Results in seconds, not minutes
- Clear structure - Consistent output format
- Visual progress - See what's happening
- Actionable - Always provides next steps
- Interruptible - Can cancel/resume anytime
- Incremental - Results stream as they complete
"python3: command not found"
# Verify Python 3.10+ is on PATH
python3 --version
# macOS: install via Homebrew
brew install python@3.12"Package not detected"
# Run from package directory
cd /path/to/package
# Or specify path explicitly
/rforge:analyze --package /path/to/package"Analysis too slow"
- Use
/rforge:quickfor fast status - Use
/rforge:analyzefor balanced speed/depth - Only use
/rforge:thoroughwhen needed
Plugin settings in plugin.json:
{
"settings": {
"default_mode": "quick", // quick, analyze, or thorough
"parallel_execution": true, // Run tools in parallel
"show_progress": true, // Show progress bars
"auto_synthesize": true // Auto-generate summary
}
}Plugin structure:
~/.claude/plugins/rforge/
βββ .claude-plugin/
β βββ plugin.json # Plugin manifest (v1.3.0)
β βββ marketplace.json # Marketplace install metadata
β βββ config.json # User-tunable options (CRAN mirror, etc.)
β βββ hooks/
β β βββ pretooluse.py # R-aware Write/Edit guard (4 rules)
β βββ skills/
β βββ validation/
β βββ description-sync.md # DESCRIPTION β NEWS.md drift check
βββ commands/ # 16 slash commands (/rforge:*)
βββ agents/
β βββ orchestrator.md # Pattern recognition + delegation
βββ lib/ # Pure-Python analysis modules
β βββ discovery.py # Package detection + ecosystem layout
β βββ deps.py # Dependency graph + impact
β βββ status.py # DESCRIPTION + .STATUS health snapshot
β βββ init.py # ~/.rforge/context.json initializer
β βββ formatters.py # Output formatting helpers
βββ docs/ # User-facing docs
Ideas for improvement:
- Add caching for repeated analyses
- Track user preferences for tool selection
- Add more pattern types
- Improve time estimates
- Add result export (markdown, JSON)
MIT
- v1.3.0 absorbed the prior
rforge-mcpprototype (local-only, never published to GitHub or npm). Seedocs/migration/rforge-mcp-deprecation.mdfor the migration narrative. - Claude Code: https://claude.com/code
- Documentation: See
docs/folder
Version: 0.1.0 Status: Active development Compatibility: Claude Code 0.1.0+