[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M79ZPX5C9B3WW2STEMRHZHFK":3,"skill-same:01M79ZPX5C9B3WW2STEMRHZHFK":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},"01M79ZPX5C9B3WW2STEMRHZHFK","golang-samber-lo",null,"Functional programming helpers for Golang using samber\u002Flo — 500+ type-safe generic functions for slices, maps, channels, strings, math, tuples, and concurrency (Map, Filter, Reduce, GroupBy, Chunk, Flatten, Find, Uniq, etc.). Core immutable package (lo), concurrent variants (lo\u002Fparallel aka lop), in-place mutations (lo\u002Fmutable aka lom), lazy iterators (lo\u002Fit aka loi for Go 1.23+), and experimental SIMD (lo\u002Fexp\u002Fsimd). Apply when using or adopting samber\u002Flo, when the codebase imports github.com\u002Fsamber\u002Flo, or when implementing functional-style data transformations in Go. Not for streaming pipelines (→ See `samber\u002Fcc-skills-golang@golang-samber-ro` skill).","kongnakornna\u002Fgolangapi","kongnakornna","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F10528904?v=4","01M79Z5JQPPV5CWQHXS235Q9MD","Kongnakorn Jantakun","01M79Z5JRHJJJ6PR2DGQS4P985",0,"MIT","https:\u002F\u002Fgithub.com\u002Fkongnakornna\u002Fgolangapi\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fgo-cc-skills\u002Fskills\u002Fgolang-samber-lo\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: golang-samber-lo\ndescription: \"Functional programming helpers for Golang using samber\u002Flo — 500+ type-safe generic functions for slices, maps, channels, strings, math, tuples, and concurrency (Map, Filter, Reduce, GroupBy, Chunk, Flatten, Find, Uniq, etc.). Core immutable package (lo), concurrent variants (lo\u002Fparallel aka lop), in-place mutations (lo\u002Fmutable aka lom), lazy iterators (lo\u002Fit aka loi for Go 1.23+), and experimental SIMD (lo\u002Fexp\u002Fsimd). Apply when using or adopting samber\u002Flo, when the codebase imports github.com\u002Fsamber\u002Flo, or when implementing functional-style data transformations in Go. Not for streaming pipelines (→ See `samber\u002Fcc-skills-golang@golang-samber-ro` skill).\"\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.2.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: \"1.53.0\"\nallowed-tools: Read Edit Write Glob Grep Bash(go:*) Bash(golangci-lint:*) Bash(git:*) 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 prefers declarative collection transforms over manual loops. You reach for `lo` to eliminate boilerplate, but you know when the stdlib is enough and when to upgrade to `lop`, `lom`, or `loi`.\n\n# samber\u002Flo — Functional Utilities for Go\n\nLodash-inspired, generics-first utility library with 500+ type-safe helpers for slices, maps, strings, math, channels, tuples, and concurrency. Zero external dependencies. Immutable by default.\n\n**Official Resources:**\n\n- [github.com\u002Fsamber\u002Flo](https:\u002F\u002Fgithub.com\u002Fsamber\u002Flo)\n- [lo.samber.dev](https:\u002F\u002Flo.samber.dev)\n- [pkg.go.dev\u002Fgithub.com\u002Fsamber\u002Flo](https:\u002F\u002Fpkg.go.dev\u002Fgithub.com\u002Fsamber\u002Flo)\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## Why samber\u002Flo\n\nGo's stdlib `slices` and `maps` packages cover ~10 basic helpers (sort, contains, keys). Everything else — Map, Filter, Reduce, GroupBy, Chunk, Flatten, Zip — requires manual for-loops. `lo` fills this gap:\n\n- **Type-safe generics** — no `interface{}` casts, no reflection, compile-time checking, no interface boxing overhead\n- **Immutable by default** — returns new collections, safe for concurrent reads, easier to reason about\n- **Composable** — functions take and return slices\u002Fmaps, so they chain without wrapper types\n- **Zero dependencies** — only Go stdlib, no transitive dependency risk\n- **Progressive complexity** — start with `lo`, upgrade to `lop`\u002F`lom`\u002F`loi` only when profiling demands it\n- **Error variants** — most functions have `Err` suffixes (`MapErr`, `FilterErr`, `ReduceErr`) that stop on first error\n\n## Installation\n\n```bash\ngo get github.com\u002Fsamber\u002Flo\n```\n\n| Package | Import | Alias | Go version |\n| --- | --- | --- | --- |\n| Core (immutable) | `github.com\u002Fsamber\u002Flo` | `lo` | 1.18+ |\n| Parallel | `github.com\u002Fsamber\u002Flo\u002Fparallel` | `lop` | 1.18+ |\n| Mutable | `github.com\u002Fsamber\u002Flo\u002Fmutable` | `lom` | 1.18+ |\n| Iterator | `github.com\u002Fsamber\u002Flo\u002Fit` | `loi` | 1.23+ |\n| SIMD (experimental) | `github.com\u002Fsamber\u002Flo\u002Fexp\u002Fsimd` | — | 1.25+ (amd64 only) |\n\n## Choose the Right Package\n\nStart with `lo`. Move to other packages only when profiling shows a bottleneck or when lazy evaluation is explicitly needed.\n\n| Package | Use when | Trade-off |\n| --- | --- | --- |\n| `lo` | Default for all transforms | Allocates new collections (safe, predictable) |\n| `lop` | CPU-bound work on large datasets (1000+ items) | Goroutine overhead; not for I\u002FO or small slices |\n| `lom` | Hot path confirmed by `pprof -alloc_objects` | Mutates input — caller must understand side effects |\n| `loi` | Large datasets with chained transforms (Go 1.23+) | Lazy evaluation saves memory but adds iterator complexity |\n| `simd` | Numeric bulk ops after benchmarking (experimental) | Unstable API, may break between versions |\n\n**Key rules:**\n\n- `lop` is for CPU parallelism, not I\u002FO concurrency — for I\u002FO fan-out, use `errgroup` instead\n- `lom` breaks immutability — only use when allocation pressure is measured, never assumed\n- `loi` eliminates intermediate allocations in chains like `Map → Filter → Take` by evaluating lazily\n- For reactive\u002Fstreaming pipelines over infinite event streams, → see `samber\u002Fcc-skills-golang@golang-samber-ro` skill + `samber\u002Fro` package\n\nFor detailed package comparison and decision flowchart, see [Package Guide](.\u002Freferences\u002Fpackage-guide.md).\n\n## Core Patterns\n\n### Transform a slice\n\n```go\n\u002F\u002F ✓ lo — declarative, type-safe\nnames := lo.Map(users, func(u User, _ int) string {\n    return u.Name\n})\n\n\u002F\u002F ✗ Manual — boilerplate, error-prone\nnames := make([]string, 0, len(users))\nfor _, u := range users {\n    names = append(names, u.Name)\n}\n```\n\n### Filter + Reduce\n\n```go\ntotal := lo.Reduce(\n    lo.Filter(orders, func(o Order, _ int) bool {\n        return o.Status == \"paid\"\n    }),\n    func(sum float64, o Order, _ int) float64 {\n        return sum + o.Amount\n    },\n    0,\n)\n```\n\n### GroupBy\n\n```go\nbyStatus := lo.GroupBy(tasks, func(t Task, _ int) string {\n    return t.Status\n})\n\u002F\u002F map[string][]Task{\"open\": [...], \"closed\": [...]}\n```\n\n### Error variant — stop on first error\n\n```go\nresults, err := lo.MapErr(urls, func(url string, _ int) (Response, error) {\n    return http.Get(url)\n})\n```\n\n## Common Mistakes\n\n| Mistake | Why it fails | Fix |\n| --- | --- | --- |\n| Using `lo.Contains` when `slices.Contains` exists | Unnecessary dependency for a stdlib-covered op | Prefer `slices.Contains`\u002F`slices.Sort` since Go 1.21+ and `slices.Collect(maps.Keys(m))` since Go 1.23+ when a key slice is needed |\n| Using `lop.Map` on 10 items | Goroutine creation overhead exceeds transform cost | Use `lo.Map` — `lop` benefits start at ~1000+ items for CPU-bound work |\n| Assuming `lo.Filter` modifies the input | `lo` is immutable by default — it returns a new slice | Use `lom.Filter` if you explicitly need in-place mutation |\n| Using `lo.Must` in production code paths | `Must` panics on error — fine in tests and init, dangerous in request handlers | Use the non-Must variant and handle the error |\n| Chaining many eager transforms on large data | Each step allocates an intermediate slice | Use `loi` (lazy iterators) to avoid intermediate allocations |\n\n## Best Practices\n\n1. **Prefer stdlib when available** — `slices.Contains` and `slices.Sort` (Go 1.21+) carry no dependency; `maps.Keys` is Go 1.23+ and returns an iterator, so use `slices.Collect(maps.Keys(m))` when you need a slice. Use `lo` for transforms the stdlib doesn't offer (Map, Filter, Reduce, GroupBy, Chunk, Flatten)\n2. **Compose lo functions** — chain `lo.Filter` → `lo.Map` → `lo.GroupBy` instead of writing nested loops. Each function is a building block\n3. **Profile before optimizing** — switch from `lo` to `lom`\u002F`lop` only after `go tool pprof` confirms allocation or CPU as the bottleneck\n4. **Use error variants** — prefer `lo.MapErr` over `lo.Map` + manual error collection. Error variants stop early and propagate cleanly\n5. **Use `lo.Must` only in tests and init** — in production, handle errors explicitly\n\n## Quick Reference\n\n| Function | What it does |\n| --- | --- |\n| `lo.Map` | Transform each element |\n| `lo.Filter` \u002F `lo.Reject` | Keep \u002F remove elements matching predicate |\n| `lo.Reduce` | Fold elements into a single value |\n| `lo.ForEach` | Side-effect iteration |\n| `lo.GroupBy` | Group elements by key |\n| `lo.Chunk` | Split into fixed-size batches |\n| `lo.Flatten` | Flatten nested slices one level |\n| `lo.Uniq` \u002F `lo.UniqBy` | Remove duplicates |\n| `lo.Find` \u002F `lo.FindOrElse` | First match or default |\n| `lo.Contains` \u002F `lo.Every` \u002F `lo.Some` | Membership tests |\n| `lo.Keys` \u002F `lo.Values` | Extract map keys or values |\n| `lo.PickBy` \u002F `lo.OmitBy` | Filter map entries |\n| `lo.Zip2` \u002F `lo.Unzip2` | Pair\u002Funpair two slices |\n| `lo.Range` \u002F `lo.RangeFrom` | Generate number sequences |\n| `lo.Ternary` \u002F `lo.If` | Inline conditionals |\n| `lo.ToPtr` \u002F `lo.FromPtr` | Pointer helpers |\n| `lo.Must` \u002F `lo.Try` | Panic-on-error \u002F recover-as-bool |\n| `lo.Async` \u002F `lo.Attempt` | Async execution \u002F retry with backoff |\n| `lo.Debounce` \u002F `lo.Throttle` | Rate limiting |\n| `lo.ChannelDispatcher` | Fan-out to multiple channels |\n\nFor the complete function catalog (300+ functions), see [API Reference](.\u002Freferences\u002Fapi-reference.md).\n\nFor composition patterns, stdlib interop, and iterator pipelines, see [Advanced Patterns](.\u002Freferences\u002Fadvanced-patterns.md).\n\nIf you encounter a bug or unexpected behavior in samber\u002Flo, open an issue at [github.com\u002Fsamber\u002Flo\u002Fissues](https:\u002F\u002Fgithub.com\u002Fsamber\u002Flo\u002Fissues).\n\n## Cross-References\n\n- → See `samber\u002Fcc-skills-golang@golang-samber-ro` skill for reactive\u002Fstreaming pipelines over infinite event streams (`samber\u002Fro` package)\n- → See `samber\u002Fcc-skills-golang@golang-samber-mo` skill for monadic types (Option, Result, Either) that compose with lo transforms\n- → See `samber\u002Fcc-skills-golang@golang-data-structures` skill for choosing the right underlying data structure\n- → See `samber\u002Fcc-skills-golang@golang-performance` skill for profiling methodology before switching to `lom`\u002F`lop`\n","**Persona:** You are a Go engineer who prefers declarative collection transforms over manual loops. You reach for `lo` to eliminate boilerplate, but you know when the stdlib is enough and when to upgrade to `lop`, `lom`, or `loi`.\n\n# samber\u002Flo — Functional Utilities for Go\n\nLodash-inspired, generics-first utility library with 500+ type-safe helpers for slices, maps, strings, math, channels, tuples, and concurrency. Zero external dependencies. Immutable by default.\n\n**Official Resources:**\n\n- [github.com\u002Fsamber\u002Flo](https:\u002F\u002Fgithub.com\u002Fsamber\u002Flo)\n- [lo.samber.dev](https:\u002F\u002Flo.samber.dev)\n- [pkg.go.dev\u002Fgithub.com\u002Fsamber\u002Flo](https:\u002F\u002Fpkg.go.dev\u002Fgithub.com\u002Fsamber\u002Flo)\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## Why samber\u002Flo\n\nGo's stdlib `slices` and `maps` packages cover ~10 basic helpers (sort, contains, keys). Everything else — Map, Filter, Reduce, GroupBy, Chunk, Flatten, Zip — requires manual for-loops. `lo` fills this gap:\n\n- **Type-safe generics** — no `interface{}` casts, no reflection, compile-time checking, no interface boxing overhead\n- **Immutable by default** — returns new collections, safe for concurrent reads, easier to reason about\n- **Composable** — functions take and return slices\u002Fmaps, so they chain without wrapper types\n- **Zero dependencies** — only Go stdlib, no transitive dependency risk\n- **Progressive complexity** — start with `lo`, upgrade to `lop`\u002F`lom`\u002F`loi` only when profiling demands it\n- **Error variants** — most functions have `Err` suffixes (`MapErr`, `FilterErr`, `ReduceErr`) that stop on first error\n\n## Installation\n\n```bash\ngo get github.com\u002Fsamber\u002Flo\n```\n\n| Package | Import | Alias | Go version |\n| --- | --- | --- | --- |\n| Core (immutable) | `github.com\u002Fsamber\u002Flo` | `lo` | 1.18+ |\n| Parallel | `github.com\u002Fsamber\u002Flo\u002Fparallel` | `lop` | 1.18+ |\n| Mutable | `github.com\u002Fsamber\u002Flo\u002Fmutable` | `lom` | 1.18+ |\n| Iterator | `github.com\u002Fsamber\u002Flo\u002Fit` | `loi` | 1.23+ |\n| SIMD (experimental) | `github.com\u002Fsamber\u002Flo\u002Fexp\u002Fsimd` | — | 1.25+ (amd64 only) |\n\n## Choose the Right Package\n\nStart with `lo`. Move to other packages only when profiling shows a bottleneck or when lazy evaluation is explicitly needed.\n\n| Package | Use when | Trade-off |\n| --- | --- | --- |\n| `lo` | Default for all transforms | Allocates new collections (safe, predictable) |\n| `lop` | CPU-bound work on large datasets (1000+ items) | Goroutine overhead; not for I\u002FO or small slices |\n| `lom` | Hot path confirmed by `pprof -alloc_objects` | Mutates input — caller must understand side effects |\n| `loi` | Large datasets with chained transforms (Go 1.23+) | Lazy evaluation saves memory but adds iterator complexity |\n| `simd` | Numeric bulk ops after benchmarking (experimental) | Unstable API, may break between versions |\n\n**Key rules:**\n\n- `lop` is for CPU parallelism, not I\u002FO concurrency — for I\u002FO fan-out, use `errgroup` instead\n- `lom` breaks immutability — only use when allocation pressure is measured, never assumed\n- `loi` eliminates intermediate allocations in chains like `Map → Filter → Take` by evaluating lazily\n- For reactive\u002Fstreaming pipelines over infinite event streams, → see `samber\u002Fcc-skills-golang@golang-samber-ro` skill + `samber\u002Fro` package\n\nFor detailed package comparison and decision flowchart, see [Package Guide](.\u002Freferences\u002Fpackage-guide.md).\n\n## Core Patterns\n\n### Transform a slice\n\n```go\n\u002F\u002F ✓ lo — declarative, type-safe\nnames := lo.Map(users, func(u User, _ int) string {\n    return u.Name\n})\n\n\u002F\u002F ✗ Manual — boilerplate, error-prone\nnames := make([]string, 0, len(users))\nfor _, u := range users {\n    names = append(names, u.Name)\n}\n```\n\n### Filter + Reduce\n\n```go\ntotal := lo.Reduce(\n    lo.Filter(orders, func(o Order, _ int) bool {\n        return o.Status == \"paid\"\n    }),\n    func(sum float64, o Order, _ int) float64 {\n        return sum + o.Amount\n    },\n    0,\n)\n```\n\n### GroupBy\n\n```go\nbyStatus := lo.GroupBy(tasks, func(t Task, _ int) string {\n    return t.Status\n})\n\u002F\u002F map[string][]Task{\"open\": [...], \"closed\": [...]}\n```\n\n### Error variant — stop on first error\n\n```go\nresults, err := lo.MapErr(urls, func(url string, _ int) (Response, error) {\n    return http.Get(url)\n})\n```\n\n## Common Mistakes\n\n| Mistake | Why it fails | Fix |\n| --- | --- | --- |\n| Using `lo.Contains` when `slices.Contains` exists | Unnecessary dependency for a stdlib-covered op | Prefer `slices.Contains`\u002F`slices.Sort` since Go 1.21+ and `slices.Collect(maps.Keys(m))` since Go 1.23+ when a key slice is needed |\n| Using `lop.Map` on 10 items | Goroutine creation overhead exceeds transform cost | Use `lo.Map` — `lop` benefits start at ~1000+ items for CPU-bound work |\n| Assuming `lo.Filter` modifies the input | `lo` is immutable by default — it returns a new slice | Use `lom.Filter` if you explicitly need in-place mutation |\n| Using `lo.Must` in production code paths | `Must` panics on error — fine in tests and init, dangerous in request handlers | Use the non-Must variant and handle the error |\n| Chaining many eager transforms on large data | Each step allocates an intermediate slice | Use `loi` (lazy iterators) to avoid intermediate allocations |\n\n## Best Practices\n\n1. **Prefer stdlib when available** — `slices.Contains` and `slices.Sort` (Go 1.21+) carry no dependency; `maps.Keys` is Go 1.23+ and returns an iterator, so use `slices.Collect(maps.Keys(m))` when you need a slice. Use `lo` for transforms the stdlib doesn't offer (Map, Filter, Reduce, GroupBy, Chunk, Flatten)\n2. **Compose lo functions** — chain `lo.Filter` → `lo.Map` → `lo.GroupBy` instead of writing nested loops. Each function is a building block\n3. **Profile before optimizing** — switch from `lo` to `lom`\u002F`lop` only after `go tool pprof` confirms allocation or CPU as the bottleneck\n4. **Use error variants** — prefer `lo.MapErr` over `lo.Map` + manual error collection. Error variants stop early and propagate cleanly\n5. **Use `lo.Must` only in tests and init** — in production, handle errors explicitly\n\n## Quick Reference\n\n| Function | What it does |\n| --- | --- |\n| `lo.Map` | Transform each element |\n| `lo.Filter` \u002F `lo.Reject` | Keep \u002F remove elements matching predicate |\n| `lo.Reduce` | Fold elements into a single value |\n| `lo.ForEach` | Side-effect iteration |\n| `lo.GroupBy` | Group elements by key |\n| `lo.Chunk` | Split into fixed-size batches |\n| `lo.Flatten` | Flatten nested slices one level |\n| `lo.Uniq` \u002F `lo.UniqBy` | Remove duplicates |\n| `lo.Find` \u002F `lo.FindOrElse` | First match or default |\n| `lo.Contains` \u002F `lo.Every` \u002F `lo.Some` | Membership tests |\n| `lo.Keys` \u002F `lo.Values` | Extract map keys or values |\n| `lo.PickBy` \u002F `lo.OmitBy` | Filter map entries |\n| `lo.Zip2` \u002F `lo.Unzip2` | Pair\u002Funpair two slices |\n| `lo.Range` \u002F `lo.RangeFrom` | Generate number sequences |\n| `lo.Ternary` \u002F `lo.If` | Inline conditionals |\n| `lo.ToPtr` \u002F `lo.FromPtr` | Pointer helpers |\n| `lo.Must` \u002F `lo.Try` | Panic-on-error \u002F recover-as-bool |\n| `lo.Async` \u002F `lo.Attempt` | Async execution \u002F retry with backoff |\n| `lo.Debounce` \u002F `lo.Throttle` | Rate limiting |\n| `lo.ChannelDispatcher` | Fan-out to multiple channels |\n\nFor the complete function catalog (300+ functions), see [API Reference](.\u002Freferences\u002Fapi-reference.md).\n\nFor composition patterns, stdlib interop, and iterator pipelines, see [Advanced Patterns](.\u002Freferences\u002Fadvanced-patterns.md).\n\nIf you encounter a bug or unexpected behavior in samber\u002Flo, open an issue at [github.com\u002Fsamber\u002Flo\u002Fissues](https:\u002F\u002Fgithub.com\u002Fsamber\u002Flo\u002Fissues).\n\n## Cross-References\n\n- → See `samber\u002Fcc-skills-golang@golang-samber-ro` skill for reactive\u002Fstreaming pipelines over infinite event streams (`samber\u002Fro` package)\n- → See `samber\u002Fcc-skills-golang@golang-samber-mo` skill for monadic types (Option, Result, Either) that compose with lo transforms\n- → See `samber\u002Fcc-skills-golang@golang-data-structures` skill for choosing the right underlying data structure\n- → See `samber\u002Fcc-skills-golang@golang-performance` skill for profiling methodology before switching to `lom`\u002F`lop`\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.2.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","1.53.0","Read Edit Write Glob Grep Bash(go:*) Bash(golangci-lint:*) Bash(git:*) 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","19f4d52a98d557f3a645a2cfbbeb5bd54f28831d",".github\u002Fskills\u002Fgo-cc-skills\u002Fskills\u002Fgolang-samber-lo","https:\u002F\u002Fgithub.com\u002Fkongnakornna\u002Fgolangapi","https:\u002F\u002Fgithub.com\u002Fkongnakornna","http:\u002F\u002Fcmoniot.trueddns.com:52160","Technical Skills and Expertise\r\nLanguages and Frameworks\r\nFrontend: HTML, JavaScript, TypeScript, React, Vue, Angular, Next.js\r\nBackend: Node.js,Python,Golang","2026-10-06 23:01:46",{"source":8,"skillName":5,"commands":49,"prompt":59,"zipAvailable":39},[50,53,56],{"tool":51,"command":52},"npx","npx skills add kongnakornna\u002Fgolangapi --skill golang-samber-lo",{"tool":54,"command":55},"bunx","bunx skills add kongnakornna\u002Fgolangapi --skill golang-samber-lo",{"tool":57,"command":58},"pnpm","pnpm dlx skills add kongnakornna\u002Fgolangapi --skill golang-samber-lo","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fkongnakornna\u002Fgolangapi\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fgo-cc-skills\u002Fskills\u002Fgolang-samber-lo\u002FSKILL.md",[61,67,71,75],{"path":62,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":65,"sourceHtmlUrl":66},"evals\u002Fevals.json","REFERENCE","参考文档",19413,"https:\u002F\u002Fgithub.com\u002Fkongnakornna\u002Fgolangapi\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fgo-cc-skills\u002Fskills\u002Fgolang-samber-lo\u002Fevals\u002Fevals.json",{"path":68,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":69,"sourceHtmlUrl":70},"references\u002Fadvanced-patterns.md",5117,"https:\u002F\u002Fgithub.com\u002Fkongnakornna\u002Fgolangapi\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fgo-cc-skills\u002Fskills\u002Fgolang-samber-lo\u002Freferences\u002Fadvanced-patterns.md",{"path":72,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":73,"sourceHtmlUrl":74},"references\u002Fapi-reference.md",18982,"https:\u002F\u002Fgithub.com\u002Fkongnakornna\u002Fgolangapi\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fgo-cc-skills\u002Fskills\u002Fgolang-samber-lo\u002Freferences\u002Fapi-reference.md",{"path":76,"resourceType":63,"resourceTypeDesc":64,"sizeBytes":77,"sourceHtmlUrl":78},"references\u002Fpackage-guide.md",6824,"https:\u002F\u002Fgithub.com\u002Fkongnakornna\u002Fgolangapi\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Fgo-cc-skills\u002Fskills\u002Fgolang-samber-lo\u002Freferences\u002Fpackage-guide.md",[80,88,95,102,109,116],{"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":84,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":19},"01M7A0M9RJJ3383VEFYKABWV15","tb-writing-plans","Use when you have a spec or requirements for a multi-step task, before touching code","Apache-2.0","https:\u002F\u002Fgithub.com\u002Fkongnakornna\u002Fgolangapi\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Ftb-writing-plans\u002FSKILL.md",[],[],{"skillNo":89,"name":90,"nameZh":6,"description":91,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":84,"licenseFileUrl":6,"sourceHtmlUrl":92,"categories":93,"keywords":94,"publishedAt":19},"01M7A0M4JKY4DEDRP1CBHT00WV","tb-using-git-worktrees","Use when starting feature work that needs isolation from current workspace or before executing implementation plans - ensures an isolated workspace exists via native tools or git worktree fallback","https:\u002F\u002Fgithub.com\u002Fkongnakornna\u002Fgolangapi\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Ftb-using-git-worktrees\u002FSKILL.md",[],[],{"skillNo":96,"name":97,"nameZh":6,"description":98,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":84,"licenseFileUrl":6,"sourceHtmlUrl":99,"categories":100,"keywords":101,"publishedAt":19},"01M7A0KZ5HRAQAAT2KXR6146Q7","tb-test-driven-development","Use when implementing any feature or bugfix, before writing implementation code","https:\u002F\u002Fgithub.com\u002Fkongnakornna\u002Fgolangapi\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Ftb-test-driven-development\u002FSKILL.md",[],[],{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":84,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":108,"publishedAt":19},"01M7A0KW92W3F18E2MRP8H62P2","tb-subagent-driven-development","Use when executing implementation plans with independent tasks in the current session","https:\u002F\u002Fgithub.com\u002Fkongnakornna\u002Fgolangapi\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Ftb-subagent-driven-development\u002FSKILL.md",[],[],{"skillNo":110,"name":111,"nameZh":6,"description":112,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":84,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":115,"publishedAt":19},"01M7A0KKYQCHYYRHA5J5BAP24M","tb-scrutinize","Outsider-perspective end-to-end review of a plan, PR, or code change. First questions intent and whether a simpler\u002Fmore elegant approach would achieve the same goal, then traces the actual code path (not just the diff) to verify the change does what it claims. Output is concise, actionable, and every call carries its rationale. Trigger on \u002Ftb-scrutinize and proactively whenever the user asks to review, audit, sanity-check, or get a second opinion on a plan, PR, diff, design doc, or proposed code change.","https:\u002F\u002Fgithub.com\u002Fkongnakornna\u002Fgolangapi\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Ftb-scrutinize\u002FSKILL.md",[],[],{"skillNo":117,"name":118,"nameZh":6,"description":119,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":84,"licenseFileUrl":6,"sourceHtmlUrl":120,"categories":121,"keywords":122,"publishedAt":19},"01M7A0KFDR1V3RW7SW1XNHP82P","tb-requesting-code-review","Use when completing tasks, implementing major features, or before merging to verify work meets requirements","https:\u002F\u002Fgithub.com\u002Fkongnakornna\u002Fgolangapi\u002Fblob\u002Fmain\u002F.github\u002Fskills\u002Ftb-requesting-code-review\u002FSKILL.md",[],[]]