Thank you for contributing. This guide covers how to add or improve skills, agents, commands, rules, and hooks.
| Plugin | Purpose |
|---|---|
java-core |
General Java skills, architect agent, build-resolver agent, coding standards |
java-spring |
Spring Boot skills, Spring expert agent |
java-quality |
Security, performance, and testing skills + specialist agents |
plugins/<plugin-name>/skills/<skill-name>/SKILL.md
---
description: <verb phrase describing what it does and when to invoke it>. Use when user asks to "<trigger phrase 1>", "<trigger phrase 2>", or "<trigger phrase 3>".
argument-hint: "<EntityName> [optional args]"
allowed-tools: Read, Grep, Glob # only for read-only skills
---- Start with a verb in third person: "Reviews", "Generates", "Analyzes"
- Include 3–5 natural language trigger phrases after "Use when user asks to"
- Keep under 200 characters
- Heading —
# /skill-name — Short Title - Persona line — one sentence describing the role
- Numbered steps — one step per logical phase
- Version-gated blocks — prefix version-specific advice with
(Java X+:)or(Spring Boot X+:) - Next Steps — cross-link to related skills
For skills with large code templates, split them:
SKILL.md— instructions and steps only (keep under 80 lines)references/templates.md— reusable code templates
Reference from SKILL.md: Use the templates in references/templates.md
Always check the detected Java version before making version-specific suggestions. State the minimum required version in brackets: (Java 16+), (Spring Boot 3.x).
plugins/<plugin-name>/rules/<topic>.md
---
globs: ["**/*Controller.java"]
---- Use the most specific glob possible —
**/*Controller.javais better than**/*.java - Rules activate automatically when a file matching the glob is in context
- Focused on one concern (naming, structure, security)
- Include concrete examples (bad → good code pairs where helpful)
- Flag anti-patterns explicitly so Claude knows what to look for
plugins/<plugin-name>/commands/<command-name>.md
---
description: <what the command does, one sentence>
---| Use a command when | Use a skill when |
|---|---|
Explicitly triggered only (/java-core:build) |
Can auto-invoke from context |
| Orchestrates multiple steps or shell commands | Provides passive domain knowledge |
| Produces a structured artifact (report, table) | Guides Claude's behavior inline |
plugins/<plugin-name>/agents/<agent-name>.md
---
description: One-sentence role description
---
# Agent Name
You are a <role>. Your focus is <domain>.
## Expertise
- Area 1
- Area 2
## Behavior
1. ...
2. ...
## Response Format
...Before submitting a PR:
-
Validate — run the validation script:
./scripts/validate-plugins.sh
-
Install locally and test the skill or command:
claude --plugin-dir ./plugins/java-core
-
Check that the skill description triggers correctly — the
descriptionfield controls auto-invocation
Follow Conventional Commits:
feat(java-core): add /java-core:lint command
fix(java-spring): correct entity-conventions glob pattern
docs: add CONTRIBUTING guide
chore: bump versions to v2.3.0
- Skill description starts with a verb and includes trigger phrases
- Version-specific content is gated with
(Java X+:)or(Spring Boot X+:) - Large templates are in
references/templates.md, not inline - Rules use the most specific
globs:pattern possible - Validation script passes
- Tested locally with
claude --plugin-dir