[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"extension-skill-drolosoft-photo-search-de":3,"guides-for-drolosoft-photo-search":510,"similar-k17ayghah8cpdc4r6wv78gvd8x86ns4c-de":511},{"_creationTime":4,"_id":5,"children":6,"community":7,"display":9,"evaluation":15,"identity":260,"isFallback":266,"parentExtension":267,"providers":323,"relations":327,"repo":328,"tags":508,"workflow":509},1778686338567.5752,"k17ayghah8cpdc4r6wv78gvd8x86ns4c",[],{"reviewCount":8},0,{"description":10,"installMethods":11,"name":13,"sourceUrl":14},"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":12},"drolosoft/immich-photo-manager","Immich Photo Manager","https://github.com/drolosoft/immich-photo-manager",{"_creationTime":16,"_id":17,"extensionId":5,"locale":18,"result":19,"trustSignals":242,"workflow":258},1778686618843.3728,"kn7d37af8fkvb5md8txcqf6ek586mmk1","en",{"checks":20,"evaluatedAt":192,"extensionSummary":193,"features":194,"nonGoals":201,"practices":206,"prerequisites":210,"promptVersionExtension":214,"promptVersionScoring":215,"purpose":216,"rationale":217,"score":218,"summary":219,"tags":220,"targetMarket":228,"tier":229,"useCases":230,"workflow":235},[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,132,135,138,142,146,150,153,157,160,163,166,169,173,176,179,182,185,189],{"category":22,"check":23,"severity":24,"summary":25},"Practical Utility","Problem relevance","pass","The description clearly identifies the problem of managing a large Immich photo library and the user intent of searching and exploring it.",{"category":22,"check":27,"severity":24,"summary":28},"Unique selling proposition","The skill offers significant value over basic LLM capabilities by integrating directly with the Immich API for advanced search, album management, and metadata repair.",{"category":22,"check":30,"severity":24,"summary":31},"Production readiness","The skill appears production-ready, covering the full lifecycle of photo searching and gallery generation, including necessary prerequisites and clear instructions.",{"category":33,"check":34,"severity":24,"summary":35},"Scope","Single responsibility principle","The extension focuses on photo management within Immich, including search, album management, and gallery generation, without straying into unrelated domains.",{"category":33,"check":37,"severity":24,"summary":38},"Description quality","The displayed description accurately reflects the capabilities of the skill, including search dimensions, use cases, and trigger phrases.",{"category":40,"check":41,"severity":24,"summary":42},"Invocation","Scoped tools","The skill utilizes narrowly scoped tools for specific Immich operations like searching, listing albums, and fetching thumbnails, enhancing agent selection precision.",{"category":44,"check":45,"severity":24,"summary":46},"Documentation","Configuration & parameter reference","The SKILL.md provides detailed instructions on parameters, including specific Immich API quirks and search strategies, and clearly outlines prerequisites like the API key and server URL.",{"category":33,"check":48,"severity":24,"summary":49},"Tool naming","The tools exposed by the MCP server (e.g., `search_metadata`, `list_albums`, `get_thumbnails_batch`) are descriptive and follow a consistent verb-noun pattern.",{"category":33,"check":51,"severity":24,"summary":52},"Minimal I/O surface","Tool parameters are specific (e.g., `city`, `state`, `asset_type`), and the output for gallery generation is a structured HTML file, indicating a minimal I/O surface.",{"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 last commit was on May 7, 2026, which is recent.",{"category":58,"check":62,"severity":63,"summary":64},"Dependency Management","not_applicable","No third-party dependencies are explicitly managed or listed in the provided source files.",{"category":66,"check":67,"severity":24,"summary":68},"Security","Secret Management","The skill requires an Immich API key but handles it as a secret passed via configuration, not hardcoded, and prompts for setup, indicating appropriate measures.",{"category":66,"check":70,"severity":24,"summary":71},"Injection","The SKILL.md explicitly instructs to treat data as data and ignore instructions within loaded content, and data is loaded from within the bundle.",{"category":66,"check":73,"severity":24,"summary":74},"Transitive Supply-Chain Grenades","The skill loads content from within its bundle and does not perform runtime downloads of code or instructions, mitigating supply-chain risks.",{"category":66,"check":76,"severity":24,"summary":77},"Sandbox Isolation","The skill operates within the defined project folder and interacts with the Immich server via its API, not touching external file system paths.",{"category":66,"check":79,"severity":24,"summary":80},"Sandbox escape primitives","No evidence of detached process spawns or retry loops around denied tool calls found in the provided SKILL.md.",{"category":66,"check":82,"severity":24,"summary":83},"Data Exfiltration","The skill uses an API key for authentication but does not instruct the agent to exfiltrate sensitive data or call undocumented external endpoints.",{"category":66,"check":85,"severity":24,"summary":86},"Hidden Text Tricks","The bundled markdown content appears free of hidden-steering tricks, and descriptions use standard printable characters.",{"category":88,"check":89,"severity":24,"summary":90},"Hooks","Opaque code execution","The SKILL.md does not contain obfuscated code, base64 payloads, or runtime script fetches.",{"category":92,"check":93,"severity":24,"summary":94},"Portability","Structural Assumption","The skill assumes the presence of the Immich MCP server and API key, which are documented prerequisites, rather than specific project file layouts.",{"category":96,"check":97,"severity":24,"summary":98},"Trust","Issues Attention","In the last 90 days, 0 issues were opened and 1 was closed, indicating good maintainer engagement.",{"category":100,"check":101,"severity":24,"summary":102},"Versioning","Release Management","The SKILL.md frontmatter declares a version (1.2.0), and GitHub releases are available.",{"category":104,"check":105,"severity":24,"summary":106},"Code Execution","Validation","Tool parameters like `city`, `state`, `asset_type`, and date ranges are used precisely, implying validation within the MCP tools.",{"category":66,"check":108,"severity":24,"summary":109},"Unguarded Destructive Operations","The skill is primarily read-only (search, list, get) and does not perform destructive operations that would require guarding.",{"category":104,"check":111,"severity":24,"summary":112},"Error Handling","The SKILL.md specifies strict error handling for the ping check and a clear message if the MCP server is unavailable.",{"category":104,"check":114,"severity":63,"summary":115},"Logging","The skill does not perform destructive actions or outbound calls that would necessitate a local audit log.",{"category":117,"check":118,"severity":24,"summary":119},"Compliance","GDPR","The skill operates on user photos and metadata but does not inherently submit personal data to third parties without explicit user action.",{"category":117,"check":121,"severity":24,"summary":122},"Target market","The extension is global in scope and does not contain regional or jurisdiction-specific logic.",{"category":92,"check":124,"severity":24,"summary":125},"Runtime stability","The skill relies on standard Python and MCP protocol, with no OS or shell-specific assumptions beyond general POSIX compatibility.",{"category":44,"check":127,"severity":24,"summary":128},"README","The README provides a comprehensive overview, installation instructions, and highlights key features.",{"category":33,"check":130,"severity":24,"summary":131},"Tool surface size","The skill exposes a focused set of tools via the MCP interface, well within the recommended range.",{"category":40,"check":133,"severity":24,"summary":134},"Overlapping near-synonym tools","The tools used (search, list, get) are distinct and do not appear to have near-synonym overlaps that would confuse the model.",{"category":44,"check":136,"severity":24,"summary":137},"Phantom features","All advertised features, such as AI-powered search and gallery generation, are supported by the provided SKILL.md and README documentation.",{"category":139,"check":140,"severity":24,"summary":141},"Install","Installation instruction","Clear installation instructions, including cloning the repo and using `claude plugin install`, are provided, along with prerequisites and setup guidance.",{"category":143,"check":144,"severity":24,"summary":145},"Errors","Actionable error messages","The SKILL.md provides actionable error messages, especially for the critical ping check, guiding the user on how to resolve connection issues.",{"category":147,"check":148,"severity":63,"summary":149},"Execution","Pinned dependencies","No third-party dependencies are explicitly managed or required by the skill's core functionality as presented.",{"category":33,"check":151,"severity":63,"summary":152},"Dry-run preview","The skill is primarily read-only for search and gallery generation, making a dry-run feature not applicable.",{"category":154,"check":155,"severity":24,"summary":156},"Protocol","Idempotent retry & timeouts","The skill relies on MCP tools which are expected to handle retries and timeouts; no state-changing operations are performed by the skill itself that would require custom idempotency.",{"category":117,"check":158,"severity":24,"summary":159},"Telemetry opt-in","There is no mention of telemetry collection in the provided documentation, implying it is either absent or strictly opt-in.",{"category":40,"check":161,"severity":24,"summary":162},"Precise Purpose","The description clearly states the skill's purpose (search Immich photos), the artifact it operates on (Immich photo library), and user intents (find photos, search, explore).",{"category":40,"check":164,"severity":24,"summary":165},"Concise Frontmatter","The frontmatter in SKILL.md is concise and self-contained, summarizing the core capability and providing trigger phrases.",{"category":44,"check":167,"severity":24,"summary":168},"Concise Body","The SKILL.md is well-structured with clear sections and delegates detailed information to separate documentation files and the README.",{"category":170,"check":171,"severity":24,"summary":172},"Context","Progressive Disclosure","The SKILL.md outlines the workflow and links to separate documentation for detailed setup and tool references, demonstrating progressive disclosure.",{"category":170,"check":174,"severity":63,"summary":175},"Forked exploration","The skill focuses on searching and presenting photos, not deep code review or exploration, so `context: fork` is not applicable.",{"category":22,"check":177,"severity":24,"summary":178},"Usage examples","The SKILL.md provides concrete examples for various search patterns, and the README includes screenshots and a demo GIF, illustrating capabilities.",{"category":22,"check":180,"severity":24,"summary":181},"Edge cases","The SKILL.md addresses Immich's EXIF location quirks and potential search result limitations, providing recovery steps like broader searches or using `search_smart`.",{"category":104,"check":183,"severity":24,"summary":184},"Tool Fallback","The skill requires an Immich MCP server but explicitly states a fallback path: if ping fails, it stops and informs the user, rather than hard-requiring a custom MCP.",{"category":186,"check":187,"severity":24,"summary":188},"Safety","Halt on unexpected state","The skill mandates an upfront ping check to halt execution if the Immich MCP server is unavailable, preventing unexpected states.",{"category":92,"check":190,"severity":24,"summary":191},"Cross-skill coupling","The skill operates standalone and does not implicitly rely on other skills; it clearly states its requirements for the Immich MCP server.",1778686618730,"This skill allows users to search and explore their Immich photo library using natural language, GPS locations, dates, people, cameras, and AI-powered visual search. It can generate interactive HTML galleries of search results or photos from real albums, handling potential Immich API quirks and providing clear setup instructions.",[195,196,197,198,199,200],"Natural language photo search","AI-powered visual search (CLIP)","Location, date, people, and camera-based filtering","Automatic album creation and management","Interactive HTML gallery generation","Metadata repair and duplicate detection",[202,203,204,205],"Creating temporary albums for search results","Directly modifying photos (beyond metadata repair if implemented)","Uploading photos to Immich","Performing actions outside the Immich photo management domain",[207,208,209],"Error handling","Security best practices","Documentation quality",[211,212,213],"Running Immich instance (v1.90+)","Immich API key","Python 3.10+ with pip","3.0.0","4.4.0","To enable users to effortlessly search, organize, and visualize their Immich photo collection through natural language commands, making photo management intelligent and accessible.","High-quality documentation, clear scope, and robust error handling contribute to a verified tier. Minor areas like dependency management were not applicable.",97,"A robust skill for searching and managing Immich photo libraries with advanced AI capabilities.",[221,222,223,224,225,226,227],"immich","photos","search","gallery","ai","cli","metadata","global","verified",[231,232,233,234],"Finding specific photos using descriptive language (e.g., 'sunset at the beach')","Browsing photos from particular locations or time periods","Organizing photos into curated albums based on search criteria","Generating shareable photo galleries for events or trips",[236,237,238,239,240,241],"Check Immich MCP server connection via ping","Parse user intent to identify search dimensions","Search for matching photos using `search_metadata` and `search_smart`","Find real matching albums using `list_albums`","Collect asset metadata and thumbnails","Generate and present HTML gallery viewer",{"codeQuality":243,"collectedAt":245,"documentation":246,"maintenance":249,"security":255,"testCoverage":257},{"hasLockfile":244},false,1778686595604,{"descriptionLength":247,"readmeSize":248},455,8637,{"closedIssues90d":250,"forks":251,"hasChangelog":244,"manifestVersion":252,"openIssues90d":8,"pushedAt":253,"stars":254},1,4,"1.2.0",1778175631000,16,{"hasNpmPackage":244,"license":256,"smitheryVerified":244},"MIT",{"hasCi":244,"hasTests":244},{"updatedAt":259},1778686618843,{"basePath":261,"githubOwner":262,"githubRepo":263,"locale":18,"slug":264,"type":265},"skills/photo-search","drolosoft","immich-photo-manager","photo-search","skill",true,{"_creationTime":268,"_id":269,"community":270,"display":271,"identity":274,"parentExtension":277,"providers":308,"relations":319,"tags":320,"workflow":321},1778686338567.5732,"k17fptxxsmtdk9k5x99qw7re2586n8fq",{"reviewCount":8},{"description":272,"installMethods":273,"name":13,"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":263},{"basePath":275,"githubOwner":262,"githubRepo":263,"locale":18,"slug":263,"type":276},"","plugin",{"_creationTime":278,"_id":279,"community":280,"display":281,"identity":285,"providers":287,"relations":302,"tags":304,"workflow":305},1778686338567.573,"k177jqq2va7fhvpdsch9vv5cbn86nwwg",{"reviewCount":8},{"description":282,"installMethods":283,"name":284,"sourceUrl":14},"Drolosoft Marketplace - AI-powered tools by Drolosoft",{"claudeCode":12},"drolosoft-marketplace",{"basePath":275,"githubOwner":262,"githubRepo":263,"locale":18,"slug":263,"type":286},"marketplace",{"evaluate":288,"extract":297},{"promptVersionExtension":289,"promptVersionScoring":215,"score":290,"tags":291,"targetMarket":228,"tier":229},"3.1.0",98,[292,221,293,294,295,296],"photo-management","ai-assistant","media","organization","mcp",{"commitSha":298,"marketplace":299,"plugin":300},"HEAD",{"name":284,"pluginCount":250},{"mcpCount":8,"provider":301,"skillCount":8},"classify",{"repoId":303},"kd71cer955pa6pzdsewzf62dt986nbtd",[293,221,296,294,295,292],{"evaluatedAt":306,"extractAt":307,"updatedAt":306},1778686361336,1778686338567,{"evaluate":309,"extract":316},{"promptVersionExtension":214,"promptVersionScoring":215,"score":310,"tags":311,"targetMarket":228,"tier":229},95,[221,292,224,312,313,314,315],"self-hosted","ai-search","automation","media-organization",{"commitSha":298,"license":256,"plugin":317},{"mcpCount":8,"provider":301,"skillCount":318},12,{"parentExtensionId":279,"repoId":303},[313,314,224,221,315,292,312],{"evaluatedAt":322,"extractAt":307,"updatedAt":322},1778686398961,{"evaluate":324,"extract":326},{"promptVersionExtension":214,"promptVersionScoring":215,"score":218,"tags":325,"targetMarket":228,"tier":229},[221,222,223,224,225,226,227],{"commitSha":298,"license":256},{"parentExtensionId":269,"repoId":303},{"_creationTime":329,"_id":303,"identity":330,"providers":331,"workflow":504},1778686332166.7776,{"githubOwner":262,"githubRepo":263,"sourceUrl":14},{"classify":332,"discover":488,"github":491},{"commitSha":298,"extensions":333},[334,347,390,403,411,419,427,435,443,451,456,464,472,480],{"basePath":275,"description":282,"displayName":284,"installMethods":335,"rationale":336,"selectedPaths":337,"source":346,"sourceLanguage":18,"type":286},{"claudeCode":12},"marketplace.json at .claude-plugin/marketplace.json",[338,341,343],{"path":339,"priority":340},".claude-plugin/marketplace.json","mandatory",{"path":342,"priority":340},"README.md",{"path":344,"priority":345},"LICENSE","high","rule",{"basePath":275,"description":272,"displayName":263,"installMethods":348,"license":256,"rationale":349,"selectedPaths":350,"source":346,"sourceLanguage":18,"type":276},{"claudeCode":263},"plugin manifest at .claude-plugin/plugin.json",[351,353,354,355,358,360,362,364,366,368,370,372,374,376,378,380,382,384,386,388],{"path":352,"priority":340},".claude-plugin/plugin.json",{"path":342,"priority":340},{"path":344,"priority":345},{"path":356,"priority":357},"skills/album-manager/SKILL.md","medium",{"path":359,"priority":357},"skills/auto-album-curator/SKILL.md",{"path":361,"priority":357},"skills/duplicate-report/SKILL.md",{"path":363,"priority":357},"skills/library-health-report/SKILL.md",{"path":365,"priority":357},"skills/metadata-fixer/SKILL.md",{"path":367,"priority":357},"skills/people-report/SKILL.md",{"path":369,"priority":357},"skills/photo-cleanup/SKILL.md",{"path":371,"priority":357},"skills/photo-search/SKILL.md",{"path":373,"priority":357},"skills/rotate-photos/SKILL.md",{"path":375,"priority":357},"skills/storage-optimizer/SKILL.md",{"path":377,"priority":357},"skills/timeline-gaps/SKILL.md",{"path":379,"priority":357},"skills/travel-map/SKILL.md",{"path":381,"priority":345},"commands/cleanup.md",{"path":383,"priority":345},"commands/create-album.md",{"path":385,"priority":345},"commands/immich-status.md",{"path":387,"priority":345},"commands/my-travels.md",{"path":389,"priority":345},"commands/setup-immich-photo-manager.md",{"basePath":391,"description":392,"displayName":393,"installMethods":394,"rationale":395,"selectedPaths":396,"source":346,"sourceLanguage":18,"type":265},"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",[397,399,401],{"path":398,"priority":340},"SKILL.md",{"path":400,"priority":357},"references/geographic-search-patterns.md",{"path":402,"priority":357},"references/viewer-template-spec.md",{"basePath":404,"description":405,"displayName":406,"installMethods":407,"rationale":408,"selectedPaths":409,"source":346,"sourceLanguage":18,"type":265},"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",[410],{"path":398,"priority":340},{"basePath":412,"description":413,"displayName":414,"installMethods":415,"rationale":416,"selectedPaths":417,"source":346,"sourceLanguage":18,"type":265},"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",[418],{"path":398,"priority":340},{"basePath":420,"description":421,"displayName":422,"installMethods":423,"rationale":424,"selectedPaths":425,"source":346,"sourceLanguage":18,"type":265},"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",[426],{"path":398,"priority":340},{"basePath":428,"description":429,"displayName":430,"installMethods":431,"rationale":432,"selectedPaths":433,"source":346,"sourceLanguage":18,"type":265},"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",[434],{"path":398,"priority":340},{"basePath":436,"description":437,"displayName":438,"installMethods":439,"rationale":440,"selectedPaths":441,"source":346,"sourceLanguage":18,"type":265},"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",[442],{"path":398,"priority":340},{"basePath":444,"description":445,"displayName":446,"installMethods":447,"rationale":448,"selectedPaths":449,"source":346,"sourceLanguage":18,"type":265},"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",[450],{"path":398,"priority":340},{"basePath":261,"description":10,"displayName":264,"installMethods":452,"rationale":453,"selectedPaths":454,"source":346,"sourceLanguage":18,"type":265},{"claudeCode":12},"SKILL.md frontmatter at skills/photo-search/SKILL.md",[455],{"path":398,"priority":340},{"basePath":457,"description":458,"displayName":459,"installMethods":460,"rationale":461,"selectedPaths":462,"source":346,"sourceLanguage":18,"type":265},"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",[463],{"path":398,"priority":340},{"basePath":465,"description":466,"displayName":467,"installMethods":468,"rationale":469,"selectedPaths":470,"source":346,"sourceLanguage":18,"type":265},"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",[471],{"path":398,"priority":340},{"basePath":473,"description":474,"displayName":475,"installMethods":476,"rationale":477,"selectedPaths":478,"source":346,"sourceLanguage":18,"type":265},"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",[479],{"path":398,"priority":340},{"basePath":481,"description":482,"displayName":483,"installMethods":484,"rationale":485,"selectedPaths":486,"source":346,"sourceLanguage":18,"type":265},"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",[487],{"path":398,"priority":340},{"sources":489},[490],"manual",{"closedIssues90d":250,"description":492,"forks":251,"homepage":493,"license":256,"openIssues90d":8,"pushedAt":253,"readmeSize":248,"stars":254,"topics":494},"📸🧹🗺️ 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",[495,496,497,498,499,224,500,221,296,501,227,292,222,312,502,503],"albums","claude","claude-plugin","cleanup","duplicates","geolocation","mcp-server","immich-plugin","python",{"classifiedAt":505,"discoverAt":506,"extractAt":507,"githubAt":507,"updatedAt":505},1778686338385,1778686332166,1778686336662,[225,226,224,221,227,222,223],{"evaluatedAt":259,"extractAt":307,"updatedAt":259},[],[512,529,553,584,607,624],{"_creationTime":513,"_id":514,"community":515,"display":516,"identity":518,"providers":519,"relations":525,"tags":526,"workflow":527},1778686338567.5735,"k176xjm76xfsyx4hn82v2rdef986n0js",{"reviewCount":8},{"description":392,"installMethods":517,"name":393,"sourceUrl":14},{"claudeCode":12},{"basePath":391,"githubOwner":262,"githubRepo":263,"locale":18,"slug":393,"type":265},{"evaluate":520,"extract":524},{"promptVersionExtension":214,"promptVersionScoring":215,"score":521,"tags":522,"targetMarket":228,"tier":229},96,[221,222,495,295,224,523],"media-management",{"commitSha":298},{"parentExtensionId":269,"repoId":303},[495,224,221,523,295,222],{"evaluatedAt":528,"extractAt":307,"updatedAt":528},1778686420761,{"_creationTime":530,"_id":531,"community":532,"display":533,"identity":538,"providers":542,"relations":546,"tags":549,"workflow":550},1778685949178.8154,"k170c8hv2jp78hhnxyy3bbwx3986ny1g",{"reviewCount":8},{"description":534,"installMethods":535,"name":263,"sourceUrl":537},"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":536},"davepoon/buildwithclaude","https://github.com/davepoon/buildwithclaude",{"basePath":539,"githubOwner":540,"githubRepo":541,"locale":18,"slug":263,"type":265},"plugins/all-skills/skills/immich-photo-manager","davepoon","buildwithclaude",{"evaluate":543,"extract":545},{"promptVersionExtension":214,"promptVersionScoring":215,"score":310,"tags":544,"targetMarket":228,"tier":229},[221,222,294,224,223,295],{"commitSha":298},{"parentExtensionId":547,"repoId":548},"k1779wwzgaaxeqtvembbktrb1d86n4tf","kd719kw54vhmcscq7ckdp59fg586mnt6",[224,221,294,295,222,223],{"evaluatedAt":551,"extractAt":552,"updatedAt":551},1778690189801,1778685949178,{"_creationTime":554,"_id":555,"community":556,"display":557,"identity":563,"providers":568,"relations":577,"tags":580,"workflow":581},1778696691708.3274,"k170az7r02e9e2v47mpy80kx6n86nff3",{"reviewCount":8},{"description":558,"installMethods":559,"name":561,"sourceUrl":562},"Detect current market regime using npx neural-trader — bull/bear/ranging/volatile classification with recommended strategy",{"claudeCode":560},"ruvnet/ruflo","Trader Regime","https://github.com/ruvnet/ruflo",{"basePath":564,"githubOwner":565,"githubRepo":566,"locale":18,"slug":567,"type":265},"plugins/ruflo-neural-trader/skills/trader-regime","ruvnet","ruflo","trader-regime",{"evaluate":569,"extract":576},{"promptVersionExtension":214,"promptVersionScoring":215,"score":570,"tags":571,"targetMarket":228,"tier":229},100,[572,573,574,225,575,226],"finance","trading","market-analysis","typescript",{"commitSha":298,"license":256},{"parentExtensionId":578,"repoId":579},"k17drge8h1fgzchr0p4jaeg33n86mwmy","kd7ed28gj8n0y3msk5dzrp05zs86nqtc",[225,226,572,574,573,575],{"evaluatedAt":582,"extractAt":583,"updatedAt":582},1778701108877,1778696691708,{"_creationTime":585,"_id":586,"community":587,"display":588,"identity":592,"providers":594,"relations":603,"tags":604,"workflow":605},1778696691708.2996,"k175z5j3knm69exj7qpfwy3e1586nh3w",{"reviewCount":8},{"description":589,"installMethods":590,"name":591,"sourceUrl":562},"Vector embeddings with HNSW indexing, sql.js persistence, and hyperbolic support. 75x faster with agentic-flow integration. Use when: semantic search, pattern matching, similarity queries, knowledge retrieval. Skip when: exact text matching, simple lookups, no semantic understanding needed.\n",{"claudeCode":560},"embeddings",{"basePath":593,"githubOwner":565,"githubRepo":566,"locale":18,"slug":591,"type":265},".agents/skills/embeddings",{"evaluate":595,"extract":602},{"promptVersionExtension":214,"promptVersionScoring":215,"score":596,"tags":597,"targetMarket":228,"tier":229},99,[591,598,599,600,225,223,601],"vector-search","hnsw","sql-js","retrieval",{"commitSha":298},{"repoId":579},[225,591,599,601,223,600,598],{"evaluatedAt":606,"extractAt":583,"updatedAt":606},1778698905205,{"_creationTime":608,"_id":609,"community":610,"display":611,"identity":613,"providers":614,"relations":620,"tags":621,"workflow":622},1778686338567.5747,"k17ccdwa413myg37b7nsftv7h986mern",{"reviewCount":8},{"description":437,"installMethods":612,"name":263,"sourceUrl":14},{"claudeCode":12},{"basePath":436,"githubOwner":262,"githubRepo":263,"locale":18,"slug":438,"type":265},{"evaluate":615,"extract":619},{"promptVersionExtension":214,"promptVersionScoring":215,"score":596,"tags":616,"targetMarket":228,"tier":229},[221,222,617,618,296],"face-recognition","reporting",{"commitSha":298,"license":256},{"parentExtensionId":269,"repoId":303},[617,221,296,222,618],{"evaluatedAt":623,"extractAt":307,"updatedAt":623},1778686543941,{"_creationTime":625,"_id":626,"community":627,"display":628,"identity":630,"providers":631,"relations":636,"tags":637,"workflow":638},1778686338567.5737,"k17dn1dvs99dqeq08n8313665x86n48d",{"reviewCount":8},{"description":405,"installMethods":629,"name":406,"sourceUrl":14},{"claudeCode":12},{"basePath":404,"githubOwner":262,"githubRepo":263,"locale":18,"slug":406,"type":265},{"evaluate":632,"extract":635},{"promptVersionExtension":214,"promptVersionScoring":215,"score":596,"tags":633,"targetMarket":228,"tier":229},[221,222,495,634,295,225],"curation",{"commitSha":298},{"parentExtensionId":269,"repoId":303},[225,495,634,221,295,222],{"evaluatedAt":639,"extractAt":307,"updatedAt":639},1778686443797]