🧪 Skills
Psd Automator
Automate PSD text replacement on Mac and Windows with Photoshop, dry-run safety, style-lock checks, rollback, and local PSD index cache. Use when requests in...
v1.0.0
Description
name: psd-automator description: Automate PSD text replacement on Mac and Windows with Photoshop, dry-run safety, style-lock checks, rollback, and local PSD index cache. Use when requests include file/path hints, layer name, and replacement text from chat channels (including DingTalk) and require no popup dialogs. metadata: { "openclaw": { "emoji": "🖼️", "skillKey": "psd-automator" } }
PSD Automator
Cross-platform PSD text automation for teams using both macOS and Windows.
Scope
- Phase 1 + 2 only.
- Screenshot understanding is intentionally out of scope.
- Uses one task protocol and two execution engines:
- macOS: AppleScript (
osascript) - Windows: Photoshop COM (PowerShell)
- macOS: AppleScript (
Task Protocol
Read references/task-schema.json before running.
Minimal required fields:
taskIdinput.edits[](layerName+newText)input.exactPathorinput.fileHint
Key optional fields:
workflow.sourceMode:inplaceorcopy_then_editoutput.exports[]: PNG export (mode=singleormode=layer_setsfor sliced/block assets)output.bundle.zipName: zip name for sliced assets bundleoptions.pathBridgeMode:auto/always/off(macOS Unicode path bridge)options.bundleZip: whether to bundlelayer_setsPNGs into one zipoptions.matchImagePath: screenshot path for selecting most similar exported slice
Build and Refresh PSD Index
Create or refresh local cache:
node skills/psd-automator/scripts/build-index.js \
--root "/Projects/Design" \
--root "/Users/me/Desktop/assets" \
--index "~/.openclaw/psd-index.json"
Incremental refresh:
node skills/psd-automator/scripts/build-index.js --incremental
Run a Task
Dry-run first (recommended):
node skills/psd-automator/scripts/run-task.js \
--task "skills/psd-automator/examples/task.mac.json" \
--dry-run
Execute:
node skills/psd-automator/scripts/run-task.js \
--task "skills/psd-automator/examples/task.mac.json"
Natural-language dispatch (through OpenClaw chat command, supports .psd and .psb):
/psd design-mac-01 帮我找到20260225工位名牌.psd或20260225工位名牌.psb,把姓名改成琳琳,座右铭改成步履不前,稳步前进,保存成png放置在桌面 --dry-run
DingTalk image handoff (required)
When replying in DingTalk and task execution is successful with PNG output, the final response MUST include this marker with an absolute path:
[DINGTALK_IMAGE]{"path":"<absolute_png_path>"}[/DINGTALK_IMAGE]
Rules:
- Use absolute path only (for example
/Users/name/Desktop/xxx.png). - Do not use filename-only values.
- If
pngOutputPath(or first item inpngOutputPaths) is missing, clearly report failure and do not emit a fake marker. - For
mode=layer_sets,pngOutputPathsshould contain all exported block images in the output folder. - When available, use
selectedPngPathas the single best-match image for screenshot workflows. - When available, send
bundleZipPathas file attachment:[DINGTALK_FILE]{"path":"<absolute_zip_path>","fileName":"<name>.zip","fileType":"zip"}[/DINGTALK_FILE]. - Keep normal human-readable summary, then append marker on a new line at the end.
OpenClaw Routing Pattern (Phase 2)
Use OpenClaw subagent routing guidance:
Core idea:
- Main agent parses request.
- Resolve target machine + platform capabilities.
- Spawn/dispatch to target subagent.
- Subagent runs
run-task.jslocally. - Return normalized result + audit log.
Safety Baseline
- Always support
dryRun. - Keep style lock (
fontandsize) after text changes. - Disable Photoshop dialogs.
- Create
.bakbackup before write. - Stop on ambiguous file matches (
E_FILE_AMBIGUOUS); never guess silently. - On layer-not-found, return
availableLayers+suggestedLayers. - Emit standardized error codes from references/error-codes.md.
Reviews (0)
Sign in to write a review.
No reviews yet. Be the first to review!
Comments (0)
No comments yet. Be the first to share your thoughts!