[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"extension-plugin-drolosoft-immich-photo-manager-de":3,"guides-for-drolosoft-immich-photo-manager":714,"similar-k17fptxxsmtdk9k5x99qw7re2586n8fq-de":715},{"_creationTime":4,"_id":5,"children":6,"community":286,"display":287,"evaluation":290,"identity":532,"isFallback":535,"parentExtension":536,"providers":561,"relations":567,"repo":568,"tags":712,"workflow":713},1778686338567.5732,"k17fptxxsmtdk9k5x99qw7re2586n8fq",[7,46,67,91,113,136,156,177,199,218,241,263],{"_creationTime":8,"_id":9,"community":10,"display":12,"identity":18,"providers":24,"relations":40,"tags":42,"workflow":43},1778686338567.5735,"k176xjm76xfsyx4hn82v2rdef986n0js",{"reviewCount":11},0,{"description":13,"installMethods":14,"name":16,"sourceUrl":17},"Create, curate, and publish Immich albums organized by geography, theme, or custom criteria. Use when the user says \"create an album\", \"organize my photos by location\", \"make a gallery album\", \"curate photos from Italy\", \"publish album\", \"geographic albums\", \"album from my trip to X\", \"share this album\", or any variation of creating, managing, or publishing photo albums in Immich. Also triggers on \"what albums do I have\", \"list albums\", \"album stats\", \"show me photos from\", \"generate gallery for\", \"show me the album\".\n",{"claudeCode":15},"drolosoft/immich-photo-manager","album-manager","https://github.com/drolosoft/immich-photo-manager",{"basePath":19,"githubOwner":20,"githubRepo":21,"locale":22,"slug":16,"type":23},"skills/album-manager","drolosoft","immich-photo-manager","en","skill",{"evaluate":25,"extract":38},{"promptVersionExtension":26,"promptVersionScoring":27,"score":28,"tags":29,"targetMarket":36,"tier":37},"3.0.0","4.4.0",96,[30,31,32,33,34,35],"immich","photos","albums","organization","gallery","media-management","global","verified",{"commitSha":39},"HEAD",{"parentExtensionId":5,"repoId":41},"kd71cer955pa6pzdsewzf62dt986nbtd",[32,34,30,35,33,31],{"evaluatedAt":44,"extractAt":45,"updatedAt":44},1778686420761,1778686338567,{"_creationTime":47,"_id":48,"community":49,"display":50,"identity":54,"providers":56,"relations":63,"tags":64,"workflow":65},1778686338567.5737,"k17dn1dvs99dqeq08n8313665x86n48d",{"reviewCount":11},{"description":51,"installMethods":52,"name":53,"sourceUrl":17},"Monitor your Immich library for new photos that match existing albums and suggest additions. Keeps albums fresh by finding new photos that belong in existing collections based on GPS location, visual similarity (CLIP), and date patterns. Use when the user says \"update my albums\", \"refresh albums\", \"new photos for albums\", \"curate albums\", \"auto-curate\", \"keep albums fresh\", \"album suggestions\", \"what new photos belong in my albums\", \"smart album update\", or any variation of wanting to keep their albums up to date with recent imports.\n",{"claudeCode":15},"auto-album-curator",{"basePath":55,"githubOwner":20,"githubRepo":21,"locale":22,"slug":53,"type":23},"skills/auto-album-curator",{"evaluate":57,"extract":62},{"promptVersionExtension":26,"promptVersionScoring":27,"score":58,"tags":59,"targetMarket":36,"tier":37},99,[30,31,32,60,33,61],"curation","ai",{"commitSha":39},{"parentExtensionId":5,"repoId":41},[61,32,60,30,33,31],{"evaluatedAt":66,"extractAt":45,"updatedAt":66},1778686443797,{"_creationTime":68,"_id":69,"community":70,"display":71,"identity":75,"providers":77,"relations":87,"tags":88,"workflow":89},1778686338567.574,"k17b0q5xepcajzr3qkzgtkvqxs86m7az",{"reviewCount":11},{"description":72,"installMethods":73,"name":74,"sourceUrl":17},"Run a comprehensive duplicate analysis on an Immich photo library using perceptual hashing. Finds cross-source duplicates (e.g. Apple Photos vs Google Photos exports), internal duplicates, and generates a detailed report with removal recommendations. Use when the user says \"find duplicates\", \"duplicate report\", \"how many duplicates\", \"library health check\", \"photo dedup report\", \"run duplicate analysis\", \"compare my photo sources\", or any variation of wanting to understand duplicate photos across import sources.\n",{"claudeCode":15},"duplicate-report",{"basePath":76,"githubOwner":20,"githubRepo":21,"locale":22,"slug":74,"type":23},"skills/duplicate-report",{"evaluate":78,"extract":86},{"promptVersionExtension":26,"promptVersionScoring":27,"score":79,"tags":80,"targetMarket":36,"tier":85},95,[30,31,81,82,83,84],"deduplication","perceptual-hashing","library-management","reporting","community",{"commitSha":39},{"parentExtensionId":5,"repoId":41},[81,30,83,82,31,84],{"evaluatedAt":90,"extractAt":45,"updatedAt":90},1778686474905,{"_creationTime":92,"_id":93,"community":94,"display":95,"identity":99,"providers":101,"relations":109,"tags":110,"workflow":111},1778686338567.5742,"k1732fnv0fnb1bxhz02g2erp0n86m6r9",{"reviewCount":11},{"description":96,"installMethods":97,"name":98,"sourceUrl":17},"Run a comprehensive health check on an Immich photo library — asset counts, storage usage, metadata completeness, orphaned files, and quality indicators. Use when the user says \"library health\", \"health report\", \"library status\", \"library audit\", \"how healthy is my library\", \"photo stats\", \"library overview\", \"what's in my library\", \"library report\", or any variation of wanting a comprehensive overview of their photo library's state.\n",{"claudeCode":15},"library-health-report",{"basePath":100,"githubOwner":20,"githubRepo":21,"locale":22,"slug":98,"type":23},"skills/library-health-report",{"evaluate":102,"extract":108},{"promptVersionExtension":26,"promptVersionScoring":27,"score":103,"tags":104,"targetMarket":36,"tier":37},98,[30,105,106,107,84],"photo-management","library-health","data-analysis",{"commitSha":39},{"parentExtensionId":5,"repoId":41},[107,30,106,105,84],{"evaluatedAt":112,"extractAt":45,"updatedAt":112},1778686498743,{"_creationTime":114,"_id":115,"community":116,"display":117,"identity":121,"providers":124,"relations":132,"tags":133,"workflow":134},1778686338567.5745,"k1737wckn9mggk2vdm8r0mvpqs86n7q2",{"reviewCount":11},{"description":118,"installMethods":119,"name":120,"sourceUrl":17},"Scan for and fix broken or missing photo metadata — dates, GPS coordinates, timezone offsets, and camera info. Detects suspicious patterns (midnight/noon timestamps, missing GPS on geotagged trips) and proposes corrections using folder structure, neighboring photos, and EXIF inference. Use when the user says \"fix metadata\", \"fix dates\", \"wrong dates\", \"missing GPS\", \"metadata repair\", \"exif fix\", \"photos have wrong time\", \"noon dates\", \"midnight timestamps\", \"fix my photo dates\", \"metadata fixer\", or any variation of wanting to repair photo metadata.\n",{"claudeCode":15},"Metadata Fixer",{"basePath":122,"githubOwner":20,"githubRepo":21,"locale":22,"slug":123,"type":23},"skills/metadata-fixer","metadata-fixer",{"evaluate":125,"extract":130},{"promptVersionExtension":26,"promptVersionScoring":27,"score":79,"tags":126,"targetMarket":36,"tier":37},[105,127,30,128,129],"metadata","exif","gps",{"commitSha":39,"license":131},"MIT",{"parentExtensionId":5,"repoId":41},[128,129,30,127,105],{"evaluatedAt":135,"extractAt":45,"updatedAt":135},1778686524402,{"_creationTime":137,"_id":138,"community":139,"display":140,"identity":143,"providers":146,"relations":152,"tags":153,"workflow":154},1778686338567.5747,"k17ccdwa413myg37b7nsftv7h986mern",{"reviewCount":11},{"description":141,"installMethods":142,"name":21,"sourceUrl":17},"Generate a report on people in your Immich photo library — unique faces detected, photos per person, unnamed faces, people appearing together, and face recognition quality. Use when the user says \"people report\", \"faces report\", \"who's in my library\", \"unnamed faces\", \"face recognition\", \"how many people\", \"people stats\", \"who appears most\", \"tag my faces\", \"face cleanup\", \"person report\", or any variation of wanting to understand the people in their photo library.\n",{"claudeCode":15},{"basePath":144,"githubOwner":20,"githubRepo":21,"locale":22,"slug":145,"type":23},"skills/people-report","people-report",{"evaluate":147,"extract":151},{"promptVersionExtension":26,"promptVersionScoring":27,"score":58,"tags":148,"targetMarket":36,"tier":37},[30,31,149,84,150],"face-recognition","mcp",{"commitSha":39,"license":131},{"parentExtensionId":5,"repoId":41},[149,30,150,31,84],{"evaluatedAt":155,"extractAt":45,"updatedAt":155},1778686543941,{"_creationTime":157,"_id":158,"community":159,"display":160,"identity":164,"providers":166,"relations":173,"tags":174,"workflow":175},1778686338567.575,"k17bkwnghncjzk4p919n0yhqjd86n89t",{"reviewCount":11},{"description":161,"installMethods":162,"name":163,"sourceUrl":17},"Detect and remove screenshots, duplicates, and low-quality photos from an Immich library. Use when the user says \"clean up my photos\", \"remove screenshots\", \"find duplicates\", \"deduplicate\", \"photo cleanup\", \"library cleanup\", \"how many screenshots do I have\", \"free up space\", \"remove junk photos\", or any variation of cleaning, deduplicating, or optimizing a photo library.\n",{"claudeCode":15},"photo-cleanup",{"basePath":165,"githubOwner":20,"githubRepo":21,"locale":22,"slug":163,"type":23},"skills/photo-cleanup",{"evaluate":167,"extract":172},{"promptVersionExtension":26,"promptVersionScoring":27,"score":168,"tags":169,"targetMarket":36,"tier":85},75,[105,30,81,170,171],"cleanup","automation",{"commitSha":39},{"parentExtensionId":5,"repoId":41},[171,170,81,30,105],{"evaluatedAt":176,"extractAt":45,"updatedAt":176},1778686595340,{"_creationTime":178,"_id":179,"community":180,"display":181,"identity":185,"providers":188,"relations":195,"tags":196,"workflow":197},1778686338567.5752,"k17ayghah8cpdc4r6wv78gvd8x86ns4c",{"reviewCount":11},{"description":182,"installMethods":183,"name":184,"sourceUrl":17},"Search and explore an Immich photo library using natural language, GPS locations, dates, people, cameras, and AI-powered visual search (CLIP). Use when the user says \"find photos of\", \"search my photos\", \"show me pictures from\", \"where are my photos of\", \"do I have photos of\", \"find all screenshots\", \"photos taken with\", \"photos from 2019\", \"photos near\", \"photos of [person]\", or any variation of searching, browsing, or exploring their photo library.\n",{"claudeCode":15},"Immich Photo Manager",{"basePath":186,"githubOwner":20,"githubRepo":21,"locale":22,"slug":187,"type":23},"skills/photo-search","photo-search",{"evaluate":189,"extract":194},{"promptVersionExtension":26,"promptVersionScoring":27,"score":190,"tags":191,"targetMarket":36,"tier":37},97,[30,31,192,34,61,193,127],"search","cli",{"commitSha":39,"license":131},{"parentExtensionId":5,"repoId":41},[61,193,34,30,127,31,192],{"evaluatedAt":198,"extractAt":45,"updatedAt":198},1778686618843,{"_creationTime":200,"_id":201,"community":202,"display":203,"identity":207,"providers":209,"relations":214,"tags":215,"workflow":216},1778686338567.5754,"k17a793ns6w7k01tv43akbr3tn86m7ra",{"reviewCount":11},{"description":204,"installMethods":205,"name":206,"sourceUrl":17},"Bulk rotate photos in an Immich library — by album or asset IDs. Non-destructive, original files are never modified. Supports undo/revert. Use when the user says \"rotate photos\", \"rotate album\", \"fix rotation\", \"photos are sideways\", \"rotate 90\", \"rotate clockwise\", \"rotate counterclockwise\", \"upside down photos\", \"wrong orientation\", \"bulk rotate\", \"rotate multiple\", or any variation of wanting to rotate one or more photos.\n",{"claudeCode":15},"rotate-photos",{"basePath":208,"githubOwner":20,"githubRepo":21,"locale":22,"slug":206,"type":23},"skills/rotate-photos",{"evaluate":210,"extract":213},{"promptVersionExtension":26,"promptVersionScoring":27,"score":58,"tags":211,"targetMarket":36,"tier":37},[30,105,212,171,150],"bulk-rotate",{"commitSha":39},{"parentExtensionId":5,"repoId":41},[171,212,30,150,105],{"evaluatedAt":217,"extractAt":45,"updatedAt":217},1778686641184,{"_creationTime":219,"_id":220,"community":221,"display":222,"identity":226,"providers":228,"relations":237,"tags":238,"workflow":239},1778686338567.5757,"k17cythja82wekj94qzw5mw7gs86n1pm",{"reviewCount":11},{"description":223,"installMethods":224,"name":225,"sourceUrl":17},"Analyze disk usage in an Immich photo library and identify opportunities to reclaim storage — redundant RAW+JPEG pairs, oversized videos, bloated sidecar files, and format inefficiencies. Use when the user says \"storage\", \"disk space\", \"what's eating my disk\", \"free up space\", \"storage report\", \"disk usage\", \"large files\", \"optimize storage\", \"space analysis\", \"how much space\", \"biggest files\", or any variation of wanting to understand or reduce storage usage.\n",{"claudeCode":15},"storage-optimizer",{"basePath":227,"githubOwner":20,"githubRepo":21,"locale":22,"slug":225,"type":23},"skills/storage-optimizer",{"evaluate":229,"extract":236},{"promptVersionExtension":26,"promptVersionScoring":27,"score":28,"tags":230,"targetMarket":36,"tier":37},[30,231,232,233,234,235],"photo","storage","analysis","optimization","disk-usage",{"commitSha":39},{"parentExtensionId":5,"repoId":41},[233,235,30,234,231,232],{"evaluatedAt":240,"extractAt":45,"updatedAt":240},1778686666119,{"_creationTime":242,"_id":243,"community":244,"display":245,"identity":249,"providers":251,"relations":259,"tags":260,"workflow":261},1778686338567.576,"k17e4g90xh14vn4xqf9y9rfc4n86mct0",{"reviewCount":11},{"description":246,"installMethods":247,"name":248,"sourceUrl":17},"Analyze the photo timeline to find suspicious gaps — months or years with zero or very few photos. Helps identify failed imports, missing backups, or periods where photos exist in only one ecosystem. Use when the user says \"timeline gaps\", \"missing months\", \"missing photos\", \"are there gaps\", \"what months am I missing\", \"photo timeline\", \"coverage check\", \"find missing periods\", \"when am I missing photos\", or any variation of wanting to find holes in their photo timeline.\n",{"claudeCode":15},"timeline-gaps",{"basePath":250,"githubOwner":20,"githubRepo":21,"locale":22,"slug":248,"type":23},"skills/timeline-gaps",{"evaluate":252,"extract":258},{"promptVersionExtension":26,"promptVersionScoring":27,"score":168,"tags":253,"targetMarket":36,"tier":85},[105,254,255,30,256,257],"timeline-analysis","data-quality","python","sql",{"commitSha":39},{"parentExtensionId":5,"repoId":41},[255,30,105,256,257,254],{"evaluatedAt":262,"extractAt":45,"updatedAt":262},1778686691418,{"_creationTime":264,"_id":265,"community":266,"display":267,"identity":271,"providers":273,"relations":282,"tags":283,"workflow":284},1778686338567.5762,"k1768hvz5w3mqfjw0meya0xq2986me2d",{"reviewCount":11},{"description":268,"installMethods":269,"name":270,"sourceUrl":17},"Generate an interactive map showing every location where photos were taken, clustered by city/region with photo counts, date ranges, and album links. Outputs a standalone HTML file with Leaflet.js that can be hosted or viewed locally. Use when the user says \"travel map\", \"show me everywhere I've been\", \"photo map\", \"map my photos\", \"where have I traveled\", \"GPS map\", \"location map\", \"map of my trips\", \"generate a map\", \"interactive map\", or any variation of wanting to see their photos plotted on a map.\n",{"claudeCode":15},"travel-map",{"basePath":272,"githubOwner":20,"githubRepo":21,"locale":22,"slug":270,"type":23},"skills/travel-map",{"evaluate":274,"extract":281},{"promptVersionExtension":26,"promptVersionScoring":27,"score":275,"tags":276,"targetMarket":36,"tier":85},88,[31,277,278,279,280,30],"mapping","geotagging","html","data-visualization",{"commitSha":39},{"parentExtensionId":5,"repoId":41},[280,278,279,30,277,31],{"evaluatedAt":285,"extractAt":45,"updatedAt":285},1778686725752,{"reviewCount":11},{"description":288,"installMethods":289,"name":184,"sourceUrl":17},"MCP server for intelligent photo management with Immich — interactive HTML galleries with Cowork Actions Panel, geographic album curation, library cleanup, duplicate detection, people & face management, trash management, metadata repair, and 36 MCP tools. The first MCP server for self-hosted photo management.",{"claudeCode":21},{"_creationTime":291,"_id":292,"extensionId":5,"locale":22,"result":293,"trustSignals":515,"workflow":530},1778686398961.8452,"kn7as25t1521tkedm38re5n1rh86n2k0",{"checks":294,"evaluatedAt":479,"extensionSummary":480,"features":481,"nonGoals":488,"practices":492,"prerequisites":498,"promptVersionExtension":26,"promptVersionScoring":27,"purpose":502,"rationale":503,"score":79,"summary":504,"tags":505,"targetMarket":36,"tier":37,"useCases":509},[295,300,303,306,310,313,317,321,324,327,331,335,339,343,346,349,352,355,358,361,365,369,373,377,381,384,387,390,394,397,400,403,406,409,412,416,420,424,427,431,434,437,440,443,446,449,452,455,458,461,465,468,471,475],{"category":296,"check":297,"severity":298,"summary":299},"Practical Utility","Problem relevance","pass","The description clearly states the extension addresses the problem of managing a large, self-hosted photo library (Immich) with AI assistance.",{"category":296,"check":301,"severity":298,"summary":302},"Unique selling proposition","The extension provides significant value beyond default AI behavior by enabling direct, natural language interaction with Immich for complex tasks like intelligent search, album curation, and library health analysis.",{"category":296,"check":304,"severity":298,"summary":305},"Production readiness","The plugin appears to cover the complete lifecycle for photo management tasks through its various skills, from setup and search to cleanup and reporting.",{"category":307,"check":308,"severity":298,"summary":309},"Scope","Single responsibility principle","The plugin focuses on photo management within the Immich ecosystem, with individual skills addressing coherent sub-domains like search, albums, cleanup, and reporting.",{"category":307,"check":311,"severity":298,"summary":312},"Description quality","The displayed description accurately and concisely reflects the plugin's capabilities and purpose.",{"category":314,"check":315,"severity":298,"summary":316},"Invocation","Scoped tools","The MCP tools exposed by the server are specific verb-noun actions, such as `search_metadata`, `create_album`, and `delete_assets`.",{"category":318,"check":319,"severity":298,"summary":320},"Documentation","Configuration & parameter reference","The README and individual skill documents clearly outline parameters, arguments, and their expected behavior, including setup steps and prerequisites.",{"category":307,"check":322,"severity":298,"summary":323},"Tool naming","The exposed tools and commands (e.g., `setup-immich-photo-manager`, `cleanup`, `my-travels`) are descriptive and follow kebab-case conventions.",{"category":307,"check":325,"severity":298,"summary":326},"Minimal I/O surface","Tool parameters and response schemas appear to be focused on the specific task at hand, and the HTML gallery output is well-structured.",{"category":328,"check":329,"severity":298,"summary":330},"License","License usability","The extension is licensed under the MIT License, a permissive open-source license.",{"category":332,"check":333,"severity":298,"summary":334},"Maintenance","Commit recency","The last commit was on May 7, 2026, which is within the last 3 months.",{"category":332,"check":336,"severity":337,"summary":338},"Dependency Management","not_applicable","The extension does not appear to rely on third-party npm or pypi dependencies that would require formal management beyond its Python requirements.",{"category":340,"check":341,"severity":298,"summary":342},"Security","Secret Management","API keys and server URLs are handled via the `setup-immich-photo-manager` skill using `update_credentials`, persisting securely and not echoing to stdout.",{"category":340,"check":344,"severity":298,"summary":345},"Injection","The plugin appears to treat user input and external data as data, not executable instructions, and bundles all necessary components.",{"category":340,"check":347,"severity":298,"summary":348},"Transitive Supply-Chain Grenades","The plugin does not fetch remote content at runtime or execute arbitrary shells; all components appear to be bundled.",{"category":340,"check":350,"severity":298,"summary":351},"Sandbox Isolation","The plugin operates within its designated scope and does not appear to modify files outside of the user's Immich library or project directory.",{"category":340,"check":353,"severity":298,"summary":354},"Sandbox escape primitives","No evidence of detached processes or retry loops around denied calls was found in the scripts.",{"category":340,"check":356,"severity":298,"summary":357},"Data Exfiltration","The plugin interacts with a self-hosted Immich instance and does not appear to exfiltrate confidential data to third parties.",{"category":340,"check":359,"severity":298,"summary":360},"Hidden Text Tricks","Bundled content is free of hidden steering tricks, and descriptions are clean ASCII.",{"category":362,"check":363,"severity":298,"summary":364},"Hooks","Opaque code execution","The plugin's scripts are provided in readable bash or JS and do not use obfuscation or runtime code fetching.",{"category":366,"check":367,"severity":298,"summary":368},"Portability","Structural Assumption","The plugin makes reasonable assumptions about Immich instance structure and handles configuration via dedicated skills, not arbitrary paths.",{"category":370,"check":371,"severity":298,"summary":372},"Trust","Issues Attention","0 issues opened, 1 closed in last 90 days, indicating active maintenance or low issue volume.",{"category":374,"check":375,"severity":298,"summary":376},"Versioning","Release Management","The plugin has a `version: 1.2.0` declared in its `SKILL.md` frontmatter and a GitHub release tag.",{"category":378,"check":379,"severity":298,"summary":380},"Code Execution","Validation","The skills and command scripts demonstrate input validation, particularly for arguments and API calls, and generate structured outputs.",{"category":340,"check":382,"severity":298,"summary":383},"Unguarded Destructive Operations","Destructive operations like deleting assets are behind user confirmation steps and use trash recovery, not silent execution.",{"category":378,"check":385,"severity":298,"summary":386},"Error Handling","Skills include explicit checks for Immich connection status and errors, providing user-friendly messages and guidance.",{"category":378,"check":388,"severity":298,"summary":389},"Logging","The plugin logs actions and results, particularly for destructive operations and cleanup, providing an audit trail.",{"category":391,"check":392,"severity":298,"summary":393},"Compliance","GDPR","The plugin operates on a self-hosted instance and does not submit personal data to third parties.",{"category":391,"check":395,"severity":298,"summary":396},"Target market","The extension operates on self-hosted data and has no regional restrictions, thus `targetMarket` is 'global'.",{"category":366,"check":398,"severity":298,"summary":399},"Runtime stability","The extension's core functionality relies on Immich API and Python, with no specific OS or shell dependencies noted.",{"category":318,"check":401,"severity":298,"summary":402},"README","The README is comprehensive, well-structured, and clearly states the extension's purpose and capabilities.",{"category":307,"check":404,"severity":298,"summary":405},"Tool surface size","The plugin exposes a reasonable number of tools and skills (36 MCP tools + ~10 commands), fitting within the target range.",{"category":314,"check":407,"severity":298,"summary":408},"Overlapping near-synonym tools","Tool names and skill descriptions appear distinct, avoiding significant overlap or ambiguity in function.",{"category":318,"check":410,"severity":298,"summary":411},"Phantom features","All advertised features, such as AI search, geographic albums, and cleanup, correspond to implemented skills and MCP tools.",{"category":413,"check":414,"severity":298,"summary":415},"Install","Installation instruction","Clear installation instructions, including a copy-paste example for `claude plugin install`, are provided in the README.",{"category":417,"check":418,"severity":298,"summary":419},"Errors","Actionable error messages","Connection errors and other operational issues provide clear explanations and direct users to the setup skill for resolution.",{"category":421,"check":422,"severity":298,"summary":423},"Execution","Pinned dependencies","The plugin specifies Python 3.10+ and Python dependencies like Pillow and imagehash are managed via pip, implying lockfile use for reproducibility.",{"category":307,"check":425,"severity":298,"summary":426},"Dry-run preview","Destructive operations like deletion are confirmed by the user and default to trash recovery, effectively serving as a dry-run preview.",{"category":428,"check":429,"severity":298,"summary":430},"Protocol","Idempotent retry & timeouts","Immich API operations, especially edits and deletions, appear to be designed for idempotency and handled with user confirmation, with timeouts managed by the underlying API calls.",{"category":391,"check":432,"severity":298,"summary":433},"Telemetry opt-in","No telemetry is mentioned or implemented; all operations are local to the user's Immich instance.",{"category":314,"check":435,"severity":298,"summary":436},"Name collisions","Bundled skills and MCP tools have distinct names and purposes, avoiding conflicts with built-ins or each other.",{"category":314,"check":438,"severity":337,"summary":439},"Hooks-off mechanism","This plugin does not appear to use custom hooks that would require a hooks-off mechanism.",{"category":314,"check":441,"severity":337,"summary":442},"Hook matcher tightness","The plugin does not utilize custom hooks with specific matchers.",{"category":340,"check":444,"severity":337,"summary":445},"Hook security","The plugin does not utilize custom hooks that would require security gating.",{"category":362,"check":447,"severity":337,"summary":448},"Silent prompt rewriting","The plugin does not implement UserPromptSubmit hooks that would rewrite user prompts.",{"category":340,"check":450,"severity":337,"summary":451},"Permission Hook","The plugin does not utilize PermissionRequest hooks.",{"category":391,"check":453,"severity":337,"summary":454},"Hook privacy","The plugin does not utilize hooks for logging or telemetry, nor does it send data over the network.",{"category":378,"check":456,"severity":337,"summary":457},"Hook dependency","The plugin does not appear to use custom hooks that would require dependency checks.",{"category":318,"check":459,"severity":298,"summary":460},"Feature Transparency","Critical functionality is explained in the README, and the structure aligns with standard plugin conventions.",{"category":462,"check":463,"severity":298,"summary":464},"Convention","Layout convention adherence","The plugin follows standard Claude Code plugin structure with `plugin.json` in `.claude-plugin/` and commands/skills organized appropriately.",{"category":462,"check":466,"severity":298,"summary":467},"Plugin state","Plugin state, like credentials, is managed via the `setup-immich-photo-manager` skill and persisted, likely within the plugin's designated data scope.",{"category":340,"check":469,"severity":298,"summary":470},"Keychain-stored secrets","Immich API keys and URLs are managed through a setup skill, suggesting they are stored securely rather than in plain settings.",{"category":472,"check":473,"severity":298,"summary":474},"Dependencies","Tagged release sourcing","The plugin's source (GitHub repo) is clearly declared and it does not appear to bundle external MCP servers from unverified sources.",{"category":476,"check":477,"severity":298,"summary":478},"Installation","Clean uninstall","The plugin operates by interacting with the Immich API and does not appear to install background daemons or services that would survive uninstallation.",1778686398852,"This plugin provides a set of skills and MCP tools to intelligently manage an Immich photo library. It enables natural language interaction for searching, curating albums, cleaning up storage, detecting duplicates, fixing metadata, and generating reports, all while interacting with a self-hosted Immich instance.",[482,483,484,485,486,487],"AI-powered photo search (CLIP, text, metadata)","Automated geographic and thematic album creation","Intelligent library cleanup (screenshots, duplicates, low quality)","Metadata repair and validation","Comprehensive library health and storage reports","Interactive HTML gallery generation",[489,490,491],"Directly managing the Immich server installation or infrastructure.","Performing actions not related to photo library organization (e.g., managing users, system settings).","Replacing the core Immich UI for all photo browsing.",[493,494,495,496,497],"Metadata Repair","Library Cleanup","Album Curation","Photo Search","Reporting & Analytics",[499,500,501],"Running Immich instance (v1.90+)","Immich API key","Python 3.10+","To allow AI assistants to intelligently manage and interact with a self-hosted Immich photo library, automating tasks like search, organization, cleanup, and analysis without manual scripting.","The plugin demonstrates excellent production readiness and a clear focus on its domain, with comprehensive documentation and secure handling of credentials. No critical or warning findings were identified.","A highly polished and robust plugin for managing Immich photo libraries, offering advanced AI-driven features.",[30,105,34,506,507,171,508],"self-hosted","ai-search","media-organization",[510,511,512,513,514],"Find specific photos using natural language queries.","Automatically create albums for trips, locations, or events.","Reclaim disk space by removing duplicate or unwanted photos.","Analyze and fix inconsistencies in photo metadata (dates, GPS).","Visualize photo library organization and identify gaps.",{"codeQuality":516,"collectedAt":518,"documentation":519,"maintenance":522,"security":528,"testCoverage":529},{"hasLockfile":517},false,1778686361598,{"descriptionLength":520,"readmeSize":521},310,8637,{"closedIssues90d":523,"forks":524,"hasChangelog":517,"manifestVersion":525,"openIssues90d":11,"pushedAt":526,"stars":527},1,4,"1.2.0",1778175631000,16,{"hasNpmPackage":517,"license":131,"smitheryVerified":517},{"hasCi":517,"hasTests":517},{"updatedAt":531},1778686398961,{"basePath":533,"githubOwner":20,"githubRepo":21,"locale":22,"slug":21,"type":534},"","plugin",true,{"_creationTime":537,"_id":538,"community":539,"display":540,"identity":544,"parentExtension":546,"providers":547,"relations":557,"tags":558,"workflow":559},1778686338567.573,"k177jqq2va7fhvpdsch9vv5cbn86nwwg",{"reviewCount":11},{"description":541,"installMethods":542,"name":543,"sourceUrl":17},"Drolosoft Marketplace - AI-powered tools by Drolosoft",{"claudeCode":15},"drolosoft-marketplace",{"basePath":533,"githubOwner":20,"githubRepo":21,"locale":22,"slug":21,"type":545},"marketplace",null,{"evaluate":548,"extract":553},{"promptVersionExtension":549,"promptVersionScoring":27,"score":103,"tags":550,"targetMarket":36,"tier":37},"3.1.0",[105,30,551,552,33,150],"ai-assistant","media",{"commitSha":39,"marketplace":554,"plugin":555},{"name":543,"pluginCount":523},{"mcpCount":11,"provider":556,"skillCount":11},"classify",{"repoId":41},[551,30,150,552,33,105],{"evaluatedAt":560,"extractAt":45,"updatedAt":560},1778686361336,{"evaluate":562,"extract":564},{"promptVersionExtension":26,"promptVersionScoring":27,"score":79,"tags":563,"targetMarket":36,"tier":37},[30,105,34,506,507,171,508],{"commitSha":39,"license":131,"plugin":565},{"mcpCount":11,"provider":556,"skillCount":566},12,{"parentExtensionId":538,"repoId":41},{"_creationTime":569,"_id":41,"identity":570,"providers":571,"workflow":708},1778686332166.7776,{"githubOwner":20,"githubRepo":21,"sourceUrl":17},{"classify":572,"discover":695,"github":698},{"commitSha":39,"extensions":573},[574,587,630,640,645,650,655,660,665,670,675,680,685,690],{"basePath":533,"description":541,"displayName":543,"installMethods":575,"rationale":576,"selectedPaths":577,"source":586,"sourceLanguage":22,"type":545},{"claudeCode":15},"marketplace.json at .claude-plugin/marketplace.json",[578,581,583],{"path":579,"priority":580},".claude-plugin/marketplace.json","mandatory",{"path":582,"priority":580},"README.md",{"path":584,"priority":585},"LICENSE","high","rule",{"basePath":533,"description":288,"displayName":21,"installMethods":588,"license":131,"rationale":589,"selectedPaths":590,"source":586,"sourceLanguage":22,"type":534},{"claudeCode":21},"plugin manifest at .claude-plugin/plugin.json",[591,593,594,595,598,600,602,604,606,608,610,612,614,616,618,620,622,624,626,628],{"path":592,"priority":580},".claude-plugin/plugin.json",{"path":582,"priority":580},{"path":584,"priority":585},{"path":596,"priority":597},"skills/album-manager/SKILL.md","medium",{"path":599,"priority":597},"skills/auto-album-curator/SKILL.md",{"path":601,"priority":597},"skills/duplicate-report/SKILL.md",{"path":603,"priority":597},"skills/library-health-report/SKILL.md",{"path":605,"priority":597},"skills/metadata-fixer/SKILL.md",{"path":607,"priority":597},"skills/people-report/SKILL.md",{"path":609,"priority":597},"skills/photo-cleanup/SKILL.md",{"path":611,"priority":597},"skills/photo-search/SKILL.md",{"path":613,"priority":597},"skills/rotate-photos/SKILL.md",{"path":615,"priority":597},"skills/storage-optimizer/SKILL.md",{"path":617,"priority":597},"skills/timeline-gaps/SKILL.md",{"path":619,"priority":597},"skills/travel-map/SKILL.md",{"path":621,"priority":585},"commands/cleanup.md",{"path":623,"priority":585},"commands/create-album.md",{"path":625,"priority":585},"commands/immich-status.md",{"path":627,"priority":585},"commands/my-travels.md",{"path":629,"priority":585},"commands/setup-immich-photo-manager.md",{"basePath":19,"description":13,"displayName":16,"installMethods":631,"rationale":632,"selectedPaths":633,"source":586,"sourceLanguage":22,"type":23},{"claudeCode":15},"SKILL.md frontmatter at skills/album-manager/SKILL.md",[634,636,638],{"path":635,"priority":580},"SKILL.md",{"path":637,"priority":597},"references/geographic-search-patterns.md",{"path":639,"priority":597},"references/viewer-template-spec.md",{"basePath":55,"description":51,"displayName":53,"installMethods":641,"rationale":642,"selectedPaths":643,"source":586,"sourceLanguage":22,"type":23},{"claudeCode":15},"SKILL.md frontmatter at skills/auto-album-curator/SKILL.md",[644],{"path":635,"priority":580},{"basePath":76,"description":72,"displayName":74,"installMethods":646,"rationale":647,"selectedPaths":648,"source":586,"sourceLanguage":22,"type":23},{"claudeCode":15},"SKILL.md frontmatter at skills/duplicate-report/SKILL.md",[649],{"path":635,"priority":580},{"basePath":100,"description":96,"displayName":98,"installMethods":651,"rationale":652,"selectedPaths":653,"source":586,"sourceLanguage":22,"type":23},{"claudeCode":15},"SKILL.md frontmatter at skills/library-health-report/SKILL.md",[654],{"path":635,"priority":580},{"basePath":122,"description":118,"displayName":123,"installMethods":656,"rationale":657,"selectedPaths":658,"source":586,"sourceLanguage":22,"type":23},{"claudeCode":15},"SKILL.md frontmatter at skills/metadata-fixer/SKILL.md",[659],{"path":635,"priority":580},{"basePath":144,"description":141,"displayName":145,"installMethods":661,"rationale":662,"selectedPaths":663,"source":586,"sourceLanguage":22,"type":23},{"claudeCode":15},"SKILL.md frontmatter at skills/people-report/SKILL.md",[664],{"path":635,"priority":580},{"basePath":165,"description":161,"displayName":163,"installMethods":666,"rationale":667,"selectedPaths":668,"source":586,"sourceLanguage":22,"type":23},{"claudeCode":15},"SKILL.md frontmatter at skills/photo-cleanup/SKILL.md",[669],{"path":635,"priority":580},{"basePath":186,"description":182,"displayName":187,"installMethods":671,"rationale":672,"selectedPaths":673,"source":586,"sourceLanguage":22,"type":23},{"claudeCode":15},"SKILL.md frontmatter at skills/photo-search/SKILL.md",[674],{"path":635,"priority":580},{"basePath":208,"description":204,"displayName":206,"installMethods":676,"rationale":677,"selectedPaths":678,"source":586,"sourceLanguage":22,"type":23},{"claudeCode":15},"SKILL.md frontmatter at skills/rotate-photos/SKILL.md",[679],{"path":635,"priority":580},{"basePath":227,"description":223,"displayName":225,"installMethods":681,"rationale":682,"selectedPaths":683,"source":586,"sourceLanguage":22,"type":23},{"claudeCode":15},"SKILL.md frontmatter at skills/storage-optimizer/SKILL.md",[684],{"path":635,"priority":580},{"basePath":250,"description":246,"displayName":248,"installMethods":686,"rationale":687,"selectedPaths":688,"source":586,"sourceLanguage":22,"type":23},{"claudeCode":15},"SKILL.md frontmatter at skills/timeline-gaps/SKILL.md",[689],{"path":635,"priority":580},{"basePath":272,"description":268,"displayName":270,"installMethods":691,"rationale":692,"selectedPaths":693,"source":586,"sourceLanguage":22,"type":23},{"claudeCode":15},"SKILL.md frontmatter at skills/travel-map/SKILL.md",[694],{"path":635,"priority":580},{"sources":696},[697],"manual",{"closedIssues90d":523,"description":699,"forks":524,"homepage":700,"license":131,"openIssues90d":11,"pushedAt":526,"readmeSize":521,"stars":527,"topics":701},"📸🧹🗺️ MCP server for intelligent photo management with Immich — search, curate geographic albums, clean up libraries, and publish galleries","https://drolosoft.com/immich-photo-manager.html?lang=en",[32,702,703,170,704,34,705,30,150,706,127,105,31,506,707,256],"claude","claude-plugin","duplicates","geolocation","mcp-server","immich-plugin",{"classifiedAt":709,"discoverAt":710,"extractAt":711,"githubAt":711,"updatedAt":709},1778686338385,1778686332166,1778686336662,[507,171,34,30,508,105,506],{"evaluatedAt":531,"extractAt":45,"updatedAt":531},[],[]]