a2a-client
Skill42 starsChanged 50 days agoMITView on GitHub
Use OPAL Agent2Agent (A2A) clients against OpenLink OPAL A2A endpoints. Trigger when Codex needs to discover an OPAL Agent Card, authenticate with OAuth2 bearer/API key or client-credentials flow, send A2A JSON-RPC tasks, subscribe to streamed task events, fetch task status, attach files, or test OPAL agents/skills exposed through /.well-known/agent.json and /chat/api/a2a. Present recommended endpoints when helpful, but always elicit the target CNAME/base URL/endpoint and credentials before requests.
- Reads credentials
In this repository45 other files it gives its agents.
- agent-rdf-memory/AGENTS.mdAGENTS.md
- AGENTS.mdAGENTS.md
- acp-clientSkill
- csv-to-rdf-det-generatorSkill
- data-twinglerSkill
- dbpedia-query-skillSkill
- document-to-kg-skillSkill
- fediverse-crudSkill
- fuxi-engineerSkill
- infographic-describerSkill
- iodbc-dsn-managerSkill
- kg-generatorSkill
- linked-data-skillsSkill
- llm-routing-skillSkill
- monidSkill
- mpp-stripe-clientSkill
- mtls-curlSkill
- opal-agent-skill-assemblerSkill
- openlink-license-managerSkill
- openlink-license-readerSkill
- openlink-request-broker-configuratorSkill
- opml-rss-readerSkill
- osdi-inclusion-engineSkill
- pinchtabSkill
- rdf-det-variant-generatorSkill
- rdf-infographic-skillSkill
- resource-access-offers-generatorSkill
- rss-feed-generatorSkill
- s3-query-skillSkill
- screencast-recorderSkill
- set-webdav-resource-propertySkill
- sparql-faceted-browserSkill
- ucp-clientSkill
- uriburner-opal-agent-skillsSkill
- virtuoso-rdf-bulk-loaderSkill
- virtuoso-rdf-loaderSkill
- virtuoso-support-agentSkill
- wc2026-match-reportSkill
- weblog-from-webdavSkill
- website-from-webdavSkill
- wikidata-query-skillSkill
- world-cup-2026-navigatorSkill
- x402-buyerSkill
- xmla-clientSkill
- youidSkill
The file
We split this skill into the rules it gives an agent
12 rules. About 0 are common, 3 are distinctive, and 9 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
9
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 8
Use this skill to interact with an OPAL backend that implements the Agent2Agent protocol.
- Distinctive: line 12
Before making any request, obtain these runtime values from the user, environment, or an already verified project config:
- Very specific: line 20
Do not silently substitute a default CNAME.
- Very specific: line 35
If the user gives a base URL, fetch the Agent Card from /.well-known/agent.json and derive the A2A endpoint from the card's url field.
- Very specific: line 36
If the user gives a full /chat/api/a2a URL, derive the Agent Card URL from the same origin unless the user supplies a separate card URL.
- Very specific: line 40
Prefer bearer tokens via --token-env, OPAL_A2A_TOKEN_ENV, or OPAL_A2A_TOKEN rather than raw --token.
- Distinctive: line 44
Never log tokens, client secrets, or complete Authorization headers.
- Very specific: line 46
Use tasks/send for a single request/response task.
- Very specific: line 47
Use tasks/sendSubscribe when the user asks for streaming or the card advertises streaming support and the user chooses it.
- Very specific: line 48
Use tasks/get to check an existing task ID.
- Very specific: line 55
Read references/opal-a2a.md when you need protocol details, JSON-RPC payload examples, Agent Card field interpretation, or OPAL-specific …
- Very specific: line 56
Use scripts/a2a_client.py for repeatable command-line testing.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
OPAL A2A Client
Use this skill to interact with an OPAL backend that implements the Agent2Agent protocol.
Required Elicitations
Before making any request, obtain these runtime values from the user, environment, or an already verified project config:
- Target endpoint: either an HTTPS base URL such as
https://{CNAME}or a full A2A URL such ashttps://{CNAME}/chat/api/a2a; CLI args win overOPAL_A2A_BASE_URL,OPAL_A2A_CNAME,OPAL_A2A_URL, andOPAL_A2A_CARD_URL. - Authentication mode: bearer/API key, dynamic OAuth Authorization Code, OAuth2 client credentials, or no request until credentials are supplied.
- Credential source: environment variable name, secret manager reference, dynamic OAuth flow, or user-provided value. The script recognizes
OPAL_A2A_TOKEN_ENVandOPAL_A2A_TOKEN; do not echo secrets. - Interaction mode:
tasks/send,tasks/sendSubscribe, ortasks/get. - Session behavior: new context/session or continue with a supplied
contextIdorsessionId.
Do not silently substitute a default CNAME. Present the recommended endpoints below as choices, accept a custom endpoint, or use a verified override such as OPAL_A2A_BASE_URL or OPAL_A2A_CNAME.
Recommended Endpoints
Offer these as non-exclusive choices when the user has not supplied a target:
https://netid-qa.openlinksw.com:8443https://linkeddata.uriburner.comhttps://demo.openlinksw.com
Also offer a custom base URL or full /chat/api/a2a endpoint. Do not assume the first endpoint is the default; wait for the user's selection or a verified config/env override.
Workflow
- Normalize the target:
- If the user gives a base URL, fetch the Agent Card from
/.well-known/agent.jsonand derive the A2A endpoint from the card'surlfield. - If the user gives a full
/chat/api/a2aURL, derive the Agent Card URL from the same origin unless the user supplies a separate card URL.
- If the user gives a base URL, fetch the Agent Card from
- Fetch and inspect the Agent Card before sending tasks. Confirm name, provider, auth schemes, capabilities, input modes, output modes, and listed
skills. - Authenticate:
- For bearer/API key, send
Authorization: Bearer {token}. - Prefer bearer tokens via
--token-env,OPAL_A2A_TOKEN_ENV, orOPAL_A2A_TOKENrather than raw--token. - For interactive OAuth, use dynamic client registration plus Authorization Code flow with
--oauth-auth-code; register against the selected endpoint's own issuer, not a different host. - To reuse an OAuth-acquired bearer token, use
--save-token-env OPAL_A2A_TOKEN --save-token-env-file .opal-a2a.env, then source the file in a shell you control. - For OAuth2 client credentials, use the card's token URL when present, or elicit an explicit token URL.
- Never log tokens, client secrets, or complete Authorization headers.
- For bearer/API key, send
- Choose the task method:
- Use
tasks/sendfor a single request/response task. - Use
tasks/sendSubscribewhen the user asks for streaming or the card advertises streaming support and the user chooses it. - Use
tasks/getto check an existing task ID.
- Use
- Build JSON-RPC 2.0 payloads with text parts by default. Include attachments only from user-approved file paths.
- Preserve returned
task id,contextId, andsessionIdvalues. Ask whether to continue the same context when the next request depends on prior task state. - Summarize results from
status.message.parts,artifacts.parts, and final task state. Include IDs needed for follow-up, but keep secrets redacted.
Bundled Resources
- Read
references/opal-a2a.mdwhen you need protocol details, JSON-RPC payload examples, Agent Card field interpretation, or OPAL-specific behavior. - Use
scripts/a2a_client.pyfor repeatable command-line testing. Runpython3 scripts/a2a_client.py --helpbefore first use.
Validation
For skill changes, run:
python3 scripts/a2a_client.py --helpFor live endpoint validation, use a user-approved target and credentials, then perform this minimum sequence:
python3 scripts/a2a_client.py card --agent-base https://{CNAME}
python3 scripts/a2a_client.py send --agent-base https://{CNAME} --token-env OPAL_A2A_TOKEN --message "What is Virtuoso?"
python3 scripts/a2a_client.py send --agent-base https://{CNAME} --oauth-auth-code --message "What is Virtuoso?"
python3 scripts/a2a_client.py send --agent-base https://{CNAME} --oauth-auth-code --save-token-env OPAL_A2A_TOKEN --save-token-env-file .opal-a2a.env --message "What is Virtuoso?"Replace {CNAME} and token sources only with elicited values.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

