with one click
gormes-provider-parity
// Use when fixing or implementing Gormes provider, auth, credential, endpoint, model-routing, streaming, account-usage, rate-limit, retry, or Telegram-visible provider error behavior.
// Use when fixing or implementing Gormes provider, auth, credential, endpoint, model-routing, streaming, account-usage, rate-limit, retry, or Telegram-visible provider error behavior.
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | gormes-provider-parity |
| description | Use when fixing or implementing Gormes provider, auth, credential, endpoint, model-routing, streaming, account-usage, rate-limit, retry, or Telegram-visible provider error behavior. |
For Gormes work, stay on the existing development branch. Do not create or
use feature branches, short-lived branches, or git worktrees. If the checkout
is not on development, stop before editing and switch safely or report the
blocker.
Use this skill whenever Gormes has provider, auth, credential, endpoint, model-routing, streaming, account-usage, rate-limit, retry, or Telegram-visible provider error problems.
Do not use this skill as a catch-all for every "tool calling is bad" report.
Raw iteration-budget errors, duplicate final messages, hourglass/status leaks,
and TUI/tool-progress exposure start in gormes-hermes-parity and usually land
in gormes-tdd-slice against kernel or channel fixtures. Use this skill when
the evidence points to provider request/response shaping, stream repair,
malformed tool-call payloads, retry/rate-limit handling, or safe provider error
rendering.
Make Gormes provider behavior feel like Hermes to existing Hermes users while implementing the runtime natively in Go.
Hermes Agent is the Python upstream/father implementation for Gormes. Prefer
the in-repo checkout at ./hermes-agent; fall back to ../hermes-agent only
when absent. Resolve it as $HERMES_SRC before reading provider behavior.
Hermes parity is P0:
config.yaml placement;hermes-agent runtime services.External Go projects are implementation references, not the product contract.
docs/content/building-gormes/architecture_plan/progress.json when one exists.$HERMES_SRC/AGENTS.md$HERMES_SRC/agent/$HERMES_SRC/gateway//home/xel/git/sages-openclaw/workspace-mineru/references/go-agent-os/GORMES-PROVIDER-PATTERN-REFERENCES.md/home/xel/git/sages-openclaw/workspace-mineru/references/go-agent-os/goclaw/internal/oauth/openai.go/home/xel/git/sages-openclaw/workspace-mineru/references/go-agent-os/goclaw/internal/oauth/openai_quota_transport.go/home/xel/git/sages-openclaw/workspace-mineru/references/go-agent-os/goclaw/internal/providers//home/xel/git/sages-openclaw/workspace-mineru/references/go-agent-os/plandex/home/xel/git/sages-openclaw/workspace-mineru/references/go-agent-os/nanobot/home/xel/git/sages-openclaw/workspace-mineru/references/go-agent-os/trpc-agent-go/home/xel/git/sages-openclaw/workspace-mineru/references/go-agent-os/adk-goJuan granted Gormes explicit permission to use GoClaw code, not just patterns. The earlier CC BY-NC 4.0 caution is superseded for Gormes' use. When porting GoClaw code into Gormes:
Add a provenance comment on the receiving Gormes file naming the source file and function:
// Adapted from goclaw/internal/oauth/openai.go::ExchangeCode
// Reason: Gormes needed PKCE + pasted-redirect support to match Hermes Codex login UX.
Convert types and imports to Gormes-native names; never let goclaw_* symbols leak into Gormes' public surfaces. The donor's package layout is informational only.
Apply the Hermes parity filter: GoClaw UX/config choices that diverge from Hermes get adapted, not adopted wholesale.
Add Gormes tests covering the ported behavior (do not rely on the donor's tests as proof).
Verify go doc ./<package> | grep -iE "(goclaw|nextlevelbuilder)" returns nothing before merging.
Other reference repos (nanobot, plandex, engram, trpc-agent-go, adk-go, axe, agentcontrolplane, uzi) stay patterns-only unless individually authorized — see references/go-agent-os/README.md for the per-donor permission map. When in doubt about whether a donor file is a pattern source or a code source, consult the gormes-references skill before porting.
Gather evidence before editing:
git status --short --branch
go run ./cmd/gormes gateway status || true
go run ./cmd/gormes -z 'health probe' --model <model> --provider <provider> || true
Classify the failure:
/v1/responses URL.State the Hermes-compatible behavior first:
Hermes parity target:
Go donor pattern:
Gormes-native seam:
Telegram/operator response shape:
If GoClaw or another donor does something differently from Hermes UX, adapt the implementation idea but keep Hermes behavior.
High-value GoClaw patterns for provider work:
reauth_required, payment_required, quota_api_forbidden, quota_endpoint_not_found, rate_limited, provider_unavailable, network_timeout, network_error.High-value Plandex patterns:
Retry-After handling.High-value runtime-boundary patterns from Nanobot/trpc-agent-go/ADK-Go:
Use gormes-tdd-slice for implementation.
Write RED tests with:
HERMES_HOME / auth store;httptest provider endpoint;Required test classes for provider fixes:
CODEX_HOME/auth.json fixtures: fresh
Codex CLI tokens import into Gormes' own pool, expired tokens fall back to
device-code, and logs/status output redacts tokens and absolute auth paths;/v1/responses URL;admission: still processing previous turn.Minimum validation for provider/auth/runtime changes:
go test ./cmd/gormes ./internal/config ./internal/hermes ./internal/runtime ./internal/gateway -count=1
go run ./cmd/progress validate
git diff --check
If the change affects Telegram-visible behavior, also source-run the gateway and verify:
go run ./cmd/gormes gateway status
Use live provider calls only as final smoke tests, never as the only proof.
unknown errors.admission: still processing previous turn.Provider issue:
Hermes parity target:
References inspected:
Implementation/tests:
Validation:
Telegram/operator impact:
Remaining provider blockers: