chunking-strategy
Provides chunking strategies for RAG systems. Generates chunk size recommendations (256-1024 tokens), overlap percentages…
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,
Claude Code
$ npx -y skills add giuseppe-trisciuoglio/developer-kit --skill unit-test-mapper-converter --agent claude-code
Codex
$ npx skills add giuseppe-trisciuoglio/developer-kit --skill unit-test-mapper-converter -a codex -y
Cursor
$ npx skills add giuseppe-trisciuoglio/developer-kit --skill unit-test-mapper-converter -a cursor -y
Gemini CLI
$ npx skills add giuseppe-trisciuoglio/developer-kit --skill unit-test-mapper-converter -a gemini-cli -y
GitHub Copilot
$ npx skills add giuseppe-trisciuoglio/developer-kit --skill unit-test-mapper-converter -a github-copilot -y
OpenCode
$ npx skills add giuseppe-trisciuoglio/developer-kit --skill unit-test-mapper-converter -a opencode -y
Windsurf
$ npx skills add giuseppe-trisciuoglio/developer-kit --skill unit-test-mapper-converter -a windsurf -y
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.
Provides chunking strategies for RAG systems. Generates chunk size recommendations (256-1024 tokens), overlap percentages…
Provides workflows to write, debug, and optimize prompts for LLMs, including few-shot example selection, chain-of-thought…
Implements document chunking, embedding generation, vector storage, and retrieval pipelines for Retrieval-Augmented Generation…
Provides AWS CloudFormation patterns for Auto Scaling including EC2, ECS, and Lambda. Use when creating Auto Scaling groups,…
Provides AWS CloudFormation patterns for Amazon Bedrock resources including agents, knowledge bases, data sources, guardrails,…
Provides AWS CloudFormation patterns for CloudFront distributions, origins (ALB, S3, Lambda@Edge, VPC Origins), CacheBehaviors,…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.