{"id":"9b13ec06-4e36-48f9-a6ad-b04453f9d1fb","shortId":"RWmMLs","kind":"skill","title":"502-frameworks-micronaut-rest","tagline":"Use when you need to design, review, or improve REST APIs with Micronaut — including @Controller routes, HTTP status codes, DTOs, Bean Validation, exception handlers, pagination, idempotency, ETag/If-Match, caching headers, versioning, contract-first OpenAPI (OpenAPI Generator), ","description":"# Micronaut REST API Guidelines\n\nApply REST design principles for Micronaut HTTP applications.\n\n**What is covered in this Skill?**\n\n- Semantic HTTP with @Get/@Post/@Put/@Patch/@Delete and HttpResponse status control\n- Resource-oriented paths and stable DTO contracts\n- @Valid on request bodies with Bean Validation\n- Centralized error mapping (ExceptionHandler / problem JSON when applicable)\n- Pagination with Pageable and bounded sizes\n- OpenAPI contract file (API-first) and OpenAPI Generator for server stubs\n- Security annotations (@Secured) on sensitive routes\n- Idempotency-Key for retried writes\n- ETag / If-Match for optimistic concurrency\n- Cache-Control discipline\n- API versioning patterns\n- ISO-8601 time types in DTOs\n\n**Scope:** Apply recommendations based on the reference rules and good/bad code examples.\n\n## Constraints\n\nCompile before REST refactors; verify after.\n\n- **MANDATORY**: Run `./mvnw compile` or `mvn compile` before applying any change\n- **SAFETY**: If compilation fails, stop immediately\n- **VERIFY**: Run `./mvnw clean verify` or `mvn clean verify` after applying improvements\n- **BEFORE APPLYING**: Read the reference for detailed rules and examples\n- **EDGE CASE**: If request scope is ambiguous, stop and ask a clarifying question before applying changes\n- **EDGE CASE**: If required inputs, files, or tooling are missing, report what is missing and ask whether to proceed with setup guidance\n\n## When to use this skill\n\n- Review or improve Micronaut @Controller REST APIs\n- Add validation, error handling, or align controllers with the OpenAPI contract on Micronaut HTTP layer\n\n## Workflow\n\n1. **Read reference and assess project context**\n\nRead `references/502-frameworks-micronaut-rest.md` and inspect the current project setup before proposing changes.\n\n2. **Gather scope and decide target improvements**\n\nIdentify requested outcomes, constraints, and the minimum safe set of changes to apply.\n\n3. **Apply framework-aligned changes**\n\nImplement or refactor configuration/code following the reference patterns and project conventions.\n\n4. **Run verification and report results**\n\nExecute appropriate build/tests and summarize what changed, what was verified, and any follow-up actions.\n\n## Reference\n\nFor detailed guidance, examples, and constraints, see [references/502-frameworks-micronaut-rest.md](references/502-frameworks-micronaut-rest.md).","tags":["502","frameworks","micronaut","rest","cursor","rules","java","jabrena","agent-skills","ai-skills","claude","claude-code"],"capabilities":["skill","source-jabrena","skill-502-frameworks-micronaut-rest","topic-agent-skills","topic-ai-skills","topic-claude","topic-claude-code","topic-claude-code-skills","topic-claude-code-subagents","topic-claude-skills","topic-cursor-agent","topic-cursor-ai","topic-cursor-skills","topic-cursorai","topic-github-copilot"],"categories":["cursor-rules-java"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/jabrena/cursor-rules-java/502-frameworks-micronaut-rest","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add jabrena/cursor-rules-java","source_repo":"https://github.com/jabrena/cursor-rules-java","install_from":"skills.sh"}},"qualityScore":"0.631","qualityRationale":"deterministic score 0.63 from registry signals: · indexed on github topic:agent-skills · 362 github stars · SKILL.md body (2,386 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-26T12:53:38.657Z","embedding":null,"createdAt":"2026-04-18T22:02:24.864Z","updatedAt":"2026-04-26T12:53:38.657Z","lastSeenAt":"2026-04-26T12:53:38.657Z","tsv":"'-8601':140 '/mvnw':166,183 '1':269 '2':287 '3':307 '4':324 '502':1 'action':345 'add':253 'align':258,311 'ambigu':209 'annot':114 'api':16,44,105,136,252 'api-first':104 'appli':46,146,172,191,194,217,306,308 'applic':53,94 'appropri':331 'ask':212,234 'assess':273 'base':148 'bean':26,85 'bodi':83 'bound':99 'build/tests':332 'cach':33,133 'cache-control':132 'case':204,220 'central':87 'chang':174,218,286,304,312,336 'clarifi':214 'clean':184,188 'code':24,155 'compil':158,167,170,177 'concurr':131 'configuration/code':316 'constraint':157,297,352 'context':275 'contract':37,79,102,263 'contract-first':36 'control':20,71,134,250,259 'convent':323 'cover':56 'current':281 'decid':291 'delet':67 'design':11,48 'detail':199,348 'disciplin':135 'dto':78 'dtos':25,144 'edg':203,219 'error':88,255 'etag':125 'etag/if-match':32 'exampl':156,202,350 'except':28 'exceptionhandl':90 'execut':330 'fail':178 'file':103,224 'first':38,106 'follow':317,343 'follow-up':342 'framework':3,310 'framework-align':309 'frameworks-micronaut-rest':2 'gather':288 'generat':41,109 'get':63 'good/bad':154 'guidanc':240,349 'guidelin':45 'handl':256 'handler':29 'header':34 'http':22,52,61,266 'httprespons':69 'idempot':31,120 'idempotency-key':119 'identifi':294 'if-match':126 'immedi':180 'implement':313 'improv':14,192,248,293 'includ':19 'input':223 'inspect':279 'iso':139 'json':92 'key':121 'layer':267 'mandatori':164 'map':89 'match':128 'micronaut':4,18,42,51,249,265 'minimum':300 'miss':228,232 'mvn':169,187 'need':9 'openapi':39,40,101,108,262 'optimist':130 'orient':74 'outcom':296 'pageabl':97 'pagin':30,95 'patch':66 'path':75 'pattern':138,320 'post':64 'principl':49 'problem':91 'proceed':237 'project':274,282,322 'propos':285 'put':65 'question':215 'read':195,270,276 'recommend':147 'refactor':161,315 'refer':151,197,271,319,346 'references/502-frameworks-micronaut-rest.md':277,354,355 'report':229,328 'request':82,206,295 'requir':222 'resourc':73 'resource-ori':72 'rest':5,15,43,47,160,251 'result':329 'retri':123 'review':12,246 'rout':21,118 'rule':152,200 'run':165,182,325 'safe':301 'safeti':175 'scope':145,207,289 'secur':113,115 'see':353 'semant':60 'sensit':117 'server':111 'set':302 'setup':239,283 'size':100 'skill':59,245 'skill-502-frameworks-micronaut-rest' 'source-jabrena' 'stabl':77 'status':23,70 'stop':179,210 'stub':112 'summar':334 'target':292 'time':141 'tool':226 'topic-agent-skills' 'topic-ai-skills' 'topic-claude' 'topic-claude-code' 'topic-claude-code-skills' 'topic-claude-code-subagents' 'topic-claude-skills' 'topic-cursor-agent' 'topic-cursor-ai' 'topic-cursor-skills' 'topic-cursorai' 'topic-github-copilot' 'type':142 'use':6,243 'valid':27,80,86,254 'verif':326 'verifi':162,181,185,189,339 'version':35,137 'whether':235 'workflow':268 'write':124","prices":[{"id":"766aa632-4cdc-49b7-a553-60c2e5bba81a","listingId":"9b13ec06-4e36-48f9-a6ad-b04453f9d1fb","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"jabrena","category":"cursor-rules-java","install_from":"skills.sh"},"createdAt":"2026-04-18T22:02:24.864Z"}],"sources":[{"listingId":"9b13ec06-4e36-48f9-a6ad-b04453f9d1fb","source":"github","sourceId":"jabrena/cursor-rules-java/502-frameworks-micronaut-rest","sourceUrl":"https://github.com/jabrena/cursor-rules-java/tree/main/skills/502-frameworks-micronaut-rest","isPrimary":false,"firstSeenAt":"2026-04-18T22:02:24.864Z","lastSeenAt":"2026-04-26T12:53:38.657Z"}],"details":{"listingId":"9b13ec06-4e36-48f9-a6ad-b04453f9d1fb","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"jabrena","slug":"502-frameworks-micronaut-rest","github":{"repo":"jabrena/cursor-rules-java","stars":362,"topics":["agent-skills","ai-skills","claude","claude-code","claude-code-skills","claude-code-subagents","claude-skills","cursor-agent","cursor-ai","cursor-skills","cursorai","github-copilot","intellij-idea","java","prompting","system-prompts"],"license":"apache-2.0","html_url":"https://github.com/jabrena/cursor-rules-java","pushed_at":"2026-04-26T12:50:01Z","description":"A curated and opinionated collection of Skills and Agents to be used in modern SDLC workflows for Java Enterprise development with your favorite AI Agent harness.","skill_md_sha":"dd05e47d67036b61d4d440b0e86fb8eb52af1b48","skill_md_path":"skills/502-frameworks-micronaut-rest/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/jabrena/cursor-rules-java/tree/main/skills/502-frameworks-micronaut-rest"},"layout":"multi","source":"github","category":"cursor-rules-java","frontmatter":{"name":"502-frameworks-micronaut-rest","license":"Apache-2.0","description":"Use when you need to design, review, or improve REST APIs with Micronaut — including @Controller routes, HTTP status codes, DTOs, Bean Validation, exception handlers, pagination, idempotency, ETag/If-Match, caching headers, versioning, contract-first OpenAPI (OpenAPI Generator), optional runtime OpenAPI via micronaut-openapi, and security annotations. This should trigger for requests such as Review or improve Micronaut @Controller REST APIs; Add validation, error handling, or align controllers with the OpenAPI contract on Micronaut HTTP layer. Part of cursor-rules-java project"},"skills_sh_url":"https://skills.sh/jabrena/cursor-rules-java/502-frameworks-micronaut-rest"},"updatedAt":"2026-04-26T12:53:38.657Z"}}