Skip to content

Stonefish-Labs/horadric-cube

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Horadric Cube (rcube)

rcube detects agentic plugin assets in any directory and transmutes them into provider-specific formats.

Horadric Cube Logo

Supported asset types:

  • skill
  • hook
  • slash-command
  • subagent
  • mcp-server

Supported providers:

  • claude
  • cursor
  • codex
  • opencode
  • copilot
  • roocode

Package Layout

Implementation modules currently live under plugin_converter/:

  • plugin_converter/cli.py - argument parsing and command handlers
  • plugin_converter/detector.py - directory/type detection logic
  • plugin_converter/converter.py - provider conversion engine
  • plugin_converter/paths.py - global/project install path resolution
  • plugin_converter/resources.py - shared reference/script/asset dependency handling
  • plugin_converter/io_utils.py, plugin_converter/text_utils.py, plugin_converter/constants.py, plugin_converter/models.py
  • Public CLI entrypoints:
    • rcube ... (after installation)
    • python3 -m rcube ... (module invocation)
    • ./bin/rcube ... (repo-local launcher)

Quick Start

If installed:

rcube detect <path>
rcube convert <path> --provider all --scope project
rcube remove <path> --provider all --scope project

Without installing:

python3 -m rcube detect <path>
python3 -m rcube convert <path> --provider all --scope project
python3 -m rcube remove <path> --provider all --scope project

Install

Install from PyPI (once published):

python3 -m pip install horadric-cube

or

pipx install horadric-cube

Install from this repo (regular install):

python3 -m pip install .

Install for development (editable):

python3 -m pip install -e .

Install as an isolated global CLI (recommended for users):

pipx install .

If you are in a network-restricted environment, use:

python3 -m pip install . --no-build-isolation

After install, run:

rcube --help

Common Usage

Project-local conversion into the current repo:

rcube convert ./test_items/mp-govern --provider all --scope project

Global conversion into user-level provider paths:

rcube convert ./test_items/mp-govern --provider all --scope global

Convert only selected asset types:

rcube convert ./test_items --provider codex --types skill subagent

Dry run (no writes):

rcube convert ./test_items --provider all --dry-run

Write into a custom output directory:

rcube convert ./test_items --provider all --destination /tmp/converted-assets

Plugin Bundles

Bundle handling is directory-driven, not manifest-driven:

  • Any source directory containing multiple asset types is treated as a bundle.
  • Detection scans recursively and returns all detected items (skill, hook, slash-command, subagent, mcp-server).
  • Conversion processes each detected item in one run and emits the type-specific output for the target provider.

Recommended bundle workflow:

rcube detect ./my-plugin-bundle
rcube convert ./my-plugin-bundle --provider all --scope project --destination /tmp/converted-bundles

When converting bundles with --provider all --destination ..., output is grouped per provider, then by type within that provider root.

Notes

  • If --provider all is used with --destination, output is grouped by provider:
    • /tmp/converted-assets/claude
    • /tmp/converted-assets/cursor
    • etc.
  • Existing files are not overwritten unless --overwrite is set.
  • Use --json on detect, convert, or remove for machine-readable output.
  • MCP config behavior:
    • Install/convert merges server entries into existing MCP config files (does not replace whole files).
    • Remove unmerges by server key/section and removes only matching entries.
    • Other unrelated MCP entries remain intact.
  • Shared plugin resources are dependency-hoisted:
    • Skills: referenced references/*, scripts/*, and assets/* are copied into each converted skill folder.
    • Subagents and slash commands: referenced shared paths are copied under the converted file's parent folder (for example agents/references/*).
    • Non-Claude providers rewrite ${CLAUDE_PLUGIN_ROOT}/... paths to relative paths.
    • In bundles, this is applied per converted item so shared top-level resources remain available after split conversion.

About

Horadric Cube (rcube): detect and transmute agentic plugin assets across providers

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages