[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7DFNAGF3MHMVTJGS2Y4T073":3,"skill-same:01M7DFNAGF3MHMVTJGS2Y4T073":79},{"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":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":40,"commitSha":41,"skillDirectory":42,"forksCount":14,"repositoryHtmlUrl":43,"repositoryHomepageUrl":6,"ownerHtmlUrl":44,"ownerBlogUrl":45,"ownerDescription":46,"updatedAt":47,"install":48,"resources":60},"01M7DFNAGF3MHMVTJGS2Y4T073","golang-samber-hot",null,"In-memory caching in Golang using samber\u002Fhot — eviction algorithms (LRU, LFU, TinyLFU, W-TinyLFU, S3FIFO, ARC, TwoQueue, SIEVE, FIFO), TTL, cache loaders, sharding, stale-while-revalidate, missing key caching, and Prometheus metrics. Apply when using or adopting samber\u002Fhot, when the codebase imports github.com\u002Fsamber\u002Fhot, or when the project repeatedly loads the same medium-to-low cardinality resources at high frequency and needs to reduce latency or backend pressure.","heynemann\u002Fomp-marketplace","heynemann","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F60965?v=4","01M7DFBD9ZDB2J2QE7R4AR0PES","Bernardo Heynemann","01M7DFBDAM3NXF540P210W3NYT",0,"MIT","https:\u002F\u002Fgithub.com\u002Fheynemann\u002Fomp-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fbase\u002Fskills\u002Fgolang-samber-hot\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: golang-samber-hot\ndescription: \"In-memory caching in Golang using samber\u002Fhot — eviction algorithms (LRU, LFU, TinyLFU, W-TinyLFU, S3FIFO, ARC, TwoQueue, SIEVE, FIFO), TTL, cache loaders, sharding, stale-while-revalidate, missing key caching, and Prometheus metrics. Apply when using or adopting samber\u002Fhot, when the codebase imports github.com\u002Fsamber\u002Fhot, or when the project repeatedly loads the same medium-to-low cardinality resources at high frequency and needs to reduce latency or backend pressure.\"\nuser-invocable: true\nlicense: MIT\ncompatibility: Designed for Claude Code, Codex or similar harness, and for projects using Golang.\nmetadata:\n  author: samber\n  version: \"1.1.2\"\n  openclaw:\n    emoji: \"🔥\"\n    homepage: https:\u002F\u002Fgithub.com\u002Fsamber\u002Fcc-skills-golang\n    requires:\n      bins:\n        - go\n    install: []\n    skill-library-version: \"0.13.0\"\nallowed-tools: Read Edit Write Glob Grep Bash(go:*) Bash(golangci-lint:*) Bash(git:*) Agent WebFetch mcp__context7__resolve-library-id mcp__context7__query-docs AskUserQuestion Bash(godig:*) Bash(gopls:*) LSP mcp__gopls__*\npaths:\n  - \"**\u002F*.go\"\n---\n\n**Persona:** You are a Go engineer who treats caching as a system design decision. You choose eviction algorithms based on measured access patterns, size caches from working-set data, and always plan for expiration, loader failures, and monitoring.\n\n# Using samber\u002Fhot for In-Memory Caching in Go\n\nGeneric, type-safe in-memory caching library for Go 1.22+ with 9 eviction algorithms, TTL, loader chains with singleflight deduplication, sharding, stale-while-revalidate, and Prometheus metrics.\n\n**Official Resources:**\n\n- [pkg.go.dev\u002Fgithub.com\u002Fsamber\u002Fhot](https:\u002F\u002Fpkg.go.dev\u002Fgithub.com\u002Fsamber\u002Fhot)\n- [github.com\u002Fsamber\u002Fhot](https:\u002F\u002Fgithub.com\u002Fsamber\u002Fhot)\n\nThis skill is not exhaustive — refer to library documentation and code examples for more information:\n\n- For Go package docs, symbols, versions, importers, and known vulnerabilities, → See `samber\u002Fcc-skills-golang@golang-pkg-go-dev` skill (`godig`), preferred over Context7 for Go package facts.\n- To navigate this library's usage in your own code (definitions, call sites, diagnostics), → See `samber\u002Fcc-skills-golang@golang-gopls` skill (`gopls`).\n- Context7 remains a fallback for docs not indexed on pkg.go.dev.\n\n```bash\ngo get -u github.com\u002Fsamber\u002Fhot\n```\n\n## Algorithm Selection\n\nPick based on your access pattern — the wrong algorithm wastes memory or tanks hit rate.\n\n| Algorithm | Constant | Best for | Avoid when |\n| --- | --- | --- | --- |\n| **W-TinyLFU** | `hot.WTinyLFU` | General-purpose, mixed workloads (default) | You need simplicity for debugging |\n| **LRU** | `hot.LRU` | Recency-dominated (sessions, recent queries) | Frequency matters (scan pollution evicts hot items) |\n| **LFU** | `hot.LFU` | Frequency-dominated (popular products, DNS) | Access patterns shift (stale popular items never evict) |\n| **TinyLFU** | `hot.TinyLFU` | Read-heavy with frequency bias | Write-heavy (admission filter overhead) |\n| **S3FIFO** | `hot.S3FIFO` | High throughput, scan-resistant | Small caches (\u003C1000 items) |\n| **ARC** | `hot.ARC` | Self-tuning, unknown patterns | Memory-constrained (2x tracking overhead) |\n| **TwoQueue** | `hot.TwoQueue` | Mixed with hot\u002Fcold split | Tuning complexity is unacceptable |\n| **SIEVE** | `hot.SIEVE` | Simple scan-resistant LRU alternative | Highly skewed access patterns |\n| **FIFO** | `hot.FIFO` | Simple, predictable eviction order | Hit rate matters (no frequency\u002Frecency awareness) |\n\n**Decision shortcut:** Start with `hot.WTinyLFU`. Switch only when profiling shows the miss rate is too high for your SLO.\n\nFor detailed algorithm comparison, benchmarks, and a decision tree, see [Algorithm Guide](.\u002Freferences\u002Falgorithm-guide.md).\n\n## Core Usage\n\n### Basic Cache with TTL\n\n```go\nimport \"github.com\u002Fsamber\u002Fhot\"\n\ncache := hot.NewHotCache[string, *User](hot.WTinyLFU, 10_000).\n    WithTTL(5 * time.Minute).\n    WithJanitor().\n    Build()\ndefer cache.StopJanitor()\n\ncache.Set(\"user:123\", user)\ncache.SetWithTTL(\"session:abc\", session, 30*time.Minute)\n\nvalue, found, err := cache.Get(\"user:123\")\n```\n\n### Loader Pattern (Read-Through)\n\nLoaders fetch missing keys automatically with singleflight deduplication — concurrent `Get()` calls for the same missing key share one loader invocation:\n\n```go\ncache := hot.NewHotCache[int, *User](hot.WTinyLFU, 10_000).\n    WithTTL(5 * time.Minute).\n    WithLoaders(func(ids []int) (map[int]*User, error) {\n        return db.GetUsersByIDs(ctx, ids) \u002F\u002F batch query\n    }).\n    WithJanitor().\n    Build()\ndefer cache.StopJanitor()\n\nuser, found, err := cache.Get(123) \u002F\u002F triggers loader on miss\n```\n\n## Capacity Sizing\n\nBefore setting the cache capacity, estimate how many items fit in the memory budget:\n\n1. **Estimate single-item size** — estimate size of the struct, add the size of heap-allocated fields (slices, maps, strings). Include the key size. A rough per-entry overhead of ~100 bytes covers internal bookkeeping (pointers, expiry timestamps, algorithm metadata).\n2. **Ask the developer** how much memory is dedicated to this cache in production (e.g., 256 MB, 1 GB). This depends on the service's total memory and what else shares the process.\n3. **Compute capacity** — `capacity = memoryBudget \u002F estimatedItemSize`. Round down to leave headroom.\n\n```\nExample: *User struct ~500 bytes + string key ~50 bytes + overhead ~100 bytes = ~650 bytes\u002Fentry\n         256 MB budget → 256_000_000 \u002F 650 ≈ 393,000 items\n```\n\nIf the item size is unknown, ask the developer to measure it with a unit test that allocates N items and checks `runtime.ReadMemStats`. Guessing capacity without measuring leads to OOM or wasted memory.\n\n## Common Mistakes\n\n1. **Forgetting `WithJanitor()`** — without it, expired entries stay in memory until the algorithm evicts them. Always chain `.WithJanitor()` in the builder and `defer cache.StopJanitor()`.\n2. **Calling `SetMissing()` without missing cache config** — panics at runtime. Enable `WithMissingCache(algorithm, capacity)` or `WithMissingSharedCache()` in the builder first.\n3. **`WithoutLocking()` + `WithJanitor()`** — mutually exclusive, panics. `WithoutLocking()` is only safe for single-goroutine access without background cleanup.\n4. **Oversized cache** — a cache holding everything is a map with overhead. Size to your working set (typically 10-20% of total data). Monitor hit rate to validate.\n5. **Ignoring loader errors** — `Get()` returns `(zero, false, err)` on loader failure. Always check `err`, not just `found`.\n\n## Best Practices\n\n1. Always set TTL — unbounded caches serve stale data indefinitely because there is no signal to refresh\n2. Use `WithJitter(lambda, upperBound)` to spread expirations — without jitter, items created together expire together, causing thundering herd on the loader\n3. Monitor with `WithPrometheusMetrics(cacheName)` — hit rate below 80% usually means the cache is undersized or the algorithm is wrong for the workload\n4. Use `WithCopyOnRead(fn)` \u002F `WithCopyOnWrite(fn)` for mutable values — without copies, callers mutate cached objects and corrupt shared state\n\nFor advanced patterns (revalidation, sharding, missing cache, monitoring setup), see [Production Patterns](.\u002Freferences\u002Fproduction-patterns.md).\n\nFor the complete API surface, see [API Reference](.\u002Freferences\u002Fapi-reference.md).\n\nIf you encounter a bug or unexpected behavior in samber\u002Fhot, open an issue at \u003Chttps:\u002F\u002Fgithub.com\u002Fsamber\u002Fhot\u002Fissues>.\n\n## Cross-References\n\n- → See `samber\u002Fcc-skills-golang@golang-performance` skill for general caching strategy and when to use in-memory cache vs Redis vs CDN\n- → See `samber\u002Fcc-skills-golang@golang-observability` skill for Prometheus metrics integration and monitoring\n- → See `samber\u002Fcc-skills-golang@golang-database` skill for database query patterns that pair with cache loaders\n- → See `samber\u002Fcc-skills@promql-cli` skill for querying Prometheus cache metrics via CLI\n","**Persona:** You are a Go engineer who treats caching as a system design decision. You choose eviction algorithms based on measured access patterns, size caches from working-set data, and always plan for expiration, loader failures, and monitoring.\n\n# Using samber\u002Fhot for In-Memory Caching in Go\n\nGeneric, type-safe in-memory caching library for Go 1.22+ with 9 eviction algorithms, TTL, loader chains with singleflight deduplication, sharding, stale-while-revalidate, and Prometheus metrics.\n\n**Official Resources:**\n\n- [pkg.go.dev\u002Fgithub.com\u002Fsamber\u002Fhot](https:\u002F\u002Fpkg.go.dev\u002Fgithub.com\u002Fsamber\u002Fhot)\n- [github.com\u002Fsamber\u002Fhot](https:\u002F\u002Fgithub.com\u002Fsamber\u002Fhot)\n\nThis skill is not exhaustive — refer to library documentation and code examples for more information:\n\n- For Go package docs, symbols, versions, importers, and known vulnerabilities, → See `samber\u002Fcc-skills-golang@golang-pkg-go-dev` skill (`godig`), preferred over Context7 for Go package facts.\n- To navigate this library's usage in your own code (definitions, call sites, diagnostics), → See `samber\u002Fcc-skills-golang@golang-gopls` skill (`gopls`).\n- Context7 remains a fallback for docs not indexed on pkg.go.dev.\n\n```bash\ngo get -u github.com\u002Fsamber\u002Fhot\n```\n\n## Algorithm Selection\n\nPick based on your access pattern — the wrong algorithm wastes memory or tanks hit rate.\n\n| Algorithm | Constant | Best for | Avoid when |\n| --- | --- | --- | --- |\n| **W-TinyLFU** | `hot.WTinyLFU` | General-purpose, mixed workloads (default) | You need simplicity for debugging |\n| **LRU** | `hot.LRU` | Recency-dominated (sessions, recent queries) | Frequency matters (scan pollution evicts hot items) |\n| **LFU** | `hot.LFU` | Frequency-dominated (popular products, DNS) | Access patterns shift (stale popular items never evict) |\n| **TinyLFU** | `hot.TinyLFU` | Read-heavy with frequency bias | Write-heavy (admission filter overhead) |\n| **S3FIFO** | `hot.S3FIFO` | High throughput, scan-resistant | Small caches (\u003C1000 items) |\n| **ARC** | `hot.ARC` | Self-tuning, unknown patterns | Memory-constrained (2x tracking overhead) |\n| **TwoQueue** | `hot.TwoQueue` | Mixed with hot\u002Fcold split | Tuning complexity is unacceptable |\n| **SIEVE** | `hot.SIEVE` | Simple scan-resistant LRU alternative | Highly skewed access patterns |\n| **FIFO** | `hot.FIFO` | Simple, predictable eviction order | Hit rate matters (no frequency\u002Frecency awareness) |\n\n**Decision shortcut:** Start with `hot.WTinyLFU`. Switch only when profiling shows the miss rate is too high for your SLO.\n\nFor detailed algorithm comparison, benchmarks, and a decision tree, see [Algorithm Guide](.\u002Freferences\u002Falgorithm-guide.md).\n\n## Core Usage\n\n### Basic Cache with TTL\n\n```go\nimport \"github.com\u002Fsamber\u002Fhot\"\n\ncache := hot.NewHotCache[string, *User](hot.WTinyLFU, 10_000).\n    WithTTL(5 * time.Minute).\n    WithJanitor().\n    Build()\ndefer cache.StopJanitor()\n\ncache.Set(\"user:123\", user)\ncache.SetWithTTL(\"session:abc\", session, 30*time.Minute)\n\nvalue, found, err := cache.Get(\"user:123\")\n```\n\n### Loader Pattern (Read-Through)\n\nLoaders fetch missing keys automatically with singleflight deduplication — concurrent `Get()` calls for the same missing key share one loader invocation:\n\n```go\ncache := hot.NewHotCache[int, *User](hot.WTinyLFU, 10_000).\n    WithTTL(5 * time.Minute).\n    WithLoaders(func(ids []int) (map[int]*User, error) {\n        return db.GetUsersByIDs(ctx, ids) \u002F\u002F batch query\n    }).\n    WithJanitor().\n    Build()\ndefer cache.StopJanitor()\n\nuser, found, err := cache.Get(123) \u002F\u002F triggers loader on miss\n```\n\n## Capacity Sizing\n\nBefore setting the cache capacity, estimate how many items fit in the memory budget:\n\n1. **Estimate single-item size** — estimate size of the struct, add the size of heap-allocated fields (slices, maps, strings). Include the key size. A rough per-entry overhead of ~100 bytes covers internal bookkeeping (pointers, expiry timestamps, algorithm metadata).\n2. **Ask the developer** how much memory is dedicated to this cache in production (e.g., 256 MB, 1 GB). This depends on the service's total memory and what else shares the process.\n3. **Compute capacity** — `capacity = memoryBudget \u002F estimatedItemSize`. Round down to leave headroom.\n\n```\nExample: *User struct ~500 bytes + string key ~50 bytes + overhead ~100 bytes = ~650 bytes\u002Fentry\n         256 MB budget → 256_000_000 \u002F 650 ≈ 393,000 items\n```\n\nIf the item size is unknown, ask the developer to measure it with a unit test that allocates N items and checks `runtime.ReadMemStats`. Guessing capacity without measuring leads to OOM or wasted memory.\n\n## Common Mistakes\n\n1. **Forgetting `WithJanitor()`** — without it, expired entries stay in memory until the algorithm evicts them. Always chain `.WithJanitor()` in the builder and `defer cache.StopJanitor()`.\n2. **Calling `SetMissing()` without missing cache config** — panics at runtime. Enable `WithMissingCache(algorithm, capacity)` or `WithMissingSharedCache()` in the builder first.\n3. **`WithoutLocking()` + `WithJanitor()`** — mutually exclusive, panics. `WithoutLocking()` is only safe for single-goroutine access without background cleanup.\n4. **Oversized cache** — a cache holding everything is a map with overhead. Size to your working set (typically 10-20% of total data). Monitor hit rate to validate.\n5. **Ignoring loader errors** — `Get()` returns `(zero, false, err)` on loader failure. Always check `err`, not just `found`.\n\n## Best Practices\n\n1. Always set TTL — unbounded caches serve stale data indefinitely because there is no signal to refresh\n2. Use `WithJitter(lambda, upperBound)` to spread expirations — without jitter, items created together expire together, causing thundering herd on the loader\n3. Monitor with `WithPrometheusMetrics(cacheName)` — hit rate below 80% usually means the cache is undersized or the algorithm is wrong for the workload\n4. Use `WithCopyOnRead(fn)` \u002F `WithCopyOnWrite(fn)` for mutable values — without copies, callers mutate cached objects and corrupt shared state\n\nFor advanced patterns (revalidation, sharding, missing cache, monitoring setup), see [Production Patterns](.\u002Freferences\u002Fproduction-patterns.md).\n\nFor the complete API surface, see [API Reference](.\u002Freferences\u002Fapi-reference.md).\n\nIf you encounter a bug or unexpected behavior in samber\u002Fhot, open an issue at \u003Chttps:\u002F\u002Fgithub.com\u002Fsamber\u002Fhot\u002Fissues>.\n\n## Cross-References\n\n- → See `samber\u002Fcc-skills-golang@golang-performance` skill for general caching strategy and when to use in-memory cache vs Redis vs CDN\n- → See `samber\u002Fcc-skills-golang@golang-observability` skill for Prometheus metrics integration and monitoring\n- → See `samber\u002Fcc-skills-golang@golang-database` skill for database query patterns that pair with cache loaders\n- → See `samber\u002Fcc-skills@promql-cli` skill for querying Prometheus cache metrics via CLI\n",{"name":5,"paths":24,"license":15,"metadata":26,"description":7,"allowed-tools":37,"compatibility":38,"user-invocable":39},[25],"**\u002F*.go",{"author":27,"version":28,"openclaw":29},"samber","1.1.2",{"emoji":30,"install":31,"homepage":32,"requires":33,"skill-library-version":36},"🔥",[],"https:\u002F\u002Fgithub.com\u002Fsamber\u002Fcc-skills-golang",{"bins":34},[35],"go","0.13.0","Read Edit Write Glob Grep Bash(go:*) Bash(golangci-lint:*) Bash(git:*) Agent WebFetch mcp__context7__resolve-library-id mcp__context7__query-docs AskUserQuestion Bash(godig:*) Bash(gopls:*) LSP mcp__gopls__*","Designed for Claude Code, Codex or similar harness, and for projects using Golang.",true,"main","2147d79c9cd764770418b462c29634bcdc710096","plugins\u002Fbase\u002Fskills\u002Fgolang-samber-hot","https:\u002F\u002Fgithub.com\u002Fheynemann\u002Fomp-marketplace","https:\u002F\u002Fgithub.com\u002Fheynemann","http:\u002F\u002Fwww.thumbor.org","CTO @ Flutter Brazil | Former Meta & Coinbase","2026-09-29 21:26:05",{"source":8,"skillName":5,"commands":49,"prompt":59,"zipAvailable":39},[50,53,56],{"tool":51,"command":52},"npx","npx skills add heynemann\u002Fomp-marketplace --skill golang-samber-hot",{"tool":54,"command":55},"bunx","bunx skills add heynemann\u002Fomp-marketplace --skill golang-samber-hot",{"tool":57,"command":58},"pnpm","pnpm dlx skills add heynemann\u002Fomp-marketplace --skill golang-samber-hot","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fheynemann\u002Fomp-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fbase\u002Fskills\u002Fgolang-samber-hot\u002FSKILL.md",[61,67,71,75],{"path":62,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":65,"sourceHtmlUrl":66},"evals\u002Fevals.json","REFERENCE","参考文档",16674,"https:\u002F\u002Fgithub.com\u002Fheynemann\u002Fomp-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fbase\u002Fskills\u002Fgolang-samber-hot\u002Fevals\u002Fevals.json",{"path":68,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":69,"sourceHtmlUrl":70},"references\u002Falgorithm-guide.md",9427,"https:\u002F\u002Fgithub.com\u002Fheynemann\u002Fomp-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fbase\u002Fskills\u002Fgolang-samber-hot\u002Freferences\u002Falgorithm-guide.md",{"path":72,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":73,"sourceHtmlUrl":74},"references\u002Fapi-reference.md",6711,"https:\u002F\u002Fgithub.com\u002Fheynemann\u002Fomp-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fbase\u002Fskills\u002Fgolang-samber-hot\u002Freferences\u002Fapi-reference.md",{"path":76,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":77,"sourceHtmlUrl":78},"references\u002Fproduction-patterns.md",7552,"https:\u002F\u002Fgithub.com\u002Fheynemann\u002Fomp-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fbase\u002Fskills\u002Fgolang-samber-hot\u002Freferences\u002Fproduction-patterns.md",[80,87,94,101,108,115],{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":19},"01M7DFXDYP0N6P8KR0AF7C0TDK","writing-for-agents","Writing documents for agents. Use when creating or editing skills, or modifying AGENTS.md or CLAUDE.md.","https:\u002F\u002Fgithub.com\u002Fheynemann\u002Fomp-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fbase\u002Fskills\u002Fwriting-for-agents\u002FSKILL.md",[],[],{"skillNo":88,"name":89,"nameZh":6,"description":90,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":93,"publishedAt":19},"01M7DFX9C5B0T1T0AVDCWNR5P2","write-skill","Use when creating, designing, or fixing an agent skill (SKILL.md pack) — triggers include \"write a skill\", \"make me a skill\", \"create a skill\", skill directories, and skills that fail to trigger or fire on the wrong tasks.","https:\u002F\u002Fgithub.com\u002Fheynemann\u002Fomp-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fbase\u002Fskills\u002Fwrite-skill\u002FSKILL.md",[],[],{"skillNo":95,"name":96,"nameZh":6,"description":97,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":19},"01M7DFX64VSTQV0CSGYR76MPZF","write-agent","Use when creating, designing, or fixing an omp subagent (task agent) — triggers include \"write an agent\", \"make me an agent\", \"create a subagent\", agent `.md` definitions, and agents that misbehave when spawned via task.","https:\u002F\u002Fgithub.com\u002Fheynemann\u002Fomp-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fbase\u002Fskills\u002Fwrite-agent\u002FSKILL.md",[],[],{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":107,"publishedAt":19},"01M7DFX22JEY7ZN9EDESM732K5","wizard","Generate an interactive bash wizard that walks a human through steps only they can perform. Use when provisioning infrastructure, setting up credentials or CI secrets, walking an unfamiliar third-party dashboard, or running a one-off migration or cutover. Don't invoke this for steps the agent can perform itself.","https:\u002F\u002Fgithub.com\u002Fheynemann\u002Fomp-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fbase\u002Fskills\u002Fwizard\u002FSKILL.md",[],[],{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":114,"publishedAt":19},"01M7DFWYXR5V2CY2BPDAAS19R1","wayfinder","Plan a huge chunk of work (more than one agent session can hold) as a shared map of decision tickets on your issue tracker, and resolve them one at a time until the way to the destination is clear.","https:\u002F\u002Fgithub.com\u002Fheynemann\u002Fomp-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fbase\u002Fskills\u002Fwayfinder\u002FSKILL.md",[],[],{"skillNo":116,"name":117,"nameZh":6,"description":118,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":121,"publishedAt":19},"01M7DFWXFFMBKV294WS66S475V","wait-what","Stop. That last message did not land: re-pitch it.","https:\u002F\u002Fgithub.com\u002Fheynemann\u002Fomp-marketplace\u002Fblob\u002Fmain\u002Fplugins\u002Fbase\u002Fskills\u002Fwait-what\u002FSKILL.md",[],[]]