From dubbo-go
Structured diagnosis for dubbo-go runtime errors. Use when user reports an error, paste logs, mentions timeout/panic/connection refused/no provider, or asks why their dubbo-go service isn't working.
How this skill is triggered — by the user, by Claude, or both
Slash command
/dubbo-go:debugThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
When user shares an error or log, match it to a pattern below. If unclear, ask for:
When user shares an error or log, match it to a pattern below. If unclear, ask for:
Cause: Consumer cannot find provider in registry.
Checklist:
dubbo server starteddubbo.WithRegistry(registry.WithAddress(...)) / YAML dubbo.registries.xxx.address)?dubbo.WithName(...))? dubbo-go v3 defaults to application-level service discovery — the registry stores the app name, not the interface FQN.interface name passed into pb.RegisterXxxHandler / pb.NewXxxService on both sides?protocol on both sides (both tri / both dubbo)?zkCli.sh / etcdctl get --prefix /services)?# Nacos — v3 default is application-level discovery, so query by app name
curl "http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=<your-app-name>"
Cause: Network or port configuration error.
Checklist:
protocols.triple.port matches what consumer is trying to connect to?localhost?lsof -i :20000hessian: failed to decode
protobuf: cannot parse invalid wire-format data
Cause: Provider and consumer using different serialization formats.
Checklist:
tri or both dubbo)?.proto file compiled on both sides? Same go_package?context deadline exceeded
invoke timeout
Cause: Provider too slow, filter blocking, or network delay.
Checklist:
// Code API: set per-reference timeout
svc, _ := pb.NewGreetService(cli, client.WithRequestTimeout(10*time.Second))
// Or at call site with a standard context:
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
resp, err := svc.Greet(ctx, req)
Cause: Filter imported but not registered, or name string doesn't match what was registered in extension.SetFilter(name, ...).
Checklist:
_ "dubbo.apache.org/dubbo-go/v3/filter/token" or _ "github.com/yourorg/yourapp/filter/myfilter"server.WithFilter("xxx") / client.WithClientFilter("xxx") matches the name used in the extension.SetFilter("xxx", ...) call inside that filter's init()?_ "dubbo.apache.org/dubbo-go/v3/imports" during development to auto-import all built-in filters.Cause: Missing srv.Serve() or wrong graceful shutdown setup.
// Correct: blocking call
if err := srv.Serve(); err != nil {
panic(err)
}
// Wrong: non-blocking, process exits immediately
go srv.Serve()
// nothing blocks here → process exits
Enable debug logging to see more detail:
// import "dubbo.apache.org/dubbo-go/v3/logger"
ins, _ := dubbo.NewInstance(
dubbo.WithLogger(logger.WithLevel("debug")),
// ...
)
Key log lines to look for:
Registering service: <interface> — service being registeredA provider service ... was registered successfully — provider readyexport <interface> service failed — registration errorNo provider available / no route — consumer lookup failedCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub tsukikage7/dubbo-go-skills --plugin dubbo-go