[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6PRGNJRCJ4J1KBERBC8T2DP":3,"skill-same:01M6PRGNJRCJ4J1KBERBC8T2DP":78},{"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":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":47,"commitSha":48,"skillDirectory":49,"forksCount":14,"repositoryHtmlUrl":50,"repositoryHomepageUrl":6,"ownerHtmlUrl":51,"ownerBlogUrl":52,"ownerDescription":6,"updatedAt":53,"install":54,"resources":67},"01M6PRGNJRCJ4J1KBERBC8T2DP","redis-clustering",null,"Redis Cluster and replication guidance covering hash tags for multi-key operations, avoiding CROSSSLOT errors, and reading from replicas to scale read-heavy workloads. Use when designing keys for a sharded Redis Cluster, debugging CROSSSLOT errors on MGET \u002F SDIFF \u002F pipelines, configuring a multi-key transaction in a cluster, or routing reads to replicas for caches, analytics, or dashboards.","headmktlucca-ui\u002Fneuroads-lp","headmktlucca-ui","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F247379838?v=4","01M6PDVAV6M1W96D1SR1PDF8CS","NeuroAds","01M6PDVAZ4P281GNDKD45CYTF5",0,"MIT","https:\u002F\u002Fgithub.com\u002Fheadmktlucca-ui\u002Fneuroads-lp\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fredis-clustering\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"redis clustering","redis","clustering","cluster","for","keys","sdiff","redis cluster","errors","reading","multi","replication","debugging","tags","transaction","guidance","use","operations","read","routing","2026-11-10 10:12:30",false,"---\nname: redis-clustering\ndescription: Redis Cluster and replication guidance covering hash tags for multi-key operations, avoiding CROSSSLOT errors, and reading from replicas to scale read-heavy workloads. Use when designing keys for a sharded Redis Cluster, debugging CROSSSLOT errors on MGET \u002F SDIFF \u002F pipelines, configuring a multi-key transaction in a cluster, or routing reads to replicas for caches, analytics, or dashboards.\nlicense: MIT\nmetadata:\n  author: Redis, Inc.\n  version: \"0.1.0\"\n---\n\n# Redis Clustering\n\nGuidance for designing keys and routing reads in a sharded Redis Cluster (and in standalone primary\u002Freplica replication). Covers the two failure modes that bite most new cluster users: `CROSSSLOT` errors on multi-key operations, and overloading primaries with read traffic.\n\n## When to apply\n\n- Designing keys for a Redis Cluster deployment.\n- Debugging a `CROSSSLOT` error on `MGET`, `SDIFF`, transactions, or pipelines.\n- Implementing transactions \u002F Lua scripts that touch multiple keys.\n- Scaling out read traffic without adding shards.\n\n## 1. Hash tags for multi-key operations\n\nRedis Cluster distributes keys across 16,384 slots by hashing the key name. Any command that touches **multiple keys** (`MGET`, `SDIFF`, `SUNIONSTORE`, transactions, pipelines, Lua scripts with multiple `KEYS[]`) requires all keys to live on the **same slot** — otherwise the server returns a `CROSSSLOT` error.\n\nHash tags force this: the part between `{` and `}` is the only thing hashed for slot assignment, so two keys sharing a hash tag always land together.\n\n```python\n# Same slot — multi-key ops work\nredis.set(\"{user:1001}:profile\",  \"...\")\nredis.set(\"{user:1001}:settings\", \"...\")\nredis.lmove(\"{user:1001}:pending\", \"{user:1001}:processed\", \"LEFT\", \"RIGHT\")\n```\n\n```python\n# Different keys, no hash tag — CROSSSLOT on multi-key commands in cluster mode\nredis.set(\"user:1001:profile\",  \"...\")\nredis.set(\"user:1001:settings\", \"...\")\npipe = redis.pipeline()\npipe.get(\"user:1001:profile\")\npipe.get(\"user:1001:settings\")\npipe.execute()  # CROSSSLOT error in cluster\n```\n\nRules of thumb:\n\n- **Use a tag scoped to the meaningful entity**, e.g. `{user:1001}`. Avoid bare `{1001}` — unrelated namespaces (`purchase:{1001}`, `employee:{1001}`) would all collide on the same slot.\n- **Only tag where you actually need multi-key ops.** Tagging everything creates hotspots and defeats the point of sharding.\n- A single-key command on a hash-tagged key works fine, so adding tags later is incremental — but renaming keys in production is painful, so plan tagging up front for entities you'll group.\n\nSee [references\u002Fhash-tags.md](references\u002Fhash-tags.md).\n\n## 2. Read replicas for read-heavy workloads\n\nIf reads dominate writes, route them to replicas to free primary capacity. Works both in Redis Cluster (each shard has 1+ replica) and in standalone primary\u002Freplica replication.\n\n```python\n# Redis Cluster: enable replica reads on the client\nfrom redis.cluster import RedisCluster\n\nrc = RedisCluster(host=\"localhost\", port=6379, read_from_replicas=True)\nrc.set(\"key\", \"value\")     # → primary\nvalue = rc.get(\"key\")       # → may be served by a replica\n```\n\nFor non-cluster setups, point two clients at the right nodes:\n\n```python\nprimary = Redis(host=\"primary-host\", port=6379)\nreplica = Redis(host=\"replica-host\", port=6379)\nprimary.set(\"key\", \"value\")\nvalue = replica.get(\"key\")\n```\n\nThe trade-off is consistency: **replicas are eventually consistent**. Don't read your own writes from a replica; don't use replica reads for anything that requires strict freshness (financial balances, idempotency state). Good fits: cache layers, analytics, dashboards, recommendation feeds.\n\nSee [references\u002Fread-replicas.md](references\u002Fread-replicas.md).\n\n## References\n\n- [Redis Cluster spec — hash tags](https:\u002F\u002Fredis.io\u002Fdocs\u002Flatest\u002Foperate\u002Foss_and_stack\u002Freference\u002Fcluster-spec\u002F#hash-tags)\n- [Redis: multi-key operations in cluster](https:\u002F\u002Fredis.io\u002Fdocs\u002Flatest\u002Foperate\u002Frs\u002Fdatabases\u002Fdurability-ha\u002Fclustering\u002F#multikey-operations)\n- [Redis: Replication](https:\u002F\u002Fredis.io\u002Fdocs\u002Flatest\u002Foperate\u002Foss_and_stack\u002Fmanagement\u002Freplication\u002F)\n","# Redis Clustering\n\nGuidance for designing keys and routing reads in a sharded Redis Cluster (and in standalone primary\u002Freplica replication). Covers the two failure modes that bite most new cluster users: `CROSSSLOT` errors on multi-key operations, and overloading primaries with read traffic.\n\n## When to apply\n\n- Designing keys for a Redis Cluster deployment.\n- Debugging a `CROSSSLOT` error on `MGET`, `SDIFF`, transactions, or pipelines.\n- Implementing transactions \u002F Lua scripts that touch multiple keys.\n- Scaling out read traffic without adding shards.\n\n## 1. Hash tags for multi-key operations\n\nRedis Cluster distributes keys across 16,384 slots by hashing the key name. Any command that touches **multiple keys** (`MGET`, `SDIFF`, `SUNIONSTORE`, transactions, pipelines, Lua scripts with multiple `KEYS[]`) requires all keys to live on the **same slot** — otherwise the server returns a `CROSSSLOT` error.\n\nHash tags force this: the part between `{` and `}` is the only thing hashed for slot assignment, so two keys sharing a hash tag always land together.\n\n```python\n# Same slot — multi-key ops work\nredis.set(\"{user:1001}:profile\",  \"...\")\nredis.set(\"{user:1001}:settings\", \"...\")\nredis.lmove(\"{user:1001}:pending\", \"{user:1001}:processed\", \"LEFT\", \"RIGHT\")\n```\n\n```python\n# Different keys, no hash tag — CROSSSLOT on multi-key commands in cluster mode\nredis.set(\"user:1001:profile\",  \"...\")\nredis.set(\"user:1001:settings\", \"...\")\npipe = redis.pipeline()\npipe.get(\"user:1001:profile\")\npipe.get(\"user:1001:settings\")\npipe.execute()  # CROSSSLOT error in cluster\n```\n\nRules of thumb:\n\n- **Use a tag scoped to the meaningful entity**, e.g. `{user:1001}`. Avoid bare `{1001}` — unrelated namespaces (`purchase:{1001}`, `employee:{1001}`) would all collide on the same slot.\n- **Only tag where you actually need multi-key ops.** Tagging everything creates hotspots and defeats the point of sharding.\n- A single-key command on a hash-tagged key works fine, so adding tags later is incremental — but renaming keys in production is painful, so plan tagging up front for entities you'll group.\n\nSee [references\u002Fhash-tags.md](references\u002Fhash-tags.md).\n\n## 2. Read replicas for read-heavy workloads\n\nIf reads dominate writes, route them to replicas to free primary capacity. Works both in Redis Cluster (each shard has 1+ replica) and in standalone primary\u002Freplica replication.\n\n```python\n# Redis Cluster: enable replica reads on the client\nfrom redis.cluster import RedisCluster\n\nrc = RedisCluster(host=\"localhost\", port=6379, read_from_replicas=True)\nrc.set(\"key\", \"value\")     # → primary\nvalue = rc.get(\"key\")       # → may be served by a replica\n```\n\nFor non-cluster setups, point two clients at the right nodes:\n\n```python\nprimary = Redis(host=\"primary-host\", port=6379)\nreplica = Redis(host=\"replica-host\", port=6379)\nprimary.set(\"key\", \"value\")\nvalue = replica.get(\"key\")\n```\n\nThe trade-off is consistency: **replicas are eventually consistent**. Don't read your own writes from a replica; don't use replica reads for anything that requires strict freshness (financial balances, idempotency state). Good fits: cache layers, analytics, dashboards, recommendation feeds.\n\nSee [references\u002Fread-replicas.md](references\u002Fread-replicas.md).\n\n## References\n\n- [Redis Cluster spec — hash tags](https:\u002F\u002Fredis.io\u002Fdocs\u002Flatest\u002Foperate\u002Foss_and_stack\u002Freference\u002Fcluster-spec\u002F#hash-tags)\n- [Redis: multi-key operations in cluster](https:\u002F\u002Fredis.io\u002Fdocs\u002Flatest\u002Foperate\u002Frs\u002Fdatabases\u002Fdurability-ha\u002Fclustering\u002F#multikey-operations)\n- [Redis: Replication](https:\u002F\u002Fredis.io\u002Fdocs\u002Flatest\u002Foperate\u002Foss_and_stack\u002Fmanagement\u002Freplication\u002F)\n",{"name":5,"license":15,"metadata":44,"description":7},{"author":45,"version":46},"Redis, Inc.","0.1.0","main","7a940b8e5af16c95e5c190a524421d32fc7445a9",".claude\u002Fskills\u002Fredis-clustering","https:\u002F\u002Fgithub.com\u002Fheadmktlucca-ui\u002Fneuroads-lp","https:\u002F\u002Fgithub.com\u002Fheadmktlucca-ui","https:\u002F\u002Fneuroads.com.br","2026-08-12 00:42:44",{"source":8,"skillName":5,"commands":55,"prompt":65,"zipAvailable":66},[56,59,62],{"tool":57,"command":58},"npx","npx skills add headmktlucca-ui\u002Fneuroads-lp --skill redis-clustering",{"tool":60,"command":61},"bunx","bunx skills add headmktlucca-ui\u002Fneuroads-lp --skill redis-clustering",{"tool":63,"command":64},"pnpm","pnpm dlx skills add headmktlucca-ui\u002Fneuroads-lp --skill redis-clustering","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fheadmktlucca-ui\u002Fneuroads-lp\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fredis-clustering\u002FSKILL.md",true,[68,74],{"path":69,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":72,"sourceHtmlUrl":73},"references\u002Fhash-tags.md","REFERENCE","参考文档",2552,"https:\u002F\u002Fgithub.com\u002Fheadmktlucca-ui\u002Fneuroads-lp\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fredis-clustering\u002Freferences\u002Fhash-tags.md",{"path":75,"resourceType":70,"resourceTypeDesc":71,"sizeBytes":76,"sourceHtmlUrl":77},"references\u002Fread-replicas.md",1187,"https:\u002F\u002Fgithub.com\u002Fheadmktlucca-ui\u002Fneuroads-lp\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fredis-clustering\u002Freferences\u002Fread-replicas.md",[79,104,128,154,172,207],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":93,"publishedAt":39},"01M6PTDCZTXTGSTX4RFK901YSZ","xunit-skill","Generates xUnit.net tests in C#. Covers Fact\u002FTheory, constructor injection, IClassFixture, and FluentAssertions. Use when user mentions \"xUnit\", \"[Fact]\", \"[Theory]\", \"Assert.Equal\", \"C# xUnit\". Triggers on: \"xUnit\", \"[Fact]\", \"[Theory]\", \"Assert.Equal C#\", \"xUnit.net\".","https:\u002F\u002Fgithub.com\u002Fheadmktlucca-ui\u002Fneuroads-lp\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fxunit-skill\u002FSKILL.md",[85,90],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",{"categoryNo":91,"categoryName":92,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000023","Skill与智能体开发",[94,95,96,97,98,35,99,100,101,102,103],"xunit","xunit skill","testing","injection","user","tests","triggers","unit","unit-testing","C#",{"skillNo":105,"name":106,"nameZh":6,"description":107,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":112,"publishedAt":39},"01M6PTCB59ZTG5FTMWGPYEMMBP","xcuitest-skill","Generates XCUITest UI tests for iOS\u002FiPadOS apps in Swift. Apple's native testing framework for reliable, fast UI automation. Supports local simulators and TestMu AI cloud real devices. Use when user mentions \"XCUITest\", \"XCTest\", \"iOS UI test\", \"Swift test\", \"XCUIApplication\". Triggers on: \"XCUITest\", \"XCTest UI\", \"iOS UI test\", \"Swift UI test\", \"XCUIApplication\", \"TestMu\".","https:\u002F\u002Fgithub.com\u002Fheadmktlucca-ui\u002Fneuroads-lp\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fxcuitest-skill\u002FSKILL.md",[110,111],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},{"categoryNo":91,"categoryName":92,"taxonomyType":88,"taxonomyTypeDesc":89},[113,114,96,115,116,117,118,119,35,120,121,122,123,124,99,100,125,126,23,127],"xcuitest","xcuitest skill","automation","test","testing framework","ios","devices","mobile","mobile-testing","ui test","local","apple","apps","native","objective",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":138,"publishedAt":39},"01M6PTATMNTY9NF4J7KSR76YK6","world-builder","Create and manage generative game zones for Dorothy's Pokemon-style world. Use this skill when creating, updating, or designing game worlds via MCP tools.","https:\u002F\u002Fgithub.com\u002Fheadmktlucca-ui\u002Fneuroads-lp\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fworld-builder\u002FSKILL.md",[134,137],{"categoryNo":135,"categoryName":136,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000015","视觉设计",{"categoryNo":91,"categoryName":92,"taxonomyType":88,"taxonomyTypeDesc":89},[139,140,141,142,143,144,145,146,35,147,148,149,150,151,152,23,153],"builder","world","world builder","MCP","create","mcp tools","Tools","game","pokemon","manage","style","via","theme","zone","generative",{"skillNo":155,"name":156,"nameZh":6,"description":157,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":158,"categories":159,"keywords":162,"publishedAt":39},"01M6PT9Z92JTSQEHE1QR0NNW5F","webdriverio-skill","Generates WebdriverIO (WDIO) automation tests in JavaScript or TypeScript. Supports local and TestMu AI cloud. Use when user mentions \"WebdriverIO\", \"WDIO\", \"wdio.conf\", \"browser.url\", \"$\", \"$$\". Triggers on: \"WebdriverIO\", \"WDIO\", \"wdio\", \"browser.$\".","https:\u002F\u002Fgithub.com\u002Fheadmktlucca-ui\u002Fneuroads-lp\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwebdriverio-skill\u002FSKILL.md",[160,161],{"categoryNo":86,"categoryName":87,"taxonomyType":88,"taxonomyTypeDesc":89},{"categoryNo":91,"categoryName":92,"taxonomyType":88,"taxonomyTypeDesc":89},[163,96,164,115,165,166,167,168,98,35,169,123,99,100,170,171],"webdriverio skill","typescript","javascript","browser","cloud","e2e","e2e-testing","URL","conf",{"skillNo":173,"name":174,"nameZh":6,"description":175,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":176,"categories":177,"keywords":187,"publishedAt":39},"01M6PT9NVK36ZWCQ69YXK3FR4K","web-design-guidelines","Web platform design and accessibility guidelines. Use when building web interfaces, auditing accessibility, implementing responsive layouts, or reviewing web UI code. Triggers on tasks involving HTML, CSS, web components, WCAG compliance, responsive design, or web performance.","https:\u002F\u002Fgithub.com\u002Fheadmktlucca-ui\u002Fneuroads-lp\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fweb\u002FSKILL.md",[178,181,182],{"categoryNo":179,"categoryName":180,"taxonomyType":88,"taxonomyTypeDesc":89},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":135,"categoryName":136,"taxonomyType":88,"taxonomyTypeDesc":89},{"categoryNo":183,"categoryName":184,"taxonomyType":185,"taxonomyTypeDesc":186},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,100,206],"design","web","guidelines","web design guidelines","web design","css","performance","components","web components","tasks","code","web performance","ui","platform design","html","responsive design","responsive","platform","implementing",{"skillNo":208,"name":209,"nameZh":6,"description":210,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":211,"categories":212,"keywords":215,"publishedAt":39},"01M6PT9A3JKRE3X34276F2FW5R","watchos-design-guidelines","Apple Human Interface Guidelines for Apple Watch. Use when building watchOS apps, complications, or workout features. Triggers on tasks involving Watch UI, Digital Crown, glanceable interfaces, or wrist-based interactions.","https:\u002F\u002Fgithub.com\u002Fheadmktlucca-ui\u002Fneuroads-lp\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Fwatchos\u002FSKILL.md",[213,214],{"categoryNo":135,"categoryName":136,"taxonomyType":88,"taxonomyTypeDesc":89},{"categoryNo":183,"categoryName":184,"taxonomyType":185,"taxonomyTypeDesc":186},[188,190,216,197,200,35,217,218,124,205,219,100,125,220,23,221,222],"watchos design guidelines","workout","human","watch","interface","platform-design","features"]