From immich-photo-manager
Rotate photos in Immich library by album or asset IDs. Non-destructive, supports undo/revert. Use when photos are sideways or wrong orientation.
How this skill is triggered — by the user, by Claude, or both
Slash command
/immich-photo-manager:rotate-photosThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
**Before doing ANYTHING else in this skill, call `ping` on the Immich MCP server.**
Before doing ANYTHING else in this skill, call ping on the Immich MCP server.
ping succeeds → proceed with the skill normally.ping fails or the MCP tools are not available → STOP. Do not continue. Tell the user:Immich is not connected. This plugin needs a running Immich MCP server to work.
Run /setup-immich-photo-manager to configure your Immich connection.
Do NOT skip this check. Do NOT try to run any other tool first. Always ping, always block if it fails.
Rotation uses Immich's non-destructive edits API. The original file is never modified. Immich stores the rotation as a display transform that is applied when serving thumbnails and previews.
| Concept | Detail |
|---|---|
| API endpoint | PUT /assets/{id}/edits |
| Storage | Server-side, persists in Immich database forever |
| Original file | Never touched |
| Thumbnails | Served rotated via ?edited=true query parameter |
| Accumulation | Each PUT replaces all edits — the tool must read current angle and add |
| Full circle | 360° → edits are deleted entirely (isEdited returns to false) |
| Tool | Purpose |
|---|---|
rotate_assets | Rotate by album_id or asset_ids. Accumulates with existing rotation. |
revert_asset_edits | Remove all edits (rotation, crop, mirror) — back to original. |
rotate_assets(album_id="...", angle=90)revert_asset_edits(album_id="...")| Angle | Direction | Use when |
|---|---|---|
| 90 | Clockwise | Photo tilted left |
| 180 | Upside down | Photo inverted |
| 270 | Counter-clockwise | Photo tilted right |
Calling rotate_assets multiple times accumulates:
| Current | + angle | Result |
|---|---|---|
| 0° | +90° | 90° |
| 90° | +90° | 180° |
| 180° | +90° | 270° |
| 270° | +90° | 0° (edits removed, back to original) |
rotate_assets(album_id="uuid-of-album", angle=90)
rotate_assets(asset_ids=["uuid-1", "uuid-2", "uuid-3"], angle=270)
revert_asset_edits(album_id="uuid-of-album")
Use get_asset_info(asset_id) and check:
isEdited — true if any edits existwidth / height — swapped if rotated 90° or 270°For the exact angle, the tool reads GET /assets/{id}/edits internally.
When generating HTML galleries or visual reports, thumbnails must be fetched with ?edited=true to reflect rotation. The MCP thumbnail tools (get_asset_thumbnail, get_album_thumbnails, get_thumbnails_batch) do this by default.
| Mistake | Fix |
|---|---|
| Calling rotate_assets twice expecting it to stack without the accumulation fix | The tool handles this — it reads current angle and adds. No action needed. |
| Trying to detect rotated photos with CLIP search | Don't. Have the user identify them visually and create an album. |
Applying CSS rotation to thumbnails instead of using ?edited=true | Always use the real edited thumbnail from the API. Never fake it with CSS. |
| Forgetting that edits are per-asset, not per-album | A photo rotated in Album A will also appear rotated in Album B. |
npx claudepluginhub drolosoft/immich-photo-manager --plugin immich-photo-managerMonitors an Immich photo library for new photos that match existing albums using GPS location, CLIP visual similarity, and date patterns, then suggests album additions.
Applies consistent photo adjustments across a set of images using Adobe tools, including auto-tone, exposure, color temperature, and presets. Outputs a preview grid with final image URLs.
Automates Google Photos tasks (upload media, manage albums, search photos, batch add items) via Rube MCP (Composio). Always searches tools first for current schemas.