An agent skill that teaches AI coding agents the Adobe Photoshop UXP and Lightroom Classic plugin SDKs: what the APIs actually are, what the platforms don't support, and the mistakes that cost hours.
Model training data is full of ExtendScript examples, browser JavaScript, and old forum posts. Without current SDK knowledge, agents produce plugin code that looks right and fails at runtime:
- Canvas pixel calls that don't exist in UXP (
getImageData,toDataURL,drawImage) - ExtendScript-era property names that UXP renamed or dropped
- Path strings passed to
document.saveAs.*(), which takes storage File entries - CSS that UXP silently ignores (Grid, transitions, transforms without the
CSSNextSupportflag) - Lightroom dialogs that leak gigabytes because
f:picturewas written to the same path on every update - Guessed Lua signatures for
LrDevelopControllerfunctions and publish-service callbacks
The skill puts the correct API in front of the agent before it writes the wrong one.
Three markdown files, loaded progressively so they only cost tokens when needed:
| File | Loads | Contents |
|---|---|---|
SKILL.md |
on activation (500 lines) | Capability matrix, critical pitfalls, quick-reference snippets, common-mistakes table |
ps-uxp-sdk.md |
on demand (~1,400 lines) | Full Photoshop UXP reference, organized by use case |
lrc-sdk.md |
on demand (~1,200 lines) | Full Lightroom Classic SDK reference, organized by use case |
The frontmatter description triggers activation when a task involves plugin work (manifest.json, Info.lua, batchPlay, LrView, and so on). Most tasks are answerable from SKILL.md alone; the deep files hold the complete API tables and signatures.
- Document class (36 properties, 29 methods) and Layer class (28 properties, 55 methods — 38 filters + 17 other)
- Selection class, LayerComp, ColorSampler, PathItem, Guide, HistoryState
- Manifest v5 configuration, permissions, and feature flags (
CSSNextSupport,enableSWCSupport) - Imaging API:
getPixels,putPixels,createImageDataFromBuffer,encodeImageData, masks, selection,ImageBloblossless display - File I/O & storage:
localFileSystempickers and plugin folders, session/persistent tokens (batchPlay_path),secureStorage, settings-persistence decision table - batchPlay reference forms (ID, Index, Name, Enum, Property), multiGet, Action Recording (v25.0+)
.psjsscript mode,photoshop.constants(100 enum groups), shell/openExternal, host info- UXP Developer Tools workflow, XMP metadata module (
XMPMeta/XMPFile), programmatic path creation (PathPointInfo), localization/platform detection - Canvas API limitations (no
drawImage,getImageData,putImageData,toDataURL) - Full Spectrum UXP component catalog (19
sp-*widgets, 36 icons) + SWC overview - HTML/CSS support matrix with CSSNextSupport feature flag details
- Text APIs: TextItem, CharacterStyle (33 properties), ParagraphStyle, WarpStyle
- Color management: SolidColor, color classes,
convertColor,getColorProfiles - Event system,
executeAsModal(withtimeOut,registerAutoCloseDocument) - App/Core module APIs, Preferences (12 groups), prototype extensions
- Hybrid plugin C++ bridge, WebView (panels since v6.4), network APIs
- 37-item known issues catalog
- Complete
Info.luamanifest reference (23 fields), plugin lifecycle, packaging (.lrplugin/.lrdevplugin), Lua 5.1.5 sandbox details - 5-stage export pipeline, programmatic export (
LrExportSession+ destination/naming/format keys), export filter provider - Publish-service callback catalog (all documented callbacks: collections, comments/ratings, deletion, lifecycle) + provider properties
- Memory leak prevention rules (6 non-negotiable rules with code) for long-running floating dialogs
LrCatalogmethod inventory: write gates and assertions, keywords, collections, folders, view filters, import triggers, batch develop/AI operations,findPhotoswith search descriptorsLrPhotomethods, 50+getRawMetadatakeys, 90+getFormattedMetadatakeys, custom metadata- Plugin develop presets (
addDevelopPresetForPlugin,LrDevelopPreset) with the documented-API traps LrView25 factory methods, 6 property categories, data binding patterns (basic, transform, multi-key, cross-table)LrDialogs14 functions,LrDevelopController95 functions grouped by category- Complete develop-parameter catalog by panel, local adjustment parameters (process versions 2-6)
- Controller SDK architecture (LrSocket, external driver, TCP protocol)
- 45+ module quick reference (LrApplication, LrSelection, LrHttp, LrDigest, LrDevelopPreset, etc.)
- External binary bridge patterns with platform detection (Lua to Rust/C++ CLI)
- Side-by-side capability matrix (PS UXP vs LrC) with DOM model, AI features, Selection API, file I/O
- Critical pitfalls with code examples (CSSNextSupport flag, executeAsModal anti-patterns, storage tokens, memory leaks)
- File I/O + settings-persistence quick reference; develop-parameter and LrDevelopController essentials (full catalogs live in
lrc-sdk.md) Info.luaessentials (grouped summary; full table inlrc-sdk.md)- Data binding patterns for LrView
- Common mistake/fix table (20 entries)
- Ready-to-use code snippets for the most frequent operations
npx skills add kevinkiklee/adobe-plugin-skillsAdd -g to install user-globally instead of into the current project, or -a claude-code to target a specific agent. The skills CLI supports Claude Code, Codex, Cursor, and 70+ other agents.
# Clone into your skills directory
git clone https://github.com/kevinkiklee/adobe-plugin-skills.git ~/.claude/skills/adobe-plugin-development
# Or symlink if you cloned elsewhere
ln -s /path/to/adobe-plugin-skills ~/.claude/skills/adobe-plugin-developmentThe skill activates automatically when you work on Photoshop UXP or Lightroom Classic plugin code.
Copy or symlink the skill directory into your agent's skill discovery path. The skill follows the agentskills.io specification with standard YAML frontmatter in SKILL.md.
New releases ship API corrections and coverage for newer SDK versions. Pick the path that matches how you installed:
npx skills update # skills CLI
git -C ~/.claude/skills/adobe-plugin-development pull # manual clone
git -C /path/to/adobe-plugin-skills pull # symlinked checkoutTo hear about new releases, click Watch → Custom → Releases on the GitHub repo. CHANGELOG.md lists what changed in each release; the current version is in SKILL.md's metadata.version frontmatter field.
- UXP: v9.2.0, Manifest v5
- Photoshop: API changelog 27.4 (the app is past 27.4, but Adobe has documented no plugin-API changes since — this reference stays current until the API changelog advances). PS 27.8 began a UXP plugin-rendering replatform with no documented API changes.
- Lightroom Classic SDK: v15.3 (latest published; LrC 15.4 shipped without a new SDK)
Every API claim has been audited against Adobe's official documentation (AdobeDocs/uxp-photoshop, the LrC 15.3 SDK LuaDoc and Programmers Guide) across four audit passes since April 2026; CHANGELOG.md records every correction. Where Adobe's own docs are wrong, the skill says so — the LuaDoc points to an applyDevelopPresetFromPlugin method that doesn't exist, and getDevelopSettings returns keys with typos (HueAdjustmentMagenha) that plugins must match exactly.
Last verified: July 2026. Content was compiled from Adobe's documentation repositories and the LrC 15.3 SDK, plus lessons from building Chromascope, a chrominance vectorscope plugin for both hosts.
Found an error, outdated API, or missing pattern? PRs welcome. The goal is to keep this current with Adobe's SDK releases so agents don't write code against deprecated or non-existent APIs.