chunking-strategy
Provides chunking strategies for RAG systems. Generates chunk size recommendations (256-1024 tokens), overlap percentages (10-20%), and semantic boundary…
Provides patterns for unit testing mappers, converters, and bean mappings. Validates entity-to-DTO and model transformation logic in isolation. Generates executable mapping tests with MapStruct and custom converter test coverage. Use when writing mapping tests, converter tests,
$ npx -y skills add giuseppe-trisciuoglio/developer-kit --skill unit-test-mapper-converter --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/unit-test-mapper-converterContext preview
The summary Claude sees to decide when to auto-load this skill.
Provides patterns for unit testing mappers, converters, and bean mappings. Validates entity-to-DTO and model transformation logic in isolation. Generates executable mapping tests with MapStruct and custom converter test coverage. Use when writing mapping tests, converter tests,
name: unit-test-mapper-converter description: Provides patterns for unit testing mappers, converters, and bean mappings. Validates entity-to-DTO and model transformation logic in isolation. Generates executable mapping tests with MapStruct and custom converter test coverage. Use when writing mapping tests, converter tests, entity mapping tests, or ensuring correct data transformation between DTOs and domain objects. allowed-tools: Read, Write, Bash, Glob, Grep
Provides patterns for unit testing MapStruct mappers and custom converter classes. Covers field mapping accuracy, null handling, type conversions, nested object transformations, bidirectional mapping, enum mapping, and partial updates.
Before testing, verify generated mapper classes exist:
# Maven ls target/generated-sources/ # Gradle ls build/generated/sources/
**If generated classes are missing:** 1. Run `mvn compile` (Maven) or `./gradlew compileJava` (Gradle) 2. Check that the MapStruct annotation processor is configured 3. Verify `@Mapper` interfaces are in a compiled source set
assertThat(mapper.toDto(null)).isNull();
Configure `nullValueMappingStrategy` in mapper if null should return empty/default.
**If null tests fail:** 1. Add `nullValueMappingStrategy = NullValueMappingStrategy.RETURN_NULL` to `@Mapper` 2. Or use `nullValuePropertyMappingStrategy` for nested property handling
User restored = mapper.toEntity(mapper.toDto(original)); assertThat(restored).usingRecursiveComparison().isEqualTo(original);
**If bidirectional tests fail:** 1. Check `@Mapping` annotations for field name mismatches 2. Verify both directions are explicitly mapped if auto-mapping fails 3. Use `unmappedTargetPolicy = ReportingPolicy.ERROR` to catch missing mappings
assertThat(dto.getNested()).usingRecursiveComparison().isEqualTo(expected);
**If nested tests fail:** 1. Ensure nested mapper exists or is referenced via `uses = NestedMapper.class` 2. Check collection element mappings with `elementMappingStrategy`
Custom expressions in `@Mapping(target = "field", expression = "java(...)")` are not compile-time validated.
**If expression tests fail:** 1. Verify the expression syntax and method signatures 2. Check that imported classes are accessible from the expression context
Use `@ValueMapping` for enum-to-enum translations. Test all enum values exhaustively.
Complete executable test with imports:
package com.example.mapper;
import org.junit.jupiter.api.Test;
import org.mapstruct.factory.Mappers;
import static org.assertj.core.api.Assertions.*;
class UserMapperCompleteTest {
private final UserMapper mapper = Mappers.getMapper(UserMapper.class);
@Test
void shouldMapUserToDto() {
User user = new User(1L, "Alice", "alice@example.com", 25);
UserDto dto = mapper.toDto(user);
assertThat(dto)
.isNotNull()
.extracting(UserDto::getName, UserDto::getEmail)
.containsExactly("Alice", "alice@example.com");
}
@Test
void shouldMaintainRoundTrip() {
User original = new User(1L, "Alice", "alice@example.com", 25);
assertThat(mapper.toEntity(mapper.toDto(original)))
.usingRecursiveComparison()
.isEqualTo(original);
}
@Test
void shouldHandleNullInput() {
assertThat(mapper.toDto(null)).isNull();
}
}Additional examples in: `references/examples.md`
Modular plugin marketplace for Claude Code and agentic CLIs, with validated, spec-driven skills, agents, commands, and workflows for Java, TypeScript, Python, PHP, AWS, and AI.
Repo: giuseppe-trisciuoglio/developer-kit
Provides chunking strategies for RAG systems. Generates chunk size recommendations (256-1024 tokens), overlap percentages (10-20%), and semantic boundary…
Provides workflows to write, debug, and optimize prompts for LLMs, including few-shot example selection, chain-of-thought structuring, system prompt design,…
Implements document chunking, embedding generation, vector storage, and retrieval pipelines for Retrieval-Augmented Generation systems. Use when building RAG…
Provides AWS CloudFormation patterns for Auto Scaling including EC2, ECS, and Lambda. Use when creating Auto Scaling groups, launch configurations, launch…
Provides AWS CloudFormation patterns for Amazon Bedrock resources including agents, knowledge bases, data sources, guardrails, prompts, flows, and inference…
Provides AWS CloudFormation patterns for CloudFront distributions, origins (ALB, S3, Lambda@Edge, VPC Origins), CacheBehaviors, Functions, SecurityHeaders,…