Portable Radius skills for AI-assisted development workflows.
This repository owns framework-neutral guidance: Radius network configuration, development conventions, faucet usage, x402 integration guidance, and evaluation fixtures for those skills. It does not ship a shared wallet runtime, deterministic wallet MCP server, or framework-specific execution plugin.
- This skills repo: portable Radius agent guidance and examples that can be installed by agent frameworks.
radius-cli: the canonical deterministic wallet, transaction, read, signing, and x402 execution surface for local agents and terminal workflows.- Hermes, OpenClaw, Codex, and other frameworks: thin wrappers should load
these skills for guidance and call
radius-clifor wallet and execution operations instead of reimplementing wallet state.
For consuming x402-protected endpoints from an agent shell, prefer
radius-cli wallet x402 <verb> <url> with an explicit --x402-threshold
display-unit limit. Example:
RADIUS_HOME=.radius RADIUS_NETWORK=testnet \
radius-cli wallet x402 get https://example.com/paid \
--x402-threshold 0.001 \
--json \
-y--x402-threshold is expressed in display units such as SBC, not raw 6-decimal
integer units. Use it for non-interactive agent runs so the command refuses
unexpectedly expensive requests.
- Hermes: use template-provided tools that wrap
radius-cli; install or sync this repo's skills for Radius-specific guidance. - Codex: install the skills for guidance; use shell access to invoke
radius-clidirectly, or a future thin MCP wrapper that delegates toradius-cli. - OpenClaw: load skills separately from native plugins; native plugins should
wrap
radius-clifor wallet, signing, transaction, and x402 operations.
/plugin marketplace add https://github.com/radiustechsystems/skills.git
/plugin install radius@radius-dev-skillnpx skills add radiustechsystems/skillsThis repo can publish a GitHub push-shaped webhook to Hermes agents that were deployed from the Radius Hermes Railway Template with webhook-based skills sync enabled.
The publisher lives in:
.github/workflows/publish-radius-skills-update.yml.github/radius-subscribers.jsonscripts/radius_subscribers.py
The subscriber manifest already includes a disabled ready-to-edit template entry so new agents can be added by copying or editing an existing shape instead of starting from scratch.
Each subscriber receives:
POST <subscriber.webhook_url>X-GitHub-Event: pushX-GitHub-Delivery: <uuid>X-Hub-Signature-256: sha256=<hmac>
The body is a minimal GitHub push payload containing:
repository.full_namerefbeforeafterhead_commitcommits
This matches the webhook contract expected by the Hermes runtime sync endpoint added in the Railway Template PR.
Important repo slug note:
- this repo currently publishes from
radiustechsystems/radius-dev-skill - Hermes subscribers should ideally set
RADIUS_SKILLS_REPO=radiustechsystems/radius-dev-skill - if a subscriber still expects the legacy
radiustechsystems/skillsslug, setrepo_full_nameon that manifest entry as a temporary compatibility override
The workflow publishes automatically on pushes to any branch.
Actual delivery is still branch-aware:
- a subscriber only receives updates when its manifest
branchmatches the pushed branch - this lets you wire a staging or PR-test Hermes agent to a feature branch without notifying production agents on that branch
Typical setup:
- production agent entry:
branch: "main" - test agent entry:
branch: "feature/my-skill-pr"or another dedicated preview branch
When you push new commits to that PR branch, the workflow publishes the corresponding webhook to subscribers for that branch.
Use the Publish Radius Skills Update workflow with workflow_dispatch to replay a specific commit, optionally for a single subscriber.
Recommended manual inputs:
after: target commit SHAbefore: previous commit SHA if you want an accurate replay payloadsubscriber_id: optional targeted replaydry_run: validate without sending
Subscriber routing is stored in .github/radius-subscribers.json.
Example:
{
"version": 1,
"subscribers": [
{
"id": "example-hermes-agent",
"enabled": false,
"name": "Example Hermes Agent",
"webhook_url": "https://your-agent.example.com/webhooks/github/radius-skills",
"secret_key": "example_hermes_agent",
"branch": "main",
"repo_full_name": "radiustechsystems/radius-dev-skill"
}
]
}Recommended workflow:
- Copy the disabled example entry.
- Replace the
id,name,webhook_url, andsecret_key. - Set
branchto the branch that agent should follow. - Leave
repo_full_nameasradiustechsystems/radius-dev-skillunless you intentionally need a compatibility override. - Set
enabledtotrueonly when the Hermes deployment and shared secret are ready.
Fields:
id: stable operator-facing identifier used for targeted replayenabled: setfalseto disable delivery without deleting historyname: descriptive label for workflow summarieswebhook_url: full Hermes webhook endpointsecret_key: key used to look up the shared secret in the GitHub secret mapbranch: optional branch filter, usuallymainrepo_full_name: optional payload override if a subscriber expects a specificowner/repo
Webhook secrets are provided through one GitHub Actions secret:
RADIUS_SUBSCRIBER_WEBHOOK_SECRETS_JSON
Example value:
{
"example_hermes_agent": "replace-with-the-shared-webhook-secret",
"agent_prod_1": "super-secret-value",
"agent_staging": "another-secret"
}The manifest stays in git. Shared secrets stay in GitHub secrets.
- Add a new entry to
.github/radius-subscribers.json. - Add the matching key/value to
RADIUS_SUBSCRIBER_WEBHOOK_SECRETS_JSON. - Ensure the Hermes agent is configured with:
RADIUS_SKILLS_AUTO_UPDATE=true- matching
RADIUS_SKILLS_WEBHOOK_SECRET - the expected
RADIUS_SKILLS_REPOandRADIUS_SKILLS_BRANCH
- Merge to
mainor run the manual publish workflow.
Fastest path:
- Edit the disabled
example-hermes-agententry in.github/radius-subscribers.json. - Add the real shared secret under the same
secret_keyinRADIUS_SUBSCRIBER_WEBHOOK_SECRETS_JSON. - Flip
enabledtotrue.
To test a PR branch against a Hermes agent:
- Configure the target Hermes agent with:
RADIUS_SKILLS_AUTO_UPDATE=true- matching
RADIUS_SKILLS_WEBHOOK_SECRET RADIUS_SKILLS_BRANCH=<your-pr-branch>RADIUS_SKILLS_REPO=radiustechsystems/radius-dev-skill
- Add or update a subscriber entry in
.github/radius-subscribers.jsonwith that samebranch. - Push commits to the PR branch.
The publish workflow will run on that branch push and notify only the subscribers configured for that branch.
For one-off tests, you can also use workflow_dispatch and set:
branchto the PR branchsubscriber_idto the test agentafterto the commit you want Hermes to sync
Suggested test entry:
{
"id": "my-skill-pr-agent",
"enabled": true,
"name": "Skill PR Test Agent",
"webhook_url": "https://my-test-agent.example.com/webhooks/github/radius-skills",
"secret_key": "my_skill_pr_agent",
"branch": "feature/my-skill-pr",
"repo_full_name": "radiustechsystems/radius-dev-skill"
}- Set
enabledtofalseor remove the manifest entry. - Remove the unused secret from
RADIUS_SUBSCRIBER_WEBHOOK_SECRETS_JSON.
The subscriber manifest is validated by GitHub Actions and can also be checked locally:
python3 scripts/radius_subscribers.py validate