budtags/skills/quill/SKILL.md
Use this skill when working with Quill.js rich text editor - API methods, configuration, modules, Delta format, and custom implementations.
npx skillsauth add jwilly246/budtags-claude-plugin quillInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are now equipped with comprehensive knowledge of Quill.js v2.0.3 - a powerful, extensible rich text editor for the modern web. This skill uses progressive disclosure to load only the information relevant to your task.
When the user asks about Quill.js, you can:
This skill includes comprehensive documentation organized for progressive disclosure:
Getting Started:
categories/getting-started.md - Quickstart, CDN setup, basic initializationcategories/configuration.md - All configuration options and themescategories/formats.md - Available inline/block/embed formatsAPI Reference:
categories/api-content.md - Content methods (10 methods)categories/api-formatting.md - Formatting methods (5 methods)categories/api-selection.md - Selection and focus methods (4 methods)categories/api-editor.md - Editor lifecycle methods (6 methods)categories/api-events.md - Event system (text-change, selection-change, etc.)categories/api-model.md - Document traversal (find, getLine, getLeaf, etc.)categories/api-extension.md - Registration and importsDelta Format:
categories/delta.md - Complete Delta specification with examplesModules:
categories/toolbar-module.md - Toolbar configuration and handlerscategories/keyboard-module.md - Keyboard bindings and contextcategories/history-module.md - Undo/redo configurationcategories/clipboard-module.md - Paste handling and matcherscategories/syntax-module.md - Code highlighting with highlight.jspatterns/themes.md - Snow and Bubble themes, customizationpatterns/registries.md - Multiple editors with different formatspatterns/upgrading.md - Migration from v1.x to v2.0guides/delta-design.md - Delta format design philosophyguides/custom-modules.md - Building custom modules step-by-stepguides/parchment-blots.md - Creating custom formats with ParchmentOfficial Docs: https://quilljs.com/docs
CDN Setup:
<!-- Stylesheet -->
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/quill.snow.css" rel="stylesheet" />
<!-- Library -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/quill.js"></script>
NPM Installation:
npm install [email protected]
Key Features:
IMPORTANT: Only load files relevant to the user's question. DO NOT load all categories.
Ask the user or determine from context:
"What Quill.js task are you working on? Please provide:
Determine scope:
User asks: "How do I set up Quill with CDN?"
Load:
categories/getting-started.md (CDN setup, initialization)Context: ~100 lines (97% reduction from loading all docs)
User asks: "How do I insert formatted text?"
Load:
categories/api-content.md (insertText method + examples)categories/formats.md (IF user needs list of available formats)Context: ~120-200 lines (94% reduction)
User asks: "How do I customize the toolbar?"
Load:
categories/toolbar-module.md (complete toolbar docs)Context: ~120 lines (96% reduction)
User asks: "How does Delta format work?"
Load:
categories/delta.md (complete Delta specification)Context: ~150 lines (95% reduction)
User asks: "How do I listen for text changes?"
Load:
categories/api-events.md (text-change, selection-change, etc.)Context: ~100 lines (97% reduction)
User asks: "How do I create a custom format with Parchment?"
Load:
guides/parchment-blots.md (Blot types, custom formats)categories/api-extension.md (Quill.register())Context: ~200 lines (93% reduction)
When answering:
User: "How do I initialize Quill with the Snow theme?"
Your Response:
To initialize Quill with the Snow theme, you need to:
1. Include the Snow stylesheet
2. Create a container element
3. Initialize with theme option
Let me load the getting-started guide for you...
[Load categories/getting-started.md]
**HTML Setup**:
```html
<!-- Stylesheet -->
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/quill.snow.css" rel="stylesheet" />
<!-- Container -->
<div id="editor">
<p>Hello World!</p>
</div>
<!-- Library -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/quill.js"></script>
JavaScript Initialization:
const quill = new Quill('#editor', {
theme: 'snow'
});
Official Docs: https://quilljs.com/docs/quickstart Category Reference: categories/getting-started.md
Would you like to see configuration options or toolbar customization?
### Example 2: API Method Question
**User**: "How do I insert text with bold formatting?"**
**Your Response**:
```markdown
Use the `insertText()` method with format parameters.
[Load categories/api-content.md for method details]
**Method Signature**:
```typescript
insertText(index: number, text: string, format?: string, value?: any, source?: string): Delta
Example - Insert bold text:
// Insert "Hello" in bold at position 0
quill.insertText(0, 'Hello', 'bold', true);
// Insert "World" with multiple formats
quill.insertText(6, 'World', {
bold: true,
color: '#ff0000'
});
Official Docs: https://quilljs.com/docs/api/#inserttext Category Reference: categories/api-content.md
Related Methods:
formatText() - Format existing textgetContents() - Retrieve formatted content as DeltaWould you like to see all available formats or learn about the Delta format?
### Example 3: Module Configuration Question
**User**: "How do I add custom buttons to the toolbar?"**
**Your Response**:
```markdown
You can configure the toolbar using either array-based or HTML container approaches.
[Load categories/toolbar-module.md]
**Array-Based Approach** (simplest):
```javascript
const quill = new Quill('#editor', {
modules: {
toolbar: [
['bold', 'italic', 'underline'],
[{ 'header': 1 }, { 'header': 2 }],
['link', 'image']
]
},
theme: 'snow'
});
Custom Handler Example:
const quill = new Quill('#editor', {
modules: {
toolbar: {
container: [['bold', 'link']],
handlers: {
link: function(value) {
if (value) {
const href = prompt('Enter the URL');
this.quill.format('link', href);
} else {
this.quill.format('link', false);
}
}
}
}
}
});
Official Docs: https://quilljs.com/docs/modules/toolbar Category Reference: categories/toolbar-module.md
Would you like to see the HTML container approach or learn about other modules?
### Example 4: Delta Format Question
**User**: "What is Delta format and how do I use it?"
**Your Response**:
```markdown
Delta is Quill's JSON-based format for describing editor content and changes.
[Load categories/delta.md]
**Basic Document Structure**:
```javascript
{
ops: [
{ insert: 'Gandalf', attributes: { bold: true } },
{ insert: ' the ' },
{ insert: 'Grey', attributes: { color: '#cccccc' } }
]
}
Key Concepts:
Get Content as Delta:
const delta = quill.getContents();
console.log(delta);
Set Content from Delta:
quill.setContents({
ops: [
{ insert: 'Hello ' },
{ insert: 'World', attributes: { bold: true } },
{ insert: '\n' }
]
});
Official Docs: https://quilljs.com/docs/delta Category Reference: categories/delta.md
Would you like to see change operations (delete, retain) or learn about line formatting?
---
## Quick Reference: API Categories
### Content Methods (10 methods)
```javascript
deleteText(index, length, source)
getContents(index, length)
getLength()
getText(index, length)
getSemanticHTML(index, length)
insertEmbed(index, type, value, source)
insertText(index, text, [format, value], source)
setContents(delta, source)
setText(text, source)
updateContents(delta, source)
Load: categories/api-content.md
format(name, value, source)
formatLine(index, length, format, value, source)
formatText(index, length, format, value, source)
getFormat(range | index, length)
removeFormat(index, length, source)
Load: categories/api-formatting.md
getBounds(index, length)
getSelection(focus)
setSelection(index, length, source)
scrollSelectionIntoView()
Load: categories/api-selection.md
Most API methods accept a source parameter:
'user' - Changes from user interactions'api' - Changes from API calls (default)'silent' - Suppresses eventsUse Cases:
'api' (default) - Normal programmatic changes'silent' - Prevent event firing (e.g., in event handlers to avoid loops)Quill uses 0-based index positions:
getLength() to get total length✅ Always end documents with newline (\n)
✅ Line formats apply to newline characters
✅ Many line formats are mutually exclusive (e.g., can't be both header and blockquote)
✅ Deltas are irreversible (delete operations don't record deleted content)
Quill v2.0+ includes official TypeScript definitions:
import Quill from 'quill';
const quill = new Quill('#editor', {
theme: 'snow',
modules: {
toolbar: [['bold', 'italic']]
}
});
categories/getting-started.md - Use when you need to:
categories/api-content.md - Use when you need to:
categories/api-formatting.md - Use when you need to:
categories/api-events.md - Use when you need to:
categories/delta.md - Use when you need to:
categories/toolbar-module.md - Use when you need to:
categories/keyboard-module.md - Use when you need to:
guides/parchment-blots.md - Use when you need to:
Help users successfully implement Quill.js rich text editor by:
You have complete knowledge of Quill.js v2.0.3 API via modular, focused files. Use progressive disclosure to provide fast, relevant answers!
Breaking Changes from v1.x:
strict removed, registry added)For migration details, see patterns/upgrading.md
development
Use this skill when generating ZPL code, working with ZPL commands, creating Zebra printer labels, or troubleshooting ZPL syntax and formatting issues.
development
Use this skill to verify that code aligns with BudTags coding standards, architectural patterns, and conventions before or after implementation.
development
Use this skill when working with Unleashed Software inventory/order management API integration, syncing inventory, importing orders, managing stock adjustments, or handling customer/product data from Unleashed.
data-ai
TanStack Virtual patterns for virtualized lists, tables, and grids with high-performance rendering of large datasets