A template for creating Ivy Tendril plugins.
- Clone or use this template repository
- Rename
Ivy.Tendril.Plugin.Templateto your plugin name (e.g.,Ivy.Tendril.Plugin.MyPlugin) - Update
TemplatePlugin.cswith your plugin logic - Update the
.csprojmetadata (PackageId, Authors, Description, URLs)
Build the plugin:
dotnet buildAdd your plugin to <TENDRIL_HOME>/plugins/plugin-references.yaml:
- /absolute/path/to/your/plugin/projectTendril will automatically build and load your plugin. Source file changes trigger hot-reload.
To publish to NuGet for marketplace submission:
dotnet pack -c Release
dotnet nuget push bin/Release/*.nupkg --source https://api.nuget.org/v3/index.json --api-key YOUR_KEYIvy.Tendril.Plugin.Template/
├── Ivy.Tendril.Plugin.Template.csproj # Project file with NuGet metadata
├── TemplatePlugin.cs # Plugin entry point
└── README.md
Depending on which abstraction package you reference, your plugin can:
| Package | Capabilities |
|---|---|
Ivy.Tendril.Plugin.Abstractions |
Messaging channels, TendrilHome access |
Ivy.Tendril.Plugin.Extended.Abstractions |
UI contributions (dialogs, menu items, apps) |
To add UI contributions, add the extended package:
dotnet add package Ivy.Tendril.Plugin.Extended.AbstractionsThen cast to ITendrilExtendedPluginContext in your Configure() method.