Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
arize-ai avatar

Java Code Reviewer

  • 3 installs
  • 1.1k repo stars
  • Updated August 5, 2026
  • arize-ai/openinference

java-code-reviewer is a skill that reviews Java OpenInference instrumentation packages for correctness and completeness against project standards, reporting findings by severity.

About

This skill reviews Java OpenInference instrumentation packages against the project's established patterns and conventions. It reads the instrumentor source, build.gradle, and tests, uses the instrumented library source as ground truth before flagging anything, and reports findings with file paths and line numbers organized by severity. It checks Gradle setup, exhaustive attribute assertions, semantic conventions, and span lifecycle and hierarchy.

  • Reviews Java OpenInference instrumentation packages for correctness and completeness
  • Uses the instrumented library source as ground truth before flagging findings
  • Reports findings by severity across Gradle setup, testing patterns, semantic conventions, and span lifecycle

Java Code Reviewer by the numbers

  • 3 all-time installs (skills.sh)
  • Ranked #923 of 1,352 Code Review & Quality skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

java-code-reviewer capabilities & compatibility

Capabilities
code review · instrumentation review
Use cases
code review
IDEs
intellij
From the docs

What java-code-reviewer says it does

Review Java OpenInference instrumentation code for correctness and completeness.
SKILL.md
Before flagging any finding, verify it against the actual library code. Do NOT assume how the instrumented library works — read it.
SKILL.md
npx skills add https://github.com/arize-ai/openinference --skill java-code-reviewer

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs3
repo stars1.1k
Last updatedAugust 5, 2026
Repositoryarize-ai/openinference

What it does

Review a Java OpenInference instrumentor package for correctness against project conventions and library source.

Who is it for?

Auditing a Java OpenInference instrumentor package against Gradle, testing, semantic-convention, and span-lifecycle standards

Skip if: Reviewing non-OpenInference Java code or packages outside java/instrumentation/

When should I use this skill?

when reviewing a Java instrumentor package, a PR that modifies one, or auditing an instrumentor's code quality

What you get

A severity-ranked findings table with file/line locations plus a list of what is working well

  • severity-ranked review findings table

By the numbers

  • 4 severity levels (Critical/High/Medium/Low)
  • 4 review sections (Gradle, Testing, Semantic Conventions, Span Lifecycle)

Files

SKILL.mdMarkdownGitHub ↗

Java Code Reviewer for OpenInference Instrumentors

Review a Java OpenInference instrumentation package against the project's established patterns and conventions. Report findings with file paths and line numbers, organized by severity (Critical / High / Medium / Low).

Workflow

Step 1: Identify the package to review

  • Ask the user which instrumentor to review if not already clear from context
  • The package lives under java/instrumentation/openinference-instrumentation-<name>/
  • Read the instrumentor source, build.gradle, and src/test/ directory

Step 2: Use the instrumented library source as ground truth

Before flagging any finding, verify it against the actual library code. Do NOT assume how the instrumented library works — read it. Do NOT present findings without having read the library source first.

  • Find the library version from java/build.gradle ext block
  • Check ~/.gradle/caches/modules-2/files-2.1/ for cached sources
  • If not cached, download the sources jar from Maven Central (repo1.maven.org).

Some libraries split across multiple artifacts — check build.gradle dependency declarations and fetch all relevant ones.

  • If you cannot obtain the source through any means, explicitly tell the user you

were unable to verify against the library source before presenting findings.

  • Calibrate severity by what the library actually does: a bug on a common code path is

High/Critical; an edge case for a type that can't appear at runtime is Low

Step 3: Run all review sections below

Step 4: Present findings in a severity table, list what's working well, then ask the user: fix issues, run tests (./gradlew :instrumentation:...:test), or done.

---

Section 1: Gradle Setup

Read the instrumentor's build.gradle and the root java/build.gradle.

  • Instrumented library must be compileOnly (not implementation) — High
  • openinference-instrumentation must be api
  • Version constants should be in root ext block, not hardcoded — Medium
  • Module must be in java/settings.gradleCritical if missing
  • Run cd java && ./gradlew spotlessCheck (Palantir Java Format)

---

Section 2: Testing Patterns

Exhaustive attribute assertions

This is the most important testing pattern. Tests must verify ALL span attributes, not spot-check a few. The remove-and-verify pattern catches both unexpected additions and silent removals:

Map<String, Object> attributes = new HashMap<>();
span.getAttributes().forEach((key, value) -> attributes.put(key.getKey(), value));

assertThat(attributes.remove("openinference.span.kind")).isEqualTo("LLM");
assertThat(attributes.remove("llm.model_name")).isEqualTo("gpt-4");
// ... remove and assert all remaining attributes ...
assertThat(attributes).isEmpty();  // Nothing unexpected left

Missing emptiness check — High.

Other required test coverage

  • Error handling: exception -> span has StatusCode.ERROR + recorded exception — High
  • Context attribute propagation: session_id, user_id, metadata, tags
  • TraceConfig masking: verify hideInputMessages etc. actually suppress attributes
  • Missing test files entirely — Critical

---

Section 3: OpenInference Semantic Conventions

Read SemanticConventions.java for the full attribute catalog: java/openinference-semantic-conventions/src/main/java/com/arize/semconv/trace/SemanticConventions.java

Also read the spec files under spec/ (semantic_conventions.md, traces.md, llm_spans.md, embedding_spans.md, tool_calling.md) for expected behavior.

For the library type being reviewed, verify the instrumentor sets all applicable attributes. Key checks:

  • Every span needs OPENINFERENCE_SPAN_KIND, INPUT_VALUE + INPUT_MIME_TYPE,

OUTPUT_VALUE + OUTPUT_MIME_TYPE. Missing MIME type when value is set — High

  • All attributes should use constants from SemanticConventions, not hardcoded strings — Medium
  • Read TraceConfig.java for the full list of hide flags; verify each is respected

where applicable — Medium if missing

---

Section 4: Span Lifecycle and Hierarchy

  • span.end() must ALWAYS be called — Critical if missing
  • Scope from context.makeCurrent() must be closed (try-with-resources) — High
  • For multi-span instrumentors: verify parent-child nesting and shared traceId
  • The instrumentor should use OITracer (not raw Tracer) to get TraceConfig support

---

Presenting Results

Organize findings into a table:

SeveritySectionFindingLocation
Critical4span.end() not called in error pathSomeListener.java:142
High2Tests don't verify all span attributesSomeTest.java:85
............

Then list what's working well — positive findings help the user understand what doesn't need to change.

Related skills

FAQ

How does it avoid false findings?

It uses the instrumented library source as ground truth: it reads the actual library code before flagging any finding and calibrates severity by what the library actually does.

What is the most important test pattern it checks?

Exhaustive attribute assertions using the remove-and-verify pattern ending in assertThat(attributes).isEmpty(); a missing emptiness check is flagged High.

Code Review & Qualitytestingbackend

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.