| name | onboard-contributor |
| description | Guide a new contributor through the rundeck OSS repo. Use when someone is getting started with the project, asking how to build/test/contribute, or setting up their development environment. |
Onboard Contributor
Guides new contributors (external or internal) through the rundeck OSS development environment.
When to Use
- New contributor asking how to get started
- Questions about building or running the project
- Questions about how to contribute a plugin, bug fix, or feature
- Setting up a development environment
Process
Phase 1: Environment Check
Check the contributor's environment:
java -version
node -v
./gradlew --version
If Java is wrong: suggest jenv, sdkman, or asdf.
If Node is wrong: suggest nvm use (after checking .nvmrc).
Phase 2: Project Overview
Explain the structure:
rundeck/
├── rundeckapp/ Main Grails application (controllers, services, Vue frontend)
├── core/ Core Java library (plugin interfaces, shared utilities)
├── functional-test/ Selenium and API functional tests
├── grails-webhooks/ Webhooks plugin
└── gradle.properties All dependency versions defined here
Key points:
- Backend: Grails 7 / Spring Boot 3 / Groovy 4 — use
@CompileStatic on all classes
- Frontend: Vue 3 + TypeScript in
rundeckapp/grails-spa/packages/ui-trellis/
- Tests: Spock for backend, Jest for frontend, Selenium for E2E
- Migrations: Liquibase in
rundeckapp/grails-app/migrations/ — never modify existing ones
Phase 3: First Build
./gradlew build -x check
./gradlew clean && ./gradlew build -x check
Phase 4: Running Tests
./gradlew test
UI=rundeckapp/grails-spa/packages/ui-trellis
npm run --prefix "$UI" ci:test:unit
./gradlew test --tests "com.example.MySpec"
Phase 5: Making a Contribution
For a bug fix:
- Write a failing test that reproduces the bug (Spock for backend, Jest for frontend)
- Fix the bug
- Verify the test now passes
- Run
./gradlew build -x check to verify compilation
For a new plugin:
- Use the
create-plugin skill
For a new API endpoint:
- Use the
create-api-endpoint skill
PR conventions:
- Include tests for all new behavior
- All PRs must pass CI before merge
- See
CONTRIBUTING.md in the repo root for the full contribution guide
Phase 6: Code Standards Summary
| Standard | Rule |
|---|
| Groovy classes | @CompileStatic required (or @GrailsCompileStatic for Grails artifacts) |
| Tests | Spock only — no new JUnit |
| Vue components | Options API default, scoped styles, data-testid in tests |
| DB migrations | Never modify existing — create new ones |
| Strings in Vue | Always use $t() — no hardcoded English |
| OkHttp responses | Must be closed or body consumed |
Checklist