[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"extension-skill-drolosoft-duplicate-report-zh-CN":3,"guides-for-drolosoft-duplicate-report":496,"similar-k17b0q5xepcajzr3qkzgtkvqxs86m7az-zh-CN":497},{"_creationTime":4,"_id":5,"children":6,"community":7,"display":9,"evaluation":15,"identity":244,"isFallback":249,"parentExtension":250,"providers":308,"relations":312,"repo":313,"tags":494,"workflow":495},1778686338567.574,"k17b0q5xepcajzr3qkzgtkvqxs86m7az",[],{"reviewCount":8},0,{"description":10,"installMethods":11,"name":13,"sourceUrl":14},"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":12},"drolosoft/immich-photo-manager","duplicate-report","https://github.com/drolosoft/immich-photo-manager",{"_creationTime":16,"_id":17,"extensionId":5,"locale":18,"result":19,"trustSignals":226,"workflow":242},1778686474905.8904,"kn7ct2bvc27t0ry9kzx3ky6tah86na8p","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":219,"tier":220,"useCases":221},[21,26,29,32,36,39,43,47,50,53,57,61,65,69,72,75,78,81,84,87,91,95,99,103,107,110,113,116,120,123,126,129,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 duplicate photos in Immich libraries due to cross-source imports and specifies use cases with trigger phrases.",{"category":22,"check":27,"severity":24,"summary":28},"Unique selling proposition","The skill addresses the specific problem of duplicate photos caused by re-encoding across import sources, using perceptual hashing, which is beyond simple duplicate detection.",{"category":22,"check":30,"severity":24,"summary":31},"Production readiness","The skill is production-ready, requiring only standard Python libraries and an Immich API key, and covers the complete lifecycle from analysis to removal recommendations.",{"category":33,"check":34,"severity":24,"summary":35},"Scope","Single responsibility principle","The skill focuses exclusively on duplicate analysis and management within an Immich photo library, aligning with its name and description.",{"category":33,"check":37,"severity":24,"summary":38},"Description quality","The displayed description accurately reflects the skill's functionality for duplicate analysis using perceptual hashing on Immich libraries and provides relevant trigger phrases.",{"category":40,"check":41,"severity":24,"summary":42},"Invocation","Scoped tools","The skill appears to use specific tools like `get_duplicates` and `resolve_duplicates` rather than a single generalist execution tool.",{"category":44,"check":45,"severity":24,"summary":46},"Documentation","Configuration & parameter reference","The SKILL.md document details prerequisites and outlines the analysis workflow and reporting structure, implying parameters are clear.",{"category":33,"check":48,"severity":24,"summary":49},"Tool naming","The documented tools and functions within the SKILL.md are descriptively named (e.g., `get_duplicates`, `resolve_duplicates`, `compute_phash`).",{"category":33,"check":51,"severity":24,"summary":52},"Minimal I/O surface","The skill's described inputs (API key, server URL) and outputs (reports, removal recommendations) appear minimal and focused on the stated task.",{"category":54,"check":55,"severity":24,"summary":56},"License","License usability","The project is licensed under the MIT License, which is a permissive open-source license.",{"category":58,"check":59,"severity":24,"summary":60},"Maintenance","Commit recency","The latest commit was on May 7, 2026, well within the last 90 days.",{"category":58,"check":62,"severity":63,"summary":64},"Dependency Management","warning","The `requirements.txt` or equivalent is not explicitly visible, and while Python dependencies are mentioned, there's no explicit mention of vulnerability scanning or automated updates for them.",{"category":66,"check":67,"severity":24,"summary":68},"Security","Secret Management","The skill requires an Immich API key, which is handled through configuration and not hardcoded or echoed in logs per the instructions.",{"category":66,"check":70,"severity":24,"summary":71},"Injection","The skill processes image data and metadata, but the instructions emphasize treating files as data and do not suggest executing arbitrary code from them.",{"category":66,"check":73,"severity":24,"summary":74},"Transitive Supply-Chain Grenades","The skill relies on standard Python libraries and local file access, with no indication of runtime downloads or execution of untrusted remote code.",{"category":66,"check":76,"severity":24,"summary":77},"Sandbox Isolation","The skill operates within the Immich ecosystem and requires local Python dependencies; it does not appear to write outside of designated project/Immich scopes.",{"category":66,"check":79,"severity":24,"summary":80},"Sandbox escape primitives","No evidence of detached process spawns or retry loops around denied tool calls in the provided script snippets.",{"category":66,"check":82,"severity":24,"summary":83},"Data Exfiltration","The skill processes photo library data locally and interacts with the Immich API. There's no indication of submitting confidential data to a third party without explicit purpose and documentation.",{"category":66,"check":85,"severity":24,"summary":86},"Hidden Text Tricks","The bundled content (SKILL.md, README.md) appears to be clean ASCII/Unicode and free of hidden steering characters or tricks.",{"category":88,"check":89,"severity":24,"summary":90},"Hooks","Opaque code execution","The Python scripts described for perceptual hashing appear to be plain, readable code, not obfuscated or dynamically fetched.",{"category":92,"check":93,"severity":24,"summary":94},"Portability","Structural Assumption","The skill makes assumptions about Immich file paths but does so explicitly and handles them within the Immich context, not general OS structure.",{"category":96,"check":97,"severity":24,"summary":98},"Trust","Issues Attention","Recent commit activity and low issue counts (0 open, 1 closed in 90 days) suggest good maintainer engagement.",{"category":100,"check":101,"severity":24,"summary":102},"Versioning","Release Management","The `version` field in SKILL.md frontmatter is set to '1.2.0', providing a clear version signal.",{"category":104,"check":105,"severity":24,"summary":106},"Code Execution","Validation","The SKILL.md mentions using Python libraries like Pillow and imagehash, which typically include validation for image processing tasks.",{"category":66,"check":108,"severity":24,"summary":109},"Unguarded Destructive Operations","The skill explicitly states 'NEVER auto-remove' and requires user approval for any deletion steps, ensuring destructive operations are guarded.",{"category":104,"check":111,"severity":24,"summary":112},"Error Handling","The SKILL.md emphasizes stopping execution if the Immich connection fails and describes a structured reporting process, indicating robust error handling.",{"category":104,"check":114,"severity":24,"summary":115},"Logging","The SKILL.md mentions logging everything to a JSON file for audit after removal steps, ensuring actions are recorded.",{"category":117,"check":118,"severity":24,"summary":119},"Compliance","GDPR","The skill operates on photo metadata and image data within the user's Immich library; personal data is not explicitly submitted to third parties.",{"category":117,"check":121,"severity":24,"summary":122},"Target market","The skill is designed for managing a personal photo library and has no regional or jurisdictional limitations.",{"category":92,"check":124,"severity":24,"summary":125},"Runtime stability","The skill relies on standard Python libraries and the Immich API, making it portable across systems with Python 3.10+.",{"category":44,"check":127,"severity":24,"summary":128},"README","The README.md provides a comprehensive overview, installation instructions, and highlights the project's capabilities.",{"category":33,"check":130,"severity":131,"summary":132},"Tool surface size","not_applicable","This is a skill extension, not a CLI or MCP server with a large number of distinct tools exposed.",{"category":40,"check":134,"severity":24,"summary":135},"Overlapping near-synonym tools","The skill's described functionalities (duplicate detection, reporting, removal) appear distinct and not redundant.",{"category":44,"check":137,"severity":24,"summary":138},"Phantom features","All advertised features in the README and SKILL.md, such as perceptual hashing and duplicate detection, have corresponding descriptions of implementation or workflow.",{"category":140,"check":141,"severity":24,"summary":142},"Install","Installation instruction","The README.md provides clear, copy-pasteable installation instructions for both Claude plugin and manual MCP server setup, including prerequisites and verification.",{"category":144,"check":145,"severity":24,"summary":146},"Errors","Actionable error messages","The SKILL.md explicitly details error handling, including stopping execution on connection failure and providing user-facing messages and recovery steps.",{"category":148,"check":149,"severity":63,"summary":150},"Execution","Pinned dependencies","While Python dependencies are listed, there is no explicit mention of lockfiles or pinned versions in the provided source, potentially leading to instability.",{"category":33,"check":152,"severity":24,"summary":153},"Dry-run preview","The skill emphasizes a two-step removal process with user confirmation and suggests moving to trash first, implying a form of preview or reversible action before permanent deletion.",{"category":155,"check":156,"severity":131,"summary":157},"Protocol","Idempotent retry & timeouts","The skill interacts with the Immich API locally and does not involve remote calls or state-changing operations that require complex retry logic or timeouts beyond standard Python execution.",{"category":117,"check":159,"severity":24,"summary":160},"Telemetry opt-in","There is no mention of telemetry collection; the skill focuses on local processing and user-managed actions.",{"category":40,"check":162,"severity":24,"summary":163},"Precise Purpose","The SKILL.md clearly defines the purpose as duplicate analysis for Immich libraries using perceptual hashing, lists specific trigger phrases, and outlines non-goals like automatic deletion.",{"category":40,"check":165,"severity":24,"summary":166},"Concise Frontmatter","The SKILL.md frontmatter is concise, containing the name, description, and version, fitting within typical character limits for clear routing.",{"category":44,"check":168,"severity":24,"summary":169},"Concise Body","The SKILL.md is well-structured with clear sections and delegates technical details like SQL queries to inline examples, keeping the main flow concise.",{"category":171,"check":172,"severity":24,"summary":173},"Context","Progressive Disclosure","The SKILL.md outlines the main workflow and embeds code snippets for clarity, but doesn't contain excessively long procedures or third-party material, adhering to progressive disclosure.",{"category":171,"check":175,"severity":131,"summary":176},"Forked exploration","This skill is task-oriented (analysis and reporting) rather than deep exploration, so `context: fork` is not applicable.",{"category":22,"check":178,"severity":24,"summary":179},"Usage examples","The SKILL.md provides concrete SQL and Python code examples for discovery, hashing, and reporting, demonstrating the expected inputs and outputs.",{"category":22,"check":181,"severity":24,"summary":182},"Edge cases","The SKILL.md addresses HEIC support, `ThreadPoolExecutor` vs. `ProcessPoolExecutor`, rare false positives of perceptual hashing, and the exclusion of videos, covering key limitations and recovery steps.",{"category":104,"check":184,"severity":131,"summary":185},"Tool Fallback","This skill does not appear to rely on external MCP servers or tools beyond standard Python libraries and the Immich API itself, making fallbacks unnecessary.",{"category":187,"check":188,"severity":24,"summary":189},"Safety","Halt on unexpected state","The SKILL.md explicitly instructs the user to stop and report if the Immich connection fails, ensuring the workflow halts on unexpected pre-state.",{"category":92,"check":191,"severity":24,"summary":192},"Cross-skill coupling","The skill is self-contained and focuses on Immich duplicate analysis without implicit reliance on other skills.",1778686474564,"This skill performs a detailed duplicate analysis on an Immich photo library using perceptual hashing to identify visually identical photos, even those with different checksums due to re-encoding. It requires Python with specific libraries and an Immich API key, and generates reports with removal recommendations.",[196,197,198,199,200],"Comprehensive duplicate analysis using perceptual hashing","Detects cross-source and internal duplicates","Generates detailed reports with removal recommendations","Requires Python dependencies and Immich API key for operation","Provides specific workflow steps for analysis and user-approved removal",[202,203,204,205],"Automatic deletion of duplicate photos without user confirmation.","Analysis of video files (focuses on image content).","Duplicate detection solely based on checksums or filenames (goes beyond these).","Operating without a configured Immich server connection.","3.0.0","4.4.0","To help users efficiently identify and manage duplicate photos within their Immich libraries, especially those arising from cross-source imports or re-encoding, to maintain a clean and healthy photo collection.","The skill is exceptionally well-documented and robust, addressing a clear user pain point with a sophisticated technical solution. A minor warning on dependency management prevents a perfect score.",95,"A highly polished skill for comprehensive duplicate photo analysis in Immich libraries using perceptual hashing.",[213,214,215,216,217,218],"immich","photos","deduplication","perceptual-hashing","library-management","reporting","global","community",[222,223,224,225],"When a user wants to find duplicate photos in their Immich library.","When a user needs a 'library health check' specifically for duplicate content.","When comparing photos imported from multiple sources like Apple Photos and Google Photos exports.","When dealing with photos that have different checksums but are visually identical.",{"codeQuality":227,"collectedAt":229,"documentation":230,"maintenance":233,"security":239,"testCoverage":241},{"hasLockfile":228},false,1778686444060,{"descriptionLength":231,"readmeSize":232},518,8637,{"closedIssues90d":234,"forks":235,"hasChangelog":228,"manifestVersion":236,"openIssues90d":8,"pushedAt":237,"stars":238},1,4,"1.2.0",1778175631000,16,{"hasNpmPackage":228,"license":240,"smitheryVerified":228},"MIT",{"hasCi":228,"hasTests":228},{"updatedAt":243},1778686474905,{"basePath":245,"githubOwner":246,"githubRepo":247,"locale":18,"slug":13,"type":248},"skills/duplicate-report","drolosoft","immich-photo-manager","skill",true,{"_creationTime":251,"_id":252,"community":253,"display":254,"identity":258,"parentExtension":261,"providers":293,"relations":304,"tags":305,"workflow":306},1778686338567.5732,"k17fptxxsmtdk9k5x99qw7re2586n8fq",{"reviewCount":8},{"description":255,"installMethods":256,"name":257,"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":247},"Immich Photo Manager",{"basePath":259,"githubOwner":246,"githubRepo":247,"locale":18,"slug":247,"type":260},"","plugin",{"_creationTime":262,"_id":263,"community":264,"display":265,"identity":269,"providers":271,"relations":287,"tags":289,"workflow":290},1778686338567.573,"k177jqq2va7fhvpdsch9vv5cbn86nwwg",{"reviewCount":8},{"description":266,"installMethods":267,"name":268,"sourceUrl":14},"Drolosoft Marketplace - AI-powered tools by Drolosoft",{"claudeCode":12},"drolosoft-marketplace",{"basePath":259,"githubOwner":246,"githubRepo":247,"locale":18,"slug":247,"type":270},"marketplace",{"evaluate":272,"extract":282},{"promptVersionExtension":273,"promptVersionScoring":207,"score":274,"tags":275,"targetMarket":219,"tier":281},"3.1.0",98,[276,213,277,278,279,280],"photo-management","ai-assistant","media","organization","mcp","verified",{"commitSha":283,"marketplace":284,"plugin":285},"HEAD",{"name":268,"pluginCount":234},{"mcpCount":8,"provider":286,"skillCount":8},"classify",{"repoId":288},"kd71cer955pa6pzdsewzf62dt986nbtd",[277,213,280,278,279,276],{"evaluatedAt":291,"extractAt":292,"updatedAt":291},1778686361336,1778686338567,{"evaluate":294,"extract":301},{"promptVersionExtension":206,"promptVersionScoring":207,"score":210,"tags":295,"targetMarket":219,"tier":281},[213,276,296,297,298,299,300],"gallery","self-hosted","ai-search","automation","media-organization",{"commitSha":283,"license":240,"plugin":302},{"mcpCount":8,"provider":286,"skillCount":303},12,{"parentExtensionId":263,"repoId":288},[298,299,296,213,300,276,297],{"evaluatedAt":307,"extractAt":292,"updatedAt":307},1778686398961,{"evaluate":309,"extract":311},{"promptVersionExtension":206,"promptVersionScoring":207,"score":210,"tags":310,"targetMarket":219,"tier":220},[213,214,215,216,217,218],{"commitSha":283},{"parentExtensionId":252,"repoId":288},{"_creationTime":314,"_id":288,"identity":315,"providers":316,"workflow":490},1778686332166.7776,{"githubOwner":246,"githubRepo":247,"sourceUrl":14},{"classify":317,"discover":473,"github":476},{"commitSha":283,"extensions":318},[319,332,375,388,396,401,409,417,425,433,441,449,457,465],{"basePath":259,"description":266,"displayName":268,"installMethods":320,"rationale":321,"selectedPaths":322,"source":331,"sourceLanguage":18,"type":270},{"claudeCode":12},"marketplace.json at .claude-plugin/marketplace.json",[323,326,328],{"path":324,"priority":325},".claude-plugin/marketplace.json","mandatory",{"path":327,"priority":325},"README.md",{"path":329,"priority":330},"LICENSE","high","rule",{"basePath":259,"description":255,"displayName":247,"installMethods":333,"license":240,"rationale":334,"selectedPaths":335,"source":331,"sourceLanguage":18,"type":260},{"claudeCode":247},"plugin manifest at .claude-plugin/plugin.json",[336,338,339,340,343,345,347,349,351,353,355,357,359,361,363,365,367,369,371,373],{"path":337,"priority":325},".claude-plugin/plugin.json",{"path":327,"priority":325},{"path":329,"priority":330},{"path":341,"priority":342},"skills/album-manager/SKILL.md","medium",{"path":344,"priority":342},"skills/auto-album-curator/SKILL.md",{"path":346,"priority":342},"skills/duplicate-report/SKILL.md",{"path":348,"priority":342},"skills/library-health-report/SKILL.md",{"path":350,"priority":342},"skills/metadata-fixer/SKILL.md",{"path":352,"priority":342},"skills/people-report/SKILL.md",{"path":354,"priority":342},"skills/photo-cleanup/SKILL.md",{"path":356,"priority":342},"skills/photo-search/SKILL.md",{"path":358,"priority":342},"skills/rotate-photos/SKILL.md",{"path":360,"priority":342},"skills/storage-optimizer/SKILL.md",{"path":362,"priority":342},"skills/timeline-gaps/SKILL.md",{"path":364,"priority":342},"skills/travel-map/SKILL.md",{"path":366,"priority":330},"commands/cleanup.md",{"path":368,"priority":330},"commands/create-album.md",{"path":370,"priority":330},"commands/immich-status.md",{"path":372,"priority":330},"commands/my-travels.md",{"path":374,"priority":330},"commands/setup-immich-photo-manager.md",{"basePath":376,"description":377,"displayName":378,"installMethods":379,"rationale":380,"selectedPaths":381,"source":331,"sourceLanguage":18,"type":248},"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",[382,384,386],{"path":383,"priority":325},"SKILL.md",{"path":385,"priority":342},"references/geographic-search-patterns.md",{"path":387,"priority":342},"references/viewer-template-spec.md",{"basePath":389,"description":390,"displayName":391,"installMethods":392,"rationale":393,"selectedPaths":394,"source":331,"sourceLanguage":18,"type":248},"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",[395],{"path":383,"priority":325},{"basePath":245,"description":10,"displayName":13,"installMethods":397,"rationale":398,"selectedPaths":399,"source":331,"sourceLanguage":18,"type":248},{"claudeCode":12},"SKILL.md frontmatter at skills/duplicate-report/SKILL.md",[400],{"path":383,"priority":325},{"basePath":402,"description":403,"displayName":404,"installMethods":405,"rationale":406,"selectedPaths":407,"source":331,"sourceLanguage":18,"type":248},"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",[408],{"path":383,"priority":325},{"basePath":410,"description":411,"displayName":412,"installMethods":413,"rationale":414,"selectedPaths":415,"source":331,"sourceLanguage":18,"type":248},"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",[416],{"path":383,"priority":325},{"basePath":418,"description":419,"displayName":420,"installMethods":421,"rationale":422,"selectedPaths":423,"source":331,"sourceLanguage":18,"type":248},"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",[424],{"path":383,"priority":325},{"basePath":426,"description":427,"displayName":428,"installMethods":429,"rationale":430,"selectedPaths":431,"source":331,"sourceLanguage":18,"type":248},"skills/photo-cleanup","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","photo-cleanup",{"claudeCode":12},"SKILL.md frontmatter at skills/photo-cleanup/SKILL.md",[432],{"path":383,"priority":325},{"basePath":434,"description":435,"displayName":436,"installMethods":437,"rationale":438,"selectedPaths":439,"source":331,"sourceLanguage":18,"type":248},"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",[440],{"path":383,"priority":325},{"basePath":442,"description":443,"displayName":444,"installMethods":445,"rationale":446,"selectedPaths":447,"source":331,"sourceLanguage":18,"type":248},"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",[448],{"path":383,"priority":325},{"basePath":450,"description":451,"displayName":452,"installMethods":453,"rationale":454,"selectedPaths":455,"source":331,"sourceLanguage":18,"type":248},"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",[456],{"path":383,"priority":325},{"basePath":458,"description":459,"displayName":460,"installMethods":461,"rationale":462,"selectedPaths":463,"source":331,"sourceLanguage":18,"type":248},"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",[464],{"path":383,"priority":325},{"basePath":466,"description":467,"displayName":468,"installMethods":469,"rationale":470,"selectedPaths":471,"source":331,"sourceLanguage":18,"type":248},"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",[472],{"path":383,"priority":325},{"sources":474},[475],"manual",{"closedIssues90d":234,"description":477,"forks":235,"homepage":478,"license":240,"openIssues90d":8,"pushedAt":237,"readmeSize":232,"stars":238,"topics":479},"📸🧹🗺️ 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",[480,481,482,483,484,296,485,213,280,486,487,276,214,297,488,489],"albums","claude","claude-plugin","cleanup","duplicates","geolocation","mcp-server","metadata","immich-plugin","python",{"classifiedAt":491,"discoverAt":492,"extractAt":493,"githubAt":493,"updatedAt":491},1778686338385,1778686332166,1778686336662,[215,213,217,216,214,218],{"evaluatedAt":243,"extractAt":292,"updatedAt":243},[],[498,515,532,550,567,591],{"_creationTime":499,"_id":500,"community":501,"display":502,"identity":504,"providers":505,"relations":511,"tags":512,"workflow":513},1778686338567.5747,"k17ccdwa413myg37b7nsftv7h986mern",{"reviewCount":8},{"description":419,"installMethods":503,"name":247,"sourceUrl":14},{"claudeCode":12},{"basePath":418,"githubOwner":246,"githubRepo":247,"locale":18,"slug":420,"type":248},{"evaluate":506,"extract":510},{"promptVersionExtension":206,"promptVersionScoring":207,"score":507,"tags":508,"targetMarket":219,"tier":281},99,[213,214,509,218,280],"face-recognition",{"commitSha":283,"license":240},{"parentExtensionId":252,"repoId":288},[509,213,280,214,218],{"evaluatedAt":514,"extractAt":292,"updatedAt":514},1778686543941,{"_creationTime":516,"_id":517,"community":518,"display":519,"identity":521,"providers":522,"relations":528,"tags":529,"workflow":530},1778686338567.5737,"k17dn1dvs99dqeq08n8313665x86n48d",{"reviewCount":8},{"description":390,"installMethods":520,"name":391,"sourceUrl":14},{"claudeCode":12},{"basePath":389,"githubOwner":246,"githubRepo":247,"locale":18,"slug":391,"type":248},{"evaluate":523,"extract":527},{"promptVersionExtension":206,"promptVersionScoring":207,"score":507,"tags":524,"targetMarket":219,"tier":281},[213,214,480,525,279,526],"curation","ai",{"commitSha":283},{"parentExtensionId":252,"repoId":288},[526,480,525,213,279,214],{"evaluatedAt":531,"extractAt":292,"updatedAt":531},1778686443797,{"_creationTime":533,"_id":534,"community":535,"display":536,"identity":538,"providers":539,"relations":546,"tags":547,"workflow":548},1778686338567.5752,"k17ayghah8cpdc4r6wv78gvd8x86ns4c",{"reviewCount":8},{"description":435,"installMethods":537,"name":257,"sourceUrl":14},{"claudeCode":12},{"basePath":434,"githubOwner":246,"githubRepo":247,"locale":18,"slug":436,"type":248},{"evaluate":540,"extract":545},{"promptVersionExtension":206,"promptVersionScoring":207,"score":541,"tags":542,"targetMarket":219,"tier":281},97,[213,214,543,296,526,544,487],"search","cli",{"commitSha":283,"license":240},{"parentExtensionId":252,"repoId":288},[526,544,296,213,487,214,543],{"evaluatedAt":549,"extractAt":292,"updatedAt":549},1778686618843,{"_creationTime":551,"_id":552,"community":553,"display":554,"identity":556,"providers":557,"relations":563,"tags":564,"workflow":565},1778686338567.5735,"k176xjm76xfsyx4hn82v2rdef986n0js",{"reviewCount":8},{"description":377,"installMethods":555,"name":378,"sourceUrl":14},{"claudeCode":12},{"basePath":376,"githubOwner":246,"githubRepo":247,"locale":18,"slug":378,"type":248},{"evaluate":558,"extract":562},{"promptVersionExtension":206,"promptVersionScoring":207,"score":559,"tags":560,"targetMarket":219,"tier":281},96,[213,214,480,279,296,561],"media-management",{"commitSha":283},{"parentExtensionId":252,"repoId":288},[480,296,213,561,279,214],{"evaluatedAt":566,"extractAt":292,"updatedAt":566},1778686420761,{"_creationTime":568,"_id":569,"community":570,"display":571,"identity":576,"providers":580,"relations":584,"tags":587,"workflow":588},1778685949178.8154,"k170c8hv2jp78hhnxyy3bbwx3986ny1g",{"reviewCount":8},{"description":572,"installMethods":573,"name":247,"sourceUrl":575},"Manage your self-hosted Immich photo library through conversation — natural language search, geographic album curation, duplicate detection, library health audits, and interactive HTML galleries. Install: claude plugin install immich-photo-manager",{"claudeCode":574},"davepoon/buildwithclaude","https://github.com/davepoon/buildwithclaude",{"basePath":577,"githubOwner":578,"githubRepo":579,"locale":18,"slug":247,"type":248},"plugins/all-skills/skills/immich-photo-manager","davepoon","buildwithclaude",{"evaluate":581,"extract":583},{"promptVersionExtension":206,"promptVersionScoring":207,"score":210,"tags":582,"targetMarket":219,"tier":281},[213,214,278,296,543,279],{"commitSha":283},{"parentExtensionId":585,"repoId":586},"k1779wwzgaaxeqtvembbktrb1d86n4tf","kd719kw54vhmcscq7ckdp59fg586mnt6",[296,213,278,279,214,543],{"evaluatedAt":589,"extractAt":590,"updatedAt":589},1778690189801,1778685949178,{"_creationTime":592,"_id":593,"community":594,"display":595,"identity":597,"providers":598,"relations":607,"tags":608,"workflow":609},1778686338567.5762,"k1768hvz5w3mqfjw0meya0xq2986me2d",{"reviewCount":8},{"description":467,"installMethods":596,"name":468,"sourceUrl":14},{"claudeCode":12},{"basePath":466,"githubOwner":246,"githubRepo":247,"locale":18,"slug":468,"type":248},{"evaluate":599,"extract":606},{"promptVersionExtension":206,"promptVersionScoring":207,"score":600,"tags":601,"targetMarket":219,"tier":220},88,[214,602,603,604,605,213],"mapping","geotagging","html","data-visualization",{"commitSha":283},{"parentExtensionId":252,"repoId":288},[605,603,604,213,602,214],{"evaluatedAt":610,"extractAt":292,"updatedAt":610},1778686725752]