Openclaw-go upstream-release
Handle upstream-release issues — read changelog deltas, update spec docs, sync protocol and gateway types, run tests, open PR, tag release
git clone https://github.com/a3tai/openclaw-go
T=$(mktemp -d) && git clone --depth=1 https://github.com/a3tai/openclaw-go "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.opencode/skills/upstream-release" ~/.claude/skills/a3tai-openclaw-go-upstream-release && rm -rf "$T"
T=$(mktemp -d) && git clone --depth=1 https://github.com/a3tai/openclaw-go "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/.opencode/skills/upstream-release" ~/.openclaw/skills/a3tai-openclaw-go-upstream-release && rm -rf "$T"
.opencode/skills/upstream-release/SKILL.mdWhat I do
Automate the full upstream release sync workflow for openclaw-go when a new OpenClaw gateway version is published.
When to use me
Use this skill when handling GitHub issues labeled
upstream-release or when a new OpenClaw gateway version needs to be synced into this library.
Workflow
-
Read the issue — extract the changelog excerpt and identify API/protocol deltas (new RPCs, changed params, removed fields, new event types).
-
Create or update the spec doc — write
summarizing upstream deltas and required work items.docs/specs/<version>.md -
Update protocol types — add or modify types in
to match the upstream wire format:protocol/- New
and*Params
structs*Result - New constants (methods, event names, scopes)
- Updated
tags and field typesjson - Run
after changesgo vet ./protocol/...
- New
-
Update gateway methods — add typed convenience methods in
:gateway/methods.go- Follow the existing pattern: marshal params →
→ unmarshal resultclient.Send() - Method name matches the RPC name in PascalCase
- Include GoDoc comment referencing the RPC method string
- Follow the existing pattern: marshal params →
-
Update tests — add test cases in
:gateway/methods_test.go- Follow existing table-driven test pattern
- Mock the expected request/response exchange
- Cover both success and error paths
-
Update CHANGELOG.md — add entries under
following Keep a Changelog format.[Unreleased] > Added -
Update docs-site package pages — add new methods to
and any new types todocs-site/packages/gateway.md
.docs-site/packages/protocol.md -
Run validation:
go test ./... -race go vet ./... -
Complete review gates before marking the PR ready:
- Architecture review — confirm type design matches upstream semantics
- Go standards review — idiomatic naming, error handling, documentation
- API coverage review — every new upstream RPC has a typed method and test
- Security review — no credential leaks, safe defaults
-
Open PR to
with:main- Summary of upstream changes
- Link to the upstream-release issue
- Test results pasted in the PR body
-
After PR merge only — create tag and GitHub release:
git tag v<version> gh release create v<version> --title "v<version>" --notes "..." -
Close the issue with a link to the release.
Key files
— wire typesprotocol/types.go
— method strings, scopes, rolesprotocol/constants.go
— typed RPC methodsgateway/methods.go
— method testsgateway/methods_test.go
— release notesCHANGELOG.md
— version spec documentsdocs/specs/
— published package docsdocs-site/packages/
Rules
- Never push directly to
— always use feature branches and PRs.main - Branch naming:
issue/<number>-upstream-release-v<version> - One upstream version per PR — do not batch multiple releases.
- Every new RPC must have a typed method, a test, a CHANGELOG entry, and a docs update.