Agent skill

Fix Tck Issue

by a2aproject in a2aproject/a2a-java

Analyzes and fixes A2A Transport Compatibility Kit (TCK) issues by understanding the specification, reproducing the failure, implementing the fix, and validating it works.

Apache-2.0Auto-check passedBackend & APIs

Install Fix Tck Issue

skills CLI
$ npx skills add a2aproject/a2a-java --skill fix-tck-issue -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install a2aproject/a2a-java fix-tck-issue --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/a2aproject/a2a-java.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/fix-tck-issue .claude/skills/fix-tck-issue && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
fix-tck-issue
GitHub stars
504
Token cost
~2.9k tokens
SKILL.md length
1,081 words
Files
1
Skills in repo
3
Repo updated
First seen
Licence
Apache-2.0

At a glance

Analyzes and fixes A2A Transport Compatibility Kit (TCK) issues by understanding the specification, reproducing the failure, implementing the fix, and validating it works.

  • Works in 11 steps: Fetch Issue Details → Read Specification (if needed) → Analyze Code → …
  • Backend & APIs work in your project
  • SKILL.md covers Triggers, Input, Workflow and Common Root Causes, plus 3 more sections
  • Calls mvn, git and gh

What it does

Fix Tck Issue is an agent skill from a2aproject/a2a-java. Analyzes and fixes A2A Transport Compatibility Kit (TCK) issues by understanding the specification, reproducing the failure, implementing the fix, and validating it works.

Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts. Compatibility notes: Requires gh CLI and mvn

It sits in Backend & APIs. It works with Agent2Agent Protocol, Java and gRPC. The repository describes itself as: Official Java SDK for the Agent2Agent (A2A) Protocol. The licence is Apache-2.0.

When your agent uses it

  • Backend & APIs work in your project

Example prompts

  • “Use the fix-tck-issue skill to analyz and fixes A2A Transport Compatibility Kit (TCK) issues by understanding the specification, reproducing the…”
  • “/fix-tck-issue”

Requirements

  • Compatibility (from SKILL.md): Requires gh CLI and mvn
  • Pre-approved tools (allowed-tools): Bash(gh:*), Bash(mvn:*), Bash(git:*), Bash(curl:*), Read, Edit, Write, Glob, Grep, WebFetch

Workflow steps

11 steps, taken from the step headings in SKILL.md.

  1. Fetch Issue Details
  2. Read Specification (if needed)
  3. Analyze Code
  4. Determine Affected Transports
  5. Create Temporary Reproducer(s)
  6. Run Reproducer(s) - Confirm Failure
  7. Implement Fix
  8. Run Reproducer(s) - Confirm Fix
  9. Verify Backward Compatibility
  10. Delete Temporary Reproducer(s)
  11. Commit

What it can do on your machine

Read from SKILL.md and the folder at commit fc2e96e. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash(gh:*)
    • Bash(mvn:*)
    • Bash(git:*)
    • Bash(curl:*)
    • Read
    • Edit
    • Write
    • Glob
    • Grep
    • WebFetch

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • mvn
    • git
    • gh

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Requires gh CLI and mvn

    From compatibility in the SKILL.md frontmatter.

Context cost

Fix Tck Issue loads about 2.9k tokens when it runs. Until then it costs about 46 tokens; SKILL.md has 1,081 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~46
When it runs · the whole SKILL.md, loaded when a task matches
~2.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from a2aproject/a2a-java at commit fc2e96e, republished under its Apache-2.0 licence (© a2aproject). 1,081 words, ~2,921 tokens.

Download SKILL.mdSave it as .claude/skills/fix-tck-issue/SKILL.md (or your agent's skills folder).
name
fix-tck-issue
description
Analyzes and fixes A2A Transport Compatibility Kit (TCK) issues by understanding the specification, reproducing the failure, implementing the fix, and validating it works.
allowed-tools
Bash(gh:*), Bash(mvn:*), Bash(git:*), Bash(curl:*), Read, Edit, Write, Glob, Grep, WebFetch
compatibility
Requires gh CLI and mvn

Fix A2A TCK Compatibility Issue

Triggers

  • Issue references TCK, compatibility, or transport-specific behavior
  • Keywords: "TCK", "compatibility", "HTTP+JSON", "gRPC", "JSON-RPC", "specification", "proto"
  • Issue mentions transport layer discrepancies

Input

  • Issue number from a2aproject/a2a-java repository
  • Optional: A2A spec reference (branch/tag/commit, defaults to main)

Workflow

1. Fetch Issue Details
bash
gh issue view <issue-number> --repo a2aproject/a2a-java --json title,body,labels,url

Parse issue to identify:

  • Affected transport(s): HTTP+JSON, gRPC, JSON-RPC
  • Expected behavior from specification
  • Actual behavior (error message, reproducer)
  • Specification section references
  • Spec commit checksum (TCK issues include this in spec URLs)
2. Read Specification (if needed)

TCK issues contain the spec checksum, but reading the spec is helpful if TCK lags behind or for additional context.

Fetch from https://github.com/a2aproject/A2A with specified ref (use checksum from issue or default to main):

  • specification/grpc/a2a.proto - for proto definitions and HTTP transcoding
  • docs/specification.md - for detailed protocol requirements

Focus on sections referenced in the issue.

3. Analyze Code

Locate relevant code based on transport:

  • HTTP+JSON: transport/rest
  • gRPC: transport/grpc
  • JSON-RPC: transport/jsonrpc

Identify root cause by comparing:

  • What the spec says should happen
  • What the code currently does
  • Why they differ

Optional: If issue includes a curl/grpcurl reproducer, run it manually to validate the issue is genuine.

4. Determine Affected Transports

CRITICAL: If issue doesn't specify a single transport, you MUST create reproducers for ALL affected transports.

Issue mentions specific transport → Test that one only Issue generic or mentions "all transports" → Test HTTP+JSON, gRPC, AND JSON-RPC

5. Create Temporary Reproducer(s)

Create test in appropriate module. Choose location based on test complexity:

Option A: transport/ modules (Unit Tests)* - Use when:

  • Testing handler logic directly
  • Need custom AgentCard configuration (e.g., capability flags)
  • Simpler to set up specific test conditions
  • HTTP+JSON → transport/rest/src/test/java/org/a2aproject/sdk/transport/rest/handler/RestHandlerTest.java
  • gRPC → transport/grpc/src/test/java/org/a2aproject/sdk/transport/grpc/handler/GrpcHandlerTest.java
  • JSON-RPC → transport/jsonrpc/src/test/java/org/a2aproject/sdk/transport/jsonrpc/handler/JSONRPCHandlerTest.java

Option B: reference/ modules (Integration Tests)* - Use when:

  • Testing full request/response cycle
  • Need real server behavior
  • Testing with standard agent configuration
  • HTTP+JSON → reference/rest/src/test/java/.../
  • gRPC → reference/grpc/src/test/java/.../
  • JSON-RPC → reference/jsonrpc/src/test/java/.../

Reproducer requirements:

  • Follow the exact scenario from the issue
  • Use request format per specification (e.g., NO taskId in body for HTTP+JSON)
  • Be named clearly: test_Issue<number>_Reproducer()
  • Assert the WRONG behavior that issue reports (should fail)

Example:

java
@Test
public void test_Issue732_Reproducer() {
    // Per spec: taskId should NOT be in request body for HTTP+JSON
    String requestBody = """
        {
          "id": "my-config-001",
          "url": "https://example.com/webhook"
        }""";

    HTTPRestResponse response = handler.createTaskPushNotificationConfiguration(
        context, "", requestBody, taskId);

    assertEquals(201, response.getStatusCode());
}
6. Run Reproducer(s) - Confirm Failure

CRITICAL: You MUST run the reproducer and see it FAIL before proceeding to fix.

For transport/* modules:

bash
mvn test -Dtest=<TestClass>#test_Issue<number>_Reproducer -pl transport/<transport>

For reference/* modules:

bash
mvn test -Dtest=<TestClass>#test_Issue<number>_Reproducer -pl reference/<transport>

Required verification (DO NOT SKIP):

  • ❌ Test MUST fail with the exact error mentioned in the issue
  • ❌ Error message, status code, or exception type MUST match issue description
  • ❌ If testing multiple transports, ALL reproducers must fail

If reproducer doesn't fail as expected:

  • STOP - Do not proceed to fix
  • Reassess understanding of the issue
  • Check if test conditions match issue scenario
  • Verify you're testing the right transport/endpoint

Only proceed to step 7 after confirming all reproducers fail correctly.

7. Implement Fix

Make minimal code changes to fix the root cause.

If multiple transports are affected: Fix ALL of them before proceeding to verification.

Common patterns:

  • Missing path parameter extraction: Add builder.setFieldName(pathParam)
  • Wrong validation: Adjust validation logic to match spec
  • Incorrect mapping: Fix proto/domain conversion
  • Wrong error type: Return correct error based on failure reason
8. Run Reproducer(s) - Confirm Fix

Run ALL reproducers you created in step 5.

For transport/* modules:

bash
mvn test -Dtest=<TestClass>#test_Issue<number>_Reproducer -pl transport/<transport>

For reference/* modules:

bash
mvn test -Dtest=<TestClass>#test_Issue<number>_Reproducer -pl reference/<transport>

Required verification:

  • ✅ ALL reproducers must now PASS
  • ✅ Test output shows expected behavior (correct status, no error, etc.)

If any reproducer still fails, debug and refine the fix.

9. Verify Backward Compatibility

Run full test suite for ALL modified transport modules to ensure no regressions:

bash
mvn test -pl transport/rest,transport/jsonrpc,transport/grpc

If you also modified reference modules or only created reproducers there:

bash
mvn test -pl reference/rest,reference/jsonrpc,reference/grpc

All existing tests must pass.

10. Delete Temporary Reproducer(s)

Remove ALL test methods or files created in step 5.

If you added a method to existing test class:

  • Delete just the test_Issue<number>_Reproducer() method

If you created a new test file:

  • Delete the entire file (e.g., Issue733ReproducerTest.java)
11. Commit

Add only the impacted files (NOT the temporary reproducers):

bash
git add <changed-files>
git commit -m "fix: <concise description>

<explanation of spec requirement and how code was fixed>

Applied to <list transports if multiple>.

Fixes #<issue-number>"

Example for multi-transport fix:

bash
git add transport/rest/src/main/java/org/a2aproject/sdk/transport/rest/handler/RestHandler.java \
        transport/jsonrpc/src/main/java/org/a2aproject/sdk/transport/jsonrpc/handler/JSONRPCHandler.java \
        transport/grpc/src/main/java/org/a2aproject/sdk/transport/grpc/handler/GrpcHandler.java
git commit -m "fix: Return UnsupportedOperationError when capability is disabled

Applied to all three transports: HTTP+JSON, JSON-RPC, and gRPC.

Fixes #733"

Common Root Causes

HTTP+JSON with body: "*"

Proto definition with path parameters and body: "*" means:

  • Path parameters extracted from URL
  • Body contains remaining fields only
  • Handler must set path params into builder

Example proto:

protobuf
rpc CreateTaskPushNotificationConfig(...) {
  option (google.api.http) = {
    post: "/tasks/{task_id}/pushNotificationConfigs"
    body: "*"
  };
}

Fix pattern:

java
// Extract from URL path and set in builder
builder.setTaskId(taskId);
Show full SKILL.md (422 more words)Show less
Field Validation Errors

"X is required" errors often mean:

  • Field should come from URL path, not body
  • Handler isn't setting the path parameter
  • Check proto's HTTP annotation

Test Location Decision Guide

transport/* modules (Unit Tests)

Best for:

  • Testing handler logic with custom configurations
  • Issues requiring specific AgentCard capabilities (e.g., streaming=false, extendedAgentCard=false)
  • Faster test execution
  • More control over test setup

Test file locations:

  • transport/rest/src/test/java/org/a2aproject/sdk/transport/rest/handler/RestHandlerTest.java
  • transport/grpc/src/test/java/org/a2aproject/sdk/transport/grpc/handler/GrpcHandlerTest.java
  • transport/jsonrpc/src/test/java/org/a2aproject/sdk/transport/jsonrpc/handler/JSONRPCHandlerTest.java
reference/* modules (Integration Tests)

Best for:

  • Testing full request/response cycles
  • Issues related to server behavior
  • Testing with standard agent configuration
  • Real-world scenario validation

Structure:

reference/
├── rest/          # HTTP+JSON integration tests
├── grpc/          # gRPC integration tests
└── jsonrpc/       # JSON-RPC integration tests

Examples

Example 1: Single Transport Issue

Issue #732: CreateTaskPushNotificationConfig required taskId in body (HTTP+JSON only)

  1. ✅ Fetched issue - HTTP+JSON transport, expects taskId from URL
    • Issue references spec @ 0833a5f5fd1b715519c0aecf9e3055e3f9f38089
  2. ✅ Read spec - body: "*" means taskId from path
  3. ✅ Found root cause - RestHandler wasn't setting taskId from path param
  4. ✅ Issue specifies HTTP+JSON only - test only that transport
  5. ✅ Created reproducer in reference/rest without taskId in body
  6. ✅ Ran reproducer - CONFIRMED FAILURE with 422 status
  7. ✅ Fixed - added builder.setTaskId(taskId) to RestHandler
  8. ✅ Ran reproducer - CONFIRMED PASS
  9. ✅ Ran full test suite - all tests pass
  10. ✅ Deleted reproducer
  11. ✅ Committed (RestHandler.java only)
Example 2: Multi-Transport Issue

Issue #733: GetExtendedAgentCard returns wrong error when capability disabled

  1. ✅ Fetched issue - affects all transports (not specified which)
    • Issue references spec @ 0833a5f5fd1b715519c0aecf9e3055e3f9f38089
  2. ✅ Read spec - should return UnsupportedOperationError when capability=false
  3. ✅ Found root cause - handlers check config before capability
  4. ✅ Issue affects all transports - must test all three
  5. ✅ Created reproducers in transport/rest, transport/jsonrpc, transport/grpc
  6. ✅ Ran all reproducers - CONFIRMED all fail (wrong error type)
  7. ✅ Fixed all three handlers - check capability before config
  8. ✅ Ran all reproducers - CONFIRMED all pass
  9. ✅ Ran full test suite - all tests pass
  10. ✅ Deleted all three reproducers
  11. ✅ Committed (all three handler files)

Critical Success Factors

Must Do
  • ✅ ALWAYS run reproducer BEFORE fixing - Confirms you understand the issue
  • ✅ Test ALL affected transports - Don't assume single transport unless issue specifies
  • ✅ Confirm exact failure - Error type, status code, message must match issue
  • ✅ Verify fix with reproducers - All must pass before proceeding
  • ✅ Delete all reproducers - Keep test suites clean
Best Practices
  • a2a.proto and spec are source of truth for compatibility
  • Reproducers prove understanding before fixing
  • Minimal, targeted fixes are better than broad changes
  • Choose test location (transport/* vs reference/*) based on requirements
  • Run full test suite to ensure no regressions
  • Commit only code changes, never temporary reproducers
Common Pitfalls
  • ❌ Fixing without running reproducer first
  • ❌ Testing only one transport when issue affects multiple
  • ❌ Not confirming exact error before proceeding
  • ❌ Committing temporary reproducer tests
  • ❌ Skipping backward compatibility verification

© a2aproject, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/fix-tck-issue of a2aproject/a2a-java.

Open the folder on GitHubat commit fc2e96e

Compare with similar skills

Fix Tck Issue next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Fix Tck Issue compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Fix Tck Issue this skilla2aproject/a2a-java504—~2.9kAutomated safety check: PassApache-2.0
Subspace Clientsdallison/subspace104—~2.4kAutomated safety check: PassApache-2.0
Using Dotnetnovotnyllc/dotnet-artisan233—~2.3kAutomated safety check: WarnMIT
Databricks Zerobus Ingestdatabricks/databricks-agent-skills345—~3.1kAutomated safety check: PassCustom licence
Doca Flow Grpc ServerNVIDIA/skills3.5k—~4.2kAutomated safety check: PassApache-2.0
Lc Faq Addyennanliu/CS_basics142—~2.2kAutomated safety check: NotesNone

Similar skills

  • Subspace Clients

    dallison/subspace

    Write Subspace clients in C++, Python, Rust, or Java. An agent skill from dallison/subspace.

    104 GitHub stars~2.4k tokensUpdated today
    Backend & APIsAuto-check passed
  • Using Dotnet

    novotnyllc/dotnet-artisan

    Detects .NET intent for any C, ASP.NET Core, EF Core, Blazor, MAUI, Uno Platform, WPF, WinUI, SignalR, gRPC, xUnit, NuGet, or MSBuild request from prompt keywords and repository signals (.sln…

    233 GitHub stars~2.3k tokensUpdated 1 mo ago
    Backend & APIsAuto-check: warnings
  • Databricks Zerobus Ingest

    databricks/databricks-agent-skills

    Official

    Build Zerobus Ingest clients for near real-time data ingestion into Databricks Delta tables via gRPC.

    345 GitHub stars~3.1k tokensUpdated yesterday
    Backend & APIsAuto-check passed
  • Official

    PLAINTEXT-ONLY: the shipped docaflowgrpc server uses grpc::InsecureServerCredentials() with NO TLS / mTLS / token-auth knob on the binary — transport security must come from external infrastructure…

    3.5k GitHub stars~4.2k tokensUpdated today
    Backend & APIsAuto-check passed
  • Lc Faq Add

    yennanliu/CS_basics

    File an interview question and answer into doc/faq/ in the shape the other 49 FAQs use — the sheet its Scope line owns, the numbered section it belongs under, tagged code fences — and write the…

    142 GitHub stars~2.2k tokensUpdated today
    Sales & SupportAuto-check: notes
  • Use Yaak

    mountain-loop/yaak

    A skill your agent uses when the user mentions Yaak, a Yaak workspace, or the yaak command, or asks to call, hit, or smoke test HTTP/REST endpoints, save or organize API requests for reuse or manual…

    19k GitHub stars~1.9k tokensUpdated today
    Backend & APIsAuto-check passed

More from a2aproject/a2a-java

  • Update A2a Proto

    a2aproject/a2a-java

    Update the A2A Protobuf file (a2a.proto) when the A2A protocol specification changes.

    504 GitHub stars~738 tokensUpdated yesterday
    Auto-check passed
  • Release A2a

    a2aproject/a2a-java

    Guide maintainers through the multi-step release process — version bump, CI verification, tagging, Maven Central deployment, SNAPSHOT bump, and versioned documentation.

    504 GitHub stars~2.3k tokensUpdated yesterday
    Auto-check passed

Questions about Fix Tck Issue

What does Fix Tck Issue do?

Analyzes and fixes A2A Transport Compatibility Kit (TCK) issues by understanding the specification, reproducing the failure, implementing the fix, and validating it works. Fix Tck Issue is an agent skill from a2aproject/a2a-java. Analyzes and fixes A2A Transport Compatibility Kit (TCK) issues by understanding the specification, reproducing the failure, implementing the fix, and validating it works.

When should I use Fix Tck Issue?

Fix Tck Issue fits situations like: backend & APIs work in your project.

How do I install Fix Tck Issue in Claude Code?

Run `npx skills add a2aproject/a2a-java --skill fix-tck-issue -a claude-code`. Or copy the skill folder (.agents/skills/fix-tck-issue in a2aproject/a2a-java) into .claude/skills/fix-tck-issue in your project. Claude Code loads it when a task matches its description.

How do I install Fix Tck Issue in Codex?

Run `npx skills add a2aproject/a2a-java --skill fix-tck-issue -a codex`. Or copy the skill folder (.agents/skills/fix-tck-issue in a2aproject/a2a-java) into .agents/skills/fix-tck-issue in your project. Codex loads it when a task matches its description.

Can I use Fix Tck Issue in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add a2aproject/a2a-java --skill fix-tck-issue -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/fix-tck-issue, .gemini/skills/fix-tck-issue, .github/skills/fix-tck-issue and .opencode/skills/fix-tck-issue in your project.

What does Fix Tck Issue need to run?

Going by SKILL.md and its folder, Fix Tck Issue needs the command-line tools its instructions call (mvn, git and gh). Its frontmatter pre-approves these tools: Bash(gh:*), Bash(mvn:*), Bash(git:*), Bash(curl:*), Read, Edit, Write, Glob, Grep, WebFetch. Compatibility (from SKILL.md): Requires gh CLI and mvn.

Does Fix Tck Issue access the network?

SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.

Is Fix Tck Issue safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Fix Tck Issue use?

Fix Tck Issue is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Fix Tck Issue use?

About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Fix Tck Issue?

Skills that share tags, products or a category with Fix Tck Issue: Subspace Clients (dallison/subspace, 104 stars), Using Dotnet (novotnyllc/dotnet-artisan, 233 stars), Databricks Zerobus Ingest (databricks/databricks-agent-skills, 345 stars) and Doca Flow Grpc Server (NVIDIA/skills, 3.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Fix Tck Issue?

a2aproject (a GitHub organization) maintains it in a2aproject/a2a-java, which has 504 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 6, 2026.

Source: a2aproject/a2a-java on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.