원클릭으로
umbraco-tiptap-extension
Implement Tiptap extensions for Umbraco rich text editor using official docs
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Implement Tiptap extensions for Umbraco rich text editor using official docs
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Implement UFM (Umbraco Flavored Markdown) components in Umbraco backoffice using official docs
Add a new Umbraco extension project reference to the main Umbraco instance and solution
Understand and use localization in Umbraco backoffice (foundational concept)
Implement property editor UIs in Umbraco backoffice using official docs
Quick setup for Umbraco extension development - creates instance, extension, and registers it
Review checks reference for validating Umbraco backoffice extensions
| name | umbraco-tiptap-extension |
| description | Implement Tiptap extensions for Umbraco rich text editor using official docs |
| version | 1.0.0 |
| location | managed |
| allowed-tools | Read, Write, Edit, WebFetch |
A Tiptap Extension adds functionality to Umbraco's Rich Text Editor (which is built on Tiptap). Extensions can add new node types (like custom blocks), marks (like custom formatting), or other editor capabilities. The extension API provides the underlying Tiptap extensions that get registered with the editor.
Always fetch the latest docs before implementing:
Tiptap Toolbar Extension: For adding toolbar buttons
umbraco-tiptap-toolbar-extensionTiptap Statusbar Extension: For adding statusbar elements
umbraco-tiptap-statusbar-extensionimport type { ManifestTiptapExtension } from '@umbraco-cms/backoffice/extension-registry';
const manifest: ManifestTiptapExtension = {
type: 'tiptapExtension',
alias: 'My.TiptapExtension.Highlight',
name: 'Highlight Extension',
api: () => import('./highlight.tiptap-api.js'),
meta: {
icon: 'icon-marker',
label: 'Highlight',
group: 'formatting',
},
};
export const manifests = [manifest];
import { UmbTiptapExtensionApiBase } from '@umbraco-cms/backoffice/tiptap';
import type { UmbTiptapExtensionArgs } from '@umbraco-cms/backoffice/tiptap';
import Highlight from '@tiptap/extension-highlight';
export default class HighlightTiptapExtensionApi extends UmbTiptapExtensionApiBase {
getTiptapExtensions(args?: UmbTiptapExtensionArgs) {
return [
Highlight.configure({
multicolor: true,
}),
];
}
}
import { UmbTiptapExtensionApiBase } from '@umbraco-cms/backoffice/tiptap';
import { Node } from '@tiptap/core';
export default class CalloutTiptapExtensionApi extends UmbTiptapExtensionApiBase {
getTiptapExtensions() {
const CalloutNode = Node.create({
name: 'callout',
group: 'block',
content: 'block+',
addAttributes() {
return {
type: {
default: 'info',
},
};
},
parseHTML() {
return [{ tag: 'div[data-callout]' }];
},
renderHTML({ HTMLAttributes }) {
return ['div', { 'data-callout': '', ...HTMLAttributes }, 0];
},
});
return [CalloutNode];
}
}
import { UmbTiptapExtensionApiBase } from '@umbraco-cms/backoffice/tiptap';
import { Mark } from '@tiptap/core';
export default class CustomMarkTiptapExtensionApi extends UmbTiptapExtensionApiBase {
getTiptapExtensions() {
const CustomMark = Mark.create({
name: 'customHighlight',
addAttributes() {
return {
color: {
default: 'yellow',
},
};
},
parseHTML() {
return [{ tag: 'mark' }];
},
renderHTML({ HTMLAttributes }) {
return ['mark', { style: `background-color: ${HTMLAttributes.color}` }, 0];
},
});
return [CustomMark];
}
}
import { UmbTiptapExtensionApiBase } from '@umbraco-cms/backoffice/tiptap';
import { css } from '@umbraco-cms/backoffice/external/lit';
import Highlight from '@tiptap/extension-highlight';
export default class StyledHighlightApi extends UmbTiptapExtensionApiBase {
getTiptapExtensions() {
return [Highlight];
}
// Custom styles for the editor
getStyles() {
return css`
mark {
background-color: yellow;
padding: 0.1em 0.2em;
border-radius: 2px;
}
`;
}
}
import { UmbTiptapExtensionApiBase } from '@umbraco-cms/backoffice/tiptap';
import type { UmbTiptapExtensionArgs } from '@umbraco-cms/backoffice/tiptap';
import Highlight from '@tiptap/extension-highlight';
export default class ConfigurableHighlightApi extends UmbTiptapExtensionApiBase {
getTiptapExtensions(args?: UmbTiptapExtensionArgs) {
// Access data type configuration
const multicolor = args?.configuration?.getValueByAlias('multicolor') ?? false;
return [
Highlight.configure({
multicolor,
}),
];
}
}
| Property | Description |
|---|---|
icon | Icon shown in configuration UI |
label | Display name |
group | Group for organizing extensions |
description | Optional description |
formatting - Text formatting (bold, italic, etc.)structure - Structural elements (headings, lists, etc.)media - Media elements (images, embeds, etc.)misc - Other functionalityThat's it! Always fetch fresh docs, keep examples minimal, generate complete working code.