Agent skill

Incremental Java Programmer

by ArabelaTso in ArabelaTso/Skills-4-SE

Incrementally implement new features in Java repositories from natural language descriptions.

Apache-2.0Auto-check passedTesting & QA

Install Incremental Java Programmer

skills CLI
$ npx skills add ArabelaTso/Skills-4-SE --skill incremental-java-programmer -a claude-code

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

GitHub CLI
$ gh skill install ArabelaTso/Skills-4-SE incremental-java-programmer --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/ArabelaTso/Skills-4-SE.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/incremental-java-programmer .claude/skills/incremental-java-programmer && 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
incremental-java-programmer
GitHub stars
253
Token cost
~2.8k tokens
SKILL.md length
676 words
Files
1
Skills in repo
150
Repo updated
First seen
Licence
Apache-2.0

At a glance

Incrementally implement new features in Java repositories from natural language descriptions.

  • Works in 8 steps: Analyze Repository Structure → Parse Feature Description → Locate Target Files → …
  • Adding functionality to existing Java codebases (Maven
  • SKILL.md covers Overview, Workflow, Implementation Patterns and Tips
  • Calls mvn

What it does

Incremental Java Programmer is an agent skill from ArabelaTso/Skills-4-SE. Incrementally implement new features in Java repositories from natural language descriptions. Use when adding functionality to existing Java codebases (Maven or Gradle projects). Takes a feature description as input and outputs modified repository with implementation code, corresponding JUnit tests, and verification that all tests pass. Supports method additions, new class creation, and method modifications with proper Java conventions.

Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Testing & QA, covering Unit testing. It works with Java, Gradle and JUnit. The repository describes itself as: A curated list of 180+ useful Claude Skills for Software Engineering and resources for customizing AI for SE workflows. The licence is Apache-2.0.

When your agent uses it

  • Adding functionality to existing Java codebases (Maven
  • Gradle projects)

Example prompts

  • “/incremental-java-programmer”

Workflow steps

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

  1. Analyze Repository Structure
  2. Parse Feature Description
  3. Locate Target Files
  4. Implement Feature Code
  5. Generate Unit Tests
  6. Update Existing Tests
  7. Run and Verify Tests
  8. Validate Implementation

What it can do on your machine

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

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • mvn

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

  • Network

    No URLs in SKILL.md.

    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.

Context cost

Incremental Java Programmer loads about 2.8k tokens when it runs. Until then it costs about 117 tokens; SKILL.md has 676 words of instructions outside code blocks.

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

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 ArabelaTso/Skills-4-SE at commit 4f38503, republished under its Apache-2.0 licence (© ArabelaTso). 676 words, ~2,750 tokens.

Download SKILL.mdSave it as .claude/skills/incremental-java-programmer/SKILL.md (or your agent's skills folder).
name
incremental-java-programmer
description
Incrementally implement new features in Java repositories from natural language descriptions. Use when adding functionality to existing Java codebases (Maven or Gradle projects). Takes a feature description as input and outputs modified repository with implementation code, corresponding JUnit tests, and verification that all tests pass. Supports method additions, new class creation, and method modifications with proper Java conventions.

Incremental Java Programmer

Overview

Implement new features in Java repositories by analyzing the codebase, generating implementation code, creating comprehensive tests, and ensuring all tests pass before completion.

Workflow

1. Analyze Repository Structure

Understand the Java project structure and build system:

Identify build system:

  • Maven: Look for pom.xml in root directory
  • Gradle: Look for build.gradle or build.gradle.kts

Examine project structure:

src/
├── main/
│   └── java/
│       └── com/example/project/
│           ├── model/
│           ├── service/
│           ├── controller/
│           └── util/
└── test/
    └── java/
        └── com/example/project/
            ├── model/
            ├── service/
            └── controller/

Extract key information:

  • Package structure and naming conventions
  • Existing class hierarchy and relationships
  • Dependencies from pom.xml or build.gradle
  • Testing framework (JUnit 4, JUnit 5, TestNG)
  • Code style and patterns used in the project
2. Parse Feature Description

Break down the natural language feature description into actionable components:

Identify feature type:

  • New functionality: Adding entirely new capabilities
  • Enhancement: Extending existing functionality
  • Modification: Changing existing behavior

Extract requirements:

  • What classes/methods need to be created or modified
  • Input parameters and return types
  • Business logic and validation rules
  • Error handling requirements
  • Integration points with existing code

Example feature description:

"Add a method to calculate the total price of items in a shopping cart,
including tax. The tax rate should be configurable. If the cart is empty,
return 0. The method should throw an exception if the tax rate is negative."

Parsed components:

  • Target class: ShoppingCart
  • New method: calculateTotalWithTax(double taxRate)
  • Return type: double
  • Validation: Check for negative tax rate, handle empty cart
  • Exception: IllegalArgumentException for negative tax rate
3. Locate Target Files

Find where the implementation should be added:

For new classes:

  • Determine appropriate package based on functionality
  • Follow existing package structure conventions
  • Place in src/main/java/[package-path]/

For existing classes:

  • Use Grep to find the target class
  • Read the class to understand current structure
  • Identify where new methods should be added

For modifications:

  • Locate the specific method to modify
  • Understand current implementation
  • Plan minimal changes to achieve feature
4. Implement Feature Code

Write Java code following project conventions:

Code structure:

java
/**
 * [Javadoc description of what the method does]
 *
 * @param paramName description of parameter
 * @return description of return value
 * @throws ExceptionType description of when exception is thrown
 */
public ReturnType methodName(ParamType paramName) {
    // Input validation
    if (invalidCondition) {
        throw new IllegalArgumentException("Error message");
    }

    // Business logic
    ReturnType result = performCalculation();

    // Return result
    return result;
}

Best practices:

  • Follow existing code style (indentation, naming, formatting)
  • Add comprehensive Javadoc comments
  • Include input validation
  • Handle edge cases
  • Use appropriate access modifiers
  • Follow SOLID principles
  • Avoid code duplication

For new classes:

java
package com.example.project.service;

import java.util.List;

/**
 * Service class for managing shopping cart operations.
 */
public class ShoppingCartService {

    private final TaxCalculator taxCalculator;

    public ShoppingCartService(TaxCalculator taxCalculator) {
        this.taxCalculator = taxCalculator;
    }

    // Methods here
}
5. Generate Unit Tests

Create comprehensive JUnit tests for the new functionality:

Test class structure:

java
package com.example.project.service;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.DisplayName;
import static org.junit.jupiter.api.Assertions.*;

class ShoppingCartServiceTest {

    private ShoppingCartService service;

    @BeforeEach
    void setUp() {
        service = new ShoppingCartService(new TaxCalculator());
    }

    @Test
    @DisplayName("Should calculate total with tax correctly")
    void testCalculateTotalWithTax() {
        // Arrange
        double subtotal = 100.0;
        double taxRate = 0.08;

        // Act
        double result = service.calculateTotalWithTax(subtotal, taxRate);

        // Assert
        assertEquals(108.0, result, 0.01);
    }

    @Test
    @DisplayName("Should throw exception for negative tax rate")
    void testNegativeTaxRate() {
        assertThrows(IllegalArgumentException.class, () -> {
            service.calculateTotalWithTax(100.0, -0.05);
        });
    }

    @Test
    @DisplayName("Should return zero for empty cart")
    void testEmptyCart() {
        double result = service.calculateTotalWithTax(0.0, 0.08);
        assertEquals(0.0, result, 0.01);
    }
}

Test coverage requirements:

  • Happy path (normal operation)
  • Edge cases (empty inputs, boundary values)
  • Error cases (invalid inputs, exceptions)
  • Integration with existing code

Test naming conventions:

  • Use descriptive test method names
  • Follow project's existing test naming pattern
  • Use @DisplayName for readable test descriptions
6. Update Existing Tests

Modify existing tests if the feature changes existing behavior:

Identify affected tests:

  • Search for tests that call modified methods
  • Find tests that assert on changed behavior
  • Locate integration tests that may be affected

Update test assertions:

java
// Before
assertEquals(100.0, cart.getTotal());

// After (if feature adds tax calculation)
assertEquals(108.0, cart.getTotalWithTax(0.08));

Add new test cases:

  • Test interactions between new and existing features
  • Verify backward compatibility if applicable
  • Test integration points
Show full SKILL.md (266 more words)Show less
7. Run and Verify Tests

Execute the test suite to ensure all tests pass:

For Maven projects:

bash
# Run all tests
mvn test

# Run specific test class
mvn test -Dtest=ShoppingCartServiceTest

# Run with verbose output
mvn test -X

For Gradle projects:

bash
# Run all tests
./gradlew test

# Run specific test class
./gradlew test --tests ShoppingCartServiceTest

# Run with detailed output
./gradlew test --info

Verify test results:

  • All tests must pass (green)
  • No compilation errors
  • No test failures or errors
  • Check test coverage if available

If tests fail:

  1. Read the failure message and stack trace
  2. Identify the root cause
  3. Fix the implementation or test code
  4. Re-run tests
  5. Repeat until all tests pass
8. Validate Implementation

Perform final checks before completion:

Code quality checks:

  • No compiler warnings
  • Follows project code style
  • Proper exception handling
  • Appropriate logging (if project uses logging)
  • No hardcoded values (use constants or configuration)

Integration checks:

  • New code integrates cleanly with existing code
  • No breaking changes to existing APIs
  • Dependencies are properly declared
  • Imports are organized

Documentation checks:

  • All public methods have Javadoc
  • Complex logic has inline comments
  • README updated if needed (for major features)

Implementation Patterns

Pattern 1: Adding a New Method

Feature: "Add a method to validate email addresses"

Implementation:

java
/**
 * Validates if the given string is a valid email address.
 *
 * @param email the email address to validate
 * @return true if valid, false otherwise
 * @throws IllegalArgumentException if email is null
 */
public boolean isValidEmail(String email) {
    if (email == null) {
        throw new IllegalArgumentException("Email cannot be null");
    }

    String emailRegex = "^[A-Za-z0-9+_.-]+@[A-Za-z0-9.-]+$";
    return email.matches(emailRegex);
}

Test:

java
@Test
void testValidEmail() {
    assertTrue(validator.isValidEmail("user@example.com"));
}

@Test
void testInvalidEmail() {
    assertFalse(validator.isValidEmail("invalid-email"));
}

@Test
void testNullEmail() {
    assertThrows(IllegalArgumentException.class, () -> {
        validator.isValidEmail(null);
    });
}
Pattern 2: Creating a New Class

Feature: "Create a UserService class to manage user operations"

Implementation:

java
package com.example.project.service;

import com.example.project.model.User;
import com.example.project.repository.UserRepository;
import java.util.Optional;

/**
 * Service class for managing user-related operations.
 */
public class UserService {

    private final UserRepository userRepository;

    public UserService(UserRepository userRepository) {
        this.userRepository = userRepository;
    }

    /**
     * Finds a user by their ID.
     *
     * @param userId the user ID
     * @return Optional containing the user if found
     */
    public Optional<User> findById(Long userId) {
        if (userId == null || userId <= 0) {
            throw new IllegalArgumentException("Invalid user ID");
        }
        return userRepository.findById(userId);
    }
}
Pattern 3: Modifying Existing Method

Feature: "Update the calculateDiscount method to support percentage-based discounts"

Before:

java
public double calculateDiscount(double price) {
    return price * 0.1; // Fixed 10% discount
}

After:

java
public double calculateDiscount(double price, double discountRate) {
    if (price < 0) {
        throw new IllegalArgumentException("Price cannot be negative");
    }
    if (discountRate < 0 || discountRate > 1) {
        throw new IllegalArgumentException("Discount rate must be between 0 and 1");
    }
    return price * discountRate;
}

Tips

  • Always read existing code before making changes
  • Follow the project's existing patterns and conventions
  • Write tests before or alongside implementation (TDD approach)
  • Keep changes minimal and focused on the feature
  • Use meaningful variable and method names
  • Handle all edge cases and error conditions
  • Run tests frequently during development
  • Check for compilation errors after each change
  • Use IDE refactoring tools when available
  • Commit changes incrementally with clear messages

© ArabelaTso, 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 skills/incremental-java-programmer of ArabelaTso/Skills-4-SE.

Open the folder on GitHubat commit 4f38503

Compare with similar skills

Incremental Java Programmer 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.

Incremental Java Programmer compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Incremental Java Programmer this skillArabelaTso/Skills-4-SE253—~2.8kAutomated safety check: PassApache-2.0
Jvm Helpershepherdjerred/monorepo112—~1.9kAutomated safety check: PassGPL-3.0
Java Rulessoftspark/ai-toolkit179—~3.1kAutomated safety check: PassApache-2.0
Debug Surefireeclipse-rdf4j/rdf4j420—~2.4kAutomated safety check: PassBSD-3-Clause
Minecraft TestingJahrome907/minecraft-agent-skills166—~3.8kAutomated safety check: PassMIT
Migrate Groovy To JavaDataDog/dd-trace-java736—~1.3kAutomated safety check: PassApache-2.0

Similar skills

  • Jvm Helper

    shepherdjerred/monorepo

    Current Java, Kotlin, Gradle, Maven, JUnit, JVM diagnostics, packaging, and performance guidance.

    112 GitHub stars~1.9k tokensUpdated today
    MobileAuto-check passed
  • Java Rules

    softspark/ai-toolkit

    Java coding rules: style, patterns, security, testing. An agent skill from softspark/ai-toolkit.

    179 GitHub stars~3.1k tokensUpdated yesterday
    Backend & APIsAuto-check passed
  • Debug Surefire

    eclipse-rdf4j/rdf4j

    Debug Maven Surefire unit tests by running them in JDWP "wait for debugger" mode (-Dmaven.surefire.debug) and attaching to the forked test JVM using jdb (preferred for CLI/agent debugging)…

    420 GitHub stars~2.4k tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Minecraft Testing

    Jahrome907/minecraft-agent-skills

    Design and implement automated tests for current Minecraft 26.x or legacy 1.21.x mods and plugins using JUnit, MockBukkit, NeoForge Game Tests, or Fabric Game Tests.

    166 GitHub stars~3.8k tokensUpdated 25 days ago
    Testing & QAAuto-check passed
  • Migrate Groovy To Java

    DataDog/dd-trace-java

    Official

    Converts Spock/Groovy test files in a Gradle module to equivalent JUnit 5 Java tests.

    736 GitHub stars~1.3k tokensUpdated today
    Testing & QAAuto-check passed
  • Eclipse Test

    gradusnikov/eclipse-chatgpt-plugin

    Run JUnit tests in Eclipse projects — all tests, by package, by class, or individual test methods.

    171 GitHub stars~1k tokensUpdated 10 days ago
    Testing & QAAuto-check passed

More from ArabelaTso/Skills-4-SE

All 150 skills in this repo
  • Framework Migration Assistant

    ArabelaTso/Skills-4-SE

    Automatically migrate Python web applications between frameworks (Flask → FastAPI, Django → FastAPI).

    253 GitHub stars~1.9k tokensUpdated 1 mo ago
    Auto-check passed
  • Metamorphic Test Generator

    ArabelaTso/Skills-4-SE

    Generate test cases using metamorphic testing by applying transformations based on metamorphic properties.

    253 GitHub stars~798 tokensUpdated 1 mo ago
    Auto-check passed
  • Reproduction Trace Instrumenter

    ArabelaTso/Skills-4-SE

    Instruments programs to capture execution traces specifically for reproducing reported bugs, enabling consistent replay and diagnosis of failures.

    253 GitHub stars~2.4k tokensUpdated 1 mo ago
    Auto-check passed
  • Spring Mvc To Boot Migrator

    ArabelaTso/Skills-4-SE

    Automatically migrate Spring MVC applications to Spring Boot.

    253 GitHub stars~2.2k tokensUpdated 1 mo ago
    Auto-check passed
  • State Snapshot Instrumenter

    ArabelaTso/Skills-4-SE

    Instrument programs (Python, C/C++, Java) to capture snapshots of key program states at runtime, including variables, memory, and call stacks.

    253 GitHub stars~2.2k tokensUpdated 1 mo ago
    Auto-check passed

Works with

Categories

Questions about Incremental Java Programmer

What does Incremental Java Programmer do?

Incrementally implement new features in Java repositories from natural language descriptions. Incremental Java Programmer is an agent skill from ArabelaTso/Skills-4-SE. Incrementally implement new features in Java repositories from natural language descriptions.

When should I use Incremental Java Programmer?

Incremental Java Programmer fits situations like: adding functionality to existing Java codebases (Maven; gradle projects).

How do I install Incremental Java Programmer in Claude Code?

Run `npx skills add ArabelaTso/Skills-4-SE --skill incremental-java-programmer -a claude-code`. Or copy the skill folder (skills/incremental-java-programmer in ArabelaTso/Skills-4-SE) into .claude/skills/incremental-java-programmer in your project. Claude Code loads it when a task matches its description.

How do I install Incremental Java Programmer in Codex?

Run `npx skills add ArabelaTso/Skills-4-SE --skill incremental-java-programmer -a codex`. Or copy the skill folder (skills/incremental-java-programmer in ArabelaTso/Skills-4-SE) into .agents/skills/incremental-java-programmer in your project. Codex loads it when a task matches its description.

Can I use Incremental Java Programmer 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 ArabelaTso/Skills-4-SE --skill incremental-java-programmer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/incremental-java-programmer, .gemini/skills/incremental-java-programmer, .github/skills/incremental-java-programmer and .opencode/skills/incremental-java-programmer in your project.

What does Incremental Java Programmer need to run?

Going by SKILL.md and its folder, Incremental Java Programmer needs the command-line tools its instructions call (mvn).

Does Incremental Java Programmer access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Incremental Java Programmer 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 Incremental Java Programmer use?

Incremental Java Programmer 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 Incremental Java Programmer use?

About 2.8k tokens (SKILL.md is roughly 11k 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 Incremental Java Programmer?

Skills that share tags, products or a category with Incremental Java Programmer: Jvm Helper (shepherdjerred/monorepo, 112 stars), Java Rules (softspark/ai-toolkit, 179 stars), Debug Surefire (eclipse-rdf4j/rdf4j, 420 stars) and Minecraft Testing (Jahrome907/minecraft-agent-skills, 166 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Incremental Java Programmer?

ArabelaTso (a GitHub user) maintains it in ArabelaTso/Skills-4-SE, which has 253 GitHub stars. The repository holds 150 skills in this directory. The repository was last updated on August 21, 2026.

Source: ArabelaTso/Skills-4-SE on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.