[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EAFK3C7JGY0C57M63B3KFS":3,"skill-same:01M6EAFK3C7JGY0C57M63B3KFS":168},{"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":28,"publishedAt":49,"linkOnly":50,"markdownContent":51,"markdownBody":52,"frontMatter":53,"refName":65,"commitSha":66,"skillDirectory":67,"forksCount":68,"repositoryHtmlUrl":69,"repositoryHomepageUrl":70,"ownerHtmlUrl":71,"ownerBlogUrl":6,"ownerDescription":72,"updatedAt":73,"install":74,"resources":87},"01M6EAFK3C7JGY0C57M63B3KFS","golang-code-style",null,"Golang code style, formatting and conventions. Use when writing code, reviewing style, configuring linters, writing comments, or establishing project standards.","ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FHarmeet10000\u002Fskills\u002Fgolang-code-style\u002FSKILL.md",[18,23],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":26,"taxonomyTypeDesc":27},"01JBSEEDCAT000000000000030","开发工程师","PROFESSION","适用职业",[29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48],"style","code style","code","golang","golang code style","read","false","formatting","project","cc","standards","edit","write","writing","coding","projects","Bash","git","ai coding agents","go","2026-11-10 10:12:30",false,"---\nname: golang-code-style\ndescription: \"Golang code style, formatting and conventions. Use when writing code, reviewing style, configuring linters, writing comments, or establishing project standards.\"\nuser-invocable: false\nlicense: MIT\ncompatibility: Designed for Claude Code or similar AI coding agents, and for projects using Golang.\nmetadata:\n  author: samber\n  version: \"1.1.1\"\n  openclaw:\n    emoji: \"?\"\n    homepage: https:\u002F\u002Fgithub.com\u002Fsamber\u002Fcc-skills-golang\n    requires:\n      bins:\n        - go\n    install: []\nallowed-tools: Read Edit Write Glob Grep Bash(go:*) Bash(golangci-lint:*) Bash(git:*) Agent\n---\n\n> **Community default.** A company skill that explicitly supersedes `samber\u002Fcc-skills-golang@golang-code-style` skill takes precedence.\n\n# Go Code Style\n\nStyle rules that require human judgment — linters handle formatting, this skill handles clarity. For naming see `samber\u002Fcc-skills-golang@golang-naming` skill; for design patterns see `samber\u002Fcc-skills-golang@golang-design-patterns` skill; for struct\u002Finterface design see `samber\u002Fcc-skills-golang@golang-structs-interfaces` skill.\n\n> \"Clear is better than clever.\" — Go Proverbs\n\nWhen ignoring a rule, add a comment to the code.\n\n## Line Length & Breaking\n\nNo rigid line limit, but lines beyond ~120 characters MUST be broken. Break at **semantic boundaries**, not arbitrary column counts. Function calls with 4+ arguments MUST use one argument per line — even when the prompt asks for single-line code:\n\n```go\n\u002F\u002F Good — each argument on its own line, closing paren separate\nmux.HandleFunc(\"\u002Fapi\u002Fusers\", func(w http.ResponseWriter, r *http.Request) {\n    handleUsers(\n        w,\n        r,\n        serviceName,\n        cfg,\n        logger,\n        authMiddleware,\n    )\n})\n```\n\nWhen a function signature is too long, the real fix is often **fewer parameters** (use an options struct) rather than better line wrapping. For multi-line signatures, put each parameter on its own line.\n\n## Variable Declarations\n\nSHOULD use `:=` for non-zero values, `var` for zero-value initialization. The form signals intent: `var` means \"this starts at zero.\"\n\n```go\nvar count int              \u002F\u002F zero value, set later\nname := \"default\"          \u002F\u002F non-zero, := is appropriate\nvar buf bytes.Buffer       \u002F\u002F zero value is ready to use\n```\n\n### Slice & Map Initialization\n\nSlices and maps MUST be initialized explicitly, never nil. Nil maps panic on write; nil slices serialize to `null` in JSON (vs `[]` for empty slices), surprising API consumers.\n\n```go\nusers := []User{}                       \u002F\u002F always initialized\nm := map[string]int{}                   \u002F\u002F always initialized\nusers := make([]User, 0, len(ids))      \u002F\u002F preallocate when capacity is known\nm := make(map[string]int, len(items))   \u002F\u002F preallocate when size is known\n```\n\nDo not preallocate speculatively — `make([]T, 0, 1000)` wastes memory when the common case is 10 items.\n\n### Composite Literals\n\nComposite literals MUST use field names — positional fields break when the type adds or reorders fields:\n\n```go\nsrv := &http.Server{\n    Addr:         \":8080\",\n    ReadTimeout:  5 * time.Second,\n    WriteTimeout: 10 * time.Second,\n}\n```\n\n## Control Flow\n\n### Reduce Nesting\n\nErrors and edge cases MUST be handled first (early return). Keep the happy path at minimal indentation:\n\n```go\nfunc process(data []byte) (*Result, error) {\n    if len(data) == 0 {\n        return nil, errors.New(\"empty data\")\n    }\n\n    parsed, err := parse(data)\n    if err != nil {\n        return nil, fmt.Errorf(\"parsing: %w\", err)\n    }\n\n    return transform(parsed), nil\n}\n```\n\n### Eliminate Unnecessary `else`\n\nWhen the `if` body ends with `return`\u002F`break`\u002F`continue`, the `else` MUST be dropped. Use default-then-override for simple assignments — assign a default, then override with independent conditions or a `switch`:\n\n```go\n\u002F\u002F Good — default-then-override with switch (cleanest for mutually exclusive overrides)\nlevel := slog.LevelInfo\nswitch {\ncase debug:\n    level = slog.LevelDebug\ncase verbose:\n    level = slog.LevelWarn\n}\n\n\u002F\u002F Bad — else-if chain hides that there's a default\nif debug {\n    level = slog.LevelDebug\n} else if verbose {\n    level = slog.LevelWarn\n} else {\n    level = slog.LevelInfo\n}\n```\n\n### Complex Conditions & Init Scope\n\nWhen an `if` condition has 3+ operands, MUST extract into named booleans — a wall of `||` is unreadable and hides business logic. Keep expensive checks inline for short-circuit benefit. [Details](.\u002Freferences\u002Fdetails.md)\n\n```go\n\u002F\u002F Good — named booleans make intent clear\nisAdmin := user.Role == RoleAdmin\nisOwner := resource.OwnerID == user.ID\nisPublicVerified := resource.IsPublic && user.IsVerified\nif isAdmin || isOwner || isPublicVerified || permissions.Contains(PermOverride) {\n    allow()\n}\n```\n\nScope variables to `if` blocks when only needed for the check:\n\n```go\nif err := validate(input); err != nil {\n    return err\n}\n```\n\n### Switch Over If-Else Chains\n\nWhen comparing the same variable multiple times, prefer `switch`:\n\n```go\nswitch status {\ncase StatusActive:\n    activate()\ncase StatusInactive:\n    deactivate()\ndefault:\n    panic(fmt.Sprintf(\"unexpected status: %d\", status))\n}\n```\n\n## Function Design\n\n- Functions SHOULD be **short and focused** — one function, one job.\n- Functions SHOULD have **≤4 parameters**. Beyond that, use an options struct (see `samber\u002Fcc-skills-golang@golang-design-patterns` skill).\n- **Parameter order**: `context.Context` first, then inputs, then output destinations.\n- Naked returns help in very short functions (1-3 lines) where return values are obvious, but become confusing when readers must scroll to find what's returned — name returns explicitly in longer functions.\n\n```go\nfunc FetchUser(ctx context.Context, id string) (*User, error)\nfunc SendEmail(ctx context.Context, msg EmailMessage) error  \u002F\u002F grouped into struct\n```\n\n### Prefer `range` for Iteration\n\nSHOULD use `range` over index-based loops. Use `range n` (Go 1.22+) for simple counting.\n\n```go\nfor _, user := range users {\n    process(user)\n}\n```\n\n## Value vs Pointer Arguments\n\nPass small types (`string`, `int`, `bool`, `time.Time`) by value. Use pointers when mutating, for large structs (~128+ bytes), or when nil is meaningful. [Details](.\u002Freferences\u002Fdetails.md)\n\n## Code Organization Within Files\n\n- **Group related declarations**: type, constructor, methods together\n- **Order**: package doc, imports, constants, types, constructors, methods, helpers\n- **One primary type per file** when it has significant methods\n- **Blank imports** (`_ \"pkg\"`) register side effects (init functions). Restricting them to `main` and test packages makes side effects visible at the application root, not hidden in library code\n- **Dot imports** pollute the namespace and make it impossible to tell where a name comes from — never use in library code\n- **Unexport aggressively** — you can always export later; unexporting is a breaking change\n\n## String Handling\n\nUse `strconv` for simple conversions (faster), `fmt.Sprintf` for complex formatting. Use `%q` in error messages to make string boundaries visible. Use `strings.Builder` for loops, `+` for simple concatenation.\n\n## Type Conversions\n\nPrefer explicit, narrow conversions. Use generics over `any` when a concrete type will do:\n\n```go\nfunc Contains[T comparable](slice []T, target T) bool  \u002F\u002F not []any\n```\n\n## Philosophy\n\n- **\"A little copying is better than a little dependency\"**\n- **Use `slices` and `maps` standard packages**; for filter\u002Fgroup-by\u002Fchunk, use `github.com\u002Fsamber\u002Flo`\n- **\"Reflection is never clear\"** — avoid `reflect` unless necessary\n- **Don't abstract prematurely** — extract when the pattern is stable\n- **Minimize public surface** — every exported name is a commitment\n\n## Parallelizing Code Style Reviews\n\nWhen reviewing code style across a large codebase, use up to 5 parallel sub-agents (via the Agent tool), each targeting an independent style concern (e.g. control flow, function design, variable declarations, string handling, code organization).\n\n## Enforce with Linters\n\nMany rules are enforced automatically: `gofmt`, `gofumpt`, `goimports`, `gocritic`, `revive`, `wsl_v5`. → See the `samber\u002Fcc-skills-golang@golang-linter` skill.\n\n## Cross-References\n\n- → See the `samber\u002Fcc-skills-golang@golang-naming` skill for identifier naming conventions\n- → See the `samber\u002Fcc-skills-golang@golang-structs-interfaces` skill for pointer vs value receivers, interface design\n- → See the `samber\u002Fcc-skills-golang@golang-design-patterns` skill for functional options, builders, constructors\n- → See the `samber\u002Fcc-skills-golang@golang-linter` skill for automated formatting enforcement\n","> **Community default.** A company skill that explicitly supersedes `samber\u002Fcc-skills-golang@golang-code-style` skill takes precedence.\n\n# Go Code Style\n\nStyle rules that require human judgment — linters handle formatting, this skill handles clarity. For naming see `samber\u002Fcc-skills-golang@golang-naming` skill; for design patterns see `samber\u002Fcc-skills-golang@golang-design-patterns` skill; for struct\u002Finterface design see `samber\u002Fcc-skills-golang@golang-structs-interfaces` skill.\n\n> \"Clear is better than clever.\" — Go Proverbs\n\nWhen ignoring a rule, add a comment to the code.\n\n## Line Length & Breaking\n\nNo rigid line limit, but lines beyond ~120 characters MUST be broken. Break at **semantic boundaries**, not arbitrary column counts. Function calls with 4+ arguments MUST use one argument per line — even when the prompt asks for single-line code:\n\n```go\n\u002F\u002F Good — each argument on its own line, closing paren separate\nmux.HandleFunc(\"\u002Fapi\u002Fusers\", func(w http.ResponseWriter, r *http.Request) {\n    handleUsers(\n        w,\n        r,\n        serviceName,\n        cfg,\n        logger,\n        authMiddleware,\n    )\n})\n```\n\nWhen a function signature is too long, the real fix is often **fewer parameters** (use an options struct) rather than better line wrapping. For multi-line signatures, put each parameter on its own line.\n\n## Variable Declarations\n\nSHOULD use `:=` for non-zero values, `var` for zero-value initialization. The form signals intent: `var` means \"this starts at zero.\"\n\n```go\nvar count int              \u002F\u002F zero value, set later\nname := \"default\"          \u002F\u002F non-zero, := is appropriate\nvar buf bytes.Buffer       \u002F\u002F zero value is ready to use\n```\n\n### Slice & Map Initialization\n\nSlices and maps MUST be initialized explicitly, never nil. Nil maps panic on write; nil slices serialize to `null` in JSON (vs `[]` for empty slices), surprising API consumers.\n\n```go\nusers := []User{}                       \u002F\u002F always initialized\nm := map[string]int{}                   \u002F\u002F always initialized\nusers := make([]User, 0, len(ids))      \u002F\u002F preallocate when capacity is known\nm := make(map[string]int, len(items))   \u002F\u002F preallocate when size is known\n```\n\nDo not preallocate speculatively — `make([]T, 0, 1000)` wastes memory when the common case is 10 items.\n\n### Composite Literals\n\nComposite literals MUST use field names — positional fields break when the type adds or reorders fields:\n\n```go\nsrv := &http.Server{\n    Addr:         \":8080\",\n    ReadTimeout:  5 * time.Second,\n    WriteTimeout: 10 * time.Second,\n}\n```\n\n## Control Flow\n\n### Reduce Nesting\n\nErrors and edge cases MUST be handled first (early return). Keep the happy path at minimal indentation:\n\n```go\nfunc process(data []byte) (*Result, error) {\n    if len(data) == 0 {\n        return nil, errors.New(\"empty data\")\n    }\n\n    parsed, err := parse(data)\n    if err != nil {\n        return nil, fmt.Errorf(\"parsing: %w\", err)\n    }\n\n    return transform(parsed), nil\n}\n```\n\n### Eliminate Unnecessary `else`\n\nWhen the `if` body ends with `return`\u002F`break`\u002F`continue`, the `else` MUST be dropped. Use default-then-override for simple assignments — assign a default, then override with independent conditions or a `switch`:\n\n```go\n\u002F\u002F Good — default-then-override with switch (cleanest for mutually exclusive overrides)\nlevel := slog.LevelInfo\nswitch {\ncase debug:\n    level = slog.LevelDebug\ncase verbose:\n    level = slog.LevelWarn\n}\n\n\u002F\u002F Bad — else-if chain hides that there's a default\nif debug {\n    level = slog.LevelDebug\n} else if verbose {\n    level = slog.LevelWarn\n} else {\n    level = slog.LevelInfo\n}\n```\n\n### Complex Conditions & Init Scope\n\nWhen an `if` condition has 3+ operands, MUST extract into named booleans — a wall of `||` is unreadable and hides business logic. Keep expensive checks inline for short-circuit benefit. [Details](.\u002Freferences\u002Fdetails.md)\n\n```go\n\u002F\u002F Good — named booleans make intent clear\nisAdmin := user.Role == RoleAdmin\nisOwner := resource.OwnerID == user.ID\nisPublicVerified := resource.IsPublic && user.IsVerified\nif isAdmin || isOwner || isPublicVerified || permissions.Contains(PermOverride) {\n    allow()\n}\n```\n\nScope variables to `if` blocks when only needed for the check:\n\n```go\nif err := validate(input); err != nil {\n    return err\n}\n```\n\n### Switch Over If-Else Chains\n\nWhen comparing the same variable multiple times, prefer `switch`:\n\n```go\nswitch status {\ncase StatusActive:\n    activate()\ncase StatusInactive:\n    deactivate()\ndefault:\n    panic(fmt.Sprintf(\"unexpected status: %d\", status))\n}\n```\n\n## Function Design\n\n- Functions SHOULD be **short and focused** — one function, one job.\n- Functions SHOULD have **≤4 parameters**. Beyond that, use an options struct (see `samber\u002Fcc-skills-golang@golang-design-patterns` skill).\n- **Parameter order**: `context.Context` first, then inputs, then output destinations.\n- Naked returns help in very short functions (1-3 lines) where return values are obvious, but become confusing when readers must scroll to find what's returned — name returns explicitly in longer functions.\n\n```go\nfunc FetchUser(ctx context.Context, id string) (*User, error)\nfunc SendEmail(ctx context.Context, msg EmailMessage) error  \u002F\u002F grouped into struct\n```\n\n### Prefer `range` for Iteration\n\nSHOULD use `range` over index-based loops. Use `range n` (Go 1.22+) for simple counting.\n\n```go\nfor _, user := range users {\n    process(user)\n}\n```\n\n## Value vs Pointer Arguments\n\nPass small types (`string`, `int`, `bool`, `time.Time`) by value. Use pointers when mutating, for large structs (~128+ bytes), or when nil is meaningful. [Details](.\u002Freferences\u002Fdetails.md)\n\n## Code Organization Within Files\n\n- **Group related declarations**: type, constructor, methods together\n- **Order**: package doc, imports, constants, types, constructors, methods, helpers\n- **One primary type per file** when it has significant methods\n- **Blank imports** (`_ \"pkg\"`) register side effects (init functions). Restricting them to `main` and test packages makes side effects visible at the application root, not hidden in library code\n- **Dot imports** pollute the namespace and make it impossible to tell where a name comes from — never use in library code\n- **Unexport aggressively** — you can always export later; unexporting is a breaking change\n\n## String Handling\n\nUse `strconv` for simple conversions (faster), `fmt.Sprintf` for complex formatting. Use `%q` in error messages to make string boundaries visible. Use `strings.Builder` for loops, `+` for simple concatenation.\n\n## Type Conversions\n\nPrefer explicit, narrow conversions. Use generics over `any` when a concrete type will do:\n\n```go\nfunc Contains[T comparable](slice []T, target T) bool  \u002F\u002F not []any\n```\n\n## Philosophy\n\n- **\"A little copying is better than a little dependency\"**\n- **Use `slices` and `maps` standard packages**; for filter\u002Fgroup-by\u002Fchunk, use `github.com\u002Fsamber\u002Flo`\n- **\"Reflection is never clear\"** — avoid `reflect` unless necessary\n- **Don't abstract prematurely** — extract when the pattern is stable\n- **Minimize public surface** — every exported name is a commitment\n\n## Parallelizing Code Style Reviews\n\nWhen reviewing code style across a large codebase, use up to 5 parallel sub-agents (via the Agent tool), each targeting an independent style concern (e.g. control flow, function design, variable declarations, string handling, code organization).\n\n## Enforce with Linters\n\nMany rules are enforced automatically: `gofmt`, `gofumpt`, `goimports`, `gocritic`, `revive`, `wsl_v5`. → See the `samber\u002Fcc-skills-golang@golang-linter` skill.\n\n## Cross-References\n\n- → See the `samber\u002Fcc-skills-golang@golang-naming` skill for identifier naming conventions\n- → See the `samber\u002Fcc-skills-golang@golang-structs-interfaces` skill for pointer vs value receivers, interface design\n- → See the `samber\u002Fcc-skills-golang@golang-design-patterns` skill for functional options, builders, constructors\n- → See the `samber\u002Fcc-skills-golang@golang-linter` skill for automated formatting enforcement\n",{"name":5,"license":15,"metadata":54,"description":7,"allowed-tools":63,"compatibility":64,"user-invocable":50},{"author":55,"version":56,"openclaw":57},"samber","1.1.1",{"emoji":58,"install":59,"homepage":60,"requires":61},"?",[],"https:\u002F\u002Fgithub.com\u002Fsamber\u002Fcc-skills-golang",{"bins":62},[48],"Read Edit Write Glob Grep Bash(go:*) Bash(golangci-lint:*) Bash(git:*) Agent","Designed for Claude Code or similar AI coding agents, and for projects using Golang.","main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002FHarmeet10000\u002Fskills\u002Fgolang-code-style",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":8,"skillName":5,"commands":75,"prompt":85,"zipAvailable":86},[76,79,82],{"tool":77,"command":78},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill golang-code-style",{"tool":80,"command":81},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill golang-code-style",{"tool":83,"command":84},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill golang-code-style","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FHarmeet10000\u002Fskills\u002Fgolang-code-style\u002FSKILL.md",true,[88,94,98,102,108,112,116,120,124,128,132,136,140,144,148,152,156,160,164],{"path":89,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":92,"sourceHtmlUrl":93},"ACCEPTANCE-GUIDE.md","REFERENCE","参考文档",4027,"https:\u002F\u002Fgithub.com\u002FBoloBoloMe\u002Fskills\u002Fblob\u002Fmain\u002Fworkflow\u002Fnavigate\u002FACCEPTANCE-GUIDE.md",{"path":95,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":96,"sourceHtmlUrl":97},"evals\u002Fevals.json",32553,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FHarmeet10000\u002Fskills\u002Fgolang-code-style\u002Fevals\u002Fevals.json",{"path":99,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":100,"sourceHtmlUrl":101},"references\u002Fdetails.md",2722,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FHarmeet10000\u002Fskills\u002Fgolang-code-style\u002Freferences\u002Fdetails.md",{"path":103,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":106,"sourceHtmlUrl":107},"scripts\u002Froadmap.py","SCRIPT","脚本",18974,"https:\u002F\u002Fgithub.com\u002FBoloBoloMe\u002Fskills\u002Fblob\u002Fmain\u002Fworkflow\u002Fnavigate\u002Fscripts\u002Froadmap.py",{"path":109,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":110,"sourceHtmlUrl":111},"scripts\u002Fweb_server.py",23861,"https:\u002F\u002Fgithub.com\u002FBoloBoloMe\u002Fskills\u002Fblob\u002Fmain\u002Fworkflow\u002Fnavigate\u002Fscripts\u002Fweb_server.py",{"path":113,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":114,"sourceHtmlUrl":115},"TEMPLATES.md",5499,"https:\u002F\u002Fgithub.com\u002FBoloBoloMe\u002Fskills\u002Fblob\u002Fmain\u002Fworkflow\u002Fnavigate\u002FTEMPLATES.md",{"path":117,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":118,"sourceHtmlUrl":119},"tests\u002Fconftest.py",959,"https:\u002F\u002Fgithub.com\u002FBoloBoloMe\u002Fskills\u002Fblob\u002Fmain\u002Fworkflow\u002Fnavigate\u002Ftests\u002Fconftest.py",{"path":121,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":122,"sourceHtmlUrl":123},"tests\u002Fnav_helpers.py",3782,"https:\u002F\u002Fgithub.com\u002FBoloBoloMe\u002Fskills\u002Fblob\u002Fmain\u002Fworkflow\u002Fnavigate\u002Ftests\u002Fnav_helpers.py",{"path":125,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":126,"sourceHtmlUrl":127},"tests\u002Ftest_roadmap_cli.py",3893,"https:\u002F\u002Fgithub.com\u002FBoloBoloMe\u002Fskills\u002Fblob\u002Fmain\u002Fworkflow\u002Fnavigate\u002Ftests\u002Ftest_roadmap_cli.py",{"path":129,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":130,"sourceHtmlUrl":131},"tests\u002Ftest_roadmap_validation.py",6042,"https:\u002F\u002Fgithub.com\u002FBoloBoloMe\u002Fskills\u002Fblob\u002Fmain\u002Fworkflow\u002Fnavigate\u002Ftests\u002Ftest_roadmap_validation.py",{"path":133,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":134,"sourceHtmlUrl":135},"tests\u002Ftest_stdlib_only_and_no_external_refs.py",2303,"https:\u002F\u002Fgithub.com\u002FBoloBoloMe\u002Fskills\u002Fblob\u002Fmain\u002Fworkflow\u002Fnavigate\u002Ftests\u002Ftest_stdlib_only_and_no_external_refs.py",{"path":137,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":138,"sourceHtmlUrl":139},"tests\u002Ftest_web_server_endpoints.py",3105,"https:\u002F\u002Fgithub.com\u002FBoloBoloMe\u002Fskills\u002Fblob\u002Fmain\u002Fworkflow\u002Fnavigate\u002Ftests\u002Ftest_web_server_endpoints.py",{"path":141,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":142,"sourceHtmlUrl":143},"tests\u002Ftest_web_server_lifecycle.py",3185,"https:\u002F\u002Fgithub.com\u002FBoloBoloMe\u002Fskills\u002Fblob\u002Fmain\u002Fworkflow\u002Fnavigate\u002Ftests\u002Ftest_web_server_lifecycle.py",{"path":145,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":146,"sourceHtmlUrl":147},"tests\u002Ftest_web_server_persistence.py",910,"https:\u002F\u002Fgithub.com\u002FBoloBoloMe\u002Fskills\u002Fblob\u002Fmain\u002Fworkflow\u002Fnavigate\u002Ftests\u002Ftest_web_server_persistence.py",{"path":149,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":150,"sourceHtmlUrl":151},"tests\u002Fvisual\u002FREADME.md",2514,"https:\u002F\u002Fgithub.com\u002FBoloBoloMe\u002Fskills\u002Fblob\u002Fmain\u002Fworkflow\u002Fnavigate\u002Ftests\u002Fvisual\u002FREADME.md",{"path":153,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":154,"sourceHtmlUrl":155},"tests\u002Fvisual\u002Frender_checks.py",13539,"https:\u002F\u002Fgithub.com\u002FBoloBoloMe\u002Fskills\u002Fblob\u002Fmain\u002Fworkflow\u002Fnavigate\u002Ftests\u002Fvisual\u002Frender_checks.py",{"path":157,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":158,"sourceHtmlUrl":159},"tests\u002Fvisual\u002Fstar_colors.py",6292,"https:\u002F\u002Fgithub.com\u002FBoloBoloMe\u002Fskills\u002Fblob\u002Fmain\u002Fworkflow\u002Fnavigate\u002Ftests\u002Fvisual\u002Fstar_colors.py",{"path":161,"resourceType":104,"resourceTypeDesc":105,"sizeBytes":162,"sourceHtmlUrl":163},"tests\u002Fvisual\u002Fstar_flicker.py",8395,"https:\u002F\u002Fgithub.com\u002FBoloBoloMe\u002Fskills\u002Fblob\u002Fmain\u002Fworkflow\u002Fnavigate\u002Ftests\u002Fvisual\u002Fstar_flicker.py",{"path":165,"resourceType":90,"resourceTypeDesc":91,"sizeBytes":166,"sourceHtmlUrl":167},"web\u002Findex.html",77865,"https:\u002F\u002Fgithub.com\u002FBoloBoloMe\u002Fskills\u002Fblob\u002Fmain\u002Fworkflow\u002Fnavigate\u002Fweb\u002Findex.html",[169,179,189,198,204,211],{"skillNo":170,"name":171,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":172,"categories":173,"keywords":175,"publishedAt":49},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[174],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[176,177,178],"model","model hierarchy","model hierarchy skill",{"skillNo":180,"name":181,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":182,"categories":183,"keywords":185,"publishedAt":49},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[184],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[186,187,188],"MCP","zoom","zoom mcp",{"skillNo":190,"name":191,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":192,"categories":193,"keywords":194,"publishedAt":49},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[195,196,197,187],"sdk","zoom apps sdk","apps",{"skillNo":199,"name":200,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":201,"categories":202,"keywords":203,"publishedAt":49},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[200],{"skillNo":205,"name":206,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":207,"categories":208,"keywords":210,"publishedAt":49},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[209],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},[206],{"skillNo":212,"name":213,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":214,"categories":215,"keywords":216,"publishedAt":49},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[213]]