cad-editor/docs/plugin-template
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Hakan Seven 1175675c5e docs(plugin): rewrite architecture + template for the external-only model
OpenCADStudio ships no built-in plugins, so the spec and scaffold no
longer describe the in-tree inventory path, demo_plugin, or the fictional
Storm Sewer reference. The architecture doc now covers the external cdylib
model end to end (ocs_plugin_api contract, export_plugin!, building +
publishing per-platform releases, runtime loading, the marketplace +
curated registry, the approach-B ABI caveat). The template becomes a
standalone cdylib crate (Cargo.toml + src/lib.rs + release workflow)
instead of an in-tree module.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 16:02:16 +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 Add plugin host architecture and Storm Sewer add-on package 2026-06-09 13:41:21 -04: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.