CKEditor 5 Plugin
TEXTYou are a senior CKEditor 5 plugin architect.
I need you to build a complete CKEditor 5 plugin called "NewsletterPlugin".
Context:
- This is a migration from a legacy CKEditor 4 plugin.
- Must follow CKEditor 5 architecture strictly.
- Must use CKEditor 5 UI framework and plugin system.
- Must follow documentation:
https://ckeditor.com/docs/ckeditor5/latest/framework/architecture/ui-components.html
https://ckeditor.com/docs/ckeditor5/latest/features/html/general-html-support.html
Environment:
- CKEditor 5 custom build
- ES6 modules
- Typescript preferred (if possible)
- No usage of CKEditor 4 APIs
========================================
FEATURE REQUIREMENTS
========================================
1) Toolbar Button:
- Add a toolbar button named "newsletter"
- Icon: simple SVG placeholder
- When clicked → open a dialog (modal)
2) Dialog Behavior:
The dialog must contain input fields:
- title (text input)
- description (textarea)
- tabs (dynamic list, user can add/remove tab items)
Each tab item:
- tabTitle
- tabContent (HTML allowed)
Buttons:
- Cancel
- OK
3) On OK:
- Generate structured HTML block inside editor
- Structure example:
<div class="newsletter">
<ul class="newsletter-tabs">
<li class="active">
<a href="#tab-1" class="active">Tab 1</a>
</li>
<li>
<a href="#tab-2">Tab 2</a>
</li>
</ul>
<div class="newsletter-content">
<div id="tab-1" class="tab-pane active">
Content 1
</div>
<div id="tab-2" class="tab-pane">
Content 2
</div>
</div>
</div>
4) Behavior inside editor:
- First tab always active by default.
- When user clicks <a> tab link:
- Remove class "active" from all tabs and panes
- Add class "active" to clicked tab and corresponding pane
- When user double-clicks <a>:
- Open dialog again
- Load existing data
- Allow editing
- Update HTML structure
5) MUST USE:
- GeneralHtmlSupport (GHS) for allowing custom classes & attributes
- Proper upcast / downcast converters
- Widget API (toWidget, toWidgetEditable if needed)
- Command class
- UI Component system (ButtonView, View, InputTextView)
- Editing & UI part separated
- Schema registration properly
6) Architecture required:
Create structure:
- newsletter/
- newsletterplugin.ts
- newsletterediting.ts
- newsletterui.ts
- newslettercommand.ts
7) Technical requirements:
- Register schema element:
newsletterBlock
- Must allow:
class
id
href
data attributes
- Use:
editor.model.change()
conversion.for('upcast')
conversion.for('downcast')
- Handle click event via editing view document
- Use editing.view.document.on( 'click', ... )
- Detect double click event
8) Important:
Do NOT use raw DOM manipulation.
All updates must go through editor.model.
9) Output required:
- Full plugin code
- Proper imports
- Comments explaining architecture
- Explain migration differences from CKEditor 4
- Show how to register plugin in build
10) Extra:
Explain how to enable GeneralHtmlSupport configuration in editor config.
========================================
Please produce clean production-ready code.
Do not simplify logic.
Follow CKEditor 5 best practices strictly.Overview
CKEditor 5 Plugin is a free prompt on OpenRuna. A curated prompt on OpenRuna for builders using ChatGPT, Claude, and Cursor.
What this prompt does
"CKEditor 5 Plugin" is designed to help you get reliable results from AI assistants for real prompt tasks. A curated prompt on OpenRuna for builders using ChatGPT, Claude, and Cursor. It is catalogued in OpenRuna's resource graph so you can discover related prompts, tools, agents, and datasets in one place. Copy the content directly into ChatGPT, Claude, Gemini, or Cursor — or use it as a system prompt / skill instruction where applicable.
Use cases
- Use "CKEditor 5 Plugin" when you need a repeatable prompt for professional workflows without writing instructions from scratch each time.
- Adapt this prompt for team onboarding — paste into Claude or ChatGPT and iterate on the output with your project context.
- Combine with related tools and prompts in the same OpenRuna category to build a full stack for your use case.
- Reference during code review or planning sessions when you want consistent AI-assisted quality bars.
Example output
When you run this prompt, expect structured output similar to: You are a senior CKEditor 5 plugin architect. I need you to build a complete CKEditor 5 plugin called "NewsletterPlugin". Context: - This is a migration from a legacy CKEditor 4 plugin. - Must follow CKEditor 5 architecture strictly. - Must use CKEditor 5 UI framework and plugin system. - Must follow documentation: https://ckeditor.com/docs/ckeditor5/latest/framework/architecture/ui-components.html https://ckeditor.com/docs/ckeditor5/latest/features/html/general-html-support.html Environment: - CKEditor 5 custom build - ES6 modules - Typescript preferred (if possible) - No usage of CKEd… Outputs vary by model and temperature; treat the first response as a draft and refine with follow-up prompts.
Tips by platform
Claude
In Claude, paste the full prompt as the first user message or add it to Project instructions. Ask Claude to confirm assumptions before executing. For long prompts, use Claude's artifact panel to iterate on structured output.
ChatGPT
In ChatGPT, start a new chat and paste this prompt verbatim. Enable GPT-4o or your preferred model for coding tasks. Use follow-ups like "apply this to [your context]" for best results.
Cursor
In Cursor, add key instructions from this prompt to .cursorrules or a SKILL.md file. Reference it in Agent mode with @ mentions. Keep the original title in comments so teammates can find it on OpenRuna.
Frequently asked questions
- What is "CKEditor 5 Plugin"?
- It is a prompt listed on OpenRuna — A curated prompt on OpenRuna for builders using ChatGPT, Claude, and Cursor. You can copy and adapt it for ChatGPT, Claude, Cursor, or other AI tools.
- Is this prompt free to use?
- Most OpenRuna resources are open or CC0-licensed. Check the license on this page before commercial use. Premium collections are clearly marked.
- How do I get the best results?
- Replace any template variables, add your project context, and ask the model to confirm assumptions. Iterate in 2–3 follow-up turns rather than expecting a perfect first response.
- Can I use this with Claude and ChatGPT?
- Yes. The prompt is model-agnostic text. Tips on this page cover Claude, ChatGPT, and Cursor specifically.
- Where can I find related resources?
- Scroll to Related resources on this page or browse the category hub on OpenRuna to find connected prompts, tools, and agents in the same topic area.
Related resources
- Prompt
Procedural 3D Environment Designer
- Prompt
3D Physics Sandbox Architect
- Prompt
[sigrex.io] Full Kitchen Sink
- COLLECTION
gstack — AI Engineering System
Garry Tan's open-source virtual engineering team: plan, design, review, QA, and ship with Claude Code and other agents.
- Prompt
[sigrex.io] Fear & Greed Sentiment Filter
- Prompt
interview assistance
- Prompt
[sigrex.io] RSI + MACD Momentum
- Prompt
senior market research analyst specializing in digital advertising and cross-border e-commerce.
