[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M7EKMRQPCMRVBVRXKFSC5SMP":3,"skill-same:01M7EKMRQPCMRVBVRXKFSC5SMP":74},{"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":24,"commitSha":25,"skillDirectory":26,"forksCount":14,"repositoryHtmlUrl":27,"repositoryHomepageUrl":6,"ownerHtmlUrl":28,"ownerBlogUrl":29,"ownerDescription":30,"updatedAt":31,"install":32,"resources":45},"01M7EKMRQPCMRVBVRXKFSC5SMP","lang-go",null,"Idiomatic Go (1.22+) engineering, explicit error handling with %w\u002Ferrors.Is\u002Ferrors.As, goroutine lifecycle ownership, context cancellation propagation, -race detector verification, sync.Pool recycling, and table-driven tests.","raillen\u002Fdaisy-code-editor","raillen","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F50306048?v=4","01M7EKBDVVBSPF21PBPVJYMNYR","Raillen Santos","01M7EKBDWD12A1K9N9Y638FGX9",0,"MIT","https:\u002F\u002Fgithub.com\u002Fraillen\u002Fdaisy-code-editor\u002Fblob\u002Fmain\u002F.ai\u002Fskills\u002Flang-go\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: lang-go\ndescription: Idiomatic Go (1.22+) engineering, explicit error handling with %w\u002Ferrors.Is\u002Ferrors.As, goroutine lifecycle ownership, context cancellation propagation, -race detector verification, sync.Pool recycling, and table-driven tests.\n---\n\n# Go Idiomatic Reliability & Concurrency Hygiene\n\n## 1. Title and Description\n**Go Idiomatic Reliability & Concurrency Hygiene (`lang-go`)**\nEnforces idiomatic Go software engineering practices for modern Go (1.22+). Guarantees complete error accounting, zero goroutine leaks, strict happens-before memory visibility, race-clean concurrency, minimal heap allocations, and robust table-driven testing.\n\n## 2. Purpose\nEnsure all Go code produced or refactored within the Prumo framework adheres to production-grade Go standards, avoiding silent concurrency panics, memory bloat from uncollected goroutines, unhandled error escapes, and anti-idiomatic abstraction layers.\n\n## 3. Prerequisites\n- Go toolchain 1.22 or newer installed (`go version`).\n- Project root containing a valid `go.mod` file.\n- Race detector dependencies available (CGO or Go pure-race support where applicable).\n\n## 4. Inputs\n- Go source files (`*.go`), tests (`*_test.go`), and module dependencies (`go.mod`, `go.sum`).\n- Target task acceptance criteria, concurrency budgets, and SLA latency\u002Fthroughput profiles.\n\n## 5. Outputs\n- Idiomatic, formatted (`gofmt`\u002F`goimports`) Go source code.\n- Zero-leak concurrency structures with deterministic lifecycle termination.\n- Comprehensive test suites with race detection clean passes (`go test -race .\u002F...`).\n- Verification report conforming to `templates\u002Fgo-verification-report.md`.\n\n## 6. Execution Steps\n\n### Step 1: Explicit Error Handling and Wrapping\n1. **Never swallow errors**: Never assign a fallible return to blank identifier `_` without an explicit comment and verified safety invariant.\n2. **Contextual wrapping**: Wrap errors using `fmt.Errorf(\"action description: %w\", err)` to preserve the causal error chain.\n3. **Inspection**:\n   - Use `errors.Is(err, target)` to compare sentinel errors (e.g. `io.EOF`, `fs.ErrNotExist`).\n   - Use `errors.As(err, &targetStruct)` to extract structured error metadata.\n   - Use `errors.Join(err1, err2)` when collecting independent multi-step failure records.\n4. **Panic restriction**: Prohibit `panic()` and `recover()` in normal business logic. `panic()` is reserved exclusively for package initialization invariants (`must.go`) or programmer assertion failures that represent impossible states.\n\n### Step 2: Goroutine Lifecycle and Ownership\n1. **Every goroutine must have an explicit owner**: The spawning function or struct must maintain knowledge of how and when the spawned goroutine will exit.\n2. **Context propagation**: Accept `ctx context.Context` as the very first parameter on all I\u002FO, network, or long-running functions. Never store `context.Context` inside a struct.\n3. **Cancellation compliance**: Every blocking channel receive or select block must include a `case \u003C-ctx.Done(): return ctx.Err()` branch.\n4. **Bounded concurrency**: Never launch unbounded goroutines inside a loop or HTTP handler. Use worker pools, semaphore channels (`chan struct{}`), or `golang.org\u002Fx\u002Fsync\u002Ferrgroup`.\n\n### Step 3: Channel and Synchronization Axioms\n1. **Sender closes**: Only the producer\u002Fsender goroutine closes a channel. Never close a channel from the receiver, and never close a channel with multiple concurrent senders.\n2. **Channel state semantics**:\n   - Send to `nil` channel: blocks indefinitely.\n   - Receive from `nil` channel: blocks indefinitely.\n   - Send to closed channel: panics.\n   - Close a closed channel: panics.\n   - Receive from closed channel: immediately returns zero-value and `ok == false`.\n3. **Mutex vs Channels**:\n   - Use `sync.Mutex` or `sync.RWMutex` to protect internal state, in-memory caches, and data structures.\n   - Use channels to transfer ownership of data, coordinate lifecycles, and distribute tasks.\n4. **One-time initialization**: Use `sync.Once` or `sync.OnceValue` for lazy thread-safe initialization instead of custom atomic checks.\n\n### Step 4: Memory Optimization & Allocations\n1. **Slice & Map pre-allocation**: Always pre-allocate slices and maps when capacity is known: `make([]T, 0, expectedLen)` or `make(map[K]V, expectedKeys)`.\n2. **Recycling with `sync.Pool`**:\n   - Only pool frequently allocated, short-lived objects (e.g., serialization buffers, scratch byte slices).\n   - **Crucial**: Always reset object state before returning it to the pool via `defer pool.Put(buf)`.\n3. **Pointer vs Value semantics**:\n   - Return structs by value for small types (\u003C= 64 bytes) to encourage stack allocation and eliminate GC pressure.\n   - Use pointer receivers on methods if the method modifies the receiver, or if the struct contains synchronization primitives (`sync.Mutex` must never be copied).\n\n### Step 5: Interface Design\n1. **Accept interfaces, return structs**: Functions should receive the minimal interface required (`io.Reader` rather than `*os.File`) and return concrete types.\n2. **Interface location**: Define interfaces in the consumer package, not in the producer package.\n3. **Keep interfaces small**: Single-method interfaces (`io.Reader`, `io.Writer`, `fmt.Stringer`) compose naturally and are easily mocked in tests.\n\n### Step 6: Table-Driven Testing & Race Detection\n1. **Table-driven structure**: Formulate test cases as slices of structs containing `name`, `inputs`, `expected`, and `wantErr`.\n2. **Subtests and Parallelism**:\n   - Run test cases via `t.Run(tc.name, func(t *testing.T) { ... })`.\n   - Call `t.Parallel()` inside the subtest. (Note: In Go 1.22+, loop variables have per-iteration scope, eliminating the `tc := tc` trap).\n3. **Execution Gate**: Execute `go test -race -count=1 .\u002F...` on every change. A single data race is an immediate release blocker.\n\n## 7. Verification\nRun the verification suite:\n```bash\n# 1. Format and import hygiene\ngofmt -s -w .\ngo vet .\u002F...\n\n# 2. Race-detector test execution\ngo test -race -cover .\u002F...\n\n# 3. Static analysis\nif command -v staticcheck >\u002Fdev\u002Fnull 2>&1; then\n  staticcheck .\u002F...\nfi\n\n# 4. Allocation profiling (on critical hot paths)\ngo test -benchmem -bench=. .\u002F...\n```\n\n## 8. Fallbacks & Failure Recovery\n| Failure Class | Cause | Deterministic Remediation |\n|---|---|---|\n| Data Race Detected | Unsynchronized concurrent read\u002Fwrite to shared variable | Identify access points via `-race` stack trace. Wrap in `sync.Mutex` or replace with `sync\u002Fatomic` if primitive. |\n| Goroutine Leak | Goroutine blocked on channel send\u002Freceive with no active reader\u002Fwriter | Ensure channel buffer size matches expectations, or select on `ctx.Done()` with `defer cancel()`. Use `uber-go\u002Fgoleak` in tests. |\n| Memory Bloat from `sync.Pool` | Stale or huge buffers retained in pool | Limit maximum size of buffers returned to pool (drop if `cap > 64KB`). |\n| Nil Pointer Dereference | Untyped nil in interface comparison | Remember `var p *T = nil`; interface holding `p` is not nil (`val != nil` is true). Return untyped `nil` explicitly. |\n\n## 9. Constraints\n- **Zero raw blank errors**: Code that uses `_ = fallibleFunc()` without explicit recorded rationale is rejected.\n- **No global mutable singletons**: All dependencies must be passed explicitly via constructor functions (`NewService(...)`).\n- **No context stored in structs**: `context.Context` must remain ephemeral and flow through call stacks.\n- **Pass with `-race`**: Code failing `go test -race` will not pass the quality gate under any circumstance.\n\n## 10. Examples\n\n### Anti-Pattern: Goroutine Leak & Ignored Error\n```go\n\u002F\u002F BAD: Leaks goroutine if caller aborts, ignores channel error, no context cancellation\nfunc FetchAll(urls []string) []string {\n    ch := make(chan string) \u002F\u002F unbuffered!\n    for _, u := range urls {\n        go func(url string) {\n            resp, err := http.Get(url)\n            if err != nil {\n                return \u002F\u002F ERROR: if receiver stopped reading, channel send will hang forever!\n            }\n            body, _ := io.ReadAll(resp.Body) \u002F\u002F ERROR: ignored error, leaks body\n            ch \u003C- string(body)\n        }(u)\n    }\n    var results []string\n    for range urls {\n        results = append(results, \u003C-ch)\n    }\n    return results\n}\n```\n\n### Idiomatic Pattern: Structured Concurrency with errgroup\n```go\n\u002F\u002F GOOD: Bounded concurrency, context propagation, resource cleanup, clean errors\nfunc FetchAll(ctx context.Context, client *http.Client, urls []string, maxConcurrency int) ([]string, error) {\n    g, ctx := errgroup.WithContext(ctx)\n    g.SetLimit(maxConcurrency)\n\n    results := make([]string, len(urls))\n\n    for i, u := range urls {\n        g.Go(func() error {\n            req, err := http.NewRequestWithContext(ctx, http.MethodGet, u, nil)\n            if err != nil {\n                return fmt.Errorf(\"create request for %s: %w\", u, err)\n            }\n\n            resp, err := client.Do(req)\n            if err != nil {\n                return fmt.Errorf(\"execute request to %s: %w\", u, err)\n            }\n            defer resp.Body.Close()\n\n            if resp.StatusCode != http.StatusOK {\n                return fmt.Errorf(\"unexpected status %d from %s\", resp.StatusCode, u)\n            }\n\n            body, err := io.ReadAll(resp.Body)\n            if err != nil {\n                return fmt.Errorf(\"read response body from %s: %w\", u, err)\n            }\n\n            results[i] = string(body)\n            return nil\n        })\n    }\n\n    if err := g.Wait(); err != nil {\n        return nil, fmt.Errorf(\"fetching URLs: %w\", err)\n    }\n    return results, nil\n}\n```\n","# Go Idiomatic Reliability & Concurrency Hygiene\n\n## 1. Title and Description\n**Go Idiomatic Reliability & Concurrency Hygiene (`lang-go`)**\nEnforces idiomatic Go software engineering practices for modern Go (1.22+). Guarantees complete error accounting, zero goroutine leaks, strict happens-before memory visibility, race-clean concurrency, minimal heap allocations, and robust table-driven testing.\n\n## 2. Purpose\nEnsure all Go code produced or refactored within the Prumo framework adheres to production-grade Go standards, avoiding silent concurrency panics, memory bloat from uncollected goroutines, unhandled error escapes, and anti-idiomatic abstraction layers.\n\n## 3. Prerequisites\n- Go toolchain 1.22 or newer installed (`go version`).\n- Project root containing a valid `go.mod` file.\n- Race detector dependencies available (CGO or Go pure-race support where applicable).\n\n## 4. Inputs\n- Go source files (`*.go`), tests (`*_test.go`), and module dependencies (`go.mod`, `go.sum`).\n- Target task acceptance criteria, concurrency budgets, and SLA latency\u002Fthroughput profiles.\n\n## 5. Outputs\n- Idiomatic, formatted (`gofmt`\u002F`goimports`) Go source code.\n- Zero-leak concurrency structures with deterministic lifecycle termination.\n- Comprehensive test suites with race detection clean passes (`go test -race .\u002F...`).\n- Verification report conforming to `templates\u002Fgo-verification-report.md`.\n\n## 6. Execution Steps\n\n### Step 1: Explicit Error Handling and Wrapping\n1. **Never swallow errors**: Never assign a fallible return to blank identifier `_` without an explicit comment and verified safety invariant.\n2. **Contextual wrapping**: Wrap errors using `fmt.Errorf(\"action description: %w\", err)` to preserve the causal error chain.\n3. **Inspection**:\n   - Use `errors.Is(err, target)` to compare sentinel errors (e.g. `io.EOF`, `fs.ErrNotExist`).\n   - Use `errors.As(err, &targetStruct)` to extract structured error metadata.\n   - Use `errors.Join(err1, err2)` when collecting independent multi-step failure records.\n4. **Panic restriction**: Prohibit `panic()` and `recover()` in normal business logic. `panic()` is reserved exclusively for package initialization invariants (`must.go`) or programmer assertion failures that represent impossible states.\n\n### Step 2: Goroutine Lifecycle and Ownership\n1. **Every goroutine must have an explicit owner**: The spawning function or struct must maintain knowledge of how and when the spawned goroutine will exit.\n2. **Context propagation**: Accept `ctx context.Context` as the very first parameter on all I\u002FO, network, or long-running functions. Never store `context.Context` inside a struct.\n3. **Cancellation compliance**: Every blocking channel receive or select block must include a `case \u003C-ctx.Done(): return ctx.Err()` branch.\n4. **Bounded concurrency**: Never launch unbounded goroutines inside a loop or HTTP handler. Use worker pools, semaphore channels (`chan struct{}`), or `golang.org\u002Fx\u002Fsync\u002Ferrgroup`.\n\n### Step 3: Channel and Synchronization Axioms\n1. **Sender closes**: Only the producer\u002Fsender goroutine closes a channel. Never close a channel from the receiver, and never close a channel with multiple concurrent senders.\n2. **Channel state semantics**:\n   - Send to `nil` channel: blocks indefinitely.\n   - Receive from `nil` channel: blocks indefinitely.\n   - Send to closed channel: panics.\n   - Close a closed channel: panics.\n   - Receive from closed channel: immediately returns zero-value and `ok == false`.\n3. **Mutex vs Channels**:\n   - Use `sync.Mutex` or `sync.RWMutex` to protect internal state, in-memory caches, and data structures.\n   - Use channels to transfer ownership of data, coordinate lifecycles, and distribute tasks.\n4. **One-time initialization**: Use `sync.Once` or `sync.OnceValue` for lazy thread-safe initialization instead of custom atomic checks.\n\n### Step 4: Memory Optimization & Allocations\n1. **Slice & Map pre-allocation**: Always pre-allocate slices and maps when capacity is known: `make([]T, 0, expectedLen)` or `make(map[K]V, expectedKeys)`.\n2. **Recycling with `sync.Pool`**:\n   - Only pool frequently allocated, short-lived objects (e.g., serialization buffers, scratch byte slices).\n   - **Crucial**: Always reset object state before returning it to the pool via `defer pool.Put(buf)`.\n3. **Pointer vs Value semantics**:\n   - Return structs by value for small types (\u003C= 64 bytes) to encourage stack allocation and eliminate GC pressure.\n   - Use pointer receivers on methods if the method modifies the receiver, or if the struct contains synchronization primitives (`sync.Mutex` must never be copied).\n\n### Step 5: Interface Design\n1. **Accept interfaces, return structs**: Functions should receive the minimal interface required (`io.Reader` rather than `*os.File`) and return concrete types.\n2. **Interface location**: Define interfaces in the consumer package, not in the producer package.\n3. **Keep interfaces small**: Single-method interfaces (`io.Reader`, `io.Writer`, `fmt.Stringer`) compose naturally and are easily mocked in tests.\n\n### Step 6: Table-Driven Testing & Race Detection\n1. **Table-driven structure**: Formulate test cases as slices of structs containing `name`, `inputs`, `expected`, and `wantErr`.\n2. **Subtests and Parallelism**:\n   - Run test cases via `t.Run(tc.name, func(t *testing.T) { ... })`.\n   - Call `t.Parallel()` inside the subtest. (Note: In Go 1.22+, loop variables have per-iteration scope, eliminating the `tc := tc` trap).\n3. **Execution Gate**: Execute `go test -race -count=1 .\u002F...` on every change. A single data race is an immediate release blocker.\n\n## 7. Verification\nRun the verification suite:\n```bash\n# 1. Format and import hygiene\ngofmt -s -w .\ngo vet .\u002F...\n\n# 2. Race-detector test execution\ngo test -race -cover .\u002F...\n\n# 3. Static analysis\nif command -v staticcheck >\u002Fdev\u002Fnull 2>&1; then\n  staticcheck .\u002F...\nfi\n\n# 4. Allocation profiling (on critical hot paths)\ngo test -benchmem -bench=. .\u002F...\n```\n\n## 8. Fallbacks & Failure Recovery\n| Failure Class | Cause | Deterministic Remediation |\n|---|---|---|\n| Data Race Detected | Unsynchronized concurrent read\u002Fwrite to shared variable | Identify access points via `-race` stack trace. Wrap in `sync.Mutex` or replace with `sync\u002Fatomic` if primitive. |\n| Goroutine Leak | Goroutine blocked on channel send\u002Freceive with no active reader\u002Fwriter | Ensure channel buffer size matches expectations, or select on `ctx.Done()` with `defer cancel()`. Use `uber-go\u002Fgoleak` in tests. |\n| Memory Bloat from `sync.Pool` | Stale or huge buffers retained in pool | Limit maximum size of buffers returned to pool (drop if `cap > 64KB`). |\n| Nil Pointer Dereference | Untyped nil in interface comparison | Remember `var p *T = nil`; interface holding `p` is not nil (`val != nil` is true). Return untyped `nil` explicitly. |\n\n## 9. Constraints\n- **Zero raw blank errors**: Code that uses `_ = fallibleFunc()` without explicit recorded rationale is rejected.\n- **No global mutable singletons**: All dependencies must be passed explicitly via constructor functions (`NewService(...)`).\n- **No context stored in structs**: `context.Context` must remain ephemeral and flow through call stacks.\n- **Pass with `-race`**: Code failing `go test -race` will not pass the quality gate under any circumstance.\n\n## 10. Examples\n\n### Anti-Pattern: Goroutine Leak & Ignored Error\n```go\n\u002F\u002F BAD: Leaks goroutine if caller aborts, ignores channel error, no context cancellation\nfunc FetchAll(urls []string) []string {\n    ch := make(chan string) \u002F\u002F unbuffered!\n    for _, u := range urls {\n        go func(url string) {\n            resp, err := http.Get(url)\n            if err != nil {\n                return \u002F\u002F ERROR: if receiver stopped reading, channel send will hang forever!\n            }\n            body, _ := io.ReadAll(resp.Body) \u002F\u002F ERROR: ignored error, leaks body\n            ch \u003C- string(body)\n        }(u)\n    }\n    var results []string\n    for range urls {\n        results = append(results, \u003C-ch)\n    }\n    return results\n}\n```\n\n### Idiomatic Pattern: Structured Concurrency with errgroup\n```go\n\u002F\u002F GOOD: Bounded concurrency, context propagation, resource cleanup, clean errors\nfunc FetchAll(ctx context.Context, client *http.Client, urls []string, maxConcurrency int) ([]string, error) {\n    g, ctx := errgroup.WithContext(ctx)\n    g.SetLimit(maxConcurrency)\n\n    results := make([]string, len(urls))\n\n    for i, u := range urls {\n        g.Go(func() error {\n            req, err := http.NewRequestWithContext(ctx, http.MethodGet, u, nil)\n            if err != nil {\n                return fmt.Errorf(\"create request for %s: %w\", u, err)\n            }\n\n            resp, err := client.Do(req)\n            if err != nil {\n                return fmt.Errorf(\"execute request to %s: %w\", u, err)\n            }\n            defer resp.Body.Close()\n\n            if resp.StatusCode != http.StatusOK {\n                return fmt.Errorf(\"unexpected status %d from %s\", resp.StatusCode, u)\n            }\n\n            body, err := io.ReadAll(resp.Body)\n            if err != nil {\n                return fmt.Errorf(\"read response body from %s: %w\", u, err)\n            }\n\n            results[i] = string(body)\n            return nil\n        })\n    }\n\n    if err := g.Wait(); err != nil {\n        return nil, fmt.Errorf(\"fetching URLs: %w\", err)\n    }\n    return results, nil\n}\n```\n",{"name":5,"description":7},"main","2e465213b972294984c8c9515a47f811e4b358da",".ai\u002Fskills\u002Flang-go","https:\u002F\u002Fgithub.com\u002Fraillen\u002Fdaisy-code-editor","https:\u002F\u002Fgithub.com\u002Fraillen","https:\u002F\u002Fraillen.com","\u003C\u003CMarketing & IT>>\r\n\r\n@poppy-team\r\n@wasd-lat ","2026-10-16 09:17:52",{"source":8,"skillName":5,"commands":33,"prompt":43,"zipAvailable":44},[34,37,40],{"tool":35,"command":36},"npx","npx skills add raillen\u002Fdaisy-code-editor --skill lang-go",{"tool":38,"command":39},"bunx","bunx skills add raillen\u002Fdaisy-code-editor --skill lang-go",{"tool":41,"command":42},"pnpm","pnpm dlx skills add raillen\u002Fdaisy-code-editor --skill lang-go","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fraillen\u002Fdaisy-code-editor\u002Fblob\u002Fmain\u002F.ai\u002Fskills\u002Flang-go\u002FSKILL.md",true,[46,52,58,62,66,70],{"path":47,"resourceType":48,"resourceTypeDesc":49,"sizeBytes":50,"sourceHtmlUrl":51},"checks\u002Fgo-rules.md","REFERENCE","参考文档",2195,"https:\u002F\u002Fgithub.com\u002Fraillen\u002Fdaisy-code-editor\u002Fblob\u002Fmain\u002F.ai\u002Fskills\u002Flang-go\u002Fchecks\u002Fgo-rules.md",{"path":53,"resourceType":54,"resourceTypeDesc":55,"sizeBytes":56,"sourceHtmlUrl":57},"examples\u002Fsafe_go.go","SCRIPT","脚本",4308,"https:\u002F\u002Fgithub.com\u002Fraillen\u002Fdaisy-code-editor\u002Fblob\u002Fmain\u002F.ai\u002Fskills\u002Flang-go\u002Fexamples\u002Fsafe_go.go",{"path":59,"resourceType":48,"resourceTypeDesc":49,"sizeBytes":60,"sourceHtmlUrl":61},"manifest.json",2051,"https:\u002F\u002Fgithub.com\u002Fraillen\u002Fdaisy-code-editor\u002Fblob\u002Fmain\u002F.ai\u002Fskills\u002Flang-go\u002Fmanifest.json",{"path":63,"resourceType":48,"resourceTypeDesc":49,"sizeBytes":64,"sourceHtmlUrl":65},"references\u002Fgo-concurrency-leak.md",2714,"https:\u002F\u002Fgithub.com\u002Fraillen\u002Fdaisy-code-editor\u002Fblob\u002Fmain\u002F.ai\u002Fskills\u002Flang-go\u002Freferences\u002Fgo-concurrency-leak.md",{"path":67,"resourceType":54,"resourceTypeDesc":55,"sizeBytes":68,"sourceHtmlUrl":69},"scripts\u002Fverify.sh",1437,"https:\u002F\u002Fgithub.com\u002Fraillen\u002Fdaisy-code-editor\u002Fblob\u002Fmain\u002F.ai\u002Fskills\u002Flang-go\u002Fscripts\u002Fverify.sh",{"path":71,"resourceType":48,"resourceTypeDesc":49,"sizeBytes":72,"sourceHtmlUrl":73},"templates\u002Fgo-verification-report.md",1511,"https:\u002F\u002Fgithub.com\u002Fraillen\u002Fdaisy-code-editor\u002Fblob\u002Fmain\u002F.ai\u002Fskills\u002Flang-go\u002Ftemplates\u002Fgo-verification-report.md",[75,81,87,94,101,108],{"skillNo":76,"name":77,"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":78,"categories":79,"keywords":80,"publishedAt":19},"01M7EKQYSDAX3SGSCRF873Z8E2","zoom-reflow","https:\u002F\u002Fgithub.com\u002Fraillen\u002Fdaisy-code-editor\u002Fblob\u002Fmain\u002F.ai\u002Fskills\u002Fzoom-reflow\u002FSKILL.md",[],[],{"skillNo":82,"name":83,"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":84,"categories":85,"keywords":86,"publishedAt":19},"01M7EKQX0MWJNQD482GGZPGES4","wireframe-styleguide","https:\u002F\u002Fgithub.com\u002Fraillen\u002Fdaisy-code-editor\u002Fblob\u002Fmain\u002F.ai\u002Fskills\u002Fwireframe-styleguide\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},"01M7EKQS57FS6JYE6KWW6X5ADJ","visual-regression","Pixel-by-pixel snapshot testing, Playwright integration, dynamic content masking, deterministic font rendering, and cross-browser CI gates","https:\u002F\u002Fgithub.com\u002Fraillen\u002Fdaisy-code-editor\u002Fblob\u002Fmain\u002F.ai\u002Fskills\u002Fvisual-regression\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},"01M7EKQMFR7651NVH100P5781Z","ui-implementation","Component-driven UI implementation, multi-state matrix (default, hover, focus-visible, active, disabled, loading, empty, error), DTCG design tokens, responsive layout contracts, and accessibility tree mapping.","https:\u002F\u002Fgithub.com\u002Fraillen\u002Fdaisy-code-editor\u002Fblob\u002Fmain\u002F.ai\u002Fskills\u002Fui-implementation\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},"01M7EKQG3NVX6DPCYS6Q4PA71V","tui-editor-engine","Text buffer and editing semantics for a terminal code editor — index conversion, transaction-first editing, multi-cursor invariants, undo grouping, and large-file behaviour.","https:\u002F\u002Fgithub.com\u002Fraillen\u002Fdaisy-code-editor\u002Fblob\u002Fmain\u002F.ai\u002Fskills\u002Ftui-editor-engine\u002FSKILL.md",[],[],{"skillNo":109,"name":110,"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":111,"categories":112,"keywords":113,"publishedAt":19},"01M7EKQEJ993JGC72FE2KFY3ZZ","tree-sitter-context-indexing","https:\u002F\u002Fgithub.com\u002Fraillen\u002Fdaisy-code-editor\u002Fblob\u002Fmain\u002F.ai\u002Fskills\u002Ftree-sitter-context-indexing\u002FSKILL.md",[],[]]