> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mudstack.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Plugin Ideas

> A comprehensive list of plugins you can build with the Mudstack plugin system: thumbnailers, automation, integrations, and pipeline tools.

Use this list as inspiration for plugins you can build on top of the Mudstack plugin system. Each idea can be implemented using the [Plugin API](/developer/plugin-api): events, database access, config, context menu commands, and script execution.

***

## Thumbnailers and previews

* **FBX / GLTF / GLB thumbnailer** – Register for `*.fbx`, `*.gltf`, `*.glb`. Use **getVersionLocalPath** to read the file, run a headless renderer or external tool (e.g. Blender, custom script) to generate an image, then **updateThumbnail** with the image path.
* **Image thumbnailer** – Generate thumbnails for PSD, TIFF, EXR, or other image formats (resize/crop via ImageMagick, Sharp, or a small script). Filter by extension in the thumbnailer registration.
* **Audio thumbnailer** – For WAV/MP3/OGG: generate a waveform image or use a small script that outputs a PNG; set it as the version thumbnail.
* **Video thumbnailer** – Extract a frame (e.g. via ffmpeg) and call **updateThumbnail**.
* **Document thumbnailer** – PDF, DOCX: first page or cover as thumbnail using a CLI or script.
* **Substance / SBSAR thumbnailer** – Integrate with Allegorithmic tools or a renderer to produce a preview image for material assets.
* **Houdini / Maya / Max thumbnailer** – Use DCC command-line or scripting to render a viewport or frame and set as thumbnail.

***

## Context menu actions

* **Export to Unity** – Context menu “Export to Unity”: copy or convert selected assets to a Unity project path (configurable in plugin config). Use **api.db** to resolve paths and **executeCommand** or **executeNodeScript** for copy/convert.
* **Export to Unreal** – Same idea for Unreal: copy to Content folder or run Unreal’s import pipeline via CLI if available.
* **Run validation** – “Validate selection”: run a custom validator script (e.g. Python, Node) on selected assets; show results in logs or respond with a toast (if the app supports it via event).
* **Batch rename** – Right-click folder or selection: open a naming convention (e.g. prefix + counter), then use **api.db.assetAPI** to rename/move assets.
* **Add tag from preset** – “Add tag: WIP”, “Add tag: Approved”, etc. Use **api.db.assetAPI.addTags** for selected assets.
* **Copy path / Copy ID** – Context menu to copy asset path or asset/version ID to clipboard (via a small script or by sending an event that the app or another plugin handles).
* **Create version from local file** – “New version from file…”: pick a file, then call upload/version APIs or trigger app flow via events if exposed.
* **Send to review** – “Request review”: create a review request or trigger review workflow using **api.db** or app events.
* **Run custom script** – “Run script…”: let the user choose a script (path in config) and run it with selected asset IDs as arguments via **executeNodeScript** or **executePythonScript**.

***

## Event-driven automation

* **Auto-tag on upload** – Subscribe to **file.created** or **file.newVersion**. Based on path, extension, or metadata, call **api.db.assetAPI.addTags** or **api.db.assetVersionAPI** to set status/tags.
* **Slack / Discord / Teams on new version** – On **file.newVersion**, post a message to Slack/Discord/Teams (webhook or SDK) with asset name, link, and user. Use **api.executeNodeScript** or **api.executePythonScript** to call the API.
* **Thumbnail-on-upload** – If your plugin is the thumbnailer for that type, thumbnails are generated when the app requests them; you can also subscribe to **file.newVersion** and proactively trigger thumbnail generation for supported types.
* **Sync to external system** – On **file.created** / **file.newVersion**, push metadata or file reference to a pipeline DB, ShotGrid, Ftrack, or custom API using **api.db** to read asset/version info and **execute**\* or HTTP from a script.
* **Approval gates** – Subscribe to status or review events; when “Approved”, emit an event or call an external service to unlock the next step in the pipeline.
* **Cleanup old versions** – Periodic (timer in plugin) or on event: list versions for assets, keep last N, call **api.db.assetVersionAPI** to trash or delete older ones (with configurable rules and safety limits).

***

## Integrations and pipeline

* **ShotGrid / FTrack sync** – Two-way or one-way sync: when assets/versions change in Mudstack, update ShotGrid/FTrack (and optionally the reverse). Use **api.db** and **execute**\* or a small Node/Python service.
* **Perforce / Git LFS bridge** – On new version or on demand, export files to a Perforce depot or Git LFS repo via **getVersionLocalPath** and **executeCommand** (p4, git).
* **CI/CD trigger** – On **file.newVersion** or “Run validation” context menu, call Jenkins, GitHub Actions, or a webhook (e.g. via **executeCommand** curl or a script).
* **Asset validator (custom rules)** – Plugin that subscribes to **file.newVersion** or is invoked via context menu. Run custom checks (naming, poly count, texture size) and update status or tags via **api.db**; log or emit results.
* **Naming convention enforcer** – On **file.created** or **file.moved**, validate path/name against a configurable pattern; add a tag “Naming OK” or “Needs rename” and optionally log warnings.
* **Library sync** – Keep a Mudstack library in sync with a folder or another source: periodically or on event, compare and add/remove assets using **api.db.libraryAPI** and **api.db.assetAPI**.

***

## Quality of life and utilities

* **Duplicate detector** – Periodically or on demand: hash file contents (via **getVersionLocalPath** and a script), find duplicates, tag or report them.
* **Storage usage reporter** – Use **api.db** to list assets/versions, optionally with **getVersionLocalPath** and file size; aggregate by folder or type and log or export a report.
* **Bulk status update** – Context menu or event-driven: set status on many assets at once (e.g. “Mark selection as Approved”) using **api.db**.
* **Favorite sync** – Sync “favorites” or “pinned” state to an external list or vice versa (if the app exposes favorites in the DB or events).
* **Custom search** – Expose a way to run a custom search (e.g. by tag, name pattern, or external API) and present results; can be implemented as a script that uses **api.db** and logs or emits results for another plugin or the app to display.

***

## Advanced and niche

* **Custom thumbnail fallback** – If no thumbnailer matches, your plugin registers for a wildcard or “fallback” and generates a generic icon (e.g. by extension) and calls **updateThumbnail**.
* **Encryption / DRM** – On export or download path, run a script that encrypts or watermarks the file; or check a license before allowing an action (via context menu or event).
* **Multi-workspace copy** – “Copy to workspace…” context menu: copy selected assets or versions to another workspace using **api.db** and upload/import APIs if available.
* **Version diff** – Context menu “Compare with previous version”: use **getVersionLocalPath** for two versions and run a diff tool (e.g. external executable) via **executeCommand**.
* **Plugin dependency chain** – A “orchestrator” plugin that depends on several others and coordinates them (e.g. thumbnailer + validator + Slack notifier) using **api.hasDependency** and **api.requestFromPlugin**.

***

## Summary by category

| Category         | Examples                                                                         |
| ---------------- | -------------------------------------------------------------------------------- |
| **Thumbnailers** | FBX/GLTF, image, audio, video, document, DCC-specific                            |
| **Context menu** | Export to Unity/Unreal, validate, batch rename, add tag, copy path, run script   |
| **Automation**   | Auto-tag, Slack/Discord, sync to pipeline, approval gates, cleanup old versions  |
| **Integrations** | ShotGrid/FTrack, Perforce/Git LFS, CI/CD, validators, naming enforcer            |
| **Utilities**    | Duplicate detection, storage report, bulk status, custom search                  |
| **Advanced**     | Fallback thumbnail, encryption, multi-workspace copy, version diff, orchestrator |

Use the [Creating a plugin](/developer/creating-a-plugin) guide and the [Plugin API](/developer/plugin-api) to implement any of these. Start with a small scope (e.g. one context menu command or one event subscription) and expand from there.
