Token导航 LogoToken导航TokenDH.com
前端设计操作浏览器github未标认证来源可访问许可证需确认审计提醒

taubyte-go-sdk-constraintstaubyte GO SDK constraints 命令行

Agent Skill

taubyte-go-sdk-constraints 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

256

周安装

11

GitHub Stars

公开资料未说明

下载量

90
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:taubyte-go-sdk-constraints(taubyte GO SDK constraints 命令行)
来源仓库:https://github.com/taubyte/skills
仓库路径:skills/taubyte-go-sdk-constraints
安装命令:
npx skills add https://github.com/taubyte/skills --skill taubyte-go-sdk-constraints
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/taubyte/skills --skill taubyte-go-sdk-constraints

简介

用于处理 GitHub 仓库、Issue 和 Pull Request 信息。

  • 适合围绕代码变更和协作事项进行整理。
  • 可结合来源仓库和原始 README 继续核验用法。
  • 安装命令:npx skills add https://github.com/taubyte/skills --skill taubyte-go-sdk-constraints。
  • 使用前应确认权限范围和维护状态,避免触发联网或文件读写。

SKILL.md

Go SDK Constraints

Use this skill for any Go function implementation or debugging.

Go function filesystem layout (non-negotiable)

  • Authoring layout: after tau new function --template empty --language Go, all hand-written Go for the function lives in empty.go at the function root — the same directory as go.mod (e.g. code/functions/<name>/empty.go). Do not put empty.go under lib/ or any subdirectory for source you maintain.
  • Never manually create lib/, never move or copy empty.go into lib/, and never hand-author main.go (or any extra .go shims) in the function tree to “fix” the build. That pattern duplicates packages, confuses the WASM layout, and breaks tau build function / CI (e.g. *found packages lib and main in /src/lib*).
  • Do not “normalize” the tree: no merging a second main.go under lib/, no relocating the scaffold out of the root.
  • If tau build function or a local experiment once dropped main.go or a lib/ tree into the repo, treat those as mistakes or stale artifacts when they contradict the root-empty.go rule: remove stray lib/ and hand-curated main.go, keep only root empty.go (+ go.mod / .taubyte/* as generated). Do not recreate lib/ to satisfy the compiler.

Local WASM build test (preferred over ad-hoc tau build tree hacks)

From the function root (directory containing empty.go and go.mod), with Docker available, use taubyte/go-wasi so the official /utils/wasm.sh path runs against a clean /src copy — not by adding lib/ or main.go locally.

mkdir -p out
docker run -it --rm \
  -e CODE=/src \
  -v "$(pwd)/out:/out" \
  --mount type=bind,src="$(pwd)",dst=/src_ro,ro \
  --mount type=tmpfs,dst=/src \
  taubyte/go-wasi /bin/bash -c '
    set -e
    rsync -a --delete /src_ro/ /src/ 2>/dev/null || cp -a /src_ro/. /src/
    echo "export CODE=/src; cd /src; source /utils/wasm.sh" > /tmp/cowrc
    exec bash --rcfile /tmp/cowrc -i'
  • CODE=/src is required. /utils/wasm.sh runs go run. ${CODE}/lib lib; if CODE is empty, ${CODE}/lib becomes /lib and you get package lib not found.
  • mv.git in wasm.sh may print *cannot stat '.git'* when there is no .git in the function folder; that is harmless.
  • Run interactively inside the container, then run build./ (or your target path). Artifacts land under ./out on the host (artifact.wasm, _artifact.wasm).
  • Non-interactive one-shot (same mounts; no TTY): after cd to the function root, source /utils/wasm.sh then build./ in the same bash -c string (omit set -e if mv.git would abort your wrapper).
  • On Windows, use Git Bash with MSYS_NO_PATHCONV=1 in front of docker so paths like /out are not rewritten; use $(pwd -W) for bind mounts if Docker Desktop needs a Windows path.

HTTP event constraints

  • h.Headers().Get(key) returns (string, error) (two variables).
  • h.Query().Get(key) returns (string, error) (two variables).
  • Do not use h.URL().Query()...; use h.Query().Get(...).
  • Response ordering: set headers (including Content-Type for JSON), write the body (h.Write(...)), then call h.Return(status) last. Calling Return before Write yields empty or truncated bodies and broken response.json() clients.

PubSub event constraints (consumer — trigger.type: pubsub)

  • From the PubSub event object: Data() returns ([]byte, error) (two variables); Channel() returns (*ChannelObject, error) (two variables). Typical pattern: pubsubEvent, err:= e.PubSub() then pubsubEvent.Data() / pubsubEvent.Channel() — align with your handler’s generated event parameter name.
  • Optionally verify Channel().Name() equals the configured channel when multiple channels exist.
  • Deserialize Data(), validate, then optionally open KV with database.New("<match>") and Put / other side effects.

PubSub producer and WebSocket (HTTP handlers — pubsub/node)

  • import pubsubnode "github.com/taubyte/go-sdk/pubsub/node".
  • ch, err:= pubsubnode.Channel("<channelName>") — the string must equal the messaging resource’s channel.match and any PubSub function’s trigger.channel in the same project wiring.
  • ch.Publish(payloadBytes) to broadcast from an HTTP handler (check errors in real code).
  • For browser realtime: url, err:= ch.WebSocket().Url() and return url.String() (e.g. JSON) to the client; messaging YAML should have bridges.websocket.enable: true when using WebSocket URLs.

Cross-wiring checklist: messaging.channel.match == trigger.channel on PubSub functions == pubsubnode.Channel("..."); keep messaging.local and trigger.local aligned when both exist; execution.call must match //export in the built WASM.

Storage constraints

  • Retrieve storage via storage.Get(match) or storage.New(match).
  • Write with stor.File(fileName).Add(data, overwrite).
  • Read with:

- file:= stor.File(fileName) - sf, err:= file.GetFile() - then sf.Read(...) or io.Copy(...) and sf.Close().

  • Do not use invalid patterns like stor.New().File(...).

Database (KV) — github.com/taubyte/go-sdk/database

  • import "github.com/taubyte/go-sdk/database".
  • db, err:= database.New("<match>")<match> must equal the database resource’s YAML match when useRegex: false (not the file name or description). Path-style matchers are exact: e.g. YAML match: /todos requires database.New("/todos") including the leading /.
  • defer db.Close() when the DB is opened for the scope of one request or event.
  • Put(key, []byte), Get(key)([]byte, error), Delete(key), List("<prefix>") → keys under a prefix (e.g. list todo/ then Get each). Sort in application code if you need stable ordering.
  • Missing keys: Get failing or empty value is often normal (first run, unknown id). For list APIs, treat “no index key yet” as an empty list, not necessarily HTTP 500 — reserve 500 for real store errors.
  • Key design: namespace with prefixes (todo/<id>, note/<id>, …). Prefer one database resource per app with a stable match and many prefixes unless policy requires splitting.

Quick patterns

name, _ := h.Headers().Get("X-File-Name")
name, _ = h.Query().Get("name")

data, err := ev.Data()
if err != nil { return 1 }

_, err = stor.File("filename.txt").Add(body, true)
file := stor.File("filename.txt")
sf, err := file.GetFile()
defer sf.Close()

Database (import "github.com/taubyte/go-sdk/database"; match must match YAML):

db, err := database.New("appdata")
if err != nil { return 1 }
defer db.Close()
_ = db.Put("todo/1", []byte(`{"title":"x"}`))
raw, err := db.Get("todo/1")
keys, err := db.List("todo/")

Go WASM libraries (not the empty.go function scaffold)

Library resources are separate repos: they ship .taubyte/ + go-sdk and expose handlers with //export <Symbol> comments. Config **functions/*.yaml then sets source: libraries/<library> and execution.call: <Symbol> per route — one build, many HTTP resources (see taubyte-resource-creation and taubyte-reference-index** → *Full-stack worked example*).

  • The “root empty.go only / never hand-create lib/ rule applies to tau new function --template empty trees, not to authoring conventions inside an external library repo the platform builds as WASM.
  • Use the same HTTP and database API shapes as above (h.Query().Get, database.New path matching the databases match in config, etc.).
  • **libraries/*.yaml source.path must match the directory layout inside the library’s GitHub repo** that actually contains the built Go sources (often repo root /). Wrong source.path → wrong or empty WASM.
  • Keep response bodies and Content-Type consistent with the front-end (e.g. JSON vs raw bytes) so response.json() matches what the handler writes; write body then Return (see HTTP constraints above).

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

37.13%
按下载量换算33

Claude

27.05%
按下载量换算24

Cursor

17.84%
按下载量换算16

Gemini CLI

9.63%
按下载量换算9

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

可疑

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在 warning/failed 结果,不能写成本站确认安全。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills