# Send Go to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "go",
    "name": "Go",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/ivangdavila/go",
    "canonicalUrl": "https://clawhub.ai/ivangdavila/go",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/go",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=go",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md",
      "collections.md",
      "concurrency.md",
      "errors.md",
      "interfaces.md"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "go",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-03T19:28:41.977Z",
      "expiresAt": "2026-05-10T19:28:41.977Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=go",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=go",
        "contentDisposition": "attachment; filename=\"go-1.0.2.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "go"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/go"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/go",
    "downloadUrl": "https://openagent3.xyz/downloads/go",
    "agentUrl": "https://openagent3.xyz/skills/go/agent",
    "manifestUrl": "https://openagent3.xyz/skills/go/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/go/agent.md"
  }
}
```
## Documentation

### Quick Reference

TopicFileConcurrency patternsconcurrency.mdInterface and type systeminterfaces.mdSlices, maps, stringscollections.mdError handling patternserrors.md

### Goroutine Leaks

Goroutine blocked on channel with no sender = leak forever—always ensure channel closes or use context
Unbuffered channel send blocks until receive—deadlock if receiver never comes
for range on channel loops forever until channel closed—sender must close(ch)
Context cancellation doesn't stop goroutine automatically—must check ctx.Done() in loop
Leaked goroutines accumulate memory and never garbage collect

### Channel Traps

Sending to nil channel blocks forever—receiving from nil also blocks forever
Sending to closed channel panics—closing already closed channel panics
Only sender should close channel—receiver closing causes sender panic
Buffered channel full = send blocks—size buffer for expected load
select with multiple ready cases picks randomly—not first listed

### Defer Traps

Defer arguments evaluated immediately, not when deferred function runs—defer log(time.Now()) captures now
Defer in loop accumulates—defers stack, run at function end not iteration end
Defer runs even on panic—good for cleanup, but recover only in deferred function
Named return values modifiable in defer—defer func() { err = wrap(err) }() works
Defer order is LIFO—last defer runs first

### Interface Traps

Nil concrete value in interface is not nil interface—var p *MyType; var i interface{} = p; i != nil is true
Type assertion on wrong type panics—use comma-ok: v, ok := i.(Type)
Empty interface any accepts anything but loses type safety—avoid when possible
Interface satisfaction is implicit—no compile error if method signature drifts
Pointer receiver doesn't satisfy interface for value type—only *T has the method

### Error Handling

Errors are values, not exceptions—always check returned error
err != nil after every call—unchecked errors are silent bugs
errors.Is for wrapped errors—== doesn't work with fmt.Errorf("%w", err)
Sentinel errors should be var ErrFoo = errors.New() not recreated
Panic for programmer errors only—return error for runtime failures

### Slice Traps

Slice is reference to array—modifying slice modifies original
Append may or may not reallocate—never assume capacity
Slicing doesn't copy—a[1:3] shares memory with a
Nil slice and empty slice differ—var s []int vs s := []int{}
copy() copies min of lengths—doesn't extend destination

### Map Traps

Reading from nil map returns zero value—writing to nil map panics
Map iteration order is random—don't rely on order
Maps not safe for concurrent access—use sync.Map or mutex
Taking address of map element forbidden—&m[key] doesn't compile
Delete from map during iteration is safe—but add may cause issues

### String Traps

Strings are immutable byte slices—each modification creates new allocation
range over string iterates runes, not bytes—index jumps for multi-byte chars
len(s) is bytes, not characters—use utf8.RuneCountInString()
String comparison is byte-wise—not Unicode normalized
Substring shares memory with original—large string keeps memory alive

### Struct and Memory

Struct fields padded for alignment—field order affects memory size
Zero value is valid—var wg sync.WaitGroup works, no constructor needed
Copying struct with mutex copies unlocked mutex—always pass pointer
Embedding is not inheritance—promoted methods can be shadowed
Exported fields start uppercase—lowercase fields invisible outside package

### Build Traps

go build caches aggressively—use -a flag to force rebuild
Unused imports fail compilation—use _ import for side effects only
init() runs before main, order by dependency—not file order
go:embed paths relative to source file—not working directory
Cross-compile: GOOS=linux GOARCH=amd64 go build—easy but test on target
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: ivangdavila
- Version: 1.0.2
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-05-03T19:28:41.977Z
- Expires at: 2026-05-10T19:28:41.977Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/go)
- [Send to Agent page](https://openagent3.xyz/skills/go/agent)
- [JSON manifest](https://openagent3.xyz/skills/go/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/go/agent.md)
- [Download page](https://openagent3.xyz/downloads/go)