[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"extension-skill-drolosoft-metadata-fixer-zh-CN":3,"guides-for-drolosoft-metadata-fixer":502,"similar-k1737wckn9mggk2vdm8r0mvpqs86n7q2-zh-CN":503},{"_creationTime":4,"_id":5,"children":6,"community":7,"display":9,"evaluation":15,"identity":251,"isFallback":257,"parentExtension":258,"providers":314,"relations":318,"repo":319,"tags":500,"workflow":501},1778686338567.5745,"k1737wckn9mggk2vdm8r0mvpqs86n7q2",[],{"reviewCount":8},0,{"description":10,"installMethods":11,"name":13,"sourceUrl":14},"Scan for and fix broken or missing photo metadata — dates, GPS coordinates, timezone offsets, and camera info. Detects suspicious patterns (midnight/noon timestamps, missing GPS on geotagged trips) and proposes corrections using folder structure, neighboring photos, and EXIF inference. Use when the user says \"fix metadata\", \"fix dates\", \"wrong dates\", \"missing GPS\", \"metadata repair\", \"exif fix\", \"photos have wrong time\", \"noon dates\", \"midnight timestamps\", \"fix my photo dates\", \"metadata fixer\", or any variation of wanting to repair photo metadata.\n",{"claudeCode":12},"drolosoft/immich-photo-manager","Metadata Fixer","https://github.com/drolosoft/immich-photo-manager",{"_creationTime":16,"_id":17,"extensionId":5,"locale":18,"result":19,"trustSignals":233,"workflow":249},1778686524402.0452,"kn75qdz6zdq6a589xc01ktheeh86m69m","en",{"checks":20,"evaluatedAt":193,"extensionSummary":194,"features":195,"nonGoals":202,"practices":206,"prerequisites":210,"promptVersionExtension":214,"promptVersionScoring":215,"purpose":216,"rationale":217,"score":218,"summary":219,"tags":220,"targetMarket":226,"tier":227,"useCases":228},[21,26,29,32,36,39,43,48,51,54,58,62,66,70,73,76,79,82,85,88,92,96,100,104,108,111,115,118,122,125,128,131,134,137,140,144,148,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 broken or missing photo metadata and specifies common issues like incorrect timestamps and missing GPS.",{"category":22,"check":27,"severity":24,"summary":28},"Unique selling proposition","The skill offers significant value over default LLM behavior by providing a specialized workflow for photo metadata repair, leveraging specific Immich API calls and intelligent inference strategies.",{"category":22,"check":30,"severity":24,"summary":31},"Production readiness","The skill is production-ready, covering the complete lifecycle of metadata scanning, analysis, user-approved correction via the Immich API, and verification.",{"category":33,"check":34,"severity":24,"summary":35},"Scope","Single responsibility principle","The skill focuses exclusively on photo metadata management within the Immich ecosystem, adhering to a single, well-defined domain.",{"category":33,"check":37,"severity":24,"summary":38},"Description quality","The provided description is accurate, concise, and reflects the skill's capabilities, including specific use cases and keywords.",{"category":40,"check":41,"severity":24,"summary":42},"Invocation","Scoped tools","The skill uses specific, well-scoped tools like `ping`, `update_asset_metadata`, and SQL queries, rather than a general-purpose command executor.",{"category":44,"check":45,"severity":46,"summary":47},"Documentation","Configuration & parameter reference","info","While the SKILL.md details the workflow and logic, it does not explicitly document parameters for the `update_asset_metadata` tool or default values for any configuration aspects.",{"category":33,"check":49,"severity":24,"summary":50},"Tool naming","The tools used (`ping`, `update_asset_metadata`) are descriptive and adhere to a clear naming convention.",{"category":33,"check":52,"severity":24,"summary":53},"Minimal I/O surface","The skill's I/O is focused on the metadata task, requesting necessary information and returning structured results or logs without excessive diagnostic data.",{"category":55,"check":56,"severity":24,"summary":57},"License","License usability","The extension is licensed under the MIT License, which is a permissive open-source license.",{"category":59,"check":60,"severity":24,"summary":61},"Maintenance","Commit recency","The latest commit was on 2026-05-07, which is within the last 3 months.",{"category":59,"check":63,"severity":64,"summary":65},"Dependency Management","not_applicable","The skill's primary dependency is the Immich MCP server and its tools, which are external to the skill's direct bundle and managed separately.",{"category":67,"check":68,"severity":24,"summary":69},"Security","Secret Management","The skill requires an Immich API key but handles it via standard configuration (env var/MCP setup) and does not echo resolved secrets to stdout.",{"category":67,"check":71,"severity":24,"summary":72},"Injection","The skill's SQL queries and API calls appear to be properly parameterized, preventing injection attacks. It also includes a warning about potential issues with special characters in paths.",{"category":67,"check":74,"severity":24,"summary":75},"Transitive Supply-Chain Grenades","The skill relies on the local Immich MCP server and does not fetch external code or data at runtime.",{"category":67,"check":77,"severity":24,"summary":78},"Sandbox Isolation","The skill operates by calling the Immich MCP server and does not appear to modify files outside its designated scope or project folders.",{"category":67,"check":80,"severity":24,"summary":81},"Sandbox escape primitives","No detached processes or deny-retry loops were detected in the provided skill logic.",{"category":67,"check":83,"severity":24,"summary":84},"Data Exfiltration","The skill interacts with the local Immich instance and does not appear to exfiltrate confidential data to third parties.",{"category":67,"check":86,"severity":24,"summary":87},"Hidden Text Tricks","The provided SKILL.md content does not contain any hidden steering tricks or suspicious Unicode characters.",{"category":89,"check":90,"severity":24,"summary":91},"Hooks","Opaque code execution","The skill logic is presented as clear, readable SQL and Python snippets, with no obfuscation techniques detected.",{"category":93,"check":94,"severity":24,"summary":95},"Portability","Structural Assumption","The skill relies on the Immich MCP server and its structure, not specific user project layouts. It specifies its dependency on Immich.",{"category":97,"check":98,"severity":24,"summary":99},"Trust","Issues Attention","There were 0 issues opened and 1 issue closed in the last 90 days, indicating good maintainer responsiveness.",{"category":101,"check":102,"severity":24,"summary":103},"Versioning","Release Management","The skill has a declared version (1.1.0) in its frontmatter.",{"category":105,"check":106,"severity":24,"summary":107},"Execution","Validation","The SQL queries and proposed Python code for updating metadata appear to be properly structured and parameterized, implying validation.",{"category":67,"check":109,"severity":24,"summary":110},"Unguarded Destructive Operations","The skill explicitly states \"NEVER auto-fix\" and requires user approval before applying any changes, guarding destructive operations.",{"category":112,"check":113,"severity":24,"summary":114},"Code Execution","Error Handling","The skill clearly outlines error handling for connection issues and emphasizes user approval for fixes, suggesting a fail-closed approach.",{"category":112,"check":116,"severity":24,"summary":117},"Logging","The skill proposes to log every change made in a JSON format before applying fixes, providing an audit trail.",{"category":119,"check":120,"severity":24,"summary":121},"Compliance","GDPR","The skill operates on photo metadata and does not appear to process personal data directly, thus not posing a GDPR risk.",{"category":119,"check":123,"severity":24,"summary":124},"Target market","The skill is global in scope, operating on photo metadata and relying on a local Immich instance.",{"category":93,"check":126,"severity":24,"summary":127},"Runtime stability","The skill relies on the Immich MCP server and standard Python, making it portable across compatible environments.",{"category":44,"check":129,"severity":24,"summary":130},"README","The README file exists, is comprehensive, and clearly states the extension's purpose and capabilities.",{"category":33,"check":132,"severity":64,"summary":133},"Tool surface size","This is a single-tool extension with a specific purpose, not a collection of many tools.",{"category":40,"check":135,"severity":64,"summary":136},"Overlapping near-synonym tools","The extension utilizes a limited set of specific tools and does not exhibit overlapping synonym tools.",{"category":44,"check":138,"severity":24,"summary":139},"Phantom features","All advertised features, such as metadata scanning and repair strategies, are directly addressed in the SKILL.md and README.",{"category":141,"check":142,"severity":24,"summary":143},"Install","Installation instruction","The README provides clear installation instructions, including a copy-pasteable command for adding the plugin to the marketplace and a setup guide for the Immich connection.",{"category":145,"check":146,"severity":24,"summary":147},"Errors","Actionable error messages","The skill provides actionable error messages, particularly for connection failures, guiding the user to run the setup command.",{"category":105,"check":149,"severity":64,"summary":150},"Pinned dependencies","The skill's dependencies are primarily external (Immich MCP) and managed by the user's environment, not bundled scripts requiring pinning.",{"category":33,"check":152,"severity":24,"summary":153},"Dry-run preview","The skill mandates user approval before applying any fixes, effectively serving as a manual dry-run preview of intended changes.",{"category":155,"check":156,"severity":64,"summary":157},"Protocol","Idempotent retry & timeouts","The skill interacts with a local server and does not involve remote calls requiring explicit idempotency or timeouts within its own logic.",{"category":119,"check":159,"severity":24,"summary":160},"Telemetry opt-in","The skill does not appear to emit any telemetry, making this check not applicable.",{"category":40,"check":162,"severity":24,"summary":163},"Precise Purpose","The description clearly defines the artifact (photo metadata in Immich) and the user intent (fix broken/missing data), along with specific trigger phrases and limitations.",{"category":40,"check":165,"severity":24,"summary":166},"Concise Frontmatter","The frontmatter is concise and self-contained, clearly stating the core capability and trigger phrases within a reasonable character limit.",{"category":44,"check":168,"severity":24,"summary":169},"Concise Body","The SKILL.md is well-structured, uses SQL and Python snippets, and defers complex details to other documentation, keeping the main body concise.",{"category":171,"check":172,"severity":24,"summary":173},"Context","Progressive Disclosure","The SKILL.md outlines the workflow and links to detailed explanations for fix strategies, demonstrating progressive disclosure.",{"category":171,"check":175,"severity":64,"summary":176},"Forked exploration","This skill is not designed for deep exploration or code review; it performs a specific task and does not require `context: fork`.",{"category":22,"check":178,"severity":46,"summary":179},"Usage examples","The SKILL.md outlines the logic and proposed outputs but does not provide concrete end-to-end examples with specific inputs and outputs for the fix strategies.",{"category":22,"check":181,"severity":24,"summary":182},"Edge cases","The skill documents several failure modes, such as issues with special characters in paths, and limitations like not inferring GPS for large gaps, along with recovery/handling strategies.",{"category":112,"check":184,"severity":24,"summary":185},"Tool Fallback","The skill clearly states that the Immich MCP server is required and provides setup instructions, implying it's a primary dependency with no built-in fallback if unavailable.",{"category":187,"check":188,"severity":24,"summary":189},"Safety","Halt on unexpected state","The skill explicitly instructs to STOP if the Immich MCP ping fails, ensuring it halts on unexpected pre-state.",{"category":93,"check":191,"severity":24,"summary":192},"Cross-skill coupling","The skill is self-contained and focused on metadata repair within Immich; it does not implicitly rely on other skills.",1778686524280,"This skill scans an Immich photo library for broken or missing metadata, including dates, GPS coordinates, and camera information. It detects suspicious patterns and proposes corrections using folder structures, neighboring photos, and EXIF inference, requiring explicit user approval before applying changes via the Immich API. It also includes essential connection checks and logging.",[196,197,198,199,200,201],"Scan for broken/missing photo metadata","Detect suspicious timestamps (noon/midnight)","Infer missing GPS from neighboring photos","Correct timezone offsets using GPS location","Propose fixes with user approval","Log all applied metadata changes",[203,204,205],"Automatically applying metadata fixes without user confirmation.","Operating on photos outside of an Immich instance.","Performing general photo organization or album creation.",[207,208,209],"Metadata Repair","Data Integrity","User-Controlled Modifications",[211,212,213],"Running Immich server (v1.90+)","Immich API key","Python 3.10+ with pip","3.0.0","4.4.0","To automatically identify and help users fix common issues with photo metadata in their Immich library, ensuring dates, locations, and camera information are accurate and consistent.","The skill is highly polished with a clear purpose, robust workflow, and excellent documentation. Minor areas for improvement include explicit parameter documentation for tools and more concrete end-to-end usage examples.",95,"A high-quality skill for repairing and enhancing photo metadata within Immich, with a clear workflow and strong user safeguards.",[221,222,223,224,225],"photo-management","metadata","immich","exif","gps","global","verified",[229,230,231,232],"Fix photos with default noon or midnight timestamps.","Recover missing GPS data for geotagged trips.","Correct timezone errors on photos taken abroad.","Reconstruct missing EXIF date information for imported images.",{"codeQuality":234,"collectedAt":236,"documentation":237,"maintenance":240,"security":246,"testCoverage":248},{"hasLockfile":235},false,1778686499031,{"descriptionLength":238,"readmeSize":239},557,8637,{"closedIssues90d":241,"forks":242,"hasChangelog":235,"manifestVersion":243,"openIssues90d":8,"pushedAt":244,"stars":245},1,4,"1.1.0",1778175631000,16,{"hasNpmPackage":235,"license":247,"smitheryVerified":235},"MIT",{"hasCi":235,"hasTests":235},{"updatedAt":250},1778686524402,{"basePath":252,"githubOwner":253,"githubRepo":254,"locale":18,"slug":255,"type":256},"skills/metadata-fixer","drolosoft","immich-photo-manager","metadata-fixer","skill",true,{"_creationTime":259,"_id":260,"community":261,"display":262,"identity":266,"parentExtension":269,"providers":299,"relations":310,"tags":311,"workflow":312},1778686338567.5732,"k17fptxxsmtdk9k5x99qw7re2586n8fq",{"reviewCount":8},{"description":263,"installMethods":264,"name":265,"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":254},"Immich Photo Manager",{"basePath":267,"githubOwner":253,"githubRepo":254,"locale":18,"slug":254,"type":268},"","plugin",{"_creationTime":270,"_id":271,"community":272,"display":273,"identity":277,"providers":279,"relations":293,"tags":295,"workflow":296},1778686338567.573,"k177jqq2va7fhvpdsch9vv5cbn86nwwg",{"reviewCount":8},{"description":274,"installMethods":275,"name":276,"sourceUrl":14},"Drolosoft Marketplace - AI-powered tools by Drolosoft",{"claudeCode":12},"drolosoft-marketplace",{"basePath":267,"githubOwner":253,"githubRepo":254,"locale":18,"slug":254,"type":278},"marketplace",{"evaluate":280,"extract":288},{"promptVersionExtension":281,"promptVersionScoring":215,"score":282,"tags":283,"targetMarket":226,"tier":227},"3.1.0",98,[221,223,284,285,286,287],"ai-assistant","media","organization","mcp",{"commitSha":289,"marketplace":290,"plugin":291},"HEAD",{"name":276,"pluginCount":241},{"mcpCount":8,"provider":292,"skillCount":8},"classify",{"repoId":294},"kd71cer955pa6pzdsewzf62dt986nbtd",[284,223,287,285,286,221],{"evaluatedAt":297,"extractAt":298,"updatedAt":297},1778686361336,1778686338567,{"evaluate":300,"extract":307},{"promptVersionExtension":214,"promptVersionScoring":215,"score":218,"tags":301,"targetMarket":226,"tier":227},[223,221,302,303,304,305,306],"gallery","self-hosted","ai-search","automation","media-organization",{"commitSha":289,"license":247,"plugin":308},{"mcpCount":8,"provider":292,"skillCount":309},12,{"parentExtensionId":271,"repoId":294},[304,305,302,223,306,221,303],{"evaluatedAt":313,"extractAt":298,"updatedAt":313},1778686398961,{"evaluate":315,"extract":317},{"promptVersionExtension":214,"promptVersionScoring":215,"score":218,"tags":316,"targetMarket":226,"tier":227},[221,222,223,224,225],{"commitSha":289,"license":247},{"parentExtensionId":260,"repoId":294},{"_creationTime":320,"_id":294,"identity":321,"providers":322,"workflow":496},1778686332166.7776,{"githubOwner":253,"githubRepo":254,"sourceUrl":14},{"classify":323,"discover":479,"github":482},{"commitSha":289,"extensions":324},[325,338,381,394,402,410,418,423,431,439,447,455,463,471],{"basePath":267,"description":274,"displayName":276,"installMethods":326,"rationale":327,"selectedPaths":328,"source":337,"sourceLanguage":18,"type":278},{"claudeCode":12},"marketplace.json at .claude-plugin/marketplace.json",[329,332,334],{"path":330,"priority":331},".claude-plugin/marketplace.json","mandatory",{"path":333,"priority":331},"README.md",{"path":335,"priority":336},"LICENSE","high","rule",{"basePath":267,"description":263,"displayName":254,"installMethods":339,"license":247,"rationale":340,"selectedPaths":341,"source":337,"sourceLanguage":18,"type":268},{"claudeCode":254},"plugin manifest at .claude-plugin/plugin.json",[342,344,345,346,349,351,353,355,357,359,361,363,365,367,369,371,373,375,377,379],{"path":343,"priority":331},".claude-plugin/plugin.json",{"path":333,"priority":331},{"path":335,"priority":336},{"path":347,"priority":348},"skills/album-manager/SKILL.md","medium",{"path":350,"priority":348},"skills/auto-album-curator/SKILL.md",{"path":352,"priority":348},"skills/duplicate-report/SKILL.md",{"path":354,"priority":348},"skills/library-health-report/SKILL.md",{"path":356,"priority":348},"skills/metadata-fixer/SKILL.md",{"path":358,"priority":348},"skills/people-report/SKILL.md",{"path":360,"priority":348},"skills/photo-cleanup/SKILL.md",{"path":362,"priority":348},"skills/photo-search/SKILL.md",{"path":364,"priority":348},"skills/rotate-photos/SKILL.md",{"path":366,"priority":348},"skills/storage-optimizer/SKILL.md",{"path":368,"priority":348},"skills/timeline-gaps/SKILL.md",{"path":370,"priority":348},"skills/travel-map/SKILL.md",{"path":372,"priority":336},"commands/cleanup.md",{"path":374,"priority":336},"commands/create-album.md",{"path":376,"priority":336},"commands/immich-status.md",{"path":378,"priority":336},"commands/my-travels.md",{"path":380,"priority":336},"commands/setup-immich-photo-manager.md",{"basePath":382,"description":383,"displayName":384,"installMethods":385,"rationale":386,"selectedPaths":387,"source":337,"sourceLanguage":18,"type":256},"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",[388,390,392],{"path":389,"priority":331},"SKILL.md",{"path":391,"priority":348},"references/geographic-search-patterns.md",{"path":393,"priority":348},"references/viewer-template-spec.md",{"basePath":395,"description":396,"displayName":397,"installMethods":398,"rationale":399,"selectedPaths":400,"source":337,"sourceLanguage":18,"type":256},"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",[401],{"path":389,"priority":331},{"basePath":403,"description":404,"displayName":405,"installMethods":406,"rationale":407,"selectedPaths":408,"source":337,"sourceLanguage":18,"type":256},"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",[409],{"path":389,"priority":331},{"basePath":411,"description":412,"displayName":413,"installMethods":414,"rationale":415,"selectedPaths":416,"source":337,"sourceLanguage":18,"type":256},"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",[417],{"path":389,"priority":331},{"basePath":252,"description":10,"displayName":255,"installMethods":419,"rationale":420,"selectedPaths":421,"source":337,"sourceLanguage":18,"type":256},{"claudeCode":12},"SKILL.md frontmatter at skills/metadata-fixer/SKILL.md",[422],{"path":389,"priority":331},{"basePath":424,"description":425,"displayName":426,"installMethods":427,"rationale":428,"selectedPaths":429,"source":337,"sourceLanguage":18,"type":256},"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",[430],{"path":389,"priority":331},{"basePath":432,"description":433,"displayName":434,"installMethods":435,"rationale":436,"selectedPaths":437,"source":337,"sourceLanguage":18,"type":256},"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",[438],{"path":389,"priority":331},{"basePath":440,"description":441,"displayName":442,"installMethods":443,"rationale":444,"selectedPaths":445,"source":337,"sourceLanguage":18,"type":256},"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",[446],{"path":389,"priority":331},{"basePath":448,"description":449,"displayName":450,"installMethods":451,"rationale":452,"selectedPaths":453,"source":337,"sourceLanguage":18,"type":256},"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",[454],{"path":389,"priority":331},{"basePath":456,"description":457,"displayName":458,"installMethods":459,"rationale":460,"selectedPaths":461,"source":337,"sourceLanguage":18,"type":256},"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",[462],{"path":389,"priority":331},{"basePath":464,"description":465,"displayName":466,"installMethods":467,"rationale":468,"selectedPaths":469,"source":337,"sourceLanguage":18,"type":256},"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",[470],{"path":389,"priority":331},{"basePath":472,"description":473,"displayName":474,"installMethods":475,"rationale":476,"selectedPaths":477,"source":337,"sourceLanguage":18,"type":256},"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",[478],{"path":389,"priority":331},{"sources":480},[481],"manual",{"closedIssues90d":241,"description":483,"forks":242,"homepage":484,"license":247,"openIssues90d":8,"pushedAt":244,"readmeSize":239,"stars":245,"topics":485},"📸🧹🗺️ 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",[486,487,488,489,490,302,491,223,287,492,222,221,493,303,494,495],"albums","claude","claude-plugin","cleanup","duplicates","geolocation","mcp-server","photos","immich-plugin","python",{"classifiedAt":497,"discoverAt":498,"extractAt":499,"githubAt":499,"updatedAt":497},1778686338385,1778686332166,1778686336662,[224,225,223,222,221],{"evaluatedAt":250,"extractAt":298,"updatedAt":250},[],[504,521,539,558,578,594],{"_creationTime":505,"_id":506,"community":507,"display":508,"identity":510,"providers":511,"relations":517,"tags":518,"workflow":519},1778686338567.5754,"k17a793ns6w7k01tv43akbr3tn86m7ra",{"reviewCount":8},{"description":449,"installMethods":509,"name":450,"sourceUrl":14},{"claudeCode":12},{"basePath":448,"githubOwner":253,"githubRepo":254,"locale":18,"slug":450,"type":256},{"evaluate":512,"extract":516},{"promptVersionExtension":214,"promptVersionScoring":215,"score":513,"tags":514,"targetMarket":226,"tier":227},99,[223,221,515,305,287],"bulk-rotate",{"commitSha":289},{"parentExtensionId":260,"repoId":294},[305,515,223,287,221],{"evaluatedAt":520,"extractAt":298,"updatedAt":520},1778686641184,{"_creationTime":522,"_id":523,"community":524,"display":525,"identity":527,"providers":528,"relations":535,"tags":536,"workflow":537},1778686338567.5742,"k1732fnv0fnb1bxhz02g2erp0n86m6r9",{"reviewCount":8},{"description":412,"installMethods":526,"name":413,"sourceUrl":14},{"claudeCode":12},{"basePath":411,"githubOwner":253,"githubRepo":254,"locale":18,"slug":413,"type":256},{"evaluate":529,"extract":534},{"promptVersionExtension":214,"promptVersionScoring":215,"score":282,"tags":530,"targetMarket":226,"tier":227},[223,221,531,532,533],"library-health","data-analysis","reporting",{"commitSha":289},{"parentExtensionId":260,"repoId":294},[532,223,531,221,533],{"evaluatedAt":538,"extractAt":298,"updatedAt":538},1778686498743,{"_creationTime":540,"_id":541,"community":542,"display":543,"identity":545,"providers":546,"relations":554,"tags":555,"workflow":556},1778686338567.5752,"k17ayghah8cpdc4r6wv78gvd8x86ns4c",{"reviewCount":8},{"description":441,"installMethods":544,"name":265,"sourceUrl":14},{"claudeCode":12},{"basePath":440,"githubOwner":253,"githubRepo":254,"locale":18,"slug":442,"type":256},{"evaluate":547,"extract":553},{"promptVersionExtension":214,"promptVersionScoring":215,"score":548,"tags":549,"targetMarket":226,"tier":227},97,[223,493,550,302,551,552,222],"search","ai","cli",{"commitSha":289,"license":247},{"parentExtensionId":260,"repoId":294},[551,552,302,223,222,493,550],{"evaluatedAt":557,"extractAt":298,"updatedAt":557},1778686618843,{"_creationTime":559,"_id":560,"community":561,"display":562,"identity":564,"providers":565,"relations":574,"tags":575,"workflow":576},1778686338567.576,"k17e4g90xh14vn4xqf9y9rfc4n86mct0",{"reviewCount":8},{"description":465,"installMethods":563,"name":466,"sourceUrl":14},{"claudeCode":12},{"basePath":464,"githubOwner":253,"githubRepo":254,"locale":18,"slug":466,"type":256},{"evaluate":566,"extract":573},{"promptVersionExtension":214,"promptVersionScoring":215,"score":567,"tags":568,"targetMarket":226,"tier":572},75,[221,569,570,223,495,571],"timeline-analysis","data-quality","sql","community",{"commitSha":289},{"parentExtensionId":260,"repoId":294},[570,223,221,495,571,569],{"evaluatedAt":577,"extractAt":298,"updatedAt":577},1778686691418,{"_creationTime":579,"_id":580,"community":581,"display":582,"identity":584,"providers":585,"relations":590,"tags":591,"workflow":592},1778686338567.575,"k17bkwnghncjzk4p919n0yhqjd86n89t",{"reviewCount":8},{"description":433,"installMethods":583,"name":434,"sourceUrl":14},{"claudeCode":12},{"basePath":432,"githubOwner":253,"githubRepo":254,"locale":18,"slug":434,"type":256},{"evaluate":586,"extract":589},{"promptVersionExtension":214,"promptVersionScoring":215,"score":567,"tags":587,"targetMarket":226,"tier":572},[221,223,588,489,305],"deduplication",{"commitSha":289},{"parentExtensionId":260,"repoId":294},[305,489,588,223,221],{"evaluatedAt":593,"extractAt":298,"updatedAt":593},1778686595340,{"_creationTime":595,"_id":596,"community":597,"display":598,"identity":604,"providers":608,"relations":617,"tags":620,"workflow":621},1778683100520.3088,"k1780ejtdyfh5atysjycteerk986nqdg",{"reviewCount":8},{"description":599,"installMethods":600,"name":602,"sourceUrl":603},"Validates album directory structure, file locations, and content integrity. Use before release or whenever the user wants to check an album's structural health.",{"claudeCode":601},"bitwize-music-studio/claude-ai-music-skills","validate-album","https://github.com/bitwize-music-studio/claude-ai-music-skills",{"basePath":605,"githubOwner":606,"githubRepo":607,"locale":18,"slug":602,"type":256},"skills/validate-album","bitwize-music-studio","claude-ai-music-skills",{"evaluate":609,"extract":616},{"promptVersionExtension":214,"promptVersionScoring":215,"score":610,"tags":611,"targetMarket":226,"tier":227},100,[612,613,614,222,615],"music","validation","audio","release-prep",{"commitSha":289},{"parentExtensionId":618,"repoId":619},"k1754vkdjckrkqvz9x7tjrvhzn86n1gc","kd70cgrajsrnk5gmq60rhq30zd86nyc0",[614,222,612,615,613],{"evaluatedAt":622,"extractAt":623,"updatedAt":622},1778684303772,1778683100520]