[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"extension-skill-drolosoft-photo-cleanup-zh-CN":3,"guides-for-drolosoft-photo-cleanup":494,"similar-k17bkwnghncjzk4p919n0yhqjd86n89t-zh-CN":495},{"_creationTime":4,"_id":5,"children":6,"community":7,"display":9,"evaluation":15,"identity":243,"isFallback":248,"parentExtension":249,"providers":306,"relations":310,"repo":311,"tags":492,"workflow":493},1778686338567.575,"k17bkwnghncjzk4p919n0yhqjd86n89t",[],{"reviewCount":8},0,{"description":10,"installMethods":11,"name":13,"sourceUrl":14},"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":12},"drolosoft/immich-photo-manager","photo-cleanup","https://github.com/drolosoft/immich-photo-manager",{"_creationTime":16,"_id":17,"extensionId":5,"locale":18,"result":19,"trustSignals":225,"workflow":241},1778686595340.9082,"kn7fyxjvfat9dyb5grx9pwgpgh86nzqq","en",{"checks":20,"evaluatedAt":193,"extensionSummary":194,"features":195,"nonGoals":201,"promptVersionExtension":206,"promptVersionScoring":207,"purpose":208,"rationale":209,"score":210,"summary":211,"tags":212,"targetMarket":218,"tier":219,"useCases":220},[21,26,29,32,36,39,43,47,50,53,57,61,65,69,72,75,78,81,84,87,90,94,99,103,107,110,113,116,121,124,127,130,133,136,139,143,147,151,154,158,161,164,167,170,174,177,180,183,186,190],{"category":22,"check":23,"severity":24,"summary":25},"Practical Utility","Problem relevance","pass","The description clearly names the problem of managing a large Immich library, specifically mentioning issues like screenshots, duplicates, and low-quality photos, and provides specific user intents for using the skill.",{"category":22,"check":27,"severity":24,"summary":28},"Unique selling proposition","The extension offers significant value over a simple prompt by providing direct access to Immich's backend tools for complex operations like deduplication, metadata repair, and album curation, which would be impractical to script manually.",{"category":22,"check":30,"severity":24,"summary":31},"Production readiness","The skill appears production-ready, covering the full lifecycle of photo management tasks including identification, user confirmation before deletion, and recovery options, with clear instructions and safety guidelines.",{"category":33,"check":34,"severity":24,"summary":35},"Scope","Single responsibility principle","The extension focuses on intelligent photo management within Immich, covering tasks like cleanup, organization, and search, without extending into unrelated domains.",{"category":33,"check":37,"severity":24,"summary":38},"Description quality","The displayed description accurately reflects the skill's capabilities as described in the SKILL.md and README.md files.",{"category":40,"check":41,"severity":24,"summary":42},"Invocation","Scoped tools","The skill appears to use narrowly scoped tools for specific actions like deleting assets, finding duplicates, and pinging the server, rather than a single generalist execution tool.",{"category":44,"check":45,"severity":24,"summary":46},"Documentation","Configuration & parameter reference","The SKILL.md provides detailed criteria for screenshot detection, duplicate detection strategies, and low-quality photo detection, along with safety guidelines and workflow steps, implying thorough parameter handling.",{"category":33,"check":48,"severity":24,"summary":49},"Tool naming","Tool names mentioned in the SKILL.md (e.g., `ping`, `delete_assets`, `get_duplicates`, `resolve_duplicates`) are descriptive and follow a verb-noun convention.",{"category":33,"check":51,"severity":24,"summary":52},"Minimal I/O surface","The SKILL.md describes specific parameters for tools like `delete_assets` (e.g., `asset_ids`, `force`) and implies focused outputs, suggesting minimal I/O.",{"category":54,"check":55,"severity":24,"summary":56},"License","License usability","The extension is distributed under the MIT License, which is a permissive open-source license, clearly indicated in the LICENSE file and README.",{"category":58,"check":59,"severity":24,"summary":60},"Maintenance","Commit recency","The last commit was on 2026-05-07, which is within the last 90 days, indicating active maintenance.",{"category":58,"check":62,"severity":63,"summary":64},"Dependency Management","warning","The README indicates Python 3.10+ is required, but there is no lockfile or explicit dependency pinning mentioned for Python packages, increasing the risk of version conflicts or vulnerabilities.",{"category":66,"check":67,"severity":24,"summary":68},"Security","Secret Management","The skill requires an Immich API key, which is handled via an MCP server setup, implying secrets are managed outside of committed code and not echoed in output.",{"category":66,"check":70,"severity":24,"summary":71},"Injection","The SKILL.md emphasizes treating findings with user approval before deletion and explicitly warns against skipping the ping check, suggesting a cautious approach to executing commands.",{"category":66,"check":73,"severity":24,"summary":74},"Transitive Supply-Chain Grenades","The extension relies on a local Immich server and does not appear to fetch external code or data at runtime, mitigating supply-chain risks.",{"category":66,"check":76,"severity":24,"summary":77},"Sandbox Isolation","The skill operates on the user's Immich server via an MCP server and does not appear to interact with or modify files outside of the designated Immich library.",{"category":66,"check":79,"severity":24,"summary":80},"Sandbox escape primitives","No evidence of detached-process spawns or deny-retry loops was found in the provided skill code.",{"category":66,"check":82,"severity":24,"summary":83},"Data Exfiltration","The skill's primary function is to manage local Immich assets, and there is no indication of reading or submitting confidential data to third parties.",{"category":66,"check":85,"severity":24,"summary":86},"Hidden Text Tricks","The bundled content and descriptions appear free of hidden steering tricks or unusual Unicode characters.",{"category":66,"check":88,"severity":24,"summary":89},"Opaque code execution","The skill code is provided as plain readable source and does not appear to use obfuscation techniques like base64 encoding or runtime script fetching.",{"category":91,"check":92,"severity":24,"summary":93},"Portability","Structural Assumption","The skill makes no structural assumptions about the user's local file system outside of the Immich library, interacting via the MCP server.",{"category":95,"check":96,"severity":97,"summary":98},"Trust","Issues Attention","info","There were 0 issues opened and 1 closed in the last 90 days, indicating low recent activity but no critical backlog.",{"category":100,"check":101,"severity":24,"summary":102},"Versioning","Release Management","A meaningful version number (1.2.0) is declared in the SKILL.md frontmatter, and GitHub releases are available.",{"category":104,"check":105,"severity":24,"summary":106},"Code Execution","Validation","The SKILL.md describes specific criteria for detection and user approval before deletion, implying robust input validation.",{"category":66,"check":108,"severity":24,"summary":109},"Unguarded Destructive Operations","Destructive operations (deleting assets) are guarded by explicit user approval and the `force=False` parameter, moving assets to trash.",{"category":104,"check":111,"severity":24,"summary":112},"Error Handling","The SKILL.md explicitly states to stop if the Immich MCP server is unavailable and provides clear user-facing messages for connection issues and requires user approval for deletions, indicating good error handling.",{"category":104,"check":114,"severity":24,"summary":115},"Logging","The SKILL.md mentions reporting progress every 500 assets, suggesting an audit trail or logging mechanism for executed actions.",{"category":117,"check":118,"severity":119,"summary":120},"Compliance","GDPR","not_applicable","The skill operates on user's photo library metadata and content within Immich, not general personal data submitted to third parties.",{"category":117,"check":122,"severity":24,"summary":123},"Target market","There are no regional signals; the extension operates on a self-hosted Immich instance and is globally applicable.",{"category":91,"check":125,"severity":24,"summary":126},"Runtime stability","The skill relies on a local Immich MCP server and standard Python, making it broadly portable across systems with these prerequisites.",{"category":44,"check":128,"severity":24,"summary":129},"README","The README provides a good overview of the extension's purpose, features, and installation instructions.",{"category":33,"check":131,"severity":24,"summary":132},"Tool surface size","The SKILL.md mentions specific tools like `ping`, `delete_assets`, `get_duplicates`, and `resolve_duplicates`, suggesting a focused set of operations, likely within the 3-10 range.",{"category":40,"check":134,"severity":24,"summary":135},"Overlapping near-synonym tools","The identified tools (`ping`, `delete_assets`, `get_duplicates`, `resolve_duplicates`) cover distinct functions and do not appear to be near-synonyms.",{"category":44,"check":137,"severity":24,"summary":138},"Phantom features","All features mentioned in the README and SKILL.md, such as duplicate detection and screenshot removal, are directly supported by the described tools and workflow.",{"category":140,"check":141,"severity":24,"summary":142},"Install","Installation instruction","The README provides clear installation instructions for both Claude plugins and manual MCP server setup, including prerequisites like Python and an Immich API key.",{"category":144,"check":145,"severity":24,"summary":146},"Errors","Actionable error messages","The SKILL.md provides specific, actionable error messages for connection failures and user approval steps for destructive actions.",{"category":148,"check":149,"severity":63,"summary":150},"Execution","Pinned dependencies","While Python 3.10+ is recommended, there's no explicit mention of pinned dependencies or a lockfile for Python packages, which could lead to instability.",{"category":33,"check":152,"severity":24,"summary":153},"Dry-run preview","The skill's `delete_assets` tool defaults to moving assets to trash (`force=False`), serving as a safe default, and explicitly requires user approval before deletion.",{"category":155,"check":156,"severity":24,"summary":157},"Protocol","Idempotent retry & timeouts","The `delete_assets` tool and the overall safety-first approach with user confirmation implies idempotency for retries, and the dependency on a local MCP server suggests timeouts are handled server-side.",{"category":117,"check":159,"severity":24,"summary":160},"Telemetry opt-in","There is no mention of telemetry collection, and the focus is on local processing, suggesting no telemetry is emitted.",{"category":40,"check":162,"severity":24,"summary":163},"Precise Purpose","The skill clearly defines its purpose of cleaning an Immich library, specifies the types of items to target (screenshots, duplicates, low-quality photos), and provides specific trigger phrases and explicit boundaries in the description.",{"category":40,"check":165,"severity":24,"summary":166},"Concise Frontmatter","The frontmatter in SKILL.md is concise, self-contained, and includes relevant trigger phrases, allowing for precise routing.",{"category":44,"check":168,"severity":24,"summary":169},"Concise Body","The SKILL.md is well-structured and under the approximate line limit, with detailed criteria and workflows described, but it does not seem to embed excessively long code examples or bulk material.",{"category":171,"check":172,"severity":24,"summary":173},"Context","Progressive Disclosure","The SKILL.md outlines the workflow and detection criteria but delegates deeper material like API tool references and setup guides to separate markdown files, adhering to progressive disclosure.",{"category":171,"check":175,"severity":119,"summary":176},"Forked exploration","This skill focuses on direct management of Immich assets and does not involve deep code review or exploration that would necessitate a forked context.",{"category":22,"check":178,"severity":24,"summary":179},"Usage examples","The README and SKILL.md provide clear examples of usage, including invocation commands and expected outcomes, such as setting up the connection and identifying photos.",{"category":22,"check":181,"severity":24,"summary":182},"Edge cases","The SKILL.md addresses edge cases such as the Immich server being unavailable, the need for user approval before deletion, and specific criteria for identifying different types of unwanted photos.",{"category":104,"check":184,"severity":119,"summary":185},"Tool Fallback","The skill does not appear to rely on external MCP tools that would require a fallback; it integrates directly with a local Immich server.",{"category":187,"check":188,"severity":24,"summary":189},"Safety","Halt on unexpected state","The SKILL.md emphasizes stopping the workflow if the Immich MCP server is unavailable and requires explicit user approval before any deletion, ensuring it halts on unexpected states.",{"category":91,"check":191,"severity":24,"summary":192},"Cross-skill coupling","The skill operates standalone on the Immich library and does not appear to implicitly rely on other skills being loaded simultaneously.",1778686595218,"This skill connects to a local Immich instance via an MCP server to detect and help remove screenshots, duplicate photos, and low-quality images, offering features like library statistics, targeted cleanup workflows, and safe deletion to trash.",[196,197,198,199,200],"Detect and remove screenshots","Identify and remove duplicate photos","Flag low-quality photos for review","Provide library statistics and estimated space recovery","Safely delete assets to trash with user approval",[202,203,204,205],"Automatically deleting photos without user confirmation","Cleaning videos","Deleting photos with faces or those marked as favorites","Handling photos outside the Immich library","3.0.0","4.4.0","To intelligently clean and optimize an Immich photo library by identifying and removing unwanted content like screenshots and duplicates, thereby freeing up space and organizing the collection.","The skill is well-documented and robust in its handling of destructive operations, but lacks explicit dependency pinning for its Python requirements.",75,"A robust and well-documented skill for intelligent photo library cleanup within Immich.",[213,214,215,216,217],"photo-management","immich","deduplication","cleanup","automation","global","community",[221,222,223,224],"Clean up accumulated screenshots from daily use","Deduplicate photos imported from multiple sources like Google Photos and Apple Photos","Identify and remove blurry, dark, or tiny resolution photos","Free up storage space on the Immich server",{"codeQuality":226,"collectedAt":228,"documentation":229,"maintenance":232,"security":238,"testCoverage":240},{"hasLockfile":227},false,1778686553281,{"descriptionLength":230,"readmeSize":231},376,8637,{"closedIssues90d":233,"forks":234,"hasChangelog":227,"manifestVersion":235,"openIssues90d":8,"pushedAt":236,"stars":237},1,4,"1.2.0",1778175631000,16,{"hasNpmPackage":227,"license":239,"smitheryVerified":227},"MIT",{"hasCi":227,"hasTests":227},{"updatedAt":242},1778686595340,{"basePath":244,"githubOwner":245,"githubRepo":246,"locale":18,"slug":13,"type":247},"skills/photo-cleanup","drolosoft","immich-photo-manager","skill",true,{"_creationTime":250,"_id":251,"community":252,"display":253,"identity":257,"parentExtension":260,"providers":291,"relations":302,"tags":303,"workflow":304},1778686338567.5732,"k17fptxxsmtdk9k5x99qw7re2586n8fq",{"reviewCount":8},{"description":254,"installMethods":255,"name":256,"sourceUrl":14},"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":246},"Immich Photo Manager",{"basePath":258,"githubOwner":245,"githubRepo":246,"locale":18,"slug":246,"type":259},"","plugin",{"_creationTime":261,"_id":262,"community":263,"display":264,"identity":268,"providers":270,"relations":285,"tags":287,"workflow":288},1778686338567.573,"k177jqq2va7fhvpdsch9vv5cbn86nwwg",{"reviewCount":8},{"description":265,"installMethods":266,"name":267,"sourceUrl":14},"Drolosoft Marketplace - AI-powered tools by Drolosoft",{"claudeCode":12},"drolosoft-marketplace",{"basePath":258,"githubOwner":245,"githubRepo":246,"locale":18,"slug":246,"type":269},"marketplace",{"evaluate":271,"extract":280},{"promptVersionExtension":272,"promptVersionScoring":207,"score":273,"tags":274,"targetMarket":218,"tier":279},"3.1.0",98,[213,214,275,276,277,278],"ai-assistant","media","organization","mcp","verified",{"commitSha":281,"marketplace":282,"plugin":283},"HEAD",{"name":267,"pluginCount":233},{"mcpCount":8,"provider":284,"skillCount":8},"classify",{"repoId":286},"kd71cer955pa6pzdsewzf62dt986nbtd",[275,214,278,276,277,213],{"evaluatedAt":289,"extractAt":290,"updatedAt":289},1778686361336,1778686338567,{"evaluate":292,"extract":299},{"promptVersionExtension":206,"promptVersionScoring":207,"score":293,"tags":294,"targetMarket":218,"tier":279},95,[214,213,295,296,297,217,298],"gallery","self-hosted","ai-search","media-organization",{"commitSha":281,"license":239,"plugin":300},{"mcpCount":8,"provider":284,"skillCount":301},12,{"parentExtensionId":262,"repoId":286},[297,217,295,214,298,213,296],{"evaluatedAt":305,"extractAt":290,"updatedAt":305},1778686398961,{"evaluate":307,"extract":309},{"promptVersionExtension":206,"promptVersionScoring":207,"score":210,"tags":308,"targetMarket":218,"tier":219},[213,214,215,216,217],{"commitSha":281},{"parentExtensionId":251,"repoId":286},{"_creationTime":312,"_id":286,"identity":313,"providers":314,"workflow":488},1778686332166.7776,{"githubOwner":245,"githubRepo":246,"sourceUrl":14},{"classify":315,"discover":471,"github":474},{"commitSha":281,"extensions":316},[317,330,373,386,394,402,410,418,426,431,439,447,455,463],{"basePath":258,"description":265,"displayName":267,"installMethods":318,"rationale":319,"selectedPaths":320,"source":329,"sourceLanguage":18,"type":269},{"claudeCode":12},"marketplace.json at .claude-plugin/marketplace.json",[321,324,326],{"path":322,"priority":323},".claude-plugin/marketplace.json","mandatory",{"path":325,"priority":323},"README.md",{"path":327,"priority":328},"LICENSE","high","rule",{"basePath":258,"description":254,"displayName":246,"installMethods":331,"license":239,"rationale":332,"selectedPaths":333,"source":329,"sourceLanguage":18,"type":259},{"claudeCode":246},"plugin manifest at .claude-plugin/plugin.json",[334,336,337,338,341,343,345,347,349,351,353,355,357,359,361,363,365,367,369,371],{"path":335,"priority":323},".claude-plugin/plugin.json",{"path":325,"priority":323},{"path":327,"priority":328},{"path":339,"priority":340},"skills/album-manager/SKILL.md","medium",{"path":342,"priority":340},"skills/auto-album-curator/SKILL.md",{"path":344,"priority":340},"skills/duplicate-report/SKILL.md",{"path":346,"priority":340},"skills/library-health-report/SKILL.md",{"path":348,"priority":340},"skills/metadata-fixer/SKILL.md",{"path":350,"priority":340},"skills/people-report/SKILL.md",{"path":352,"priority":340},"skills/photo-cleanup/SKILL.md",{"path":354,"priority":340},"skills/photo-search/SKILL.md",{"path":356,"priority":340},"skills/rotate-photos/SKILL.md",{"path":358,"priority":340},"skills/storage-optimizer/SKILL.md",{"path":360,"priority":340},"skills/timeline-gaps/SKILL.md",{"path":362,"priority":340},"skills/travel-map/SKILL.md",{"path":364,"priority":328},"commands/cleanup.md",{"path":366,"priority":328},"commands/create-album.md",{"path":368,"priority":328},"commands/immich-status.md",{"path":370,"priority":328},"commands/my-travels.md",{"path":372,"priority":328},"commands/setup-immich-photo-manager.md",{"basePath":374,"description":375,"displayName":376,"installMethods":377,"rationale":378,"selectedPaths":379,"source":329,"sourceLanguage":18,"type":247},"skills/album-manager","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","album-manager",{"claudeCode":12},"SKILL.md frontmatter at skills/album-manager/SKILL.md",[380,382,384],{"path":381,"priority":323},"SKILL.md",{"path":383,"priority":340},"references/geographic-search-patterns.md",{"path":385,"priority":340},"references/viewer-template-spec.md",{"basePath":387,"description":388,"displayName":389,"installMethods":390,"rationale":391,"selectedPaths":392,"source":329,"sourceLanguage":18,"type":247},"skills/auto-album-curator","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","auto-album-curator",{"claudeCode":12},"SKILL.md frontmatter at skills/auto-album-curator/SKILL.md",[393],{"path":381,"priority":323},{"basePath":395,"description":396,"displayName":397,"installMethods":398,"rationale":399,"selectedPaths":400,"source":329,"sourceLanguage":18,"type":247},"skills/duplicate-report","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","duplicate-report",{"claudeCode":12},"SKILL.md frontmatter at skills/duplicate-report/SKILL.md",[401],{"path":381,"priority":323},{"basePath":403,"description":404,"displayName":405,"installMethods":406,"rationale":407,"selectedPaths":408,"source":329,"sourceLanguage":18,"type":247},"skills/library-health-report","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","library-health-report",{"claudeCode":12},"SKILL.md frontmatter at skills/library-health-report/SKILL.md",[409],{"path":381,"priority":323},{"basePath":411,"description":412,"displayName":413,"installMethods":414,"rationale":415,"selectedPaths":416,"source":329,"sourceLanguage":18,"type":247},"skills/metadata-fixer","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","metadata-fixer",{"claudeCode":12},"SKILL.md frontmatter at skills/metadata-fixer/SKILL.md",[417],{"path":381,"priority":323},{"basePath":419,"description":420,"displayName":421,"installMethods":422,"rationale":423,"selectedPaths":424,"source":329,"sourceLanguage":18,"type":247},"skills/people-report","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","people-report",{"claudeCode":12},"SKILL.md frontmatter at skills/people-report/SKILL.md",[425],{"path":381,"priority":323},{"basePath":244,"description":10,"displayName":13,"installMethods":427,"rationale":428,"selectedPaths":429,"source":329,"sourceLanguage":18,"type":247},{"claudeCode":12},"SKILL.md frontmatter at skills/photo-cleanup/SKILL.md",[430],{"path":381,"priority":323},{"basePath":432,"description":433,"displayName":434,"installMethods":435,"rationale":436,"selectedPaths":437,"source":329,"sourceLanguage":18,"type":247},"skills/photo-search","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","photo-search",{"claudeCode":12},"SKILL.md frontmatter at skills/photo-search/SKILL.md",[438],{"path":381,"priority":323},{"basePath":440,"description":441,"displayName":442,"installMethods":443,"rationale":444,"selectedPaths":445,"source":329,"sourceLanguage":18,"type":247},"skills/rotate-photos","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","rotate-photos",{"claudeCode":12},"SKILL.md frontmatter at skills/rotate-photos/SKILL.md",[446],{"path":381,"priority":323},{"basePath":448,"description":449,"displayName":450,"installMethods":451,"rationale":452,"selectedPaths":453,"source":329,"sourceLanguage":18,"type":247},"skills/storage-optimizer","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","storage-optimizer",{"claudeCode":12},"SKILL.md frontmatter at skills/storage-optimizer/SKILL.md",[454],{"path":381,"priority":323},{"basePath":456,"description":457,"displayName":458,"installMethods":459,"rationale":460,"selectedPaths":461,"source":329,"sourceLanguage":18,"type":247},"skills/timeline-gaps","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","timeline-gaps",{"claudeCode":12},"SKILL.md frontmatter at skills/timeline-gaps/SKILL.md",[462],{"path":381,"priority":323},{"basePath":464,"description":465,"displayName":466,"installMethods":467,"rationale":468,"selectedPaths":469,"source":329,"sourceLanguage":18,"type":247},"skills/travel-map","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","travel-map",{"claudeCode":12},"SKILL.md frontmatter at skills/travel-map/SKILL.md",[470],{"path":381,"priority":323},{"sources":472},[473],"manual",{"closedIssues90d":233,"description":475,"forks":234,"homepage":476,"license":239,"openIssues90d":8,"pushedAt":236,"readmeSize":231,"stars":237,"topics":477},"📸🧹🗺️ 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",[478,479,480,216,481,295,482,214,278,483,484,213,485,296,486,487],"albums","claude","claude-plugin","duplicates","geolocation","mcp-server","metadata","photos","immich-plugin","python",{"classifiedAt":489,"discoverAt":490,"extractAt":491,"githubAt":491,"updatedAt":489},1778686338385,1778686332166,1778686336662,[217,216,215,214,213],{"evaluatedAt":242,"extractAt":290,"updatedAt":242},[],[496,513,531,548,566,584],{"_creationTime":497,"_id":498,"community":499,"display":500,"identity":502,"providers":503,"relations":509,"tags":510,"workflow":511},1778686338567.5754,"k17a793ns6w7k01tv43akbr3tn86m7ra",{"reviewCount":8},{"description":441,"installMethods":501,"name":442,"sourceUrl":14},{"claudeCode":12},{"basePath":440,"githubOwner":245,"githubRepo":246,"locale":18,"slug":442,"type":247},{"evaluate":504,"extract":508},{"promptVersionExtension":206,"promptVersionScoring":207,"score":505,"tags":506,"targetMarket":218,"tier":279},99,[214,213,507,217,278],"bulk-rotate",{"commitSha":281},{"parentExtensionId":251,"repoId":286},[217,507,214,278,213],{"evaluatedAt":512,"extractAt":290,"updatedAt":512},1778686641184,{"_creationTime":514,"_id":515,"community":516,"display":517,"identity":519,"providers":520,"relations":527,"tags":528,"workflow":529},1778686338567.5742,"k1732fnv0fnb1bxhz02g2erp0n86m6r9",{"reviewCount":8},{"description":404,"installMethods":518,"name":405,"sourceUrl":14},{"claudeCode":12},{"basePath":403,"githubOwner":245,"githubRepo":246,"locale":18,"slug":405,"type":247},{"evaluate":521,"extract":526},{"promptVersionExtension":206,"promptVersionScoring":207,"score":273,"tags":522,"targetMarket":218,"tier":279},[214,213,523,524,525],"library-health","data-analysis","reporting",{"commitSha":281},{"parentExtensionId":251,"repoId":286},[524,214,523,213,525],{"evaluatedAt":530,"extractAt":290,"updatedAt":530},1778686498743,{"_creationTime":532,"_id":533,"community":534,"display":535,"identity":537,"providers":538,"relations":544,"tags":545,"workflow":546},1778686338567.574,"k17b0q5xepcajzr3qkzgtkvqxs86m7az",{"reviewCount":8},{"description":396,"installMethods":536,"name":397,"sourceUrl":14},{"claudeCode":12},{"basePath":395,"githubOwner":245,"githubRepo":246,"locale":18,"slug":397,"type":247},{"evaluate":539,"extract":543},{"promptVersionExtension":206,"promptVersionScoring":207,"score":293,"tags":540,"targetMarket":218,"tier":219},[214,485,215,541,542,525],"perceptual-hashing","library-management",{"commitSha":281},{"parentExtensionId":251,"repoId":286},[215,214,542,541,485,525],{"evaluatedAt":547,"extractAt":290,"updatedAt":547},1778686474905,{"_creationTime":549,"_id":550,"community":551,"display":552,"identity":555,"providers":556,"relations":562,"tags":563,"workflow":564},1778686338567.5745,"k1737wckn9mggk2vdm8r0mvpqs86n7q2",{"reviewCount":8},{"description":412,"installMethods":553,"name":554,"sourceUrl":14},{"claudeCode":12},"Metadata Fixer",{"basePath":411,"githubOwner":245,"githubRepo":246,"locale":18,"slug":413,"type":247},{"evaluate":557,"extract":561},{"promptVersionExtension":206,"promptVersionScoring":207,"score":293,"tags":558,"targetMarket":218,"tier":279},[213,484,214,559,560],"exif","gps",{"commitSha":281,"license":239},{"parentExtensionId":251,"repoId":286},[559,560,214,484,213],{"evaluatedAt":565,"extractAt":290,"updatedAt":565},1778686524402,{"_creationTime":567,"_id":568,"community":569,"display":570,"identity":572,"providers":573,"relations":580,"tags":581,"workflow":582},1778686338567.576,"k17e4g90xh14vn4xqf9y9rfc4n86mct0",{"reviewCount":8},{"description":457,"installMethods":571,"name":458,"sourceUrl":14},{"claudeCode":12},{"basePath":456,"githubOwner":245,"githubRepo":246,"locale":18,"slug":458,"type":247},{"evaluate":574,"extract":579},{"promptVersionExtension":206,"promptVersionScoring":207,"score":210,"tags":575,"targetMarket":218,"tier":219},[213,576,577,214,487,578],"timeline-analysis","data-quality","sql",{"commitSha":281},{"parentExtensionId":251,"repoId":286},[577,214,213,487,578,576],{"evaluatedAt":583,"extractAt":290,"updatedAt":583},1778686691418,{"_creationTime":585,"_id":586,"community":587,"display":588,"identity":594,"providers":599,"relations":610,"tags":613,"workflow":614},1778699234184.6157,"k177tdbfgqmwhtaqv771f2ych586nne9",{"reviewCount":8},{"description":589,"installMethods":590,"name":592,"sourceUrl":593},"Worktree-first dev environment manager for issues, PRs, and features with optional tmux sessions",{"claudeCode":591},"Yeachan-Heo/oh-my-claudecode","Project Session Manager","https://github.com/Yeachan-Heo/oh-my-claudecode",{"basePath":595,"githubOwner":596,"githubRepo":597,"locale":18,"slug":598,"type":247},"skills/project-session-manager","Yeachan-Heo","oh-my-claudecode","project-session-manager",{"evaluate":600,"extract":609},{"promptVersionExtension":206,"promptVersionScoring":207,"score":601,"tags":602,"targetMarket":218,"tier":279},100,[603,604,605,606,217,607,608],"git","development-environment","workflow","tmux","cli","developer-tool",{"commitSha":281,"license":239},{"parentExtensionId":611,"repoId":612},"k17brg5egdw1jbncj1j4wfv3fh86n639","kd74zv63fryf9prygtq7gf4es986n22y",[217,607,608,604,603,606,605],{"evaluatedAt":615,"extractAt":616,"updatedAt":615},1778699613343,1778699234184]