a2a-java-sut

A Java test application for the A2A protocol, generated from Gherkin scenario files. It runs inside the a2a-java repository and serves as the system being tested.

In plain words
What is it for?
Use it to regenerate the Java test application, build it, run it, or test it with the A2A TCK, a compatibility test suite.
Why use it?
It removes the manual work of turning test scenarios into Java code and setting up the test application. It gives the A2A TCK a consistent target to build, run, and check.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/a2aproject/a2a-tck/a2a-java-sut
Any agent
npx skills add a2aproject/a2a-tck --skill a2a-java-sut
Clone the repo
git clone --depth 1 https://github.com/a2aproject/a2a-tck

Made for: Claude Code, Codex.

Per session 52 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 2,089 The whole file, excluding the scripts and references it only reads on demand.
Security scan C 2 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00052 $0.02089
Opus 5 $0.00026 $0.01045
Sonnet 5 $0.00010 $0.00418
Haiku 4.5 $0.00005 $0.00209

Measured 3d ago against content hash d31152f09866, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade C, and why

a2a-java-sut scanned grade C with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Downloads and executes remote codehighSupply chain

curl | sh runs whatever the server returns today, which is not necessarily what it returned when this was reviewed.

curl -s http://localhost:9999/.well-known/agent-card.json | python3 -m json.tool

Makes network callslowCapability

Not a fault in itself. Listed so you know the mod talks to something, and to what.

allowed-tools: Bash(make:*) Bash(mvn:*) Bash(java:*) Bash(curl:*) Bash(kill:*) Bash(lsof:*) Bash(uv:*) Read Edit Write Glob Grep Agent
.agents/skills/a2a-java-sut/SKILL.md · 197 lines

How it starts

The opening of the file, as written. The whole thing — 197 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Work with the a2a-java SUT

The a2a-java SUT is a Quarkus application that lives in the tck module of the a2a-java repository. The TCK code generator produces two CDI producer files (TckAgentCardProducer.java and TckAgentExecutorProducer.java) from Gherkin .feature files and copies them into the user's local clone of the a2a-java repo.

Architecture overview

scenarios/*.feature → codegen (parser + steps + java_emitter) → $A2A_JAVA_DIR/tck/
  • Gherkin scenarios (scenarios/*.feature) define SUT behavior via messageId prefix matching
  • Code generator (codegen/) parses .feature files and emits Java sources
  • Jinja2 templates (codegen/a2a-java/*.j2) produce the two CDI producer files
  • Generated output goes into the tck module of the user's local a2a-java clone

Key generated files

File Template Purpose
TckAgentExecutorProducer.java TckAgentExecutorProducer.java.j2 CDI producer for AgentExecutor; routes by messageId prefix
TckAgentCardProducer.java TckAgentCardProducer.java.j2 CDI producer for AgentCard with all three transports

How the executor works

The generated AgentExecutor matches on the messageId prefix from incoming messages:

if (messageId.startsWith("tck-complete-task")) {
    emitter.complete(A2A.toAgentMessage("Hello from TCK"));
    return;
}

The TCK tests use tck_id("complete-task") which generates tck-complete-task-<session_hex>, matching the prefix.

Step 0: Set up the a2a-java clone

The A2A_JAVA_DIR environment variable must point to the root of a local clone of the a2a-java repository.

Check if the clone already exists as a sibling directory:

ls -d ../a2a-java 2>/dev/null && echo "Found at ../a2a-java"

If it exists, set:

export A2A_JAVA_DIR=$(cd ../a2a-java && pwd)

If not, clone it:

git clone https://github.com/a2aproject/a2a-java.git ../a2a-java
export A2A_JAVA_DIR=$(cd ../a2a-java && pwd)

Read the full file on GitHub · 197 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 3d ago First seen · 197 lines · 52 tokens per session scan C d31152f09866

Subscribe to this mod's changes

a2a-java-sut is a skill published in the GitHub repository a2aproject/a2a-tck (48 stars, last pushed 2mo ago), licensed Apache-2.0. It adds 52 tokens to every session and 2,089 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it C with 2 findings (downloads and executes remote code, makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

use-agent-browser-for-airi

Test AIRI display-model imports with agent-browser across stage-tamagotchi Electron, stage-web, and stage-pocket mobile web layouts. Use when uploading and verifying contributor-supplied Live2D ZIP, VRM, or MMD ZIP/PMX/PMD files through AIRI's model selector, including onboarding bypass, format-specific import…

moeru-ai/airi · 87 tokens

test-conversion

Workflow for converting unit tests to browser tests for Project Bedrock. Invoke this when the user wants to remove complex Browser dependencies from tests.

chromium/chromium · 31 tokens

agui-dotnet-cross-language-tests

Author cross-language interop tests that verify the AG-UI .NET SDK is wire-compatible with the TypeScript SDK — a Vitest TS client driving a C# CrossLanguage.TestServer over HTTP, both directions, including protobuf byte-parity against @ag-ui/proto. USE FOR: adding or modifying cross-language interop coverage…

ag-ui-protocol/ag-ui · 146 tokens

cli-e2e-testcase-writer

Use when adding or updating Go CLI E2E coverage for one tests/clie2e/{domain} domain of the compiled lark-cli, especially when the work requires live --help or schema exploration, scenario-based clie2e.RunCmd workflows, and per-domain coverage.md maintenance.

larksuite/cli · 78 tokens

harness-test-writer

Add regression test cases to the Bifrost provider harness (the Postman collection run via make run-provider-harness-test) based on a merged PR or a GitHub issue. Fetches the PR/issue, traces the affected wire path in the codebase, checks existing harness coverage, designs cases following harness conventions, inserts…

maximhq/bifrost · 133 tokens

develop-web-game

Use when Codex is building or iterating on a web game (HTML/JS) and needs a reliable development + testing loop: implement small changes, run a Playwright-based test script with short input bursts and intentional pauses, inspect screenshots/text, and review console errors with rendergametotext.

netease-youdao/LobsterAI · 64 tokens