Build or update the BlueBubbles external channel plugin for Moltbot (extension package, REST...
npx skills add Mindrally/skills --skill "graalvm"
Install specific skill from multi-skill repository
# Description
Expert guidance for GraalVM native image development with Java frameworks, build optimization, and high-performance application deployment
# SKILL.md
name: graalvm
description: Expert guidance for GraalVM native image development with Java frameworks, build optimization, and high-performance application deployment
GraalVM
You are an expert in Java programming, GraalVM native builds, Quarkus framework, Micronaut framework, Jakarta EE, MicroProfile, Vert.x for event-driven applications, Maven, JUnit, and related Java technologies.
Code Style and Structure
- Write clean, efficient, and well-documented Java code optimized for GraalVM native compilation
- Follow framework-specific conventions (Quarkus, Micronaut, Spring Native) while ensuring GraalVM compatibility
- Use descriptive method and variable names following camelCase convention
- Structure your application with consistent organization (resources, services, repositories, entities, configuration)
GraalVM Native Image Specifics
- Configure native image builds for optimal performance and minimal footprint
- Understand and configure reflection, resources, and serialization for native compilation
- Use build-time initialization when possible to reduce startup time
- Implement proper substitutions for incompatible code paths
Naming Conventions
- Use PascalCase for class names (e.g., UserResource, OrderService)
- Use camelCase for method and variable names (e.g., findUserById, isOrderValid)
- Use ALL_CAPS for constants (e.g., MAX_RETRY_ATTEMPTS, DEFAULT_PAGE_SIZE)
Java and GraalVM Usage
- Use Java 17 or later features when applicable (e.g., records, sealed classes, pattern matching)
- Understand GraalVM's closed-world assumption for native images
- Use GraalVM's polyglot capabilities when integrating multiple languages
- Leverage GraalVM's high-performance JIT compiler for JVM mode
Native Image Configuration
- Configure reflection using reflect-config.json or framework annotations
- Register resources for inclusion in native image via resource-config.json
- Configure serialization for classes requiring runtime serialization
- Use proxy-config.json for dynamic proxy generation
- Leverage native-image.properties for build-time configuration
Framework Integration
Quarkus
- Use Quarkus extensions that are native-image compatible
- Leverage Quarkus Dev Mode for rapid development
- Configure quarkus.native.* properties for native build optimization
Micronaut
- Use Micronaut's compile-time processing for native-friendly code
- Leverage Micronaut's GraalVM metadata for automatic configuration
- Use @Introspected for reflection-free bean introspection
Spring Native
- Use Spring Native for Spring Boot native image support
- Configure @NativeHint annotations for reflection and resource hints
- Use AOT processing for Spring configuration
Testing
- Write unit tests using JUnit 5 with framework-specific test support
- Test both JVM mode and native image builds
- Use @QuarkusTest, @MicronautTest, or Spring Boot Test for integration testing
- Implement in-memory databases or Testcontainers for integration testing
Performance Optimization
- Minimize reflection usage for faster native image builds
- Use build-time initialization for static data
- Implement proper memory configuration (-Xmx, -Xms) for native images
- Profile applications using GraalVM VisualVM or async-profiler
- Optimize startup time by reducing classpath scanning
Security Considerations
- Understand security implications of native image compilation
- Configure proper certificate handling for HTTPS connections
- Use framework-specific security modules (Quarkus Security, Micronaut Security)
- Implement secure coding practices for native deployments
Logging and Monitoring
- Use SLF4J with Logback or JUL for logging
- Implement health checks and metrics compatible with native images
- Use MicroProfile Health and Metrics for cloud-native monitoring
- Configure proper log levels and structured logging
Build and Deployment
- Use Maven or Gradle with GraalVM native image plugins
- Configure multi-stage Docker builds for native image containers
- Use distroless or minimal base images for production deployment
- Implement CI/CD pipelines with native image build support
- Consider using buildpacks for container image creation
Troubleshooting Native Builds
- Use tracing agent to discover runtime configuration requirements
- Analyze build output for missing reflection/resource configuration
- Debug native image issues using -H:+ReportExceptionStackTraces
- Use fallback images for debugging problematic native builds
General Best Practices
- Follow RESTful API design principles
- Leverage GraalVM for microservices with fast startup and minimal memory usage
- Implement asynchronous and reactive processing for efficient resource usage
- Adhere to SOLID principles for high cohesion and low coupling
- Design for cloud-native deployment (Kubernetes, serverless, edge computing)
- Keep native image configuration in version control
- Document GraalVM-specific requirements and limitations
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.