{"id":"4f803bb5-26eb-46f7-be91-23f0ede105b8","shortId":"mUKXEH","kind":"skill","title":"vigilante-issue-implementation-on-java-kotlin","tagline":"Implement a GitHub issue end-to-end when Vigilante dispatches work for a Java or Kotlin repository with JVM build-tool, style, and secure-coding guidance.","description":"# Vigilante Java/Kotlin Issue Implementation\n\n## Focus\n- Read the prompt for detected tech stacks, process hints, and JVM build signals before changing code.\n- Keep changes scoped to the issue and prefer the repository's actual Gradle or Maven workflow over invented commands.\n- In mixed Java/Kotlin repositories, follow the conventions of each touched language instead of forcing one style across the whole repo.\n\n## JVM Tooling Workflow\n- **Build/test validation**: use repository-standard Gradle or Maven tasks for the smallest affected scope first, then broaden only when shared modules or integration boundaries require it. Prefer commands the repo already documents or wires into CI.\n- **Formatting and style**: use the repository's existing formatter or style tooling when present. For Java, this may be Checkstyle, Spotless, or equivalent. For Kotlin, this may be ktlint, detekt formatting, Spotless, or equivalent. Do not introduce a new formatter or broad cleanup just because a tool exists in the ecosystem.\n- **Static analysis**: run repo-standard static analysis when configured, such as SpotBugs, Checkstyle, detekt, ktlint, Error Prone, PMD, or equivalent. If none is configured, rely on the repository's normal build/test path rather than inventing a new lint stack.\n- **Dependencies**: prefer the standard library or existing dependencies when they already cover the need. When adding or updating dependencies, keep Gradle or Maven metadata consistent and preserve any dependency-locking or version-catalog workflow already used by the repo.\n\n## Java/Kotlin Style\n- **Java**: follow standard Java conventions already used by the repository. Keep classes cohesive, prefer explicit names, use checked or unchecked exceptions consistently with local patterns, and avoid unnecessary framework abstraction.\n- **Kotlin**: follow Kotlin coding conventions for naming, file organization, null-safety, and expression-oriented style. Prefer immutable values with `val` unless mutation is required. Use idiomatic scope functions only when they improve clarity.\n- **Documentation**: when touching documented APIs, preserve the repository's documentation style. Use Javadoc or KDoc only where the codebase already expects it or where exported/public API changes need it.\n\n## Security\n- Prefer framework-native secure defaults when the repository uses Spring, Micronaut, Quarkus, or similar JVM frameworks.\n- Avoid insecure deserialization patterns, especially Java native serialization or framework object binding on untrusted input without explicit constraints.\n- Validate untrusted input at boundaries and watch for SSRF, path traversal, template injection, SQL injection, and unsafe reflection or classloading patterns.\n- Use standard JDK/JVM security APIs correctly; avoid rolling custom crypto. Do not store secrets, tokens, or credentials in source files or test fixtures.\n- Preserve dependency-locking, checksum, or version-catalog controls already used by the repository instead of bypassing them during implementation.\n\n## Mixed-Language Repositories\n- A JVM repository may also include JavaScript, TypeScript, Go, or infrastructure code.\n- Scope JVM validation to the touched Gradle/Maven modules or source sets, and use other toolchains only for the files they own.\n- When an issue touches both JVM code and another stack, validate each side with its native tooling instead of treating the JVM toolchain as universal.\n\n## Workflow\n- Follow the base `vigilante-issue-implementation` workflow for issue comments, validation, push, and PR creation.\n- Use `vigilante commit` for all commit-producing operations. Do not use `git commit` or GitHub CLI commit flows directly.\n- Any commit or amend must preserve the user's existing git author, committer, and signing configuration. Commit on behalf of the user and do not overwrite `git config` with a coding-agent identity.\n- Do not add `Co-authored by:` trailers or any other agent attribution for Codex, Claude, Gemini, or similar coding-agent identities.\n- Repository-specific instructions (`AGENTS.md`, `README.md`, CI config, Gradle conventions, Maven wrapper usage) remain authoritative when they are more specific than this generic JVM guidance.","tags":["vigilante","issue","implementation","java","kotlin","aliengiraffe","agent","agent-skills","agentic-ai","agentic-workflow","agents","ai-orchestration"],"capabilities":["skill","source-aliengiraffe","skill-vigilante-issue-implementation-on-java-kotlin","topic-agent","topic-agent-skills","topic-agentic-ai","topic-agentic-workflow","topic-agents","topic-ai-orchestration","topic-ai-orchestrator","topic-orchestration"],"categories":["vigilante"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/aliengiraffe/vigilante/vigilante-issue-implementation-on-java-kotlin","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add aliengiraffe/vigilante","source_repo":"https://github.com/aliengiraffe/vigilante","install_from":"skills.sh"}},"qualityScore":"0.464","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 28 github stars · SKILL.md body (4,211 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-05-01T07:01:24.474Z","embedding":null,"createdAt":"2026-04-18T22:23:15.603Z","updatedAt":"2026-05-01T07:01:24.474Z","lastSeenAt":"2026-05-01T07:01:24.474Z","tsv":"'abstract':300 'across':93 'actual':69 'ad':243 'add':601 'affect':113 'agent':597,610,620 'agents.md':626 'alreadi':131,238,264,276,355,455 'also':474 'amend':568 'analysi':189,195 'anoth':511 'api':340,361,426 'attribut':611 'author':576,604 'authorit':636 'avoid':297,383,428 'base':531 'behalf':583 'bind':394 'boundari':124,405 'broad':178 'broaden':117 'build':29,53 'build-tool':28 'build/test':100,219 'bypass':462 'catalog':262,453 'chang':56,59,362 'check':288 'checkstyl':156,201 'checksum':449 'ci':136,628 'clariti':335 'class':282 'classload':420 'claud':614 'cleanup':179 'cli':561 'co':603 'co-author':602 'code':35,57,304,481,509,596,619 'codebas':354 'codex':613 'coding-ag':595,618 'cohes':283 'command':76,128 'comment':539 'commit':547,551,558,562,566,581 'commit-produc':550 'committ':577 'config':592,629 'configur':197,212,580 'consist':252,292 'constraint':400 'control':454 'convent':83,275,305,631 'correct':427 'cover':239 'creation':544 'credenti':438 'crypto':431 'custom':430 'default':371 'depend':228,235,246,257,447 'dependency-lock':256,446 'deseri':385 'detect':46 'detekt':166,202 'direct':564 'dispatch':18 'document':132,336,339,345 'ecosystem':187 'end':13,15 'end-to-end':12 'equival':159,170,208 'error':204 'especi':387 'except':291 'exist':144,184,234,574 'expect':356 'explicit':285,399 'exported/public':360 'express':315 'expression-ori':314 'file':308,441,500 'first':115 'fixtur':444 'flow':563 'focus':41 'follow':81,272,302,529 'forc':90 'format':137,167 'formatt':145,176 'framework':299,368,382,392 'framework-n':367 'function':330 'gemini':615 'generic':644 'git':557,575,591 'github':10,560 'go':478 'gradl':70,106,248,630 'gradle/maven':488 'guidanc':36,646 'hint':50 'ident':598,621 'idiomat':328 'immut':319 'implement':4,8,40,465,535 'improv':334 'includ':475 'infrastructur':480 'inject':413,415 'input':397,403 'insecur':384 'instead':88,460,520 'instruct':625 'integr':123 'introduc':173 'invent':75,223 'issu':3,11,39,63,505,534,538 'java':6,22,152,271,274,388 'java/kotlin':38,79,269 'javadoc':348 'javascript':476 'jdk/jvm':424 'jvm':27,52,97,381,471,483,508,524,645 'kdoc':350 'keep':58,247,281 'kotlin':7,24,161,301,303 'ktlint':165,203 'languag':87,468 'librari':232 'lint':226 'local':294 'lock':258,448 'maven':72,108,250,632 'may':154,163,473 'metadata':251 'micronaut':377 'mix':78,467 'mixed-languag':466 'modul':121,489 'must':569 'mutat':324 'name':286,307 'nativ':369,389,518 'need':241,363 'new':175,225 'none':210 'normal':218 'null':311 'null-safeti':310 'object':393 'one':91 'oper':553 'organ':309 'orient':316 'overwrit':590 'path':220,410 'pattern':295,386,421 'pmd':206 'pr':543 'prefer':65,127,229,284,318,366 'present':150 'preserv':254,341,445,570 'process':49 'produc':552 'prompt':44 'prone':205 'push':541 'quarkus':378 'rather':221 'read':42 'readme.md':627 'reflect':418 'reli':213 'remain':635 'repo':96,130,192,268 'repo-standard':191 'repositori':25,67,80,104,142,216,280,343,374,459,469,472,623 'repository-specif':622 'repository-standard':103 'requir':125,326 'roll':429 'run':190 'safeti':312 'scope':60,114,329,482 'secret':435 'secur':34,365,370,425 'secure-cod':33 'serial':390 'set':492 'share':120 'side':515 'sign':579 'signal':54 'similar':380,617 'skill' 'skill-vigilante-issue-implementation-on-java-kotlin' 'smallest':112 'sourc':440,491 'source-aliengiraffe' 'specif':624,641 'spotbug':200 'spotless':157,168 'spring':376 'sql':414 'ssrf':409 'stack':48,227,512 'standard':105,193,231,273,423 'static':188,194 'store':434 'style':31,92,139,147,270,317,346 'task':109 'tech':47 'templat':412 'test':443 'token':436 'tool':30,98,148,183,519 'toolchain':496,525 'topic-agent' 'topic-agent-skills' 'topic-agentic-ai' 'topic-agentic-workflow' 'topic-agents' 'topic-ai-orchestration' 'topic-ai-orchestrator' 'topic-orchestration' 'touch':86,338,487,506 'trailer':606 'travers':411 'treat':522 'typescript':477 'uncheck':290 'univers':527 'unless':323 'unnecessari':298 'unsaf':417 'untrust':396,402 'updat':245 'usag':634 'use':102,140,265,277,287,327,347,375,422,456,494,545,556 'user':572,586 'val':322 'valid':101,401,484,513,540 'valu':320 'version':261,452 'version-catalog':260,451 'vigilant':2,17,37,533,546 'vigilante-issue-implement':532 'vigilante-issue-implementation-on-java-kotlin':1 'watch':407 'whole':95 'wire':134 'without':398 'work':19 'workflow':73,99,263,528,536 'wrapper':633","prices":[{"id":"5282ab48-3574-45ac-a5f7-281a394d8d99","listingId":"4f803bb5-26eb-46f7-be91-23f0ede105b8","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"aliengiraffe","category":"vigilante","install_from":"skills.sh"},"createdAt":"2026-04-18T22:23:15.603Z"}],"sources":[{"listingId":"4f803bb5-26eb-46f7-be91-23f0ede105b8","source":"github","sourceId":"aliengiraffe/vigilante/vigilante-issue-implementation-on-java-kotlin","sourceUrl":"https://github.com/aliengiraffe/vigilante/tree/main/skills/vigilante-issue-implementation-on-java-kotlin","isPrimary":false,"firstSeenAt":"2026-04-18T22:23:15.603Z","lastSeenAt":"2026-05-01T07:01:24.474Z"}],"details":{"listingId":"4f803bb5-26eb-46f7-be91-23f0ede105b8","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"aliengiraffe","slug":"vigilante-issue-implementation-on-java-kotlin","github":{"repo":"aliengiraffe/vigilante","stars":28,"topics":["agent","agent-skills","agentic-ai","agentic-workflow","agents","ai","ai-orchestration","ai-orchestrator","orchestration"],"license":"apache-2.0","html_url":"https://github.com/aliengiraffe/vigilante","pushed_at":"2026-04-23T16:58:46Z","description":"Vigilante is a sandbox-first orchestration layer for coding agents. It isolates every task in a git worktree, enforces strict credential scoping, and gives you full audit logs — so your agents can't burn down production.","skill_md_sha":"aa34c56819609143a7393b8b7e215f20663a2ba4","skill_md_path":"skills/vigilante-issue-implementation-on-java-kotlin/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/aliengiraffe/vigilante/tree/main/skills/vigilante-issue-implementation-on-java-kotlin"},"layout":"multi","source":"github","category":"vigilante","frontmatter":{"name":"vigilante-issue-implementation-on-java-kotlin","description":"Implement a GitHub issue end-to-end when Vigilante dispatches work for a Java or Kotlin repository with JVM build-tool, style, and secure-coding guidance."},"skills_sh_url":"https://skills.sh/aliengiraffe/vigilante/vigilante-issue-implementation-on-java-kotlin"},"updatedAt":"2026-05-01T07:01:24.474Z"}}