Jvm Helper
shepherdjerred/monorepo
Current Java, Kotlin, Gradle, Maven, JUnit, JVM diagnostics, packaging, and performance guidance.
Incrementally implement new features in Java repositories from natural language descriptions.
$ npx skills add ArabelaTso/Skills-4-SE --skill incremental-java-programmer -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ArabelaTso/Skills-4-SE incremental-java-programmer --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "incremental-java-programmer" agent skill from https://github.com/ArabelaTso/Skills-4-SE/tree/main/skills/incremental-java-programmer into .claude/skills/incremental-java-programmer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "incremental-java-programmer", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/ArabelaTso/Skills-4-SE/tree/main/skills/incremental-java-programmerType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add ArabelaTso/Skills-4-SE --skill incremental-java-programmer -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ArabelaTso/Skills-4-SE incremental-java-programmer --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ArabelaTso/Skills-4-SE.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/incremental-java-programmer .agents/skills/incremental-java-programmer && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "incremental-java-programmer" agent skill from https://github.com/ArabelaTso/Skills-4-SE/tree/main/skills/incremental-java-programmer into .agents/skills/incremental-java-programmer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "incremental-java-programmer", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ArabelaTso/Skills-4-SE --skill incremental-java-programmer -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ArabelaTso/Skills-4-SE incremental-java-programmer --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ArabelaTso/Skills-4-SE.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/incremental-java-programmer .cursor/skills/incremental-java-programmer && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "incremental-java-programmer" agent skill from https://github.com/ArabelaTso/Skills-4-SE/tree/main/skills/incremental-java-programmer into .cursor/skills/incremental-java-programmer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "incremental-java-programmer", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/ArabelaTso/Skills-4-SE.git --path skills/incremental-java-programmer--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ArabelaTso/Skills-4-SE --skill incremental-java-programmer -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ArabelaTso/Skills-4-SE incremental-java-programmer --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ArabelaTso/Skills-4-SE.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/incremental-java-programmer .gemini/skills/incremental-java-programmer && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "incremental-java-programmer" agent skill from https://github.com/ArabelaTso/Skills-4-SE/tree/main/skills/incremental-java-programmer into .gemini/skills/incremental-java-programmer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "incremental-java-programmer", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install ArabelaTso/Skills-4-SE incremental-java-programmerInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add ArabelaTso/Skills-4-SE --skill incremental-java-programmer -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ArabelaTso/Skills-4-SE.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/incremental-java-programmer .github/skills/incremental-java-programmer && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "incremental-java-programmer" agent skill from https://github.com/ArabelaTso/Skills-4-SE/tree/main/skills/incremental-java-programmer into .github/skills/incremental-java-programmer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "incremental-java-programmer", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add ArabelaTso/Skills-4-SE --skill incremental-java-programmer -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ArabelaTso/Skills-4-SE incremental-java-programmer --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ArabelaTso/Skills-4-SE.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/incremental-java-programmer .opencode/skills/incremental-java-programmer && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "incremental-java-programmer" agent skill from https://github.com/ArabelaTso/Skills-4-SE/tree/main/skills/incremental-java-programmer into .opencode/skills/incremental-java-programmer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "incremental-java-programmer", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
incremental-java-programmerIncrementally 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. 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.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 4f38503. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
mvnFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from ArabelaTso/Skills-4-SE at commit 4f38503, republished under its Apache-2.0 licence (© ArabelaTso). 676 words, ~2,750 tokens.
.claude/skills/incremental-java-programmer/SKILL.md (or your agent's skills folder).Implement new features in Java repositories by analyzing the codebase, generating implementation code, creating comprehensive tests, and ensuring all tests pass before completion.
Understand the Java project structure and build system:
Identify build system:
pom.xml in root directorybuild.gradle or build.gradle.ktsExamine project structure:
src/
├── main/
│ └── java/
│ └── com/example/project/
│ ├── model/
│ ├── service/
│ ├── controller/
│ └── util/
└── test/
└── java/
└── com/example/project/
├── model/
├── service/
└── controller/Extract key information:
pom.xml or build.gradleBreak down the natural language feature description into actionable components:
Identify feature type:
Extract requirements:
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:
ShoppingCartcalculateTotalWithTax(double taxRate)doubleIllegalArgumentException for negative tax rateFind where the implementation should be added:
For new classes:
src/main/java/[package-path]/For existing classes:
For modifications:
Write Java code following project conventions:
Code structure:
/**
* [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:
For new classes:
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
}Create comprehensive JUnit tests for the new functionality:
Test class structure:
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:
Test naming conventions:
@DisplayName for readable test descriptionsModify existing tests if the feature changes existing behavior:
Identify affected tests:
Update test assertions:
// Before
assertEquals(100.0, cart.getTotal());
// After (if feature adds tax calculation)
assertEquals(108.0, cart.getTotalWithTax(0.08));Add new test cases:
Execute the test suite to ensure all tests pass:
For Maven projects:
# Run all tests
mvn test
# Run specific test class
mvn test -Dtest=ShoppingCartServiceTest
# Run with verbose output
mvn test -XFor Gradle projects:
# Run all tests
./gradlew test
# Run specific test class
./gradlew test --tests ShoppingCartServiceTest
# Run with detailed output
./gradlew test --infoVerify test results:
If tests fail:
Perform final checks before completion:
Code quality checks:
Integration checks:
Documentation checks:
Feature: "Add a method to validate email addresses"
Implementation:
/**
* 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:
@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);
});
}Feature: "Create a UserService class to manage user operations"
Implementation:
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);
}
}Feature: "Update the calculateDiscount method to support percentage-based discounts"
Before:
public double calculateDiscount(double price) {
return price * 0.1; // Fixed 10% discount
}After:
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;
}© 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
Just SKILL.md in skills/incremental-java-programmer of ArabelaTso/Skills-4-SE.
Open the folder on GitHubat commit 4f38503
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Incremental Java Programmer this skillArabelaTso/Skills-4-SE | 253 | — | ~2.8k | Automated safety check: Pass | Apache-2.0 | |
| Jvm Helpershepherdjerred/monorepo | 112 | — | ~1.9k | Automated safety check: Pass | GPL-3.0 | |
| Java Rulessoftspark/ai-toolkit | 179 | — | ~3.1k | Automated safety check: Pass | Apache-2.0 | |
| Debug Surefireeclipse-rdf4j/rdf4j | 420 | — | ~2.4k | Automated safety check: Pass | BSD-3-Clause | |
| Minecraft TestingJahrome907/minecraft-agent-skills | 166 | — | ~3.8k | Automated safety check: Pass | MIT | |
| Migrate Groovy To JavaDataDog/dd-trace-java | 736 | — | ~1.3k | Automated safety check: Pass | Apache-2.0 |
shepherdjerred/monorepo
Current Java, Kotlin, Gradle, Maven, JUnit, JVM diagnostics, packaging, and performance guidance.
softspark/ai-toolkit
Java coding rules: style, patterns, security, testing. An agent skill from softspark/ai-toolkit.
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)…
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.
DataDog/dd-trace-java
Converts Spock/Groovy test files in a Gradle module to equivalent JUnit 5 Java tests.
gradusnikov/eclipse-chatgpt-plugin
Run JUnit tests in Eclipse projects — all tests, by package, by class, or individual test methods.
ArabelaTso/Skills-4-SE
Generate prioritized CVE watchlists and actionable security recommendations for repositories.
ArabelaTso/Skills-4-SE
Automatically migrate Python web applications between frameworks (Flask → FastAPI, Django → FastAPI).
ArabelaTso/Skills-4-SE
Generate test cases using metamorphic testing by applying transformations based on metamorphic properties.
ArabelaTso/Skills-4-SE
Instruments programs to capture execution traces specifically for reproducing reported bugs, enabling consistent replay and diagnosis of failures.
ArabelaTso/Skills-4-SE
Automatically migrate Spring MVC applications to Spring Boot.
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.
Categories
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.
Incremental Java Programmer fits situations like: adding functionality to existing Java codebases (Maven; gradle projects).
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.
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.
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.
Going by SKILL.md and its folder, Incremental Java Programmer needs the command-line tools its instructions call (mvn).
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.
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.
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.
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.
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.
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.