cad-editor/docs/plugin-template
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-07-29 14:27:32 +03:00
..
.github/workflows docs(plugin): rewrite architecture + template for the external-only model 2026-06-17 16:02:16 +03:00
src docs(plugin): rewrite architecture + template for the external-only model 2026-06-17 16:02:16 +03:00
Cargo.toml docs(plugin): rewrite architecture + template for the external-only model 2026-06-17 16:02:16 +03:00
PLUGIN.md Add plugin host architecture and Storm Sewer add-on package 2026-06-09 13:41:21 -04:00
plugin.toml feat(plugins): redesign plugin manager 2026-07-29 14:27:32 +03:00
README.md docs(plugin): rewrite architecture + template for the external-only model 2026-06-17 16:02:16 +03:00

Open CAD Studio plugin template

A complete scaffold for an external Open CAD Studio add-on. A plugin is its own repository that builds a cdylib; the host loads it at runtime. Copy this folder into a new repo and rename the placeholders.

Files

File Purpose
Cargo.toml cdylib crate depending on ocs_plugin_api (host feature)
src/lib.rs manifest + CadModule ribbon + BuiltinPlugin + export_plugin!
plugin.toml metadata read by the host (mirrors the manifest)
.github/workflows/release.yml cross-builds the cdylib and publishes a release
PLUGIN.md your command reference + XDATA schemas

Quick start

  1. Copy this folder into a new repository.
  2. Rename my-plugin / My Plugin / opencad.my_plugin / my_plugin / MP_ throughout (Cargo.toml, src/lib.rs, plugin.toml, the workflow asset: names), keeping plugin.toml and the MANIFEST in sync.
  3. cargo build to check it compiles.

Test locally

cargo build --release
mkdir -p "<config>/OpenCADStudio/plugins/opencad.my_plugin"
cp target/release/*my_plugin*.so "<config>/OpenCADStudio/plugins/opencad.my_plugin/"
cp plugin.toml                    "<config>/OpenCADStudio/plugins/opencad.my_plugin/"

Restart Open CAD Studio: the ribbon tab appears and MP_ commands route to your plugin. (<config> = %APPDATA% / ~/Library/Application Support / $XDG_CONFIG_HOME.)

Publish

Push a v* tag — the workflow builds the cdylib on Linux/Windows/macOS and uploads each binary plus plugin.toml to a GitHub Release. Users install it from the Plugin Manager by linking your owner/repo, or — once your repo is added to plugins/registry.json via PR — straight from Available plugins.

The binary must be built with the same toolchain and ocs_plugin_api version as the host (approach B). See docs/plugin-architecture.md.