Free SKILL.md scraped from GitHub. Clone the repo or copy the file directly into your Claude Code skills directory.
npx versuz@latest install partme-ai-full-stack-skills-skills-pencil-skills-pencil-mcp-batch-designgit clone https://github.com/partme-ai/full-stack-skills.gitcp full-stack-skills/SKILL.MD ~/.claude/skills/partme-ai-full-stack-skills-skills-pencil-skills-pencil-mcp-batch-design/SKILL.md---
name: pencil-mcp-batch-design
description: "Batch execute insert, update, replace, move, and delete operations on Pencil .pen design nodes via the batch_design MCP tool. Use when the user explicitly mentions Pencil and needs to draw, insert, change, remove, or move elements on the canvas."
license: Complete terms in LICENSE.txt
---
## Tools
This skill is designed to call the Pencil MCP tool:
* `batch_design`
If your client namespaces MCP tools, it may appear as `mcp__pencil__batch_design`.
## When to use this skill
### Intent Recognition (CRITICAL)
Even if a trigger phrase matches, you must **verify the user's intent**:
1. Is the user explicitly asking to use "Pencil"?
2. Is the current conversation context clearly about "Pencil" design tasks?
**If the answer is NO, do NOT use this skill.** (e.g., if the user just says "Draw a rectangle" in a general context, they might mean Stitch, SVG, or Mermaid).
**CRITICAL PREREQUISITE:**
**You must ONLY use this skill when the user EXPLICITLY mentions "Pencil".**
**ALWAYS use this skill when:**
- You need to **Create**, **Update**, **Delete**, or **Move** elements on the canvas.
- The user asks to "Draw", "Insert", "Change", "Remove" something **using Pencil**.
- You are executing a design plan.
**Trigger phrases include:**
- "Draw a rectangle with Pencil" (用 Pencil 画一个矩形)
- "Pencil update text content" (Pencil 更新文本内容)
- "Insert component using Pencil" (使用 Pencil 插入组件)
- "Pencil move node" (Pencil 移动节点)
- "Delete selection with Pencil" (用 Pencil 删除选区)
## Input Parameters
The `batch_design` tool accepts a JSON structure defining a list of operations.
* **`operations`** (array, required): A list of operation objects.
* **Insert (`I`)**: `{ "type": "insert", "targetId": "...", "node": { ... } }`
* **Update (`U`)**: `{ "type": "update", "targetId": "...", "props": { ... } }`
* **Replace (`R`)**: `{ "type": "replace", "targetId": "...", "node": { ... } }`
* **Delete (`D`)**: `{ "type": "delete", "targetId": "..." }`
* **Move (`M`)**: `{ "type": "move", "targetId": "...", "parentId": "..." }`
**Important Notes:**
* **Batch Limit**: Keep each call to max **25 operations**. Split larger tasks.
* **Binding Names**: Create new binding names for every operation list. DO NOT reuse.
* **Component Instances**:
* Use `type: "ref"` and `ref: "ComponentID"` to insert instances.
* Use `U()` with instance path to override properties.
## How to use this skill
1. **Plan Operations**: specific exactly what needs to change.
2. **Construct JSON**: Build the valid JSON payload matching the `.pen` schema.
3. **Call Tool**: Invoke `batch_design`.
4. **Handle Errors**: If an operation fails, the batch rolls back. Check the error message and retry with corrections.
## Examples
### 1. Simple: Insert Text
Insert a simple text node into the current context.
See [1-insert-text.json](examples/1-insert-text.json).
### 2. Medium: Create Layout Frame
Create an Auto-Layout Frame with a child button.
See [2-create-layout.json](examples/2-create-layout.json).
### 3. Complex: Component Instance & Overrides
Insert a component instance and override its internal properties (e.g., changing button text) in one go.
See [3-component-instance.json](examples/3-component-instance.json).
## Keywords
**English keywords:**
batch design, draw ui, update props, insert node, delete element, move layer, modify canvas
**Chinese keywords (中文关键词):**
批量设计, 绘制UI, 更新属性, 插入节点, 删除元素, 移动图层, 修改画布