← 返回 Skills 市场
jhauga

Adobe Illustrator Scripting

作者 John Haugabook · GitHub ↗ · v1.0.1 · MIT-0
cross-platform ✓ 安全检测通过
174
总下载
0
收藏
0
当前安装
2
版本数
在 OpenClaw 中安装
/install adobe-illustrator-scripting
功能描述
Write, debug, and optimize Adobe Illustrator automation scripts using ExtendScript (JavaScript/JSX). Use when creating or modifying scripts that manipulate d...
使用说明 (SKILL.md)

Adobe Illustrator Scripting

Expert guidance for automating Adobe Illustrator through ExtendScript (JavaScript/JSX). This skill covers the Illustrator scripting object model, all major API objects, code patterns, and best practices for writing production-quality .jsx scripts.

Bundled Assets

  • references/object-model-quick-reference.md: Use this as a quick lookup for the Illustrator scripting object model, common document and page item types, and related DOM concepts while writing or debugging scripts.
  • scripts/: Contains example Illustrator automation scripts you can use as starting points or implementation patterns for common tasks such as document manipulation, exports, batch processing, and DOM usage. Review and adapt these examples when you need working JSX patterns or want to compare behavior while debugging.

When to Use This Skill

  • Writing new Illustrator automation scripts (.jsx or .js files)
  • Debugging or fixing existing Illustrator ExtendScript code
  • Manipulating documents, layers, page items, paths, text, or colors programmatically
  • Batch-processing Illustrator files or generating artwork from data
  • Exporting documents to various formats (PDF, SVG, PNG, EPS, etc.)
  • Working with the Illustrator DOM (Application, Document, Layer, PathItem, TextFrame, etc.)
  • Creating data-driven graphics using variables and datasets
  • Automating print workflows with scripted print options

Prerequisites

  • Adobe Illustrator CC or later installed
  • Basic JavaScript knowledge (ExtendScript is ES3-based with Adobe extensions)
  • Scripts are executed via File > Scripts > Other Scripts, the Scripts menu, or placed in the Startup Scripts folder
  • The ExtendScript Toolkit (ESTK) or any text editor can be used to write .jsx files

Scripting Environment

Language and File Extensions

Language Extension Platform
ExtendScript/JavaScript .jsx, .js Windows, macOS
AppleScript .scpt macOS only
VBScript .vbs Windows only

This skill focuses on ExtendScript/JavaScript as the cross-platform, most widely used option.

Executing Scripts

  • Scripts menu: File > Scripts lists scripts from the application scripts folder
  • Other Scripts: File > Scripts > Other Scripts to browse and run any .jsx file
  • Startup Scripts: Place scripts in the Startup Scripts folder to run automatically on launch
  • Target directive: Begin scripts with #target illustrator when running from ESTK or external tools
  • #targetengine directive: Use #targetengine "session" to persist variables across script executions

Naming Conventions (JavaScript)

  • Objects and properties use camelCase: activeDocument, pathItems, textFrames
  • The app global references the Application object
  • Collection indices are zero-based: documents[0] is the frontmost document
  • Use typename property to identify object types at runtime

Object Model Overview

The Illustrator DOM follows a strict containment hierarchy:

Application (app)
├── activeDocument / documents[]
│   ├── layers[]
│   │   ├── pageItems[] (all artwork)
│   │   ├── pathItems[]
│   │   ├── compoundPathItems[]
│   │   ├── textFrames[]
│   │   ├── placedItems[]
│   │   ├── rasterItems[]
│   │   ├── meshItems[]
│   │   ├── pluginItems[]
│   │   ├── graphItems[]
│   │   ├── symbolItems[]
│   │   ├── nonNativeItems[]
│   │   ├── legacyTextItems[]
│   │   └── groupItems[]
│   ├── artboards[]
│   ├── views[]
│   ├── selection (array of selected items)
│   ├── swatches[], spots[], gradients[], patterns[]
│   ├── graphicStyles[], brushes[], symbols[]
│   ├── textFonts[] (via app.textFonts)
│   ├── stories[], characterStyles[], paragraphStyles[]
│   ├── variables[], datasets[]
│   └── inkList[], printOptions
├── preferences
├── printerList[]
└── textFonts[]

Top-Level Objects

  • Application (app): The root object. Provides access to documents, preferences, fonts, and printers. Key properties: activeDocument, documents, textFonts, printerList, userInteractionLevel, version.
  • Document: Represents an open .ai file. Key properties: layers, pageItems, selection, activeLayer, width, height, rulerOrigin, documentColorSpace. Key methods: saveAs(), exportFile(), close(), print().
  • Layer: A drawing layer. Key properties: pageItems, pathItems, textFrames, visible, locked, opacity, name, zOrderPosition, color.

Measurement Units and Coordinates

Units

All scripting API values use points (72 points = 1 inch). Convert other units:

Unit Conversion
Inches multiply by 72
Centimeters multiply by 28.346
Millimeters multiply by 2.834645
Picas multiply by 12

Kerning, tracking, and aki properties use em units (thousandths of an em, proportional to font size).

Coordinate System

  • For scripted documents, the origin (0,0) is at the bottom-left of the artboard
  • X increases left to right; Y increases bottom to top
  • The position property of a page item is the top-left corner of its bounding box as [x, y]
  • Maximum page item width/height: 16348 points

Art Item Bounds

Every page item has three bounding rectangles:

  • geometricBounds: Excludes stroke width [left, top, right, bottom]
  • visibleBounds: Includes stroke width
  • controlBounds: Includes control/direction points

Working with Documents

Creating and Opening

// Create a new document
var doc = app.documents.add();

// Create with a preset
var preset = new DocumentPreset();
preset.width = 612;  // 8.5 inches
preset.height = 792; // 11 inches
preset.colorMode = DocumentColorSpace.CMYK;
var doc = app.documents.addDocument("Print", preset);

// Open an existing file
var fileRef = new File("/path/to/file.ai");
var doc = app.open(fileRef);

Saving and Exporting

// Save as Illustrator format
var saveOpts = new IllustratorSaveOptions();
saveOpts.compatibility = Compatibility.ILLUSTRATOR17; // CC
doc.saveAs(new File("/path/to/output.ai"), saveOpts);

// Export as PDF
var pdfOpts = new PDFSaveOptions();
pdfOpts.compatibility = PDFCompatibility.ACROBAT7;
pdfOpts.preserveEditability = false;
doc.saveAs(new File("/path/to/output.pdf"), pdfOpts);

// Export as PNG
var pngOpts = new ExportOptionsPNG24();
pngOpts.horizontalScale = 300;
pngOpts.verticalScale = 300;
pngOpts.transparency = true;
doc.exportFile(new File("/path/to/output.png"), ExportType.PNG24, pngOpts);

// Export as SVG
var svgOpts = new ExportOptionsSVG();
svgOpts.fontType = SVGFontType.OUTLINEFONT;
doc.exportFile(new File("/path/to/output.svg"), ExportType.SVG, svgOpts);

Working with Paths and Shapes

Built-in Shape Methods

The pathItems collection provides convenience methods for common shapes:

var doc = app.activeDocument;
var layer = doc.activeLayer;

// Rectangle: rectangle(top, left, width, height)
var rect = layer.pathItems.rectangle(500, 100, 200, 150);

// Rounded rectangle: roundedRectangle(top, left, width, height, hRadius, vRadius)
var rrect = layer.pathItems.roundedRectangle(500, 100, 200, 150, 20, 20);

// Ellipse: ellipse(top, left, width, height)
var oval = layer.pathItems.ellipse(400, 200, 100, 100);

// Polygon: polygon(centerX, centerY, radius, sides)
var hex = layer.pathItems.polygon(300, 300, 50, 6);

// Star: star(centerX, centerY, radius, innerRadius, points)
var star = layer.pathItems.star(300, 300, 50, 25, 5);

Freeform Paths Using Coordinate Arrays

var doc = app.activeDocument;
var path = doc.pathItems.add();
path.setEntirePath([[100, 100], [200, 200], [300, 100]]);
path.closed = false;
path.stroked = true;
path.strokeWidth = 2;

Freeform Paths Using PathPoint Objects

var doc = app.activeDocument;
var path = doc.pathItems.add();

var point1 = path.pathPoints.add();
point1.anchor = [100, 100];
point1.leftDirection = [100, 100];
point1.rightDirection = [150, 150];
point1.pointType = PointType.SMOOTH;

var point2 = path.pathPoints.add();
point2.anchor = [300, 100];
point2.leftDirection = [250, 150];
point2.rightDirection = [300, 100];
point2.pointType = PointType.SMOOTH;

path.closed = false;

Path Properties

var item = doc.pathItems[0];
item.filled = true;
item.stroked = true;
item.strokeWidth = 1.5;
item.strokeCap = StrokeCap.ROUNDENDCAP;
item.strokeJoin = StrokeJoin.ROUNDENDJOIN;
item.opacity = 80;
item.closed = true;

Working with Colors

Color Objects

// RGB Color (values 0-255)
var red = new RGBColor();
red.red = 255;
red.green = 0;
red.blue = 0;

// CMYK Color (values 0-100)
var cyan = new CMYKColor();
cyan.cyan = 100;
cyan.magenta = 0;
cyan.yellow = 0;
cyan.black = 0;

// Grayscale (0-100, 0 = black)
var gray = new GrayColor();
gray.gray = 50;

// Lab Color
var lab = new LabColor();
lab.l = 50;
lab.a = 20;
lab.b = -30;

// No color (transparent)
var none = new NoColor();

Applying Colors

var item = doc.pathItems[0];
item.fillColor = red;
item.strokeColor = cyan;

// Gradient fill
var gradient = doc.gradients.add();
gradient.type = GradientType.LINEAR;
gradient.gradientStops[0].color = red;
gradient.gradientStops[1].color = cyan;

var gradColor = new GradientColor();
gradColor.gradient = gradient;
item.fillColor = gradColor;

Spot Colors and Swatches

// Create a spot color
var spot = doc.spots.add();
spot.name = "My Spot Color";
spot.color = red; // Base color definition

var spotColor = new SpotColor();
spotColor.spot = spot;
spotColor.tint = 100;

item.fillColor = spotColor;

// Access a swatch by name
var swatch = doc.swatches.getByName("PANTONE 185 C");
item.fillColor = swatch.color;

Working with Text

Text Frame Types

var doc = app.activeDocument;

// Point text
var pointText = doc.textFrames.add();
pointText.contents = "Hello World!";
pointText.position = [100, 500];

// Area text (text inside a path)
var rectPath = doc.pathItems.rectangle(500, 100, 200, 100);
var areaText = doc.textFrames.areaText(rectPath);
areaText.contents = "Text inside a rectangle shape.";

// Path text (text along a path)
var curvePath = doc.pathItems.add();
curvePath.setEntirePath([[50, 300], [150, 400], [250, 300]]);
var pathText = doc.textFrames.pathText(curvePath);
pathText.contents = "Text on a path";

Character and Paragraph Formatting

var tf = doc.textFrames[0];
var textRange = tf.textRange;

// Character attributes
var charAttr = textRange.characterAttributes;
charAttr.size = 24;           // Font size in points
charAttr.textFont = app.textFonts.getByName("ArialMT");
charAttr.fillColor = red;
charAttr.tracking = 50;       // Em units
charAttr.horizontalScale = 100;
charAttr.verticalScale = 100;
charAttr.baselineShift = 0;

// Paragraph attributes
var paraAttr = textRange.paragraphAttributes;
paraAttr.justification = Justification.CENTER;
paraAttr.firstLineIndent = 0;
paraAttr.leftIndent = 0;
paraAttr.spaceBefore = 0;
paraAttr.spaceAfter = 0;

Accessing Text Content

var tf = doc.textFrames[0];

// Access sub-ranges
var firstChar = tf.characters[0];
var firstWord = tf.words[0];
var firstPara = tf.paragraphs[0];
var firstLine = tf.lines[0];

// Modify specific ranges
tf.words[0].characterAttributes.size = 36;
tf.paragraphs[0].paragraphAttributes.justification = Justification.LEFT;

Threading Text Frames

var frame1 = doc.textFrames.areaText(path1);
var frame2 = doc.textFrames.areaText(path2);

// Link frames so text flows from frame1 to frame2
frame1.nextFrame = frame2;

// Stories represent the full text across threaded frames
var storyCount = doc.stories.length;
var fullText = doc.stories[0].textRange.contents;

Working with Layers

var doc = app.activeDocument;

// Create a layer
var newLayer = doc.layers.add();
newLayer.name = "Background";
newLayer.visible = true;
newLayer.locked = false;
newLayer.opacity = 100;

// Access existing layers
var topLayer = doc.layers[0];
var layerByName = doc.layers.getByName("Background");

// Move items between layers
var item = doc.pathItems[0];
item.move(newLayer, ElementPlacement.PLACEATBEGINNING);

// Reorder layers
newLayer.zOrder(ZOrderMethod.SENDTOBACK);

Working with Selections

// Get current selection
var sel = app.activeDocument.selection;

// Iterate selected items
for (var i = 0; i \x3C sel.length; i++) {
    var item = sel[i];
    // Check type using typename
    if (item.typename === "PathItem") {
        item.fillColor = red;
    } else if (item.typename === "TextFrame") {
        item.contents = "Modified";
    }
}

// Select an item programmatically
doc.pathItems[0].selected = true;

// Deselect all
doc.selection = null;

Working with Symbols

// Place a symbol instance
var sym = doc.symbols.getByName("MySymbol");
var instance = doc.symbolItems.add(sym);
instance.position = [200, 400];

// Access symbol definition
var symDef = instance.symbol;

// Break link to symbol (expand to regular art)
instance.breakLink();

Transformations

var item = doc.pathItems[0];

// Rotate 45 degrees around center
item.rotate(45);

// Scale to 50% width, 75% height
item.resize(50, 75);

// Translate (move) by 100 points right and 50 points up
item.translate(100, 50);

// Using a transformation matrix
var matrix = app.getIdentityMatrix();
matrix = app.concatenateRotationMatrix(matrix, 30);
matrix = app.concatenateScaleMatrix(matrix, 150, 150);
item.transform(matrix);

Working with Artboards

var doc = app.activeDocument;

// Access artboards
var ab = doc.artboards[0];
var rect = ab.artboardRect; // [left, top, right, bottom]

// Create a new artboard
var newAB = doc.artboards.add([0, 0, 612, 792]); // Letter size
newAB.name = "Page 2";

// Set active artboard
doc.artboards.setActiveArtboardIndex(1);

Data-Driven Graphics (Variables and Datasets)

// Variables link document items to data fields
var v = doc.variables.add();
v.kind = VariableKind.TEXTUAL;
v.name = "headline";

// Link a text frame to the variable
var tf = doc.textFrames[0];
tf.contentVariable = v;

// Create datasets for batch content
var ds = doc.dataSets.add();
ds.name = "Version 1";
// Dataset captures current variable bindings

// Switch datasets to swap content
doc.dataSets[0].display();

Printing

var doc = app.activeDocument;
var opts = new PrintOptions();

opts.printPreset = "Default";

// Paper options
var paperOpts = new PrintPaperOptions();
paperOpts.name = "Letter";
opts.paperOptions = paperOpts;

// Job options
var jobOpts = new PrintJobOptions();
jobOpts.copies = 1;
jobOpts.designation = PrintArtworkDesignation.VISIBLELAYERS;
opts.jobOptions = jobOpts;

doc.print(opts);

User Interaction Levels

Control whether Illustrator shows dialogs during script execution:

// Suppress all dialogs
app.userInteractionLevel = UserInteractionLevel.DONTDISPLAYALERTS;

// Perform operations that might prompt dialogs...
doc.close(SaveOptions.DONOTSAVECHANGES);

// Restore dialog display
app.userInteractionLevel = UserInteractionLevel.DISPLAYALERTS;

Working with Methods (JavaScript-Specific)

When calling methods with multiple optional parameters, use undefined to skip middle parameters:

// rotate(angle, [changePositions], [changeFillPatterns], [changeFillGradients], ...)
item.rotate(30, undefined, undefined, true);

Common Patterns

Iterate All Page Items in a Document

function processAllItems(doc) {
    for (var i = 0; i \x3C doc.pageItems.length; i++) {
        var item = doc.pageItems[i];
        // Process based on type
        switch (item.typename) {
            case "PathItem":
                // handle path
                break;
            case "TextFrame":
                // handle text
                break;
            case "GroupItem":
                // handle group (may contain nested items)
                break;
        }
    }
}

Batch Process Files in a Folder

var folder = Folder.selectDialog("Select folder of .ai files");
if (folder) {
    var files = folder.getFiles("*.ai");
    for (var i = 0; i \x3C files.length; i++) {
        var doc = app.open(files[i]);
        // Process each document...
        doc.close(SaveOptions.DONOTSAVECHANGES);
    }
}

Error Handling

try {
    var doc = app.activeDocument;
    var layer = doc.layers.getByName("NonExistentLayer");
} catch (e) {
    alert("Error: " + e.message);
    // e.message, e.line, e.fileName available
}

Troubleshooting

  • "undefined is not an object": Usually means the collection is empty or the index is out of bounds. Check .length before accessing items.
  • Script runs but nothing changes visually: Call app.redraw() to force a screen refresh after modifications.
  • Color mode mismatch: Document color space (RGB vs CMYK) must match color objects. Use doc.documentColorSpace to check.
  • Position seems wrong: Remember scripted documents use bottom-left origin with Y increasing upward. The position property is the top-left of the bounding box.
  • Text not appearing: Ensure the text frame has a non-zero size. For point text, set position; for area text, provide a valid path to areaText().
  • File paths on Windows: Use forward slashes (/) or double backslashes (\\) in path strings, or use the File object constructor.
  • Dialog boxes interrupting batch scripts: Set app.userInteractionLevel = UserInteractionLevel.DONTDISPLAYALERTS before batch operations.
  • Collections use getByName(): Many collection objects support getByName("name") which throws an error if not found; wrap in try/catch.

Scripting Constants Reference

Common enumeration constants used across the API:

Category Constants
Color Space DocumentColorSpace.RGB, DocumentColorSpace.CMYK
Justification Justification.LEFT, Justification.CENTER, Justification.RIGHT, Justification.FULLJUSTIFY
Point Type PointType.SMOOTH, PointType.CORNER
Stroke Cap StrokeCap.BUTTENDCAP, StrokeCap.ROUNDENDCAP, StrokeCap.PROJECTINGENDCAP
Stroke Join StrokeJoin.MITERENDJOIN, StrokeJoin.ROUNDENDJOIN, StrokeJoin.BEVELENDJOIN
Blend Mode BlendModes.NORMAL, BlendModes.MULTIPLY, BlendModes.SCREEN, BlendModes.OVERLAY
Save Options SaveOptions.SAVECHANGES, SaveOptions.DONOTSAVECHANGES, SaveOptions.PROMPTTOSAVECHANGES
Export Type ExportType.PNG24, ExportType.PNG8, ExportType.JPEG, ExportType.SVG, ExportType.TIFF, ExportType.PHOTOSHOP, ExportType.AUTOCAD, ExportType.FLASH
Element Placement ElementPlacement.PLACEATBEGINNING, ElementPlacement.PLACEATEND, ElementPlacement.PLACEBEFORE, ElementPlacement.PLACEAFTER, ElementPlacement.INSIDE
Z-Order ZOrderMethod.BRINGTOFRONT, ZOrderMethod.SENDTOBACK, ZOrderMethod.BRINGFORWARD, ZOrderMethod.SENDBACKWARD
Gradient Type GradientType.LINEAR, GradientType.RADIAL
Text Frame Kind TextType.POINTTEXT, TextType.AREATEXT, TextType.PATHTEXT
Variable Kind VariableKind.TEXTUAL, VariableKind.IMAGE, VariableKind.VISIBILITY, VariableKind.GRAPH
User Interaction UserInteractionLevel.DISPLAYALERTS, UserInteractionLevel.DONTDISPLAYALERTS
Compatibility Compatibility.ILLUSTRATOR10 through Compatibility.ILLUSTRATOR24

JavaScript Object Reference (Complete API Object List)

The Illustrator JavaScript API contains the following objects, grouped by category:

Core Objects

Application, Document, Documents, DocumentPreset, Layer, Layers, PageItem, PageItems, View, Views, Preferences

Path and Shape Objects

PathItem, PathItems, PathPoint, PathPoints, CompoundPathItem, CompoundPathItems, GroupItem, GroupItems

Text Objects

TextFrame, TextRange, TextRanges, TextPath, Characters, Words, Paragraphs, Lines, InsertionPoint, InsertionPoints, Story, Stories, CharacterAttributes, ParagraphAttributes, CharacterStyle, CharacterStyles, ParagraphStyle, ParagraphStyles, TextFont, TextFonts, TabStopInfo

Color Objects

RGBColor, CMYKColor, GrayColor, LabColor, NoColor, SpotColor, Spot, Spots, PatternColor, GradientColor, Color, Gradient, Gradients, GradientStop, GradientStops

Swatch and Style Objects

Swatch, Swatches, SwatchGroup, SwatchGroups, GraphicStyle, GraphicStyles, Pattern, Patterns, Brush, Brushes

Symbol Objects

Symbol, Symbols, SymbolItem, SymbolItems

Artboard Objects

Artboard, Artboards

Placed and Raster Objects

PlacedItem, PlacedItems, RasterItem, RasterItems, MeshItem, MeshItems, GraphItem, GraphItems, PluginItem, PluginItems, NonNativeItem, NonNativeItems, LegacyTextItem, LegacyTextItems

Data-Driven Objects

Variable, Variables, Dataset, Datasets

Matrix and Transform Objects

Matrix

Tag Objects

Tag, Tags

Tracing Objects

TracingObject, TracingOptions

Save and Export Options

IllustratorSaveOptions, EPSSaveOptions, PDFSaveOptions, FXGSaveOptions, ExportOptionsAutoCAD, ExportOptionsFlash, ExportOptionsGIF, ExportOptionsJPEG, ExportOptionsPhotoshop, ExportOptionsPNG8, ExportOptionsPNG24, ExportOptionsSVG, ExportOptionsTIFF

Open Options

OpenOptions, OpenOptionsAutoCAD, OpenOptionsFreeHand, OpenOptionsPhotoshop, PDFFileOptions, PhotoshopFileOptions

Print Objects

PrintOptions, PrintJobOptions, PrintPaperOptions, PrintColorManagementOptions, PrintColorSeparationOptions, PrintCoordinateOptions, PrintFlattenerOptions, PrintFontOptions, PrintPageMarksOptions, PrintPostScriptOptions, Printer, PrinterInfo, Paper, PaperInfo, PPDFile, PPDFileInfo, Ink, InkInfo, Screen, ScreenInfo, ScreenSpotFunction

Image and Rasterize Options

ImageCaptureOptions, RasterEffectOptions, RasterizeOptions

References

  • Changelog - Recent scripting API changes (CC 2020 added Document.getPageItemFromUuid and PageItem.uuid; CC 2017 added Application.getIsFileOpen)
  • Illustrator Scripting Guide - Full community-maintained documentation
安全使用建议
This skill appears coherent and benign, but exercise the normal caution for third-party scripts: (1) review the bundled .jsx files before running them; (2) run scripts on copies or test documents first; (3) do not drop untrusted scripts into Illustrator's Startup Scripts folder (they will run automatically on launch); (4) the skill source/homepage is missing, so prefer authors you trust or inspect code thoroughly for unexpected file I/O or network calls (none are present in the bundled examples). If you need higher assurance, ask the publisher for provenance or a signed release.
功能分析
Type: OpenClaw Skill Name: adobe-illustrator-scripting Version: 1.0.1 The bundle provides comprehensive documentation and utility scripts for Adobe Illustrator ExtendScript (JSX) automation. The instructions in SKILL.md and the reference guide are purely technical and educational, covering the Illustrator DOM, coordinate systems, and common automation patterns. The included scripts (batch-export-png.jsx, create-color-grid.jsx, and find-replace-text.jsx) perform standard document manipulation tasks and use legitimate API calls like Folder.selectDialog for user-controlled file operations. No evidence of malicious intent, data exfiltration, or prompt injection was found.
能力标签
crypto
能力评估
Purpose & Capability
Name/description align with the included assets and example scripts: reference doc + three ExtendScript examples (export, create art, find/replace). Nothing requested (no env vars, no binaries, no installs) appears out of scope for Illustrator scripting.
Instruction Scope
SKILL.md focuses on Illustrator DOM and running scripts via File > Scripts, ESTK, or the Startup Scripts folder. Instructions are narrowly scoped to creating, debugging, and running .jsx files. Note: the doc explicitly mentions placing scripts in the Startup Scripts folder and using #targetengine to persist state inside Illustrator — those are legitimate Illustrator behaviors but mean a script can run automatically inside the app, so users should review scripts before installing them into startup locations.
Install Mechanism
No install spec — instruction-only skill. No downloads, package installs, or archives to extract. Example scripts and docs are bundled as files, which is expected for a scripting reference.
Credentials
No environment variables, credentials, or config paths are requested. Example scripts use user prompts and Folder.selectDialog for local file selection; no external services or tokens are referenced.
Persistence & Privilege
Skill itself does not set always:true nor modify agent settings. However SKILL.md describes Illustrator-side persistence mechanisms (Startup Scripts folder and #targetengine) that can cause scripts to run automatically inside Illustrator — a normal Illustrator capability but worth user attention before installing scripts into those locations.
如何使用
  1. 确保已安装 OpenClaw(本地或 Docker 部署)
  2. 在对话框中输入安装命令:/install adobe-illustrator-scripting
  3. 安装完成后,直接呼叫该 Skill 的名称或使用 /adobe-illustrator-scripting 触发
  4. 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.1
- Added a Bundled Assets section documenting a new quick-reference guide for the Illustrator object model and a scripts directory with example automation scripts. - Clarified usage of reference materials and examples to support script development and debugging. - No changes to core scripting usage or technical guides.
v1.0.0
Initial release of Adobe Illustrator Scripting skill. - Provides comprehensive guidance for automating Illustrator with ExtendScript (JavaScript/JSX). - Covers the Illustrator scripting object model, key objects, properties, and methods. - Includes best practices for writing and debugging production-quality `.jsx` scripts. - Details measurement units, coordinate systems, and common tasks such as creating, saving, and exporting documents. - Offers examples for manipulating layers, paths, shapes, and working with batch processes or print workflows.
元数据
Slug adobe-illustrator-scripting
版本 1.0.1
许可证 MIT-0
累计安装 0
当前安装数 0
历史版本数 2
常见问题

Adobe Illustrator Scripting 是什么?

Write, debug, and optimize Adobe Illustrator automation scripts using ExtendScript (JavaScript/JSX). Use when creating or modifying scripts that manipulate d... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 174 次。

如何安装 Adobe Illustrator Scripting?

在 OpenClaw 或 Claude Code 对话框中运行命令「/install adobe-illustrator-scripting」即可一键安装,无需额外配置。

Adobe Illustrator Scripting 是免费的吗?

是的,Adobe Illustrator Scripting 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。

Adobe Illustrator Scripting 支持哪些平台?

Adobe Illustrator Scripting 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。

谁开发了 Adobe Illustrator Scripting?

由 John Haugabook(@jhauga)开发并维护,当前版本 v1.0.1。

💬 留言讨论