[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6AE2AS5B07RN9Y6K8EMQHVK":3,"skill-same:01M6AE2AS5B07RN9Y6K8EMQHVK":70},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":41,"linkOnly":42,"markdownContent":43,"markdownBody":44,"frontMatter":45,"refName":46,"commitSha":47,"skillDirectory":48,"forksCount":49,"repositoryHtmlUrl":50,"repositoryHomepageUrl":51,"ownerHtmlUrl":52,"ownerBlogUrl":53,"ownerDescription":54,"updatedAt":55,"install":56,"resources":69},"01M6AE2AS5B07RN9Y6K8EMQHVK","qdrant-sliding-time-window",null,"Guides sliding time window scaling in Qdrant. Use when someone asks 'only recent data matters', 'how to expire old vectors', 'time-based data rotation', 'delete old data efficiently', 'social media feed search', 'news search', 'log search with retention', or 'how to keep only last N months of data'.","github\u002Fawesome-copilot","github","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F9919?v=4","01M6AC83DS133TPXFSP1DHNCC6","GitHub","01M6AD3PBDYPK7NVFJNJ66Y8RS",41081,"MIT","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fqdrant-scaling\u002Fscaling-data-volume\u002Fsliding-time-window\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40],"window","Qdrant","qdrant sliding time window","time","when","delete","rotation","last","with","keep","retention","guides","how to","scaling","social","log","only","use","social media","Media","data","search","2026-11-10 10:12:30",false,"---\nname: qdrant-sliding-time-window\ndescription: \"Guides sliding time window scaling in Qdrant. Use when someone asks 'only recent data matters', 'how to expire old vectors', 'time-based data rotation', 'delete old data efficiently', 'social media feed search', 'news search', 'log search with retention', or 'how to keep only last N months of data'.\"\n---\n\n# Scaling with a Sliding Time Window\n\nUse when only recent data needs fast search -- social media posts, news articles, support tickets, logs, job listings. Old data either becomes irrelevant or can tolerate slower access.\n\nThree strategies: **shard rotation** (recommended), **collection rotation** (when per-period config differs), and **filter-and-delete** (simplest, for continuous cleanup).\n\n\n## Shard Rotation (Recommended)\n\nUse when: data has natural time boundaries (daily, weekly, monthly). Preferred because queries span all time periods in one request without application-level fan-out. [User-defined sharding](https:\u002F\u002Fsearch.qdrant.tech\u002Fmd\u002Fdocumentation\u002Foperations\u002Fdistributed_deployment\u002F?s=user-defined-sharding)\n\n1. Create a collection with user-defined sharding enabled\n2. Create one shard key per time period (e.g., `2025-01`, `2025-02`, ..., `2025-06`)\n3. Ingest data into the current period's shard key\n4. When a new period starts, create a new shard key and redirect writes\n5. Delete the oldest shard key outside the retention window\n\n- Deleting a shard key reclaims all resources instantly (no fragmentation, no optimizer overhead)\n- Pre-create the next period's shard key before rotation to avoid write disruption\n- Use `shard_key_selector` at query time to search only specific periods for efficiency\n- Shard keys can be placed on specific nodes for hot\u002Fcold tiering\n\n\n## Collection Rotation (Alias Swap)\n\nUse when: you need per-period collection configuration (e.g., different quantization or storage settings). [Collection aliases](https:\u002F\u002Fsearch.qdrant.tech\u002Fmd\u002Fdocumentation\u002Fmanage-data\u002Fcollections\u002F?s=collection-aliases)\n\n1. Create one collection per time period, point a write alias at the newest\n2. Query across all active collections in parallel, merge results client-side\n3. When a new period starts, create the new collection and swap the write alias [Switch collection](https:\u002F\u002Fsearch.qdrant.tech\u002Fmd\u002Fdocumentation\u002Fmanage-data\u002Fcollections\u002F?s=switch-collection)\n4. Drop the oldest collection outside the window\n\nTrade-off vs shard rotation: allows per-collection config differences, but requires application-level fan-out and more operational overhead.\n\n\n## Filter-and-Delete\n\nUse when: data arrives continuously without clear time boundaries, or you want the simplest setup.\n\n1. Store a `timestamp` payload on every point, create a payload index on it [Payload index](https:\u002F\u002Fsearch.qdrant.tech\u002Fmd\u002Fdocumentation\u002Fmanage-data\u002Findexing\u002F?s=payload-index)\n2. Filter to the desired window at query time using `range` condition [Range filter](https:\u002F\u002Fsearch.qdrant.tech\u002Fmd\u002Fdocumentation\u002Fsearch\u002Ffiltering\u002F?s=range)\n3. Periodically delete expired points using delete-by-filter [Delete points](https:\u002F\u002Fsearch.qdrant.tech\u002Fmd\u002Fdocumentation\u002Fmanage-data\u002Fpoints\u002F?s=delete-points)\n\n- Run cleanup during off-peak hours in batches (10k-50k points) to avoid optimizer locks\n- Deletes are not free: tombstoned points degrade search until optimizer compacts segments\n- Does not reclaim disk instantly (compaction is asynchronous)\n\n\n## Hot\u002FCold Tiers\n\nUse when: recent data needs fast in-RAM search, older data should remain searchable at lower performance.\n\n- **Shard rotation:** place current shard key on fast-storage nodes, move older shard keys to cheaper nodes via shard placement. All queries still go through a single collection.\n- **Collection rotation:** keep current collection in RAM (`always_ram: true`), move older collections to mmap\u002Fon-disk vectors. [Quantization](https:\u002F\u002Fsearch.qdrant.tech\u002Fmd\u002Fdocumentation\u002Fmanage-data\u002Fquantization\u002F)\n\n\n## What NOT to Do\n\n- Do not use filter-and-delete for high-volume time-series with millions of daily deletes (use rotation instead)\n- Do not forget to index the timestamp field (range filters without an index cause full scans)\n- Do not use collection rotation when shard rotation would suffice (unnecessary fan-out complexity)\n- Do not drop a shard key or collection before verifying its period is fully outside the retention window\n- Do not skip pre-creating the next period's shard key or collection (write failures during rotation are hard to recover)\n","# Scaling with a Sliding Time Window\n\nUse when only recent data needs fast search -- social media posts, news articles, support tickets, logs, job listings. Old data either becomes irrelevant or can tolerate slower access.\n\nThree strategies: **shard rotation** (recommended), **collection rotation** (when per-period config differs), and **filter-and-delete** (simplest, for continuous cleanup).\n\n\n## Shard Rotation (Recommended)\n\nUse when: data has natural time boundaries (daily, weekly, monthly). Preferred because queries span all time periods in one request without application-level fan-out. [User-defined sharding](https:\u002F\u002Fsearch.qdrant.tech\u002Fmd\u002Fdocumentation\u002Foperations\u002Fdistributed_deployment\u002F?s=user-defined-sharding)\n\n1. Create a collection with user-defined sharding enabled\n2. Create one shard key per time period (e.g., `2025-01`, `2025-02`, ..., `2025-06`)\n3. Ingest data into the current period's shard key\n4. When a new period starts, create a new shard key and redirect writes\n5. Delete the oldest shard key outside the retention window\n\n- Deleting a shard key reclaims all resources instantly (no fragmentation, no optimizer overhead)\n- Pre-create the next period's shard key before rotation to avoid write disruption\n- Use `shard_key_selector` at query time to search only specific periods for efficiency\n- Shard keys can be placed on specific nodes for hot\u002Fcold tiering\n\n\n## Collection Rotation (Alias Swap)\n\nUse when: you need per-period collection configuration (e.g., different quantization or storage settings). [Collection aliases](https:\u002F\u002Fsearch.qdrant.tech\u002Fmd\u002Fdocumentation\u002Fmanage-data\u002Fcollections\u002F?s=collection-aliases)\n\n1. Create one collection per time period, point a write alias at the newest\n2. Query across all active collections in parallel, merge results client-side\n3. When a new period starts, create the new collection and swap the write alias [Switch collection](https:\u002F\u002Fsearch.qdrant.tech\u002Fmd\u002Fdocumentation\u002Fmanage-data\u002Fcollections\u002F?s=switch-collection)\n4. Drop the oldest collection outside the window\n\nTrade-off vs shard rotation: allows per-collection config differences, but requires application-level fan-out and more operational overhead.\n\n\n## Filter-and-Delete\n\nUse when: data arrives continuously without clear time boundaries, or you want the simplest setup.\n\n1. Store a `timestamp` payload on every point, create a payload index on it [Payload index](https:\u002F\u002Fsearch.qdrant.tech\u002Fmd\u002Fdocumentation\u002Fmanage-data\u002Findexing\u002F?s=payload-index)\n2. Filter to the desired window at query time using `range` condition [Range filter](https:\u002F\u002Fsearch.qdrant.tech\u002Fmd\u002Fdocumentation\u002Fsearch\u002Ffiltering\u002F?s=range)\n3. Periodically delete expired points using delete-by-filter [Delete points](https:\u002F\u002Fsearch.qdrant.tech\u002Fmd\u002Fdocumentation\u002Fmanage-data\u002Fpoints\u002F?s=delete-points)\n\n- Run cleanup during off-peak hours in batches (10k-50k points) to avoid optimizer locks\n- Deletes are not free: tombstoned points degrade search until optimizer compacts segments\n- Does not reclaim disk instantly (compaction is asynchronous)\n\n\n## Hot\u002FCold Tiers\n\nUse when: recent data needs fast in-RAM search, older data should remain searchable at lower performance.\n\n- **Shard rotation:** place current shard key on fast-storage nodes, move older shard keys to cheaper nodes via shard placement. All queries still go through a single collection.\n- **Collection rotation:** keep current collection in RAM (`always_ram: true`), move older collections to mmap\u002Fon-disk vectors. [Quantization](https:\u002F\u002Fsearch.qdrant.tech\u002Fmd\u002Fdocumentation\u002Fmanage-data\u002Fquantization\u002F)\n\n\n## What NOT to Do\n\n- Do not use filter-and-delete for high-volume time-series with millions of daily deletes (use rotation instead)\n- Do not forget to index the timestamp field (range filters without an index cause full scans)\n- Do not use collection rotation when shard rotation would suffice (unnecessary fan-out complexity)\n- Do not drop a shard key or collection before verifying its period is fully outside the retention window\n- Do not skip pre-creating the next period's shard key or collection (write failures during rotation are hard to recover)\n",{"name":5,"description":7},"main","5269f7ea2d6c3a9bfda5ed878b6726cf509121fd","skills\u002Fqdrant-scaling\u002Fscaling-data-volume\u002Fsliding-time-window",5344,"https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot","https:\u002F\u002Fawesome-copilot.github.com\u002F","https:\u002F\u002Fgithub.com\u002Fgithub","https:\u002F\u002Fgithub.com\u002Fabout","How people build software.","2026-11-13 02:05:36",{"source":8,"skillName":5,"commands":57,"prompt":67,"zipAvailable":68},[58,61,64],{"tool":59,"command":60},"npx","npx skills add github\u002Fawesome-copilot --skill qdrant-sliding-time-window",{"tool":62,"command":63},"bunx","bunx skills add github\u002Fawesome-copilot --skill qdrant-sliding-time-window",{"tool":65,"command":66},"pnpm","pnpm dlx skills add github\u002Fawesome-copilot --skill qdrant-sliding-time-window","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fqdrant-scaling\u002Fscaling-data-volume\u002Fsliding-time-window\u002FSKILL.md",true,[],[71,103,131,161,194,211],{"skillNo":72,"name":73,"nameZh":6,"description":74,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":75,"categories":76,"keywords":85,"publishedAt":41},"01M70KXZNX9ES38N2A8M58ZZMZ","supabase-rls-policies","Write, review, and test Supabase Row Level Security (RLS) policies so that one user cannot read or change another user's rows. Use when creating or changing tables, policies, views, or security definer functions in a Supabase project, when reviewing a migration that touches RLS, or when asked to prove user isolation with pgTAP tests that sign in as two users.","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fsupabase-rls-policies\u002FSKILL.md",[77,82],{"categoryNo":78,"categoryName":79,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":83,"categoryName":84,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000023","Skill与智能体开发",[86,87,88,89,90,23,91,92,93,94,95,96,97,98,99,100,36,101,102,27],"supabase","rls","supabase rls","supabase rls policies","project","review","change","read","write","security","isolation","tables","as","tests","prove","users","functions",{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":110,"publishedAt":41},"01M70KWA5YWXDV6V8DZ19E3T2Y","skill-distribution-audit","Audit a skill collection before release or investigate installer omissions, archived\u002Ftemplate leakage, duplicate identities, and manifest drift. Reconcile the intended public source set, distribution manifest, and actual discovery output for a specified consumer version. Includes a deterministic set-comparison helper.","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fskill-distribution-audit\u002FSKILL.md",[109],{"categoryNo":83,"categoryName":84,"taxonomyType":80,"taxonomyTypeDesc":81},[111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130],"distribution","skill distribution audit","audit","SET","deterministic","installer","for","discovery","comparison","helper","manifest","version","collection","drift","output","investigate","duplicate","template","release","reconcile",{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":135,"sourceHtmlUrl":136,"categories":137,"keywords":143,"publishedAt":41},"01M70KCJPFVW7PPQ49CC5R8JGK","logicapps-custom-code-net10-migration","Migrate Azure Logic Apps Standard local-function custom-code projects from .NET 8 to .NET 10. Use for legacy Logic Apps custom-code workspace upgrades, project\u002Fpackage configuration, custom-worker settings, publication, and integrated VS Code debugging. Not for ordinary .NET applications, standalone Azure Functions, Consumption workflows, or cloud deployment.","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Flogicapps-custom-code-net10-migration\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Flogicapps-custom-code-net10-migration\u002FSKILL.md",[138],{"categoryNo":139,"categoryName":140,"taxonomyType":141,"taxonomyTypeDesc":142},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[144,145,146,147,148,149,117,90,150,151,152,153,154,155,156,36,157,158,159,160],"custom","code","logicapps custom code net10 migration","migration","projects","standalone","deployment","applications","local","azure","worker","upgrades","package","apps","Legacy","debugging","workflows",{"skillNo":162,"name":163,"nameZh":6,"description":164,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":165,"sourceHtmlUrl":166,"categories":167,"keywords":172,"publishedAt":41},"01M6AEBN37RQMXJ3298PEY7PG1","winmd-api-search","Find and explore Windows desktop APIs. Use when building features that need platform capabilities — camera, file access, notifications, UI controls, AI\u002FML, sensors, networking, etc. Discovers the right API for a task and retrieves full type details (methods, properties, events, enumeration values).","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fwinmd-api-search\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fwinmd-api-search\u002FSKILL.md",[168,171],{"categoryNo":169,"categoryName":170,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":139,"categoryName":140,"taxonomyType":141,"taxonomyTypeDesc":142},[173,40,174,175,176,177,178,179,180,181,182,183,184,185,186,23,187,188,189,190,191,117,192,193],"winmd api search","api","windows","desktop","file access","enumeration","ui","ml","file","networking","capabilities","notifications","explore","access","features","full","camera","events","platform","methods","controls",{"skillNo":195,"name":196,"nameZh":6,"description":197,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":198,"licenseFileUrl":199,"sourceHtmlUrl":200,"categories":201,"keywords":207,"publishedAt":41},"01M6AE571R3SC1ZGE202B3NB5S","resemble-detect","Deepfake detection and media safety — detect AI-generated audio, images, video, and text, trace synthesis sources, apply watermarks, verify speaker identity, and analyze media intelligence using Resemble AI","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fresemble-detect\u002FLICENSE","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fresemble-detect\u002FSKILL.md",[202,203,206],{"categoryNo":169,"categoryName":170,"taxonomyType":80,"taxonomyTypeDesc":81},{"categoryNo":204,"categoryName":205,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":83,"categoryName":84,"taxonomyType":80,"taxonomyTypeDesc":81},[208,114,181,209,210],"resemble detect","https","identity",{"skillNo":212,"name":213,"nameZh":6,"description":214,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":198,"licenseFileUrl":215,"sourceHtmlUrl":216,"categories":217,"keywords":222,"publishedAt":41},"01M6AE30BSK2HCY4TQQ22Z8JRD","quality-playbook","Run a complete quality engineering audit on any codebase. Derives behavioral requirements from the code, generates spec-traced functional tests, runs a three-pass code review with regression tests, executes a multi-model spec audit (Council of Three), and produces a consolidated bug report with TDD-verified patches. Finds the 35% of real defects that structural code review alone cannot catch. Works with any language. Trigger on 'quality playbook', 'spec audit', 'Council of Three', 'fitness-to-purpose', or 'coverage theater'.","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fquality-playbook\u002FLICENSE.txt","https:\u002F\u002Fgithub.com\u002Fgithub\u002Fawesome-copilot\u002Fblob\u002Fmain\u002Fskills\u002Fquality-playbook\u002FSKILL.md",[218,221],{"categoryNo":219,"categoryName":220,"taxonomyType":80,"taxonomyTypeDesc":81},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":83,"categoryName":84,"taxonomyType":80,"taxonomyTypeDesc":81},[223,224,225,226,145,91,9,113,227,228,209,229,230,231,232,233,234,235,236,237,238,239,99,240,241,242,243],"playbook","quality playbook","quality","code review","tdd","run","report","spec","bug report","council","engineering","functional","spec audit","bug","verified","multi-model","three","coverage","model","regression","structural"]