diff --git a/frontend/src/lib/editors/PluginEditorHost.svelte b/frontend/src/lib/editors/PluginEditorHost.svelte
new file mode 100644
index 000000000..9c927598d
--- /dev/null
+++ b/frontend/src/lib/editors/PluginEditorHost.svelte
@@ -0,0 +1,297 @@
+
+
+
+ {#if providers.length > 0 && !readonly}
+
+ {#if activeProvider}
+ {activeProvider.label || activeProvider.id}
+
+ {:else}
+ {#each providers as provider (provider.id)}
+
+ {/each}
+ {/if}
+
+ {/if}
+
+ {#if activeProvider}
+ {#if activeStyles}
+
+ {/if}
+ {#if pluginError}
+
+ {pluginError}
+
+ {/if}
+ {#if !pluginReady}
+
+
+
+ {/if}
+
+ {:else}
+
+ {/if}
+
+
+
diff --git a/frontend/src/lib/features/items/ItemDetailDescription.svelte b/frontend/src/lib/features/items/ItemDetailDescription.svelte
index 1b0209654..3c3c23b50 100644
--- a/frontend/src/lib/features/items/ItemDetailDescription.svelte
+++ b/frontend/src/lib/features/items/ItemDetailDescription.svelte
@@ -9,6 +9,7 @@
import Button from '../../components/Button.svelte';
import FileInput from '../../components/FileInput.svelte';
import MilkdownEditor from '../../editors/LazyMilkdownEditor.svelte';
+ import PluginEditorHost from '../../editors/PluginEditorHost.svelte';
import AttachmentDiagramList from '../assets/AttachmentDiagramList.svelte';
import AIActionsDropdown from './AIActionsDropdown.svelte';
import { getShortcut, matchesShortcut, getDisplayString } from '../../utils/keyboardShortcuts.js';
@@ -177,14 +178,17 @@
{#if editingDescription}