| name | adobe-express-document-manipulation |
| description | Create and modify document content in Adobe Express add-ons using Document SDK. Use when planning document operations, inserting shapes/text/media, sequencing sandbox commands, or troubleshooting document edits. |
Adobe Express Document Manipulation Skill
This skill guides you in planning and executing document operations in the document sandbox, from simple text insertion to complex multi-element layouts.
When to Use This Skill
- Planning what content to insert (shapes, text, images, audio, video)
- Sequencing multiple document operations safely
- Understanding Document SDK APIs and type signatures
- Designing insertion workflows triggered from UI actions
- Troubleshooting document operation failures
Quick Start
Common Document Operations
All operations run in document sandbox using Document SDK:
Text insertion:
- Query: "How do I create text with custom font size and color?"
- Relevant:
text.createText(), editor.context.insertionParent
Shape insertion:
- Query: "Create a filled rectangle at specific position"
- Relevant:
editor.createRectangle(), dimension and fill APIs
Image insertion (from iframe runtime):
- Query: "Insert image blob into current page"
- Relevant:
addOnUISdk.app.document.addImage(blob)
Audio/Video insertion (from iframe runtime):
- Query: "How do I add audio or video to the document?"
- Relevant:
addAudio() (title mandatory), addVideo() (title optional)
Sequence Operations Safely
- Identify insertion parent: Are you adding to current page or current selection?
- Plan async operations: Fetch resources before document edits
- Handle errors: Wrap in try-catch, provide user feedback
- Test ordering: Some operations depend on prior state
Query Official MCP for Details
When implementing, ask MCP:
- "What's the current signature for
editor.createRectangle()?"
- "What properties does
RectangleNode expose?"
- "What's the type of
editor.context.insertionParent?"
Document Operation Patterns
Insert Text
- Get insertion context:
editor.context.insertionParent
- Create text node with
text.createText()
- Set properties (fontSize, fill, transform, etc.)
- Append to parent with
children.append()
Insert Shape
- Create shape with
editor.createRectangle() (or other shape)
- Set dimensions and position
- Set fill and stroke properties
- Append to parent
Insert Media
- (From iframe) Fetch blob from URL or user input
- Call
addOnUISdk.app.document.addImage/Audio/Video(blob, options)
- For audio: title is mandatory
- For video: title is optional
Common Pitfalls
- No insertion parent: Check
editor.context.insertionParent exists
- DOM access in sandbox: All DOM operations fail in sandbox; use iframe runtime instead
- Missing title on audio: Audio requires title parameter; video does not
- Async before append: Fetch data before editing to avoid race conditions
Skill Handoffs
Pass to other skills when:
- UI button that triggers insertion → adobe-express-spectrum-ui-ux
- Fetching media from OAuth provider → adobe-express-oauth-authentication
- Paid feature gating → adobe-express-monetization
- Manifest and runtime questions → adobe-express-core
References