# Records

> description: Java coding standards for enterprise applications. Includes naming conventions, modern Java features, and recommended tooling.

- Skill: `majiayu000/records-2` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/records-2`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/records-2/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/records-2

---


# Record 031: Java Developer Skill

## Status

Done

---

## Problem

Java developers using claude-code-setup lack language-specific coding standards and best practices. Currently, context skills exist for Python, TypeScript, JavaScript, and Shell, but Java is notably absent despite being widely used in enterprise applications.

**What problem are we solving?**

When Claude generates or modifies Java code without Java-specific standards:
- Code lacks consistency with enterprise Java conventions (naming, package structure, error handling)
- No guidance on build tools (Maven vs Gradle) and dependency management
- Missing patterns for common frameworks (Spring Boot, Jakarta EE, Quarkus)
- No integration guidance for Java ecosystem tools (JUnit, Mockito, checkstyle, spotbugs, SonarQube)
- Inconsistent approach to logging, exception handling, and resource management

**Why does it need to be solved?**

1. **Consistency**: Java projects require strict adherence to conventions (especially in enterprise environments)
2. **Quality**: Java has specific best practices (try-with-resources, Optional, Stream API) that should be followed
3. **Ecosystem**: Java tooling (Maven/Gradle, testing, static analysis) needs to be understood and properly used
4. **Parity**: Other major languages have context skills that auto-load based on tech stack

**What happens if we do nothing?**

- Java developers get generic code without language-specific best practices
- Inconsistent code quality compared to projects using Python/TypeScript skills
- Manual corrections needed for convention violations
- Missed opportunities for modern Java features (records, sealed classes, pattern matching)
- No standardized approach to common Java challenges (dependency injection, transaction management, etc.)

## Options Considered

### Option A: Comprehensive Enterprise Java Skill
- **Approach:** Single skill covering everything from Spring Boot to Jakarta EE, Maven/Gradle, testing, security, performance
- **Pros:** Complete coverage for enterprise Java developers, addresses all common scenarios
- **Cons:** Large skill file may slow down context loading, too broad for simple Java projects

### Option B: Core Java Standards + Framework Extensions
- **Approach:** Base skill covers core Java language (naming conventions, patterns, modern Java features, basic tooling), with separate optional extension skills for Spring/Jakarta EE/Quarkus created later as needed
- **Pros:** Modular design, lightweight for simple projects, extensible for enterprise needs, clear separation of concerns
- **Cons:** More files to maintain, requires creating additional skills for full enterprise coverage

### Option C: Spring-Focused Java Skill
- **Approach:** Focus primarily on Spring Boot/Spring Framework as the dominant Java framework
- **Pros:** Matches most modern Java development, clear focus, complete coverage of Spring ecosystem
- **Cons:** Excludes Jakarta EE, Quarkus, and non-framework Java users, not universal

### Option D: Core Java Only (Like standards-shell)
- **Approach:** Pure Java language standards without framework-specific guidance
- **Pros:** Universal, framework-agnostic, clean separation of concerns, lightweight
- **Cons:** Incomplete for enterprise developers, framework patterns need to be added manually

### Decision

**Option B: Core Java Standards + Framework Extensions**

Create a focused `standards-java` skill covering core Java language conventions and best practices. Framework-specific patterns (Spring, Jakarta EE, Quarkus) and potentially build tool specifics (Maven, Gradle) will be separate extension skills created later as needed.

**Reasoning:**
- Modular approach allows lightweight base for all Java projects
- Extension skills can be added based on actual user needs
- Follows single-responsibility principle - base skill handles language, extensions handle frameworks
- Users working on simple Java projects don't load unnecessary Spring/Jakarta EE context
- Enterprise developers can combine base + framework skills for complete coverage

## Solution

### Base Skill: standards-java

Create a context skill following the established pattern of standards-python, standards-typescript, and standards-shell.

**File Location:**
- `~/.claude/skills/standards-java/SKILL.md`

**Auto-Loading:**
- Tech Stack contains: "java"
- File extensions: `.java`
- Applies to: [java, maven, gradle, junit, spring, jakarta, quarkus]

**Content Structure:**

1. **Core Principles** - Readability, maintainability, SOLID, DRY
2. **Naming Conventions** - Classes, methods, packages, constants, variables
3. **Modern Java Features** (Java 17+)
   - Records for immutable data
   - Sealed classes for restricted hierarchies
   - Pattern matching (instanceof, switch)
   - Text blocks for multi-line strings
   - Switch expressions
4. **Code Organization**
   - Package structure
   - Visibility modifiers (public, protected, package-private, private)
   - SOLID principles application
5. **Exception Handling**
   - Checked vs unchecked exceptions
   - Try-with-resources
   - Custom exception hierarchies
6. **Collections & Streams API**
   - When to use List, Set, Map
   - Stream operations and best practices
   - Collectors usage
7. **Optional & Null Handling**
   - Prefer Optional for return values
   - Null-safety patterns
8. **Testing Fundamentals**
   - JUnit 5 basics
   - Mockito for mocking
   - Test naming conventions
9. **Build Tool Awareness**
   - Maven project structure (pom.xml, src/main/java, src/test/java)
   - Gradle project structure (build.gradle, settings.gradle)
   - Dependency declaration patterns
10. **Recommended Tooling**
    - checkstyle for style checking
    - spotbugs for bug detection
    - JaCoCo for code coverage
    - Maven Enforcer / Gradle verification

**Design Decisions:**

- **No MCP Server initially**: Standards skill provides guidance without external dependencies. If documentation search or dependency analysis becomes critical, consider adding MCP later.
- **No framework specifics**: Spring, Jakarta EE, Quarkus patterns belong in separate extension skills
- **Focus on modern Java**: Recommend latest LTS (Java 21/25), document features available since Java 17+
- **Practical examples**: Include code snippets for each section (similar to standards-shell)
- **Tool integration guidance**: Reference tools but don't require them

### Future Extension Skills

These will be created later based on user needs:

1. **standards-spring** - Spring Boot, dependency injection, REST controllers, Spring Data
2. **standards-jakartaee** - CDI, JAX-RS, JPA, Jakarta EE patterns
3. **standards-quarkus** - Quarkus-specific reactive patterns, native compilation
4. **maven-expert** / **gradle-expert** - Deep build tool guidance (if needed)

### Installation Integration

**Install Script (`install.sh`):**
- Add standards-java to available skills
- No new dependencies required (jq, git already checked)

**Skill Metadata (SKILL.md front matter):**
```yaml
---
name: standards-java
description: Java coding standards for enterprise applications. Includes naming conventions, modern Java features, and recommended tooling.
type: context
applies_to: [java, maven, gradle, junit, spring, jakarta, quarkus]
---
```

**Testing:**
- Add test scenario for standards-java skill loading
- Verify auto-load on Tech Stack: "Java"
- Verify task-based loading on `.java` file edit

## User Stories

### Story 1: Create standards-java Skill File
**As a** Java developer
**I want** a standards-java skill with coding standards and best practices
**So that** Claude generates consistent, high-quality Java code

**Acceptance Criteria:**
- [x] Create `~/.claude/skills/standards-java/SKILL.md`
- [x] Include YAML front matter: name, description, type: context, applies_to: [java, maven, gradle, junit, spring, jakarta, quarkus]
- [x] Core Principles section (readability, maintainability, SOLID, DRY)
- [x] Naming Conventions section (classes, methods, packages, constants, variables with examples)
- [x] Modern Java Features section organized by version:
  - Java 17: records, sealed classes, pattern matching, text blocks, switch expressions
  - Java 21: virtual threads, sequenced collections, record patterns, pattern matching for switch
  - Java 25: flexible main methods, scoped values, gatherers, primitive pattern matching (preview)
- [x] Note recommending latest LTS (Java 21/25) for new projects
- [x] Code Organization section (package structure, visibility, SOLID principles)
- [x] Exception Handling section (checked vs unchecked, try-with-resources, custom exceptions)
- [x] Collections & Streams API section (List/Set/Map usage, Stream best practices)
- [x] Optional & Null Handling section
- [x] Testing Fundamentals section (JUnit 5, Mockito basics)
- [x] Build Tool Awareness section (Maven and Gradle project structure)
- [x] Recommended Tooling section (checkstyle, spotbugs, JaCoCo)
- [x] Follow same format/structure as standards-python, standards-typescript, standards-shell

**Priority:** High
**Status:** Done

**Implementation Notes:**
- Created comprehensive 630-line skill file following standards-python/typescript/shell pattern
- Added YAML front matter with extended applies_to list (included mockito, testcontainers, hibernate, jpa)
- Structured with clear sections: Core Principles, Naming, Project Structure (Maven/Gradle), Modern Java Features
- Modern Java Features section organized by Java version (17, 21, 25):
  - Java 17: records, sealed classes, pattern matching, text blocks, switch expressions
  - Java 21: virtual threads, sequenced collections, record patterns, pattern matching for switch (finalized)
  - Java 25: flexible main methods, scoped values, gatherers, primitive pattern matching (preview)
- Added recommendation to use latest LTS (Java 21/25) for new projects
- All features include practical code examples
- Code Organization includes SOLID principles with concrete examples (SRP, DIP)
- Exception handling: checked vs unchecked guidance, try-with-resources, custom exception hierarchies
- Collections & Streams: when to use List/Set/Map, stream best practices, immutable collections with List.of/Set.of/Map.of
- Optional usage: return types vs parameters, chaining operations, null-safety with Objects utilities
- Testing: JUnit 5 with @BeforeEach/@Test/@ParameterizedTest, Mockito with @Mock/@InjectMocks, test naming conventions
- Build tools: Maven and Gradle project structures, dependency examples in both pom.xml and build.gradle.kts
- Recommended tooling: maven/gradle, junit-jupiter, mockito, checkstyle, spotbugs, jacoco, testcontainers
- Production best practices: 15 rules including immutability, DI, fail fast, explicit code, resource management
- Comments guidance: less is more, explain WHY not WHAT
- References: Java Language Spec, Effective Java, Clean Code

### Story 2: Integrate standards-java into Install Script
**As a** user
**I want** standards-java available in the installer
**So that** I can install it like other skills

**Acceptance Criteria:**
- [x] Add standards-java to `skills/` directory structure
- [x] Update install.sh to recognize standards-java as an available skill
- [x] Skill appears in interactive toggle selection menu
- [x] Skill installs to `~/.claude/skills/standards-java/`
- [x] installed.json tracks standards-java installation
- [x] /claude-code-setup command shows standards-java as available/installed

**Priority:** High
**Status:** Done

**Implementation Notes:**
- No code changes to install.sh required - automatic discovery via directory scanning
- Install script discovers skills by scanning `$SCRIPT_DIR/skills/` for subdirectories (lib/modules.sh:706)
- Verified with `./install.sh --list`: standards-java appears in available skills
- Skill installation handled by existing `install_skill()` function (lib/skills.sh:100-126)
- Copies skill directory from `skills/standards-java/` to `~/.claude/skills/standards-java/`
- Tracking in installed.json handled by existing infrastructure (lib/helpers.sh:89-96)
- /claude-code-setup command discovers modules via `ls -1 "$temp_dir/skills/"` (commands/claude-code-setup.md:26)
- Interactive toggle selection includes standards-java automatically (lib/modules.sh:691-711)

### Story 3: Add E2E Test for standards-java
**As a** maintainer
**I want** automated tests for standards-java skill
**So that** I can verify it installs and loads correctly

**Acceptance Criteria:**
- [x] Create test scenario in `tests/scenarios/` for standards-java
- [x] Test: Install standards-java via install.sh
- [x] Test: Verify skill file exists in `~/.claude/skills/standards-java/SKILL.md`
- [x] Test: Verify installed.json contains standards-java entry
- [x] Test: Simulate Tech Stack "Java" and verify skill would load (check applies_to)
- [x] Test passes in CI pipeline

**Priority:** Medium
**Status:** Done

**Implementation Notes:**
- Created `tests/scenarios/18-standards-java-skill.sh` with comprehensive test coverage
- Test structure: 6 scenarios covering file structure, content sections, installation, tracking, auto-loading, and dependencies
- Verified YAML front matter structure (name, type, applies_to fields)
- Validated all 11 required content sections present: Core Principles, Naming Conventions, Modern Java Features, Code Organization, Exception Handling, Collections & Streams API, Optional & Null Handling, Testing Fundamentals, Build Tool Awareness, Recommended Tooling, Production Best Practices
- Checked coverage of 5 modern Java features: records, sealed classes, pattern matching, text blocks, switch expressions
- Installation test uses default skill selection (all pre-selected) for consistency with other skill tests
- Verified SHA256 hash match between source and installed SKILL.md
- Confirmed tracking in installed.json via jq query: `.skills | index("standards-java")`
- Validated applies_to field includes 5 key keywords: java, maven, gradle, junit, spring
- Verified no deps.json present (standards-java has no external dependencies)
- All 31 test assertions pass successfully

### Story 4: Update Documentation
**As a** user
**I want** documentation about standards-java skill
**So that** I know it exists and how to use it

**Acceptance Criteria:**
- [x] Add standards-java to README.md skills table
- [x] Create `website/pages/features/skills/standards-java.mdx` documentation page
- [x] Add to `website/pages/features/skills/_meta.js` navigation
- [x] Document auto-loading behavior (Tech Stack: java, file extensions: .java)
- [x] Mention future extension skills (standards-spring, standards-jakartaee, etc.)
- [x] Update CHANGELOG.md with new content version

**Priority:** Medium
**Status:** Done

**Implementation Notes:**
- Updated README.md skills table: Added Java row (sorted alphabetically) with tech stack "java, maven, gradle, spring, junit"
- Created `website/pages/features/skills/standards-java.mdx` (230 lines) following standards-python/typescript pattern
- Documentation sections: Metadata, Core Principles, Naming Conventions, Modern Java Features (records, sealed classes, pattern matching, text blocks), Code Organization, Exception Handling, Collections & Streams, Optional & Null Handling, Testing, Build Tools, Recommended Tooling, Production Checklist
- Included practical code examples for each section (10+ code blocks demonstrating modern Java patterns)
- Auto-loading metadata documented: applies_to includes java, maven, gradle, junit, spring, jakarta, quarkus, mockito, testcontainers, hibernate, jpa
- Future Extensions section: Explicitly mentions standards-spring, standards-jakartaee, standards-quarkus as planned separate skills
- Updated `website/pages/features/skills/_meta.js`: Added 'standards-java': 'Java' entry (alphabetically after index, before python)
- Updated CHANGELOG.md with Content v37 entry under [Unreleased] section
- Content v37 description: "Add `standards-java` skill for Java enterprise applications" with bullet points for core features, modern Java, testing, build tools, production practices, future extensions
- Updated `templates/VERSION` from 36 to 37
- Updated README.md badge from "Content v36" to "Content v37"

