{"id":"26cf1164-d133-465e-9849-17e2679da608","shortId":"zKX5YZ","kind":"skill","title":"111-java-maven-dependencies","tagline":"Use when you need to add or evaluate Maven dependencies that improve code quality — including nullness annotations (JSpecify), static analysis (Error Prone + NullAway), functional programming (VAVR), or architecture testing (ArchUnit) — and want a consultative, question-driven ap","description":"# Add Maven dependencies for improved code quality\n\nAdd essential Maven dependencies that enhance code quality and safety through a consultative, question-driven approach. **This is an interactive SKILL**.\n\n**What is covered in this Skill?**\n\n- JSpecify: (nullness annotations, `provided` scope)\n- Error Prone + NullAway: (enhanced static analysis with compile-time null checking)\n- VAVR: (functional programming with Try/Either and immutable collections)\n- ArchUnit: (architecture rule enforcement, `test` scope)\n\n## Constraints\n\nBefore adding Maven dependencies, ensure the project is in a valid state. Use a consultative, question-driven flow that adds only what the user selects.\n\n- **MANDATORY**: Run `./mvnw validate` or `mvn validate` before any changes\n- **SAFETY**: If validation fails, stop and ask the user to fix issues—do not proceed until resolved\n- **BEFORE ASKING QUESTIONS**: Read the reference to use the exact wording and options from the template. Ask questions one-by-one in strict order (JSpecify → Enhanced Compiler Analysis (conditional) → VAVR → ArchUnit) and add only what the user selects. Use consultative language, present trade-offs, and wait for user responses before implementing\n\n## When to use this skill\n\n- Add Maven dependencies\n- Add JSpecify nullness dependencies\n- Add Error Prone NullAway dependencies\n- Add VAVR functional dependencies\n- Add ArchUnit architecture testing dependencies\n\n## Workflow\n\n1. **Validate project before changes**\n\nRun `./mvnw validate` or `mvn validate` and stop if validation fails.\n\n2. **Read dependency reference and ask guided questions**\n\nRead `references/111-java-maven-dependencies.md` and ask one-by-one in strict order: JSpecify, conditional Enhanced Compiler Analysis, VAVR, and ArchUnit.\n\n3. **Add only selected dependencies**\n\nImplement only the dependencies and scopes chosen by the user, preserving existing pom.xml structure.\n\n4. **Report trade-offs and next checks**\n\nSummarize what was added, why, and any recommended follow-up validations or tooling alignment.\n\n## Reference\n\nFor detailed guidance, examples, and constraints, see [references/111-java-maven-dependencies.md](references/111-java-maven-dependencies.md).","tags":["111","java","maven","dependencies","cursor","rules","jabrena","agent-skills","ai-skills","claude","claude-code","claude-code-skills"],"capabilities":["skill","source-jabrena","skill-111-java-maven-dependencies","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/111-java-maven-dependencies","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,201 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-26T18:53:40.430Z","embedding":null,"createdAt":"2026-04-18T22:01:50.825Z","updatedAt":"2026-04-26T18:53:40.430Z","lastSeenAt":"2026-04-26T18:53:40.430Z","tsv":"'/mvnw':139,250 '1':244 '111':1 '2':260 '3':287 '4':306 'ad':112,317 'add':11,44,51,131,197,222,225,229,234,238,288 'align':328 'analysi':25,89,192,283 'annot':22,81 'ap':43 'approach':67 'architectur':33,105,240 'archunit':35,104,195,239,286 'ask':153,165,180,265,271 'chang':146,248 'check':95,313 'chosen':298 'code':18,49,57 'collect':103 'compil':92,191,282 'compile-tim':91 'condit':193,280 'constraint':110,335 'consult':39,63,125,204 'cover':75 'depend':5,15,46,54,114,224,228,233,237,242,262,291,295 'detail':331 'driven':42,66,128 'enforc':107 'enhanc':56,87,190,281 'ensur':115 'error':26,84,230 'essenti':52 'evalu':13 'exact':173 'exampl':333 'exist':303 'fail':150,259 'fix':157 'flow':129 'follow':323 'follow-up':322 'function':29,97,236 'guid':266 'guidanc':332 'immut':102 'implement':216,292 'improv':17,48 'includ':20 'interact':71 'issu':158 'java':3 'java-maven-depend':2 'jspecifi':23,79,189,226,279 'languag':205 'mandatori':137 'maven':4,14,45,53,113,223 'mvn':142,253 'need':9 'next':312 'null':21,80,94,227 'nullaway':28,86,232 'off':209,310 'one':183,185,273,275 'one-by-on':182,272 'option':176 'order':188,278 'pom.xml':304 'present':206 'preserv':302 'proceed':161 'program':30,98 'project':117,246 'prone':27,85,231 'provid':82 'qualiti':19,50,58 'question':41,65,127,166,181,267 'question-driven':40,64,126 'read':167,261,268 'recommend':321 'refer':169,263,329 'references/111-java-maven-dependencies.md':269,337,338 'report':307 'resolv':163 'respons':214 'rule':106 'run':138,249 'safeti':60,147 'scope':83,109,297 'see':336 'select':136,202,290 'skill':72,78,221 'skill-111-java-maven-dependencies' 'source-jabrena' 'state':122 'static':24,88 'stop':151,256 'strict':187,277 'structur':305 'summar':314 'templat':179 'test':34,108,241 'time':93 'tool':327 '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' 'trade':208,309 'trade-off':207,308 'try/either':100 'use':6,123,171,203,219 'user':135,155,201,213,301 'valid':121,140,143,149,245,251,254,258,325 'vavr':31,96,194,235,284 'wait':211 'want':37 'word':174 'workflow':243","prices":[{"id":"4244a3d5-f965-449f-8e04-f997f107cea0","listingId":"26cf1164-d133-465e-9849-17e2679da608","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:01:50.825Z"}],"sources":[{"listingId":"26cf1164-d133-465e-9849-17e2679da608","source":"github","sourceId":"jabrena/cursor-rules-java/111-java-maven-dependencies","sourceUrl":"https://github.com/jabrena/cursor-rules-java/tree/main/skills/111-java-maven-dependencies","isPrimary":false,"firstSeenAt":"2026-04-18T22:01:50.825Z","lastSeenAt":"2026-04-26T18:53:40.430Z"}],"details":{"listingId":"26cf1164-d133-465e-9849-17e2679da608","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"jabrena","slug":"111-java-maven-dependencies","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-26T13:48:39Z","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":"ccbb801ad42d5078c2168b002f4481c9682b8fcc","skill_md_path":"skills/111-java-maven-dependencies/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/jabrena/cursor-rules-java/tree/main/skills/111-java-maven-dependencies"},"layout":"multi","source":"github","category":"cursor-rules-java","frontmatter":{"name":"111-java-maven-dependencies","license":"Apache-2.0","description":"Use when you need to add or evaluate Maven dependencies that improve code quality — including nullness annotations (JSpecify), static analysis (Error Prone + NullAway), functional programming (VAVR), or architecture testing (ArchUnit) — and want a consultative, question-driven approach that adds only what you actually need. This should trigger for requests such as Add Maven dependencies; Add JSpecify nullness dependencies; Add Error Prone NullAway dependencies; Add VAVR functional dependencies; Add ArchUnit architecture testing dependencies. Part of cursor-rules-java project"},"skills_sh_url":"https://skills.sh/jabrena/cursor-rules-java/111-java-maven-dependencies"},"updatedAt":"2026-04-26T18:53:40.430Z"}}