diff --git a/.github/plugin/marketplace.json b/.github/plugin/marketplace.json index 14dcf0878..1daf9c1cd 100644 --- a/.github/plugin/marketplace.json +++ b/.github/plugin/marketplace.json @@ -47,6 +47,12 @@ "description": "Drive Microsoft AgentRC from Copilot chat: assess AI readiness, generate Copilot instructions (flat or nested with applyTo globs for monorepos), and manage policies. Produces a self-contained static HTML dashboard at reports/index.html.", "version": "1.0.0" }, + { + "name": "adobe-illustrator", + "source": "plugins/adobe-illustrator", + "description": "Adobe Illustrator scripting, extension and plug-in development, MCP and command-line automation, and Creative Cloud asset management, led by an expert technical artist agent for Adobe Creative Cloud.", + "version": "1.0.0" + }, { "name": "agent-council", "description": "A runtime-portable 5-agent quality gate that adjudicates text artifacts before they ship. Five role-conditioned LLM deliberators run a 2-round async protocol with cross-read rebuttal and return one verdict — SHIP, REVISE, or HOLD — plus a structured revision brief and a full audit transcript.", diff --git a/agents/adobe-creative-cloud.agent.md b/agents/adobe-creative-cloud.agent.md new file mode 100644 index 000000000..5ae014d93 --- /dev/null +++ b/agents/adobe-creative-cloud.agent.md @@ -0,0 +1,182 @@ +--- +name: 'Adobe Creative Cloud' +description: 'Expert technical artist for Adobe Creative Cloud: picks the right app or combination of apps (Illustrator, Photoshop, InDesign, After Effects, and more), knows Creative Cloud storage (cloud documents, Projects, Libraries, Stock, local files), moving work off discontinued apps, and how each app is extended (scripts, CEP extensions, UXP and C++ plug-ins, MCP servers). Leads the adobe-illustrator-scripting and adobe-illustrator-integrations skills for Illustrator scripts, extensions, plug-ins, automation, and asset management.' +model: 'Claude Sonnet 5.5' +--- + +# Adobe Creative Cloud Technical Artist + +You are an expert technical artist for Adobe Creative Cloud, with the depth of a computer science PhD and the eye of a trained graphic designer. You explain design choices in design terms (hierarchy, rhythm, contrast, color, type) and implementation choices in engineering terms (data flow, error handling, versions, performance). You are most hands-on with Adobe Illustrator. + +## Skills You Lead + +- **adobe-illustrator-scripting**: the Illustrator ExtendScript DOM (documents, layers, paths, text, color, artboards, exports). Use it for any script that changes or reads artwork. +- **adobe-illustrator-integrations**: everything around a script (CEP extension panels, C++ plug-ins, the coming UXP plugins, MCP servers, command-line and OS automation, computer use, and docs for published tools). + +Load the skill that matches the task before writing code, and use both when a panel, server, or pipeline wraps a script. + +## How You Work + +- Pick the lowest integration tier that meets the need: manual steps, then a script, a CEP panel, a plug-in, an MCP server, or an OS script. +- Keep the core in plain ExtendScript functions that take a settings object and return a result string, so any front end can call them. +- Verify on a copy of a real document inside the app: run it, export a PNG, and compare it with what was asked for. + +## Choosing Apps + +| Need | Best fit | Why | +| --- | --- | --- | +| Logos, icons, illustrations, patterns, signage, anything that must scale | Illustrator | Vector paths, precise geometry, artboards, scripting DOM | +| Photo editing, compositing, texture, raster effects | Photoshop | Pixel tools, masks, adjustment layers, Camera Raw | +| Multi-page layout, long documents, print production | InDesign (InCopy for editorial teams) | Master pages, styles, text flow, preflight | +| Motion graphics, animated logos, kinetic type | After Effects | Keyframes, shape layers, expressions | +| Video editing | Premiere Pro (Premiere on mobile) | Timeline editing, color, audio, exports through Media Encoder | +| Frame-based 2D animation and interactive HTML5 | Animate | Timeline animation; in maintenance mode, so plan ahead | +| 3D texturing and materials | Substance 3D apps | Materials and texture painting; Dimension for quick packaging mockups | +| Batch renaming, metadata, asset review | Bridge | Batch rename, metadata templates, scripting | +| PDF review, forms, preflight, PDF/X | Acrobat | Preflight profiles, form fields, Acrobat JavaScript | +| Quick social graphics and templates | Adobe Express | Templates and brand kits for non-designers | + +Photoshop over Illustrator when the work is photographic, painterly, or needs pixel-level texture. Illustrator over Photoshop when the work must stay sharp at any size, be cut or plotted, or be edited point by point later. + +Common combinations: + +- Illustrator art into After Effects: import the `.ai` as a composition with layers, then convert layers to shape layers for animation. +- Illustrator art in Photoshop: place it as a smart object so it stays vector and editable. +- Illustrator art in InDesign: place the `.ai` (or PDF) directly; updates follow the link. +- Illustrator packaging art onto 3D: Dimension or Substance 3D for mockups. +- Renders and exports in bulk: After Effects or Premiere Pro to Media Encoder's queue. +- Shared brand assets: Creative Cloud Libraries for colors, character styles, and graphics used across apps; Adobe Color for palettes; Adobe Fonts for type. +- Generated imagery: Firefly, with Content Credentials attached to generated output. + +## Active Apps + +Status as of November 2026; check Adobe's pages for changes. + +| App | Platform | Status | How it is extended | +| --- | --- | --- | --- | +| Illustrator, Illustrator (Beta) | Desktop | Active (Beta is for prerelease features, not production) | ExtendScript, AppleScript, VBScript; CEP; C++ SDK; UXP public beta by Spring 2027 | +| Photoshop (with Camera Raw) | Desktop, web, mobile | Active | ExtendScript; UXP scripts and plugins (since 2020); CEP (being retired); C++ SDK | +| InDesign | Desktop | Active | ExtendScript; UXP scripts and plugins (since 2023); CEP; C++ SDK | +| InCopy | Desktop | Active | ExtendScript; C++ (InDesign SDK) | +| After Effects | Desktop | Active | ExtendScript, expressions; CEP; C++ effects SDK; UXP public beta by November 2026 | +| Premiere Pro, Premiere (mobile) | Desktop, mobile | Active | ExtendScript; UXP plugins (GA); CEP (being retired); C++ SDK | +| Media Encoder | Desktop | Active | ExtendScript; CEP; UXP public beta | +| Audition | Desktop | Active | CEP panels, limited scripting | +| Character Animator | Desktop | Active | No public plug-in SDK | +| Animate | Desktop | Maintenance mode since February 2026 (bug and security fixes only) | JSFL scripts; CEP | +| Dreamweaver | Desktop | Active, rarely updated | CEP extensions and its JavaScript API | +| Bridge | Desktop | Active | ExtendScript (startup scripts); CEP | +| Dimension | Desktop | Available, minimal updates | No public SDK | +| XD | Desktop | Maintenance mode; not sold on its own since 2023 | UXP plugins (the first UXP host) | +| Acrobat | Desktop, web, mobile | Active | Acrobat JavaScript; Acrobat SDK plug-ins | +| Lightroom Classic | Desktop | Active | Lua SDK plug-ins | +| Lightroom | Desktop, mobile, web | Active | Presets and profiles; no scripting | +| Firefly | Web, desktop, mobile | Active | Firefly Services APIs | +| Adobe Express, Adobe Express Photos | Web, mobile | Active | Express add-ons (web) | +| Photoshop Express | Mobile | Active | None | +| Fresco | iPad, iPhone, Windows | Active | None | +| Scan, Capture, Fill & Sign | Mobile | Active | None; output lands in Creative Cloud or Libraries | +| Adobe Fonts | Service | Active | Activation through Creative Cloud; web projects | +| Adobe Stock | Service | Active | Stock API | +| Adobe Color | Web | Active | Themes save to Libraries | +| Adobe Podcast | Web | Active | None | +| Adobe Content Authenticity | Web | Active | Content Credentials (C2PA) | +| Mixamo | Web | Active | None (rigging and motion library) | +| Substance 3D Community Assets, Substance 3D Review | Web, service | Active | Substance apps take Python and JavaScript plugins | +| Portfolio (with Behance), Adobe Live | Web | Active | None | +| Frame.io | Web, desktop, mobile | Active | Frame.io API | +| UXP Developer Tools | Desktop | Active | Loads, debugs, and packages UXP plugins | + +## Older Apps + +Shown only after turning on "Show Older Apps" in the Creative Cloud desktop app's preferences (on eligible plans). Use them to open or update old work, then move the work forward. + +| App | Status | Still useful for | Move to | +| --- | --- | --- | --- | +| Premiere Rush | End of life 2026-09-30 (no downloads since 2025-09-30) | Opening old Rush projects while it still runs | Premiere Pro on desktop, Premiere on mobile | +| Muse CC | Features stopped 2018, support ended 2020-03-26 | Exporting an old site's HTML | A current site builder or hand-written HTML; there is no importer | +| Fireworks CS6 | Discontinued, no support | Opening layered Fireworks PNGs | Illustrator (vector) or Photoshop (raster); export layers first | +| Flash Builder Premium | Flash era; Flash support ended 2020-12-31 | Reading old ActionScript and Flex projects | AIR SDK (now maintained by HARMAN) or a web stack | +| Scout CC | Flash-era profiler, discontinued with Flash | Nothing current | Browser and AIR profiling tools | +| Gaming SDK 1.4 | Flash and AIR game tooling from 2013 to 2014; check for any current notice | Old AIR game projects | AIR SDK (HARMAN) or a current game engine | +| Extension Manager CC | Last updated for CC 2014 | Nothing current | Adobe's Unified Plugin Installer Agent or the Adobe Marketplace | +| Touch App Plugins | Legacy tablet-app bridge; check Adobe's older apps list | Opening old touch-app files | Adobe Express, Fresco, and Libraries | +| ExtendScript Toolkit CC | 32-bit, will not run on macOS 10.15 or later | Old pipelines that call it with `-run` | VS Code ExtendScript Debugger | + +Compatibility notes: + +- Newer apps open older formats, rarely the reverse. Save down (File > Save As with an older version) only when a collaborator needs it, and expect lost features. +- Fireworks, Muse, and Flash files have no full importer in current apps; export what you can (PNG layers, HTML, SWF assets) before the old app stops launching. +- Keep one machine or VM with the old app until every old project is moved. + +## Creative Cloud Storage + +The Creative Cloud desktop app's Files area has these views: + +| View | What it holds | Use it for | +| --- | --- | --- | +| Files | Cloud documents (`.aic`, `.psdc`, and other native cloud formats) and files uploaded to Creative Cloud storage | Version history, working across devices | +| Shared with you | Cloud documents and files others shared | Collaboration inbox | +| Projects | Files, brand kits, and libraries grouped and shared together | Team work on one campaign or product, for example an Acme Corp "Spring Campaign" project | +| Licensed Stock assets | Adobe Stock assets you licensed, with license type and date | Re-downloading licensed files and checking license terms | +| Your libraries | Creative Cloud Libraries of colors, character styles, graphics, brushes, and patterns | Shared brand assets; library graphics placed in documents stay linked and update | +| Generation history | Firefly output | Finding and reusing generated images | +| Deleted | Removed cloud items, kept for a limited time | Restoring items deleted by mistake | +| Local storage | Files on this computer, browsed from the app | Local projects | + +- **Synced files are gone.** Adobe ended Creative Cloud Synced files (the old Creative Cloud Files folder that mirrored local files) for personal accounts from February 2024 and for business accounts by February 2025. Files left in that folder are ordinary local files now. Keep local work in version control or a file sync service, and share through Projects or Libraries. Libraries and cloud documents were not affected. +- **Cloud documents are not plain files.** Scripts and pipelines need a real file on disk, so save a local `.ai` (or `.psd`) copy before automating, and save results back as cloud documents only when the user wants that. +- **Linked Stock comps** (watermarked previews) must be licensed before final output; Libraries can swap the comp for the licensed file. + +## Plug-ins, Extensions, and Scripts + +Adobe's words, which differ by app: + +- **Script**: ExtendScript (`.jsx`), AppleScript, VBScript, or a UXP script (`.psjs` in Photoshop, `.idjs` in InDesign) run against an app's object model. +- **Extension**: a CEP panel (HTML and JavaScript UI calling ExtendScript). CEP is being retired: the Marketplace stops new CEP submissions (Photoshop March 2027; Premiere Pro December 2027; InDesign January 2028; Illustrator, After Effects, and Media Encoder December 2028), CEP is then disabled by default, and it leaves these apps from December 2029. ExtendScript is not affected. +- **Plug-in**: native code from an app's C++ SDK (Illustrator `.aip`, Photoshop filters and formats, After Effects effects), or, in UXP apps, a UXP plugin (`.ccx`). + +For Illustrator today: scripts for automation, CEP for panels, C++ for tools, effects, and speed, and UXP once its public beta ships (by Spring 2027). + +## MCP Servers and Computer Use + +- **Illustrator MCP servers** run ExtendScript in Illustrator through COM (Windows) or AppleScript (macOS) and expose tools to an AI agent. Before using a community server, read what code it runs in Illustrator, which folders it writes, and whether it accepts arbitrary code; pin a version. To build one, use the adobe-illustrator-integrations skill (allowlisted scripts, PNG previews, no saving over open files). +- **Computer-use MCPs** drive the screen. Use them only for UI with no scripting route (some panels, dialogs, generative features). Work on a copy, prefer menu paths and shortcuts to coordinates, take a screenshot after each step, confirm with a script readback, and stop on any unexpected dialog. + +## Project and Workspace Files + +```text +acme-spring-campaign/ + source/ Working .ai, .psd, .indd files (local copies of cloud documents) + links/ Placed and linked images, logos, fonts list (not font files) + exports/ Generated PNG, SVG, PDF output (rebuildable, often not committed) + scripts/ .jsx and OS scripts that build the exports + docs/ Brief, specs, and the steps for the next person +``` + +- Link rather than embed images that change; embed only for a final handoff file. +- File > Package collects the document, links, and a fonts report for handoff. +- Relink with a script when folders move (see the scripting skill's relink pattern). +- Put `.ai`, `.psd`, and `.indd` under Git LFS if they go in a repository. +- Never commit cloud-only documents, licensed Stock originals, or font files. +- Name files `---v` (for example `acme-logo-horizontal-v03.ai`). + +## Guardrails + +- Duplicate before any batch edit, and never overwrite an original without a backup. +- No uploads, sharing changes, cloud deletes, or Stock purchases unless the user asks for that action. +- Respect license terms: Adobe Stock license types, Adobe Fonts (fonts are activated, never bundled in a plugin or shared as files), and generative AI terms (keep Content Credentials on generated art). +- Never automate around sign-in, licensing, or DRM, and never put credentials or API keys in scripts; read them from environment variables. +- Prefer scripting, COM, or AppleScript over computer use. +- Say which version you checked for version-specific advice ("check for your version"), and point to Adobe's docs. +- Use placeholder data (Acme Corp, Jane Doe, `example.com`) in every example, doc, and screenshot description. + +## Sources + +- UXP and CEP timeline: [Investing in the future of Creative Cloud extensibility](https://blog.developer.adobe.com/en/publish/2026/09/investing-in-the-future-of-creative-cloud-extensibility-uxp-comes-to-our-flagship-applications) +- [Premiere Rush end of life](https://helpx.adobe.com/premiere-rush/kb/end-of-life.html) +- [Animate maintenance mode FAQ](https://helpx.adobe.com/animate/kb/end-of-life.html) +- [Muse end of service](https://helpx.adobe.com/muse/kb/adobe-muse-end-of-service.html) +- [End of life for Creative Cloud Synced files](https://helpx.adobe.com/creative-cloud/kb/end-of-life-creative-cloud-synced-files.html) +- [Adobe products and technical support periods](https://helpx.adobe.com/support/programs/eol-matrix.html) +- [Adobe-CEP/CEP-Resources](https://github.com/Adobe-CEP/CEP-Resources) (CEP, ZXPSignCMD, ExtendScript Toolkit notes, Extension Manager end of life) diff --git a/docs/README.agents.md b/docs/README.agents.md index f30943799..38f218f88 100644 --- a/docs/README.agents.md +++ b/docs/README.agents.md @@ -22,6 +22,7 @@ See [CONTRIBUTING.md](../CONTRIBUTING.md#adding-agents) for guidelines on how to | [.NET Upgrade](../agents/dotnet-upgrade.agent.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/agent?url=vscode%3Achat-agent%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fagents%2Fdotnet-upgrade.agent.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/agent?url=vscode-insiders%3Achat-agent%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fagents%2Fdotnet-upgrade.agent.md) | Perform janitorial tasks on C#/.NET code including cleanup, modernization, and tech debt remediation. | | [Accessibility Expert](../agents/accessibility.agent.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/agent?url=vscode%3Achat-agent%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fagents%2Faccessibility.agent.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/agent?url=vscode-insiders%3Achat-agent%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fagents%2Faccessibility.agent.md) | Expert assistant for web accessibility (WCAG 2.1/2.2), inclusive UX, and a11y testing | | [Accessibility Runtime Tester](../agents/accessibility-runtime-tester.agent.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/agent?url=vscode%3Achat-agent%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fagents%2Faccessibility-runtime-tester.agent.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/agent?url=vscode-insiders%3Achat-agent%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fagents%2Faccessibility-runtime-tester.agent.md) | Runtime accessibility specialist for keyboard flows, focus management, dialog behavior, form errors, and evidence-backed WCAG validation in the browser. | +| [Adobe Creative Cloud](../agents/adobe-creative-cloud.agent.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/agent?url=vscode%3Achat-agent%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fagents%2Fadobe-creative-cloud.agent.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/agent?url=vscode-insiders%3Achat-agent%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fagents%2Fadobe-creative-cloud.agent.md) | Expert technical artist for Adobe Creative Cloud: picks the right app or combination of apps (Illustrator, Photoshop, InDesign, After Effects, and more), knows Creative Cloud storage (cloud documents, Projects, Libraries, Stock, local files), moving work off discontinued apps, and how each app is extended (scripts, CEP extensions, UXP and C++ plug-ins, MCP servers). Leads the adobe-illustrator-scripting and adobe-illustrator-integrations skills for Illustrator scripts, extensions, plug-ins, automation, and asset management. | | [ADR Generator](../agents/adr-generator.agent.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/agent?url=vscode%3Achat-agent%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fagents%2Fadr-generator.agent.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/agent?url=vscode-insiders%3Achat-agent%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fagents%2Fadr-generator.agent.md) | Expert agent for creating comprehensive Architectural Decision Records (ADRs) with structured formatting optimized for AI consumption and human readability. | | [AEM Front End Specialist](../agents/aem-frontend-specialist.agent.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/agent?url=vscode%3Achat-agent%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fagents%2Faem-frontend-specialist.agent.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/agent?url=vscode-insiders%3Achat-agent%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fagents%2Faem-frontend-specialist.agent.md) | Expert assistant for developing AEM components using HTL, Tailwind CSS, and Figma-to-code workflows with design system integration | | [Agent Governance Reviewer](../agents/agent-governance-reviewer.agent.md)
[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/agent?url=vscode%3Achat-agent%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fagents%2Fagent-governance-reviewer.agent.md)
[![Install in VS Code Insiders](https://img.shields.io/badge/VS_Code_Insiders-Install-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://aka.ms/awesome-copilot/install/agent?url=vscode-insiders%3Achat-agent%2Finstall%3Furl%3Dhttps%3A%2F%2Fraw.githubusercontent.com%2Fgithub%2Fawesome-copilot%2Fmain%2Fagents%2Fagent-governance-reviewer.agent.md) | AI agent governance expert that reviews code for safety issues, missing governance controls, and helps implement policy enforcement, trust scoring, and audit trails in agent systems. | diff --git a/docs/README.plugins.md b/docs/README.plugins.md index f9a54688e..ac5573242 100644 --- a/docs/README.plugins.md +++ b/docs/README.plugins.md @@ -29,6 +29,7 @@ See [CONTRIBUTING.md](../CONTRIBUTING.md#adding-plugins) for guidelines on how t | ---- | ----------- | ----- | ---- | | [accessibility-kanban](../plugins/accessibility-kanban/README.md) | Kanban board to manage accessibility issues, allow you to plan, track, and complete remediation work. | 1 items | accessibility, github-issues, issue-triage, kanban-board, planning-workflow, status-tracking | | [acreadiness-cockpit](../plugins/acreadiness-cockpit/README.md) | Drive Microsoft AgentRC from Copilot chat: assess AI readiness, generate Copilot instructions (flat or nested with applyTo globs for monorepos), and manage policies. Produces a self-contained static HTML dashboard at reports/index.html. | 4 items | agentrc, ai-readiness, copilot-instructions, readiness-report, monorepo, policy, dashboard | +| [adobe-illustrator](../plugins/adobe-illustrator/README.md) | Adobe Illustrator scripting, extension and plug-in development, MCP and command-line automation, and Creative Cloud asset management, led by an expert technical artist agent for Adobe Creative Cloud. | 3 items | adobe-illustrator, illustrator, extendscript, cep, uxp, creative-cloud, graphic-design, automation, mcp | | [agent-radar](../plugins/agent-radar/README.md) | See a live map of the Copilot agents on your computer, their sub-agents, their commands, and where their data goes. | 1 items | agents, canvas, copilot-extension, data-flow, mcp, observability, subagents, token-usage | | [ai-credits-breakdown](../plugins/ai-credits-breakdown/README.md) | See exactly where your own GitHub Copilot AI credits go: dollars by day, repository, model, call type and prompt-cache state, built privately on your computer from your Copilot telemetry. | 1 items | ai-credits, canvas, copilot-extension, cost-tracking, token-usage, usage-analytics | | [ai-team-orchestration](../plugins/ai-team-orchestration/README.md) | Run a lightweight, role-separated AI development team with flexible tools, developer-selected models, proportionate planning, and optional QA. | 4 items | ai-team, multi-agent, sprint-planning, brainstorm, project-management, orchestration, developer-workflow | diff --git a/docs/README.skills.md b/docs/README.skills.md index 7d39a9ab0..7f2365e5c 100644 --- a/docs/README.skills.md +++ b/docs/README.skills.md @@ -33,6 +33,7 @@ See [CONTRIBUTING.md](../CONTRIBUTING.md#adding-skills) for guidelines on how to | [acreadiness-policy](../skills/acreadiness-policy/SKILL.md)
`gh skills install github/awesome-copilot acreadiness-policy` | Help the user pick, write, or apply an AgentRC policy. Policies customise readiness scoring by disabling irrelevant checks, overriding impact/level, setting pass-rate thresholds, or chaining org baselines with team overrides. Use when the user asks about strict mode, AI-only scoring, custom weights, CI gating, or wants org-wide standardisation. | None | | [ad-campaign-analyzer](../skills/ad-campaign-analyzer/SKILL.md)
`gh skills install github/awesome-copilot ad-campaign-analyzer` | Use this skill when the user shares ad campaign performance data and asks what to cut, scale, or test. Trigger for prompts like "analyze my ad campaigns", "where am I wasting ad spend", "reallocate my ad budget", "which ads are actually working", or "ROAS analysis". Do not trigger for campaign planning or creative generation without performance data. | None | | [add-educational-comments](../skills/add-educational-comments/SKILL.md)
`gh skills install github/awesome-copilot add-educational-comments` | Add educational comments to the file specified, or prompt asking for file to comment if one is not provided. | None | +| [adobe-illustrator-integrations](../skills/adobe-illustrator-integrations/SKILL.md)
`gh skills install github/awesome-copilot adobe-illustrator-integrations` | Build, debug, package, and document Adobe Illustrator integrations: CEP extension panels, C++ SDK plug-ins (.aip), the coming UXP plugins, MCP servers that drive Illustrator, computer-use automation, and OS scripts (batch, PowerShell, bash, AppleScript) that run ExtendScript in Illustrator. Use when creating or fixing an Illustrator extension or plug-in, choosing between a script, extension, or plug-in, connecting an AI tool to Illustrator, automating Illustrator from the command line, or writing install and usage docs for an Illustrator tool someone will publish. Pairs with adobe-illustrator-scripting for the ExtendScript DOM. | `references/automation-and-mcp.md`
`references/cep-extensions.md`
`references/cpp-plugins.md`
`references/publishing-docs.md` | | [adobe-illustrator-scripting](../skills/adobe-illustrator-scripting/SKILL.md)
`gh skills install github/awesome-copilot adobe-illustrator-scripting` | Write, debug, and optimize Adobe Illustrator automation scripts using ExtendScript (JavaScript/JSX). Use when creating or modifying scripts that manipulate documents, layers, paths, text frames, colors, symbols, artboards, or any Illustrator DOM objects. Covers the complete JavaScript object model, coordinate system, measurement units, export workflows, and scripting best practices. | `references/object-model-quick-reference.md`
`scripts/batch-export-png.jsx`
`scripts/create-color-grid.jsx`
`scripts/find-replace-text.jsx` | | [agent-architecture](../skills/agent-architecture/SKILL.md)
`gh skills install github/awesome-copilot agent-architecture` | Design AI agent architectures through requirements discovery, or audit and diagnose architectural flaws in existing agents. Architecture only; excludes implementation and general code review. | `LICENSE.txt`
`agents/openai.yaml`
`references/architecture-contract.md`
`references/architecture-selection.md`
`references/audit.md`
`references/capability-design.md`
`references/design.md`
`references/diagnostic-review.md`
`references/discovery-protocol.md`
`references/evaluation-design.md`
`references/execution-continuity.md`
`references/result-delivery.md`
`references/scenarios.md`
`references/source-map.md`
`references/validation-loop.md` | | [agent-governance](../skills/agent-governance/SKILL.md)
`gh skills install github/awesome-copilot agent-governance` | Patterns and techniques for adding governance, safety, and trust controls to AI agent systems. Use this skill when:
- Building AI agents that call external tools (APIs, databases, file systems)
- Implementing policy-based access controls for agent tool usage
- Adding semantic intent classification to detect dangerous prompts
- Creating trust scoring systems for multi-agent workflows
- Building audit trails for agent actions and decisions
- Enforcing rate limits, content filters, or tool restrictions on agents
- Working with any agent framework (PydanticAI, CrewAI, OpenAI Agents, LangChain, AutoGen) | None | diff --git a/plugins/adobe-illustrator/README.md b/plugins/adobe-illustrator/README.md new file mode 100644 index 000000000..3fc8fd8a6 --- /dev/null +++ b/plugins/adobe-illustrator/README.md @@ -0,0 +1,60 @@ +# Adobe Illustrator Plugin + +Adobe Illustrator scripting, extension and plug-in development, MCP and command-line automation, and Creative Cloud asset management, led by an expert technical artist agent for Adobe Creative Cloud. + +## Installation + +```bash +copilot plugin install adobe-illustrator@awesome-copilot +``` + +## What's Included + +### Agent + +| Agent | What it does | +| --- | --- | +| `Adobe Creative Cloud` | An expert technical artist that picks the right Creative Cloud app or combination of apps, knows Creative Cloud storage (cloud documents, Projects, Libraries, Stock, local files), moves work off discontinued apps, explains how each app is extended, and leads the two skills below. | + +### Skills + +| Skill | What it does | +| --- | --- | +| `adobe-illustrator-scripting` | Writes, debugs, and optimizes Illustrator ExtendScript: documents, layers, paths, text, color, artboards, exports, and running scripts from outside Illustrator. | +| `adobe-illustrator-integrations` | Builds and documents what sits around a script: CEP extension panels, C++ SDK plug-ins, the coming UXP plugins, Illustrator MCP servers, command-line and OS automation, computer-use sessions, and install and usage docs for published tools. | + +## Use Cases + +- Write or fix an Illustrator script, from a one-line batch rename to a data-driven artwork generator +- Write step-by-step instructions for a complex Illustrator graphic, or the docs for an asset, plugin, extension, or script someone will publish +- Build or extend an MCP server that lets an AI tool drive Illustrator +- Work in Illustrator through a computer-use tool when a feature has no scripting route +- Build or fix an Illustrator CEP extension panel +- Build or fix an Illustrator C++ plug-in +- Automate Illustrator from a batch, PowerShell, bash, or AppleScript script that runs ExtendScript +- Organize Illustrator and Creative Cloud files in a project or workspace + +## Example Prompts + +```text +Write an Illustrator script that exports every artboard in the open document to PNG at 2x +into an exports folder next to the document, named acme-icons-.png. +``` + +```text +Build a CEP panel for Illustrator 2026 that lets a designer pick a brand color from the +Acme Corp library and apply it to every selected path, with install steps for Windows and macOS. +``` + +```text +Design an MCP server for Illustrator with tools to list layers, run a named script from an +allowlisted folder, and export an artboard preview, and explain how to register it in VS Code. +``` + +## Source + +This plugin is part of [Awesome Copilot](https://github.com/github/awesome-copilot). + +## License + +MIT diff --git a/plugins/adobe-illustrator/plugin.json b/plugins/adobe-illustrator/plugin.json new file mode 100644 index 000000000..0841f22a7 --- /dev/null +++ b/plugins/adobe-illustrator/plugin.json @@ -0,0 +1,33 @@ +{ + "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json", + "name": "adobe-illustrator", + "description": "Adobe Illustrator scripting, extension and plug-in development, MCP and command-line automation, and Creative Cloud asset management, led by an expert technical artist agent for Adobe Creative Cloud.", + "version": "1.0.0", + "keywords": [ + "adobe-illustrator", + "illustrator", + "extendscript", + "cep", + "uxp", + "creative-cloud", + "graphic-design", + "automation", + "mcp" + ], + "author": { + "name": "Awesome Copilot Community" + }, + "repository": "https://github.com/github/awesome-copilot", + "license": "MIT", + "extensions": { + "com.github.awesome-copilot": { + "agents": [ + "./agents/adobe-creative-cloud.md" + ], + "skills": [ + "./skills/adobe-illustrator-integrations/", + "./skills/adobe-illustrator-scripting/" + ] + } + } +} diff --git a/skills/adobe-illustrator-integrations/SKILL.md b/skills/adobe-illustrator-integrations/SKILL.md new file mode 100644 index 000000000..15522431a --- /dev/null +++ b/skills/adobe-illustrator-integrations/SKILL.md @@ -0,0 +1,105 @@ +--- +name: adobe-illustrator-integrations +description: 'Build, debug, package, and document Adobe Illustrator integrations: CEP extension panels, C++ SDK plug-ins (.aip), the coming UXP plugins, MCP servers that drive Illustrator, computer-use automation, and OS scripts (batch, PowerShell, bash, AppleScript) that run ExtendScript in Illustrator. Use when creating or fixing an Illustrator extension or plug-in, choosing between a script, extension, or plug-in, connecting an AI tool to Illustrator, automating Illustrator from the command line, or writing install and usage docs for an Illustrator tool someone will publish. Pairs with adobe-illustrator-scripting for the ExtendScript DOM.' +--- + +# Adobe Illustrator Integrations + +Guidance for everything that sits around an Illustrator script: the panel a user clicks, the native plug-in that adds a tool, the command line or AI agent that starts Illustrator work from outside, and the documentation that ships with it. For the Illustrator DOM itself (documents, layers, paths, colors, exports), use the **adobe-illustrator-scripting** skill. + +## When to Use This Skill + +- Choosing how to deliver an Illustrator feature: a script, a CEP extension, a C++ plug-in, a UXP plugin, an MCP server, or an OS automation script +- Building or fixing a CEP extension panel (HTML, JavaScript, and an ExtendScript host) +- Building or fixing a C++ plug-in (`.aip`) with the Illustrator SDK +- Running `.jsx` scripts from batch, PowerShell, bash, Python, or AppleScript, including passing parameters and reading results +- Building or reviewing an MCP server that lets an AI tool drive Illustrator +- Working in Illustrator through a computer-use tool when no scripting route exists +- Writing step-by-step instructions people follow by hand, or install and usage docs for an asset, script, extension, or plug-in someone will publish +- Organizing the files of an Illustrator project (sources, linked assets, exports, docs) so automation can find them + +## Script, Extension, or Plug-in + +Adobe's own terms: + +- A **script** is ExtendScript (`.jsx`), AppleScript, or VBScript run against Illustrator's scripting object model. It has no persistent UI beyond ScriptUI dialogs. +- An **extension** is a CEP panel: an HTML and JavaScript UI hosted in Illustrator that calls ExtendScript through `CSInterface.evalScript`. +- A **plug-in** is native code built with the Illustrator C++ SDK (`.aip`). In apps that already run UXP (Photoshop, InDesign, Premiere Pro), "plugin" also means a UXP plugin; Illustrator UXP plugins are not public yet. + +| Option | What it is | UI | Installs to | Ships as | Pick it when | +| --- | --- | --- | --- | --- | --- | +| Manual instructions | Steps a person follows | Illustrator's own | Nothing | A document | The task is rare, or needs judgment at every step | +| ExtendScript script | `.jsx` run in Illustrator | Optional ScriptUI dialog | `Presets//Scripts` or anywhere (File > Scripts > Other Script) | `.jsx` file | One action, batch work, or a step another tool calls | +| CEP extension | HTML panel plus ExtendScript host | Dockable panel | CEP `extensions` folder | Signed `.zxp` | Users need a persistent panel with controls and previews | +| C++ plug-in | Native `.aip` from the Illustrator SDK | Tools, menus, notifiers, native dialogs | Plug-ins folder or the Additional Plug-ins Folder | `.aip` per OS and major version | You need a custom tool, live effects, speed, or events scripts cannot reach | +| UXP plugin | Modern JavaScript plugin model | Panels and dialogs | Through Creative Cloud | `.ccx` | Plan for it; Illustrator's public beta is due by Spring 2027 | +| MCP server | A process an AI tool calls, which runs scripts in Illustrator | The AI tool's chat | The AI tool's MCP config | A package or repo | An agent should create or inspect artwork through tools | +| OS automation | Batch, PowerShell, bash, or AppleScript that starts scripts | None | Anywhere | Script files | Illustrator work is one step of a larger pipeline | + +Start with the lowest tier that meets the need. A script that works is the core of every higher tier: a CEP panel, an MCP tool, and an OS script all end up calling ExtendScript. + +## Extensibility Timeline + +From Adobe's announcement "Investing in the future of Creative Cloud extensibility" (blog.developer.adobe.com, September 2026): + +- Illustrator UXP plugins: public beta by Spring 2027. +- CEP in Illustrator, After Effects, and Media Encoder: the Adobe Marketplace stops accepting new CEP submissions in December 2028, and CEP is disabled by default from December 2028. +- CEP leaves these apps from December 2029, with at least two years between each app's UXP public beta and CEP's removal from new versions. +- ExtendScript is not affected by the transition. + +So a CEP extension built today has a working life of a few years. Keep its logic in plain ExtendScript files the panel calls, which carry over to a UXP plugin or an MCP server unchanged. + +## Workflow + +1. **Scope**: what the user does, which Illustrator versions and OSes it must run on, and who installs it. +2. **Pick the tier** from the table above. +3. **Write the ExtendScript core first** with the adobe-illustrator-scripting skill, as functions that take a plain settings object and return a result string, so any front end can call them. +4. **Add the front end**: + - CEP panel: [references/cep-extensions.md](references/cep-extensions.md) (folder layout, manifest, `CSInterface`, debug mode, signing, install) + - C++ plug-in: [references/cpp-plugins.md](references/cpp-plugins.md) (SDK, build, PiPL, suites, notifiers, debugging) + - Command line, MCP server, or computer use: [references/automation-and-mcp.md](references/automation-and-mcp.md) (COM, AppleScript, parameters, results, MCP design, safety) +5. **Test inside Illustrator** on a copy of a real document: run every option, export a PNG of the result, and compare it with the expected output. +6. **Package**: a signed ZXP for CEP, a per-OS `.aip` for plug-ins, a versioned folder or package for scripts and servers. +7. **Document** with [references/publishing-docs.md](references/publishing-docs.md): requirements, compatibility, install steps per OS, a walkthrough with screenshots, a GIF, troubleshooting, and a changelog. + +## Running a Script From Outside Illustrator + +| Platform | Route | Notes | +| --- | --- | --- | +| Windows | COM `Illustrator.Application` | `DoJavaScriptFile(JavaScriptFile, [Arguments], [ExecutionMode])` and `DoJavaScript(JavaScriptCode, [Arguments], [ExecutionMode])`; ExecutionMode 1 never shows the debugger | +| macOS | AppleScript `do javascript` | `do javascript "$.evalFile(new File(arguments[0]))" with arguments {scriptPath}`, with the path passed to `osascript` as an argument so it never enters script source; check the exact app name for your version | +| Both | VS Code ExtendScript Debugger | Adobe's extension for running and debugging `.jsx` against a running app | +| Windows (legacy) | ExtendScript Toolkit `-run` | 32-bit, does not run on macOS 10.15 or later; keep only for old pipelines | + +Pass parameters through a sidecar `key=value` file (no JSON parser or `eval` needed in ES3) and have the script write its result to a file, because `arguments` handling differs between launchers. The patterns are in [references/automation-and-mcp.md](references/automation-and-mcp.md). + +## Instructions People Follow by Hand + +When the deliverable is a set of steps rather than code (for a complex graphic, or for an asset someone downloads): + +- Name the Illustrator version the steps were checked on, and give menu paths exactly as they appear (`Object > Path > Offset Path`). +- One action per step, with the panel and the value to set (`Stroke panel: Weight 2 pt, Align Stroke to Inside`). +- Show the expected result after each group of steps, with a screenshot or a small PNG. +- Mark the steps that differ on Windows and macOS (shortcuts, file dialogs, font paths). +- Offer the scripted route next to the manual one when a script exists. + +## Guardrails + +- Work on copies of user documents; never overwrite an original without a backup. +- Ask before writing into Adobe's install folders, the system CEP folder, or the registry. +- Development mode (`PlayerDebugMode`) belongs on development machines only. Ship signed ZXPs to users. +- Never commit signing certificates, certificate passwords, API keys, or tokens. Read secrets from environment variables. +- Prefer scripting, COM, or AppleScript over clicking through the UI; use computer use only for what has no scripting route. +- Never automate around sign-in, licensing, or account dialogs. +- Fonts from Adobe Fonts cannot be bundled in a plug-in or extension; document them as a requirement instead. +- Version-specific details (CEP version, SDK version, menu names) change; say which version you checked and point to Adobe's docs. + +## References + +- [references/cep-extensions.md](references/cep-extensions.md): CEP panels from folder layout to signed ZXP +- [references/cpp-plugins.md](references/cpp-plugins.md): C++ plug-ins with the Illustrator SDK +- [references/automation-and-mcp.md](references/automation-and-mcp.md): command-line runs, MCP servers, and computer use +- [references/publishing-docs.md](references/publishing-docs.md): install and usage docs for a published Illustrator tool +- Adobe CEP Resources (CEP 12 cookbook, `CSInterface.js`, ZXPSignCMD): [Adobe-CEP/CEP-Resources](https://github.com/Adobe-CEP/CEP-Resources) +- Adobe CEP getting-started guides (packaging, signing, distribution): [Adobe-CEP/Getting-Started-guides](https://github.com/Adobe-CEP/Getting-Started-guides) +- UXP and CEP timeline: [Investing in the future of Creative Cloud extensibility](https://blog.developer.adobe.com/en/publish/2026/09/investing-in-the-future-of-creative-cloud-extensibility-uxp-comes-to-our-flagship-applications) diff --git a/skills/adobe-illustrator-integrations/references/automation-and-mcp.md b/skills/adobe-illustrator-integrations/references/automation-and-mcp.md new file mode 100644 index 000000000..96bad1e5b --- /dev/null +++ b/skills/adobe-illustrator-integrations/references/automation-and-mcp.md @@ -0,0 +1,247 @@ +# Automation, MCP Servers, and Computer Use + +Every route from outside Illustrator ends in the same place: ExtendScript running inside Illustrator. This file covers starting that script from an OS script or another language, passing it parameters, reading its result, wrapping it as an MCP server for AI tools, and the rules for computer-use sessions when no scripting route exists. + +## Starting a Script From Outside + +### Windows: COM + +Illustrator registers the COM class `Illustrator.Application` (version-specific `Illustrator.Application.`). Its scripting methods, from the type library Illustrator installs: + +| Method | Parameters | +| --- | --- | +| `DoJavaScriptFile` | `JavaScriptFile`, optional `Arguments` (array), optional `ExecutionMode` | +| `DoJavaScript` | `JavaScriptCode` (a string of ExtendScript), optional `Arguments`, optional `ExecutionMode` | +| `DoScript` | `Action`, `From` (action set), optional `Dialogs`: plays a recorded action | + +`ExecutionMode` values: 1 `aiNeverShowDebugger`, 2 `aiDebuggerOnError`, 3 `aiBeforeRunning`. Use 1 for unattended runs. The call returns when the script finishes, with the value of the script's last expression as a string. + +PowerShell: + +```powershell +$ai = New-Object -ComObject Illustrator.Application # starts Illustrator if it is not running +$result = $ai.DoJavaScriptFile('C:\Users\\Documents\AcmeTools\export-artboards.jsx', @(), 1) +Write-Output $result +``` + +Python (pywin32): + +```python +import win32com.client + +app = win32com.client.Dispatch("Illustrator.Application") +result = app.DoJavaScriptFile(r"C:\Users\\Documents\AcmeTools\export-artboards.jsx", [], 1) +print(result) +``` + +If the call fails with "JavaScript code was missing", the `.jsx` path does not exist or cannot be read. + +### macOS: AppleScript + +```bash +osascript - "/Users//Documents/AcmeTools/export-artboards.jsx" <<'APPLESCRIPT' +on run argv + tell application "Adobe Illustrator" + do javascript "$.evalFile(new File(arguments[0]))" with arguments {item 1 of argv} + end tell +end run +APPLESCRIPT +``` + +The script path travels as an `osascript` argument and reaches ExtendScript through `with arguments`, so it never becomes part of either script's source: a path with quotes cannot break the call or inject code. `do javascript` also accepts a file reference, but some versions have rejected file arguments; evaluating the file with `$.evalFile` from a fixed code string works across versions. Check the application name for your install if `tell application` cannot find it. + +### Debugging and Legacy Routes + +- **VS Code ExtendScript Debugger** (Adobe, Marketplace ID `Adobe.extendscript-debug`): run and debug `.jsx` against a running Illustrator. This is Adobe's replacement for ExtendScript Toolkit. +- **ExtendScript Toolkit** (`-run script.jsx`): 32-bit, will not run on macOS 10.15 or later, and needs a workaround for debugger error #1116. Keep it only for old pipelines that already depend on it. + +## Parameters and Results + +`arguments` handling differs between launchers (ExtendScript Toolkit `-run` and BridgeTalk do not pass them through), so use `arguments` only to hand over the script path, as in the AppleScript launcher above, and pass the job's parameters in a sidecar file that the script reads, with the result written to another file. `Folder.temp` in ExtendScript is the OS temp folder, which both sides can find. For the script side of external runs (`arguments[]`, `$.getenv`, `$.fileName`, logging), see the adobe-illustrator-scripting skill's External Invocation & Argument Passing section. + +Parameter file written by the caller as `key=value` lines, `%TEMP%\acme-export-params.txt` on Windows or `$TMPDIR/acme-export-params.txt` on macOS: + +```text +outputFolder=C:\Users\\Documents\AcmeExports +scale=200 +``` + +ExtendScript has no JSON parser, and a `key=value` file needs none, so nothing in the file is ever run as code. For nested data, bundle json2.js and use its `JSON.parse`, never `eval`. + +`export-artboards.jsx` (ES3): + +```javascript +(function () { + var paramsFile = new File(Folder.temp + '/acme-export-params.txt'); + var resultFile = new File(Folder.temp + '/acme-export-result.json'); + + // key=value lines; values stay plain text, so nothing in the file is evaluated. + function readParams(file) { + var params = {}; + file.encoding = 'UTF-8'; + if (!file.open('r')) { return null; } + while (!file.eof) { + var line = file.readln().replace(/\r$/, ''); + var at = line.indexOf('='); + if (at > 0) { params[line.substring(0, at)] = line.substring(at + 1); } + } + file.close(); + return params; + } + + // JSON string literal: escapes backslash, quote, and every control character, + // so multi-line error messages still parse. + function quote(value) { + return '"' + String(value).replace(/[\\"\u0000-\u001f]/g, function (ch) { + if (ch === '\\' || ch === '"') { return '\\' + ch; } + return '\\u' + ('000' + ch.charCodeAt(0).toString(16)).slice(-4); + }) + '"'; + } + + function writeResult(ok, message) { + resultFile.encoding = 'UTF-8'; + resultFile.open('w'); + resultFile.write('{"ok":' + (ok ? 'true' : 'false') + ',"message":' + quote(message) + '}'); + resultFile.close(); + } + + var previous = app.userInteractionLevel; + app.userInteractionLevel = UserInteractionLevel.DONTDISPLAYALERTS; + try { + if (!paramsFile.exists) { writeResult(false, 'Parameter file not found.'); return; } + var params = readParams(paramsFile); + if (!params) { writeResult(false, 'Cannot read the parameter file.'); return; } + var scale = Number(params.scale); + if (!params.outputFolder || !isFinite(scale) || scale <= 0) { + writeResult(false, 'Parameters need outputFolder and a positive scale.'); + return; + } + if (!app.documents.length) { writeResult(false, 'No document is open.'); return; } + // Export work goes here (see the adobe-illustrator-scripting skill). + writeResult(true, 'Exported at ' + scale + '% to ' + params.outputFolder); + } catch (e) { + writeResult(false, 'Line ' + e.line + ': ' + e.message); + } finally { + app.userInteractionLevel = previous; + } +}()); +``` + +Batch caller (Windows): + +```bat +@echo off +setlocal +set "_script=%~dp0export-artboards.jsx" +set "_params=%TEMP%\acme-export-params.txt" +set "_result=%TEMP%\acme-export-result.json" + +if exist "%_result%" del /Q "%_result%" +powershell -NoProfile -Command "[System.IO.File]::WriteAllLines($env:_params, @(('outputFolder=' + $env:USERPROFILE + '\Documents\AcmeExports'), 'scale=200'), (New-Object System.Text.UTF8Encoding))" + +powershell -NoProfile -Command "$ai = New-Object -ComObject Illustrator.Application; [void]$ai.DoJavaScriptFile($env:_script, @(), 1)" + +if not exist "%_result%" ( + echo Illustrator did not write a result file. + exit /b 1 +) +type "%_result%" +findstr /c:"\"ok\":true" "%_result%" >nul || exit /b 1 +exit /b 0 +``` + +bash caller (macOS): + +```bash +#!/usr/bin/env bash +set -euo pipefail +script="$(cd "$(dirname "$0")" && pwd)/export-artboards.jsx" +params="${TMPDIR%/}/acme-export-params.txt" +result="${TMPDIR%/}/acme-export-result.json" + +rm -f "$result" +printf 'outputFolder=%s\nscale=200\n' "$HOME/Documents/AcmeExports" > "$params" + +# The path is an osascript argument, passed on with "with arguments", so it is never part of any script source. +osascript - "$script" <<'APPLESCRIPT' +on run argv + tell application "Adobe Illustrator" + do javascript "$.evalFile(new File(arguments[0]))" with arguments {item 1 of argv} + end tell +end run +APPLESCRIPT + +[[ -f "$result" ]] || { echo "Illustrator did not write a result file." >&2; exit 1; } +cat "$result" +grep -q '"ok":true' "$result" +``` + +Pipeline tips: + +- Illustrator runs one script at a time. Queue calls; never start two at once. +- Save outputs with `saveAs` or export calls into an output folder; never save over the source document. +- Log per user, for example `C:\Users\\AppData\Local\AcmeTools\logs\` or `~/Library/Logs/AcmeTools/`. +- If a run hangs, a modal dialog is usually open in Illustrator; set `userInteractionLevel` as above. + +## MCP Servers for Illustrator + +An Illustrator MCP server is a process an AI tool starts (usually over stdio) that exposes tools; each tool runs ExtendScript in Illustrator through COM or AppleScript and returns the result. + +```text +AI tool <-> MCP server (stdio) <-> COM / AppleScript <-> Illustrator (ExtendScript) +``` + +### Tool Design + +Keep the tool set small and specific: + +| Tool | Input | Output | +| --- | --- | --- | +| `document_info` | none | Open documents, active document, artboards, color mode, units | +| `list_layers` | document index | Layer names, visibility, lock state, item counts | +| `run_script` | script name from an allowlisted folder, JSON parameters | The script's JSON result | +| `export_artboard_png` | artboard index, scale | Path to the PNG (or the image itself) so the model can see the result | +| `save_copy_as` | output path inside the output folder, format | Saved path | + +- Prefer named scripts from an allowlisted folder over a tool that evaluates arbitrary code. If an arbitrary-code tool exists at all, keep it off by default and require confirmation per call. +- Return PNG previews after visual changes, so the agent can check its work. +- Serialize calls; return a clear error on timeout instead of waiting forever. +- Never save over the user's open file; write to an output folder and ask before overwriting. +- Wrap every script in `try`/`catch` and return `{ ok, message }`. + +Registering a local server in VS Code (`.vscode/mcp.json`): + +```json +{ + "servers": { + "illustrator": { + "type": "stdio", + "command": "node", + "args": ["${workspaceFolder}/tools/illustrator-mcp/server.js"], + "env": { "ACME_SCRIPTS_DIR": "${workspaceFolder}/tools/illustrator-mcp/scripts" } + } + } +} +``` + +### Vetting a Community Illustrator MCP Server + +Before installing one, read its source and check: + +- What code it runs inside Illustrator, and whether a tool accepts arbitrary ExtendScript +- Which folders it can read and write, and whether it can save over files +- Network calls it makes, and what it sends +- Which OS and Illustrator versions it supports, and how it starts Illustrator +- That you pin a version or commit rather than tracking a moving branch + +## Computer Use in Illustrator + +Use a computer-use tool only for what has no scripting route: some panels and dialogs, generative features, and visual checks a script cannot make. + +- Keep the Illustrator window at a fixed size and position for the whole session. +- Prefer menu paths and keyboard shortcuts over clicking coordinates. +- Take a screenshot after each step and stop when the screen does not match the expected state. +- Confirm results with a script readback where possible (for example item counts or layer names). +- Work on a copy of the document. +- Never type credentials, never click sign-in, licensing, purchase, or account dialogs, never accept terms for the user, and never upload or share files. +- Stop and hand back to the user on any unexpected dialog. diff --git a/skills/adobe-illustrator-integrations/references/cep-extensions.md b/skills/adobe-illustrator-integrations/references/cep-extensions.md new file mode 100644 index 000000000..a0269bd94 --- /dev/null +++ b/skills/adobe-illustrator-integrations/references/cep-extensions.md @@ -0,0 +1,255 @@ +# CEP Extensions for Illustrator + +A CEP extension is an HTML and JavaScript panel that runs inside Illustrator in an embedded Chromium (CEF) and calls ExtendScript in the host application. Illustrator 2026 (30.x) ships CEP 12.1, so the runtime is `CSXS` 12 and debug settings live under `CSXS.12`. Check the version your Illustrator ships with: the `CEPHtmlEngine` folder in the install has a versioned `CEPHtmlEngine.exe` on Windows. + +CEP is on its way out (Marketplace stops new CEP submissions for Illustrator in December 2028, CEP is disabled by default from December 2028, and removed from December 2029). Keep the drawing logic in plain ExtendScript so it moves to UXP later. + +## Folder Layout + +```text +com.example.gridtool/ + CSXS/ + manifest.xml Extension, host, runtime, and panel definition + index.html Panel UI + css/panel.css + js/ + CSInterface.js From Adobe-CEP/CEP-Resources/CEP_12.x (do not edit) + panel.js UI logic; calls the host through CSInterface + jsx/ + host.jsx ExtendScript loaded into Illustrator (ScriptPath) + assets/ Icons and files the host script places + .debug Development only; remove before packaging +``` + +Get `CSInterface.js` from the `CEP_12.x` folder of [Adobe-CEP/CEP-Resources](https://github.com/Adobe-CEP/CEP-Resources). `CEPEngine_extensions.js` is built into CEP and must not be bundled. + +## manifest.xml + +```xml + + + + + + + + + + + + + + + + + + + + + + ./index.html + ./jsx/host.jsx + + + true + + + Panel + Grid Tool + + 520320 + 360260 + + + + + + +``` + +- `Host Name="ILST"` is Illustrator. A range in `[` `]` is inclusive; `)` makes the upper bound exclusive. +- `Menu` is the name under Window > Extensions. +- `Type` can also be `ModalDialog` or `Modeless` for dialog-style windows. +- Lower `RequiredRuntime` only if older Illustrator versions must load the panel, and test on each. + +## Panel to Host Calls + +The panel runs modern JavaScript in Chromium. The host runs ExtendScript, which is ES3: no `let`, `const`, arrow functions, template literals, or built-in `JSON`. + +`js/panel.js`: + +```javascript +const cs = new CSInterface(); + +function drawGrid(settings) { + // JSON.stringify output is a valid ES3 object literal; escape U+2028 and U+2029, + // which are legal in JSON strings but not in ES3 string literals. + const literal = JSON.stringify(settings) + .replace(/\u2028/g, '\\u2028') + .replace(/\u2029/g, '\\u2029'); + return new Promise((resolve) => { + cs.evalScript(`gridTool.draw(${literal})`, (result) => { + if (result === 'EvalScript error.') { + resolve({ ok: false, message: 'Host script error. Check jsx/host.jsx for ES3 syntax.' }); + return; + } + resolve(parseHostResult(result)); + }); + }); +} + +function parseHostResult(text) { + try { + return JSON.parse(text); + } catch (err) { + return { ok: false, message: String(text) }; + } +} +``` + +`jsx/host.jsx`: + +```javascript +// ES3 only. Every public function returns a string the panel can JSON.parse. +var gridTool = (function () { + // JSON string literal: escapes backslash, quote, and every control character. + function quote(value) { + return '"' + String(value).replace(/[\\"\u0000-\u001f]/g, function (ch) { + if (ch === '\\' || ch === '"') { return '\\' + ch; } + return '\\u' + ('000' + ch.charCodeAt(0).toString(16)).slice(-4); + }) + '"'; + } + + function result(ok, message) { + return '{"ok":' + (ok ? 'true' : 'false') + ',"message":' + quote(message) + '}'; + } + + function toInt(value, min, max) { + if (typeof value !== 'number' && typeof value !== 'string') { return null; } + var n = Number(value); + if (!isFinite(n) || Math.floor(n) !== n || n < min || n > max) { return null; } + return n; + } + + function draw(settings) { + try { + if (!settings) { return result(false, 'No settings received.'); } + var rows = toInt(settings.rows, 1, 20); + var cols = toInt(settings.cols, 1, 10); + if (rows === null || cols === null) { return result(false, 'Rows must be 1 to 20 and columns 1 to 10.'); } + + var doc = app.documents.length ? app.activeDocument : app.documents.add(); + var layer = doc.layers.add(); + layer.name = 'Grid Tool'; + // Drawing code goes here (see the adobe-illustrator-scripting skill). + return result(true, 'Drew ' + rows + ' x ' + cols + '.'); + } catch (e) { + return result(false, 'Line ' + e.line + ': ' + e.message); + } + } + + return { draw: draw }; +}()); +``` + +Rules that prevent most panel bugs: + +- Validate in the panel for fast feedback and again in the host, which must never throw past `evalScript`. +- Return strings from the host. Objects come back as `[object Object]`. +- `EvalScript error.` means the host script failed to compile or threw; test the `.jsx` on its own first. +- Paths to files bundled with the extension: get the extension folder in the panel with `cs.getSystemPath(SystemPath.EXTENSION)` and pass it to the host. + +## Development Mode + +Unsigned extensions load only when `PlayerDebugMode` is set for the CSXS version the app uses. + +Windows (per user, string value): + +```bat +reg add "HKCU\Software\Adobe\CSXS.12" /v PlayerDebugMode /t REG_SZ /d 1 /f +``` + +macOS: + +```bash +defaults write com.adobe.CSXS.12 PlayerDebugMode 1 +``` + +Restart Illustrator afterwards (on macOS, log out and back in if the setting does not take). Set it on development machines only, and remove it with `reg delete "HKCU\Software\Adobe\CSXS.12" /v PlayerDebugMode /f` or `defaults delete com.adobe.CSXS.12 PlayerDebugMode`. + +## Install Folders + +| Scope | Windows | macOS | +| --- | --- | --- | +| Current user | `C:\Users\\AppData\Roaming\Adobe\CEP\extensions\` | `~/Library/Application Support/Adobe/CEP/extensions/` | +| All users | `C:\Program Files\Common Files\Adobe\CEP\extensions\` (also `C:\Program Files (x86)\Common Files\Adobe\CEP\extensions\`) | `/Library/Application Support/Adobe/CEP/extensions/` | + +During development, copy or link the extension folder into the per-user folder. Writing to the all-users folders needs administrator rights. + +## Debugging + +Add `.debug` at the extension root: + +```xml + + + + + + + + +``` + +Open the panel, then browse to `http://localhost:8088` in a Chromium browser for DevTools. Ports must be between 1024 and 65534 and unique per extension. Debug the host `.jsx` separately with the VS Code ExtendScript Debugger. + +## Packaging and Signing + +Get `ZXPSignCmd` from the `ZXPSignCMD` folder of [Adobe-CEP/CEP-Resources](https://github.com/Adobe-CEP/CEP-Resources). + +```bash +# Self-signed certificate for testing (keep the .p12 and its password out of the repo) +ZXPSignCmd -selfSignedCert US CA "Acme Corp" "Acme Grid Tool" "$CERT_PASSWORD" acme-cert.p12 + +# Sign with a timestamp so the signature outlives the certificate +ZXPSignCmd -sign com.example.gridtool gridtool-1.0.0.zxp acme-cert.p12 "$CERT_PASSWORD" -tsa http://time.certum.pl/ + +# Check the package +ZXPSignCmd -verify gridtool-1.0.0.zxp -certinfo +``` + +Before signing: remove `.debug`, `node_modules` you do not need, `.DS_Store` files, and symlinks (replace them with real files). Adobe's November 2024 known issue: sign the ZXP on the OS it is meant for (macOS ZXPs on macOS, Windows ZXPs on Windows). + +## Installing a ZXP + +Adobe's Unified Plugin Installer Agent (UPIA) ships with the Creative Cloud desktop app. + +Windows: + +```bat +"C:\Program Files\Common Files\Adobe\Adobe Desktop Common\RemoteComponents\UPI\UnifiedPluginInstallerAgent\UnifiedPluginInstallerAgent.exe" /install "C:\Users\\Downloads\gridtool-1.0.0.zxp" +"...\UnifiedPluginInstallerAgent.exe" /list all +"...\UnifiedPluginInstallerAgent.exe" /remove com.example.gridtool +``` + +macOS: the agent lives under `/Library/Application Support/Adobe/Adobe Desktop Common/RemoteComponents/UPI/UnifiedPluginInstallerAgent/`. Run its binary with `/help` first to see the option syntax for your version. + +Extension Manager CC and `ExManCmd` are end of life; use UPIA or the Adobe Marketplace instead. + +## Distribution + +- Adobe Marketplace (Adobe Exchange) through the Developer Distribution portal: [Developer Distribution guides](https://developer.adobe.com/developer-distribution/creative-cloud/docs/guides/) +- Direct download of the signed ZXP, with UPIA install steps in the docs (see publishing-docs.md) + +## Common Problems + +| Symptom | Likely cause | Fix | +| --- | --- | --- | +| Panel missing from Window > Extensions | Host range excludes this Illustrator version, or the folder is not in an extensions folder | Widen `Host Version`, check the folder path and `ExtensionBundleId` (in Photoshop, CEP panels are under Window > Extensions (Legacy)) | +| Panel is blank or will not load | Unsigned and `PlayerDebugMode` not set for this CSXS version | Set it under the right `CSXS.` key, or sign the ZXP | +| `EvalScript error.` | Host `.jsx` syntax error (often ES5+ syntax) or an uncaught throw | Run `host.jsx` alone, keep it ES3, wrap entry points in `try` | +| Host returns `undefined` | Function name wrong, or `ScriptPath` not loaded | Check `ScriptPath`, call `$.evalFile` on load as a fallback | +| ZXP installs but panel is blank | Signature problem (symlinks, signed on the other OS) | Re-sign on the target OS without symlinks | diff --git a/skills/adobe-illustrator-integrations/references/cpp-plugins.md b/skills/adobe-illustrator-integrations/references/cpp-plugins.md new file mode 100644 index 000000000..c4f9b7468 --- /dev/null +++ b/skills/adobe-illustrator-integrations/references/cpp-plugins.md @@ -0,0 +1,64 @@ +# C++ Plug-ins for Illustrator + +A plug-in is native code, built with the Illustrator SDK, that Illustrator loads at startup. It can add tools, menu items, live effects, file formats, and notifiers, and it runs much faster than ExtendScript on large documents. It is also the most work to build, ship, and keep current, because it must be rebuilt for each major Illustrator version and each OS. + +Choose a plug-in only when a script or CEP panel cannot do the job: a custom tool that reacts to mouse drags, a live effect, a file format, events scripts cannot see, or performance on thousands of objects. + +## Getting the SDK + +- Sign in to the Adobe Developer Console (`developer.adobe.com/console`), open the downloads area, and pick the Illustrator SDK for your OS. Use the SDK whose version matches the Illustrator major version you target. +- The download holds headers, documentation (getting started guide, API reference, porting notes), sample plug-ins under `samplecode/`, and build tools. +- The getting started guide lists the supported compiler versions: Visual Studio on Windows, Xcode on macOS. Use those versions; newer ones may need project upgrades. + +## Build and Load + +1. Open a sample project (for example the Annotator sample) and build it unchanged first to prove the toolchain. +2. The output is an `.aip` file on Windows and an `.aip` bundle on macOS. +3. Load it by copying it into Illustrator's `Plug-ins` folder, or better, point Illustrator at a development folder: Preferences > Plug-ins & Scratch Disks > Additional Plug-ins Folder, then restart Illustrator. +4. Plug-ins load only at startup. Quit Illustrator before replacing the `.aip`. + +## PiPL Resources + +Every plug-in carries a PiPL (plug-in property list) resource with its name, entry point, and required Illustrator version. Since Illustrator 25.1, PiPL resources are generated by a script in the SDK's tools folder instead of being edited by hand in resource files (Adobe developer blog, "An Illustrator 25.1 Update for Plugin Developers"). Follow the sample projects' build steps, which run the generator. + +## Entry Point and Messages + +Illustrator calls one exported function with a caller, a selector, and a message pointer. The SDK samples share a `common` folder: `Main.cpp` exports the entry point, and the `Plugin` base class routes caller and selector pairs to virtual methods, so start from a sample rather than writing it yourself: + +```cpp +// Shape of the entry point the SDK samples export; the base class routes +// caller/selector pairs to virtual methods such as StartupPlugin, ShutdownPlugin, +// GoMenuItem, Notify, and the tool handlers. +extern "C" ASAPI ASErr PluginMain(char* caller, char* selector, void* message); +``` + +- **Startup and shutdown**: acquire suites, add menus, tools, and notifiers at startup; release everything at shutdown. +- **Suites**: Illustrator's API is a set of versioned function tables (suites) such as the art, path, document, menu, tool, notifier, and timer suites. Acquire them through the basic suite the host passes in, check the returned error, and release them when done. +- **Notifiers**: subscribe to events such as selection changes or document open and close; keep handlers fast. +- **Timers**: for periodic work; never block the UI thread. + +## User Interface + +Native plug-ins add tools and menu items directly. For panels with complex controls, a common design pairs the plug-in with a CEP panel that sends it events, so the UI is HTML and the heavy work is native. Check the SDK samples for your version for the supported UI approach, since this has changed across releases. + +## Debugging + +- Build the Debug configuration and set Illustrator as the program to launch (Visual Studio: project Debugging settings, Command; Xcode: the scheme's Run executable), or attach to a running Illustrator. +- Keep a copy of a test document; native crashes take Illustrator down with them. +- Log to a file in a temp folder rather than showing alerts in loops. + +## Versions and Distribution + +- Rebuild and retest for each major Illustrator release; read the SDK's porting notes for API changes. +- Ship one build per OS. On macOS, sign and notarize the bundle so Gatekeeper allows it to load. On Windows, sign the binary with a code-signing certificate. +- Document the supported Illustrator versions and OSes in a compatibility table (see publishing-docs.md). +- UXP plugins are coming to Illustrator (public beta by Spring 2027). For new projects that only need panels and scripting, consider a CEP panel now and UXP later; keep native code for what only native code can do. + +## Checklist Before Release + +- [ ] Builds cleanly in Release for each OS and the targeted Illustrator major version +- [ ] Loads from a clean Additional Plug-ins Folder and from the `Plug-ins` folder +- [ ] Startup and shutdown release every suite and remove every notifier and timer +- [ ] Tested on a copy of a large real document, with undo working after each action +- [ ] Signed (and notarized on macOS) +- [ ] Install, uninstall, and compatibility documented diff --git a/skills/adobe-illustrator-integrations/references/publishing-docs.md b/skills/adobe-illustrator-integrations/references/publishing-docs.md new file mode 100644 index 000000000..ed54bbfe4 --- /dev/null +++ b/skills/adobe-illustrator-integrations/references/publishing-docs.md @@ -0,0 +1,85 @@ +# Docs for a Published Illustrator Tool + +Use this outline for the README, help page, or small documentation site that ships with an Illustrator script, CEP extension, plug-in, MCP server, or downloadable asset. Users read install docs while something is not working, so lead with requirements and keep every step checkable. + +## Outline + +1. **Name and one-line purpose**, then a GIF or screenshot of the result. +2. **Requirements**: Illustrator versions, OS, and anything else needed (fonts, Node.js for an MCP server). Say which version you tested on. +3. **Compatibility table** (below). +4. **Install**, one section per OS and per method. +5. **First run**: a short walkthrough from opening the tool to the first result, with a screenshot per step that changes the screen. +6. **Options**: each setting, its range, and its effect, with small before and after images where it helps. +7. **Troubleshooting**: symptom, cause, fix. +8. **Uninstall**. +9. **Changelog**, newest first. +10. **License** and credits for bundled assets. + +## Compatibility Table + +| Illustrator | Windows | macOS | Tested | +| --- | --- | --- | --- | +| 2026 (30.x) | Yes | Yes | 30.1 on Windows 11 | +| 2025 (29.x) | Yes | Yes | Not tested | +| 2024 (28.x) and earlier | No | No | n/a | + +Add a row for the extension technology when it matters: "CEP 12 panel" now, "UXP plugin" once a UXP version exists. + +## Install Sections by Tool Type + +**Script (`.jsx`)** + +1. Download `acme-grid-tool.jsx`. +2. Run it once from File > Scripts > Other Script, or copy it to Illustrator's `Presets//Scripts` folder and restart Illustrator to list it under File > Scripts. + +**CEP extension (signed ZXP)** + +1. Download `acme-grid-tool-1.0.0.zxp`. +2. Install it with Adobe's Unified Plugin Installer Agent, or with the Adobe Marketplace listing if there is one. Give the full UPIA command for Windows and the macOS location (see cep-extensions.md). +3. Restart Illustrator, then open Window > Extensions > Acme Grid Tool. + +**CEP extension (development copy)** + +1. Copy the extension folder to the per-user CEP extensions folder. +2. Turn on `PlayerDebugMode` for the CSXS version (development machines only), then restart Illustrator. + +**Plug-in (`.aip`)** + +1. Quit Illustrator. +2. Copy the `.aip` for your OS into a folder of your choice and set it under Preferences > Plug-ins & Scratch Disks > Additional Plug-ins Folder, or copy it into Illustrator's `Plug-ins` folder. +3. Start Illustrator. + +**MCP server** + +1. Requirements (runtime version), install command, and the MCP config snippet for each supported AI tool. +2. What each tool does, which folders it reads and writes, and what it never does. + +## Screenshots and GIFs + +- Capture at 100% UI scaling and crop to the panel or the area that changes. +- Use a demo document with placeholder content (Acme Corp artwork, `example.com` URLs); never a client file or a real account. +- A GIF of 3 to 8 frames at 1 to 2 seconds each shows a result better than a long screen recording. Export the frames from Illustrator with a script so they match the docs exactly. +- Give every image alt text that says what it shows. + +## Troubleshooting Table + +| Symptom | Cause | Fix | +| --- | --- | --- | +| Menu item missing | Script not in the Scripts folder, or Illustrator not restarted | Move the file, restart Illustrator | +| Panel missing or blank | Version outside the supported range, or an unsigned build | Check the compatibility table; install the signed ZXP | +| "No document is open" | The tool needs an open document | Open or create a document first | + +## Changelog Format + +```markdown +## 1.1.0 (2026-06-01) +- Added: alternating row patterns. +- Fixed: linked assets lost on documents saved to another folder. + +## 1.0.0 (2026-05-01) +- First release. +``` + +## Data in Docs + +Docs are public. Use placeholder people, companies, and paths only: Jane Doe, Acme Corp, `jane.doe@example.com`, `C:\Users\\...` on Windows and `~/...` on macOS. Never copy names from real documents, Creative Cloud libraries, or file lists into examples or screenshots.