[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"extension-skill-drolosoft-timeline-gaps-de":3,"guides-for-drolosoft-timeline-gaps":496,"similar-k17e4g90xh14vn4xqf9y9rfc4n86mct0-de":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.576,"k17e4g90xh14vn4xqf9y9rfc4n86mct0",[],{"reviewCount":8},0,{"description":10,"installMethods":11,"name":13,"sourceUrl":14},"Analyze the photo timeline to find suspicious gaps — months or years with zero or very few photos. Helps identify failed imports, missing backups, or periods where photos exist in only one ecosystem. Use when the user says \"timeline gaps\", \"missing months\", \"missing photos\", \"are there gaps\", \"what months am I missing\", \"photo timeline\", \"coverage check\", \"find missing periods\", \"when am I missing photos\", or any variation of wanting to find holes in their photo timeline.\n",{"claudeCode":12},"drolosoft/immich-photo-manager","timeline-gaps","https://github.com/drolosoft/immich-photo-manager",{"_creationTime":16,"_id":17,"extensionId":5,"locale":18,"result":19,"trustSignals":226,"workflow":242},1778686691418.5493,"kn7ep7wjbtzngbtz7brtgfjd4186ngmf","en",{"checks":20,"evaluatedAt":194,"extensionSummary":195,"features":196,"nonGoals":202,"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,48,51,54,58,62,66,70,73,76,79,82,85,88,92,96,100,104,108,111,115,119,123,126,129,132,135,138,141,145,149,152,155,159,162,165,168,171,175,178,181,184,187,191],{"category":22,"check":23,"severity":24,"summary":25},"Practical Utility","Problem relevance","pass","The description clearly states the problem of identifying suspicious gaps in photo timelines, which helps in discovering failed imports or missing backups.",{"category":22,"check":27,"severity":24,"summary":28},"Unique selling proposition","The skill offers a unique value proposition by providing an AI-driven analysis of photo timelines, going beyond simple default LLM behavior with specialized SQL queries and Python logic for gap detection and classification.",{"category":22,"check":30,"severity":24,"summary":31},"Production readiness","The skill appears production-ready, with a clear workflow, defined steps, and SQL/Python logic to address the stated use case of analyzing photo library coverage.",{"category":33,"check":34,"severity":24,"summary":35},"Scope","Single responsibility principle","The skill focuses on analyzing photo timeline gaps and coverage, a single coherent domain, without extending into unrelated areas.",{"category":33,"check":37,"severity":24,"summary":38},"Description quality","The displayed description accurately reflects the skill's purpose of analyzing photo timelines for gaps and mentions relevant trigger phrases.",{"category":40,"check":41,"severity":24,"summary":42},"Invocation","Scoped tools","The skill uses specific SQL queries and Python logic which are scoped to the task of timeline analysis, rather than a single generalist tool.",{"category":44,"check":45,"severity":46,"summary":47},"Documentation","Configuration & parameter reference","info","The SKILL.md mentions prerequisites like an API key and server URL but does not explicitly document default values or precedence order for configuration if multiple methods were available.",{"category":33,"check":49,"severity":24,"summary":50},"Tool naming","The skill does not expose user-facing tools directly; its functionality is described through SQL queries and Python logic within the SKILL.md.",{"category":33,"check":52,"severity":24,"summary":53},"Minimal I/O surface","The skill's I/O is defined by the SQL queries and the final report structure, which are focused on the analysis task without unnecessary fields.",{"category":55,"check":56,"severity":24,"summary":57},"License","License usability","The license is MIT, a permissive open-source license, declared in the LICENSE file and README.",{"category":59,"check":60,"severity":24,"summary":61},"Maintenance","Commit recency","The last commit was on May 7, 2026, which is within the last 3 months.",{"category":59,"check":63,"severity":64,"summary":65},"Dependency Management","warning","The skill uses Python 3.10+ and SQL, but there's no explicit mention of lockfiles or specific version pinning for Python dependencies, raising concerns about vulnerability updates.",{"category":67,"check":68,"severity":64,"summary":69},"Security","Secret Management","The skill requires an Immich API key and server URL, but the SKILL.md explicitly states the need for a `ping` check first, implying secrets are handled and not echoed.",{"category":67,"check":71,"severity":24,"summary":72},"Injection","The skill uses SQL queries and Python logic defined within the bundle; there's no indication of loading or executing third-party code or data at runtime.",{"category":67,"check":74,"severity":24,"summary":75},"Transitive Supply-Chain Grenades","The skill relies on bundled SQL and Python logic, with no runtime downloads or execution of external content.",{"category":67,"check":77,"severity":24,"summary":78},"Sandbox Isolation","The skill's operations are confined to data analysis via SQL and Python, with no file system modifications outside of its intended scope.",{"category":67,"check":80,"severity":24,"summary":81},"Sandbox escape primitives","There are no indications of detached-process spawns or deny-retry loops in the provided code snippets.",{"category":67,"check":83,"severity":24,"summary":84},"Data Exfiltration","The skill is read-only and focuses on local data analysis, with no outbound calls to third parties mentioned.",{"category":67,"check":86,"severity":24,"summary":87},"Hidden Text Tricks","The bundled content and descriptions appear to be free of hidden steering tricks or malicious Unicode characters.",{"category":89,"check":90,"severity":24,"summary":91},"Hooks","Opaque code execution","The SQL queries and Python logic are provided directly and are not obfuscated or dynamically fetched.",{"category":93,"check":94,"severity":24,"summary":95},"Portability","Structural Assumption","The skill makes no assumptions about the user's project structure beyond the need for a functional Immich instance and appropriate PostgreSQL environment for SQL queries.",{"category":97,"check":98,"severity":24,"summary":99},"Trust","Issues Attention","In the last 90 days, 0 issues were opened and 1 was closed, indicating good maintainer engagement.",{"category":101,"check":102,"severity":24,"summary":103},"Versioning","Release Management","The skill has a declared version (1.1.0) in the SKILL.md frontmatter.",{"category":105,"check":106,"severity":64,"summary":107},"Execution","Validation","While the SQL queries are specific, there's no explicit mention of input validation for the parameters that might be passed to these queries or the Python classification logic, potentially allowing malformed data.",{"category":67,"check":109,"severity":24,"summary":110},"Unguarded Destructive Operations","The skill is explicitly read-only and performs no destructive operations.",{"category":112,"check":113,"severity":64,"summary":114},"Code Execution","Error Handling","The SKILL.md mentions a critical check for the Immich connection, but does not detail how errors from the SQL queries or Python classification logic are handled, categorized, or reported.",{"category":112,"check":116,"severity":117,"summary":118},"Logging","not_applicable","The skill is read-only and analytical, thus does not require local audit logging for destructive actions or outbound calls.",{"category":120,"check":121,"severity":46,"summary":122},"Compliance","GDPR","The skill operates on photo metadata, which may indirectly include personal data. While not submitting to third parties, it's not explicitly sanitized before processing by the LLM.",{"category":120,"check":124,"severity":24,"summary":125},"Target market","The skill is global in scope and does not have any regional or jurisdictional logic.",{"category":93,"check":127,"severity":24,"summary":128},"Runtime stability","The skill relies on standard SQL (PostgreSQL) and Python, with no assumptions about specific editors, shells, or operating systems beyond standard interpreters.",{"category":44,"check":130,"severity":24,"summary":131},"README","The README.md file exists and clearly outlines the extension's purpose, features, and installation instructions.",{"category":33,"check":133,"severity":117,"summary":134},"Tool surface size","This is a skill, not an MCP server, and does not expose tools directly.",{"category":40,"check":136,"severity":117,"summary":137},"Overlapping near-synonym tools","As a skill, it does not expose multiple tools with overlapping functionality.",{"category":44,"check":139,"severity":24,"summary":140},"Phantom features","All advertised features, such as timeline analysis and gap detection, are supported by the provided SQL and Python logic in the SKILL.md.",{"category":142,"check":143,"severity":24,"summary":144},"Install","Installation instruction","The README provides clear installation instructions for Claude plugins and mentions prerequisites like Python and an Immich API key.",{"category":146,"check":147,"severity":64,"summary":148},"Errors","Actionable error messages","While the initial connection check provides actionable guidance, the SKILL.md does not detail error handling for the SQL queries or Python classification logic, lacking specific remediation steps for internal failures.",{"category":105,"check":150,"severity":64,"summary":151},"Pinned dependencies","The SKILL.md specifies Python 3.10+ but does not include a lockfile or explicit pinning for Python dependencies, which could lead to issues with updates or vulnerabilities.",{"category":33,"check":153,"severity":24,"summary":154},"Dry-run preview","The skill is read-only and performs no state-changing operations or outbound data transmissions, making a dry-run preview not applicable.",{"category":156,"check":157,"severity":117,"summary":158},"Protocol","Idempotent retry & timeouts","The skill is read-only and analytical, involving no remote calls or state-changing operations that would require idempotency or timeouts.",{"category":120,"check":160,"severity":24,"summary":161},"Telemetry opt-in","The skill does not emit any telemetry, so telemetry opt-in is not applicable.",{"category":40,"check":163,"severity":24,"summary":164},"Precise Purpose","The SKILL.md clearly defines the artifact (photo timeline) and user intent (find suspicious gaps, identify failures) and provides trigger phrases and boundaries.",{"category":40,"check":166,"severity":24,"summary":167},"Concise Frontmatter","The frontmatter is concise, self-contained, and effectively summarizes the core capability with relevant trigger phrases.",{"category":44,"check":169,"severity":24,"summary":170},"Concise Body","The SKILL.md body is concise, using SQL and Python snippets, and refers to external documentation for deeper material.",{"category":172,"check":173,"severity":24,"summary":174},"Context","Progressive Disclosure","The SKILL.md outlines the workflow and uses SQL/Python snippets, deferring deeper procedural details implicitly to the user's understanding of SQL/Python and Immich.",{"category":172,"check":176,"severity":117,"summary":177},"Forked exploration","This skill performs analysis and reporting, not deep exploration or code review, making the `context: fork` setting not applicable.",{"category":22,"check":179,"severity":46,"summary":180},"Usage examples","The SKILL.md provides SQL and Python code snippets for analysis, and the report format serves as an example of the outcome, but there are no end-to-end, ready-to-use invocation examples.",{"category":22,"check":182,"severity":64,"summary":183},"Edge cases","While the 'sparse' threshold adapts, the SKILL.md doesn't explicitly document other failure modes or recovery steps for issues like malformed input, missing dependencies, or rate limits.",{"category":112,"check":185,"severity":117,"summary":186},"Tool Fallback","The skill does not rely on external MCP servers; it uses standard SQL and Python, so fallbacks are not applicable.",{"category":188,"check":189,"severity":64,"summary":190},"Safety","Halt on unexpected state","Preconditions are mentioned (e.g., Immich connection), but there's no explicit instruction to halt and report on unexpected pre-state like a dirty working tree or drifted schema.",{"category":93,"check":192,"severity":117,"summary":193},"Cross-skill coupling","This skill operates independently and does not appear to rely on or cross-link to other skills.",1778686690999,"This skill analyzes photo timelines using SQL queries and Python logic to identify months with zero or very few photos, helping users detect import failures or backup issues. It provides a monthly breakdown of photos per source and classifies months as empty, sparse, single-source, or normal.",[197,198,199,200,201],"Analyze photo timeline gaps month-by-month","Identify empty or sparse months","Detect single-source dominance","Classify month status based on photo count and source","Generate a textual report of findings and recommendations",[203,204,205],"Modifying photo data","Performing any destructive operations","Connecting to services other than Immich","3.0.0","4.4.0","Analyze photo timelines to find suspicious gaps and coverage issues, aiding in the identification of failed imports, missing backups, or periods where photos exist in only one ecosystem.","The skill has a clear purpose and good documentation, but lacks explicit error handling for its core logic and dependency management details, leading to a warning severity.",75,"A skill for analyzing photo library timelines to detect gaps and coverage issues.",[213,214,215,216,217,218],"photo-management","timeline-analysis","data-quality","immich","python","sql","global","community",[222,223,224,225],"Use when investigating missing photos or timeline gaps","Use after importing from multiple sources to verify coverage","Use for periodic checks of photo library continuity","Use before deleting an import source to confirm coverage",{"codeQuality":227,"collectedAt":229,"documentation":230,"maintenance":233,"security":239,"testCoverage":241},{"hasLockfile":228},false,1778686666492,{"descriptionLength":231,"readmeSize":232},477,8637,{"closedIssues90d":234,"forks":235,"hasChangelog":228,"manifestVersion":236,"openIssues90d":8,"pushedAt":237,"stars":238},1,4,"1.1.0",1778175631000,16,{"hasNpmPackage":228,"license":240,"smitheryVerified":228},"MIT",{"hasCi":228,"hasTests":228},{"updatedAt":243},1778686691418,{"basePath":245,"githubOwner":246,"githubRepo":247,"locale":18,"slug":13,"type":248},"skills/timeline-gaps","drolosoft","immich-photo-manager","skill",true,{"_creationTime":251,"_id":252,"community":253,"display":254,"identity":258,"parentExtension":261,"providers":292,"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":286,"tags":288,"workflow":289},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":281},{"promptVersionExtension":273,"promptVersionScoring":207,"score":274,"tags":275,"targetMarket":219,"tier":280},"3.1.0",98,[213,216,276,277,278,279],"ai-assistant","media","organization","mcp","verified",{"commitSha":282,"marketplace":283,"plugin":284},"HEAD",{"name":268,"pluginCount":234},{"mcpCount":8,"provider":285,"skillCount":8},"classify",{"repoId":287},"kd71cer955pa6pzdsewzf62dt986nbtd",[276,216,279,277,278,213],{"evaluatedAt":290,"extractAt":291,"updatedAt":290},1778686361336,1778686338567,{"evaluate":293,"extract":301},{"promptVersionExtension":206,"promptVersionScoring":207,"score":294,"tags":295,"targetMarket":219,"tier":280},95,[216,213,296,297,298,299,300],"gallery","self-hosted","ai-search","automation","media-organization",{"commitSha":282,"license":240,"plugin":302},{"mcpCount":8,"provider":285,"skillCount":303},12,{"parentExtensionId":263,"repoId":287},[298,299,296,216,300,213,297],{"evaluatedAt":307,"extractAt":291,"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":282},{"parentExtensionId":252,"repoId":287},{"_creationTime":314,"_id":287,"identity":315,"providers":316,"workflow":490},1778686332166.7776,{"githubOwner":246,"githubRepo":247,"sourceUrl":14},{"classify":317,"discover":473,"github":476},{"commitSha":282,"extensions":318},[319,332,375,388,396,404,412,420,428,436,444,452,460,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":397,"description":398,"displayName":399,"installMethods":400,"rationale":401,"selectedPaths":402,"source":331,"sourceLanguage":18,"type":248},"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",[403],{"path":383,"priority":325},{"basePath":405,"description":406,"displayName":407,"installMethods":408,"rationale":409,"selectedPaths":410,"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",[411],{"path":383,"priority":325},{"basePath":413,"description":414,"displayName":415,"installMethods":416,"rationale":417,"selectedPaths":418,"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",[419],{"path":383,"priority":325},{"basePath":421,"description":422,"displayName":423,"installMethods":424,"rationale":425,"selectedPaths":426,"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",[427],{"path":383,"priority":325},{"basePath":429,"description":430,"displayName":431,"installMethods":432,"rationale":433,"selectedPaths":434,"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",[435],{"path":383,"priority":325},{"basePath":437,"description":438,"displayName":439,"installMethods":440,"rationale":441,"selectedPaths":442,"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",[443],{"path":383,"priority":325},{"basePath":445,"description":446,"displayName":447,"installMethods":448,"rationale":449,"selectedPaths":450,"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",[451],{"path":383,"priority":325},{"basePath":453,"description":454,"displayName":455,"installMethods":456,"rationale":457,"selectedPaths":458,"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",[459],{"path":383,"priority":325},{"basePath":245,"description":10,"displayName":13,"installMethods":461,"rationale":462,"selectedPaths":463,"source":331,"sourceLanguage":18,"type":248},{"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,216,279,486,487,213,488,297,489,217],"albums","claude","claude-plugin","cleanup","duplicates","geolocation","mcp-server","metadata","photos","immich-plugin",{"classifiedAt":491,"discoverAt":492,"extractAt":493,"githubAt":493,"updatedAt":491},1778686338385,1778686332166,1778686336662,[215,216,213,217,218,214],{"evaluatedAt":243,"extractAt":291,"updatedAt":243},[],[498,515,533,551,567,598],{"_creationTime":499,"_id":500,"community":501,"display":502,"identity":504,"providers":505,"relations":511,"tags":512,"workflow":513},1778686338567.5754,"k17a793ns6w7k01tv43akbr3tn86m7ra",{"reviewCount":8},{"description":446,"installMethods":503,"name":447,"sourceUrl":14},{"claudeCode":12},{"basePath":445,"githubOwner":246,"githubRepo":247,"locale":18,"slug":447,"type":248},{"evaluate":506,"extract":510},{"promptVersionExtension":206,"promptVersionScoring":207,"score":507,"tags":508,"targetMarket":219,"tier":280},99,[216,213,509,299,279],"bulk-rotate",{"commitSha":282},{"parentExtensionId":252,"repoId":287},[299,509,216,279,213],{"evaluatedAt":514,"extractAt":291,"updatedAt":514},1778686641184,{"_creationTime":516,"_id":517,"community":518,"display":519,"identity":521,"providers":522,"relations":529,"tags":530,"workflow":531},1778686338567.5742,"k1732fnv0fnb1bxhz02g2erp0n86m6r9",{"reviewCount":8},{"description":406,"installMethods":520,"name":407,"sourceUrl":14},{"claudeCode":12},{"basePath":405,"githubOwner":246,"githubRepo":247,"locale":18,"slug":407,"type":248},{"evaluate":523,"extract":528},{"promptVersionExtension":206,"promptVersionScoring":207,"score":274,"tags":524,"targetMarket":219,"tier":280},[216,213,525,526,527],"library-health","data-analysis","reporting",{"commitSha":282},{"parentExtensionId":252,"repoId":287},[526,216,525,213,527],{"evaluatedAt":532,"extractAt":291,"updatedAt":532},1778686498743,{"_creationTime":534,"_id":535,"community":536,"display":537,"identity":540,"providers":541,"relations":547,"tags":548,"workflow":549},1778686338567.5745,"k1737wckn9mggk2vdm8r0mvpqs86n7q2",{"reviewCount":8},{"description":414,"installMethods":538,"name":539,"sourceUrl":14},{"claudeCode":12},"Metadata Fixer",{"basePath":413,"githubOwner":246,"githubRepo":247,"locale":18,"slug":415,"type":248},{"evaluate":542,"extract":546},{"promptVersionExtension":206,"promptVersionScoring":207,"score":294,"tags":543,"targetMarket":219,"tier":280},[213,487,216,544,545],"exif","gps",{"commitSha":282,"license":240},{"parentExtensionId":252,"repoId":287},[544,545,216,487,213],{"evaluatedAt":550,"extractAt":291,"updatedAt":550},1778686524402,{"_creationTime":552,"_id":553,"community":554,"display":555,"identity":557,"providers":558,"relations":563,"tags":564,"workflow":565},1778686338567.575,"k17bkwnghncjzk4p919n0yhqjd86n89t",{"reviewCount":8},{"description":430,"installMethods":556,"name":431,"sourceUrl":14},{"claudeCode":12},{"basePath":429,"githubOwner":246,"githubRepo":247,"locale":18,"slug":431,"type":248},{"evaluate":559,"extract":562},{"promptVersionExtension":206,"promptVersionScoring":207,"score":210,"tags":560,"targetMarket":219,"tier":220},[213,216,561,483,299],"deduplication",{"commitSha":282},{"parentExtensionId":252,"repoId":287},[299,483,561,216,213],{"evaluatedAt":566,"extractAt":291,"updatedAt":566},1778686595340,{"_creationTime":568,"_id":569,"community":570,"display":571,"identity":577,"providers":581,"relations":591,"tags":594,"workflow":595},1778699018122.8064,"k178yxvt3g9djb8ph907q3tv1186n8ex",{"reviewCount":8},{"description":572,"installMethods":573,"name":575,"sourceUrl":576},"Select and optimize embedding models for semantic search and RAG applications. Use when choosing embedding models, implementing chunking strategies, or optimizing embedding quality for specific domains.",{"claudeCode":574},"wshobson/agents","embedding-strategies","https://github.com/wshobson/agents",{"basePath":578,"githubOwner":579,"githubRepo":580,"locale":18,"slug":575,"type":248},"plugins/llm-application-dev/skills/embedding-strategies","wshobson","agents",{"evaluate":582,"extract":590},{"promptVersionExtension":206,"promptVersionScoring":207,"score":583,"tags":584,"targetMarket":219,"tier":280},100,[585,586,587,588,589,217],"embeddings","rag","semantic-search","vector-databases","llm-applications",{"commitSha":282},{"parentExtensionId":592,"repoId":593},"k1719fyk9jrke6aq23wbyf8ej586n3af","kd74de64zj0axtg5b8t7eqqe2x86nske",[585,589,217,586,587,588],{"evaluatedAt":596,"extractAt":597,"updatedAt":596},1778701750946,1778699018122,{"_creationTime":599,"_id":600,"community":601,"display":602,"identity":608,"providers":613,"relations":623,"tags":627,"workflow":628},1778699877608.8755,"k1797ahn9dp86gj0yfve225q2n86mv13",{"reviewCount":8},{"description":603,"installMethods":604,"name":606,"sourceUrl":607},"AWS Cloud Development Kit (CDK) Experte für den Aufbau von Cloud-Infrastruktur mit TypeScript/Python. Verwenden Sie dies beim Erstellen von CDK-Stacks, Definieren von CDK-Konstrukten, Implementieren von Infrastructure as Code oder wenn der Benutzer CDK, CloudFormation, IaC, cdk synth, cdk deploy erwähnt oder AWS-Infrastruktur programmatisch definieren möchte. Behandelt CDK-App-Struktur, Konstruktmuster, Stack-Komposition und Bereitstellungs-Workflows.",{"claudeCode":605},"zxkane/aws-skills","aws-cdk-development","https://github.com/zxkane/aws-skills",{"basePath":609,"githubOwner":610,"githubRepo":611,"locale":612,"slug":606,"type":248},"plugins/aws-cdk/skills/aws-cdk-development","zxkane","aws-skills","de",{"evaluate":614,"extract":622},{"promptVersionExtension":206,"promptVersionScoring":207,"score":583,"tags":615,"targetMarket":219,"tier":280},[616,617,618,217,619,620,621],"aws","cdk","typescript","iac","cloudformation","infrastructure",{"commitSha":282},{"parentExtensionId":624,"repoId":625,"translatedFrom":626},"k177paz2fgaa1r1kfhgb2esr1n86my7m","kd7708aervxaq6vqq9tdf93s2586mcqy","k174bzyyax9v1t5bm0m98bfqyh86m8v8",[616,617,620,619,621,217,618],{"evaluatedAt":629,"extractAt":630,"updatedAt":631},1778699774404,1778699647844,1778699877608]