Minecraft Essentials Ops
Jahrome907/minecraft-agent-skills
Operate EssentialsX on Minecraft 26.x and 1.21.x servers, including configuration, permissions, economy, kits, warps, homes, and moderation.
Create bundled Rundeck plugins following development standards.
$ npx skills add rundeck/rundeck --skill create-plugin -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install rundeck/rundeck create-plugin --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/rundeck/rundeck.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/create-plugin .claude/skills/create-plugin && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "create-plugin" agent skill from https://github.com/rundeck/rundeck/tree/main/.claude/skills/create-plugin into .claude/skills/create-plugin/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-plugin", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/rundeck/rundeck/tree/main/.claude/skills/create-pluginType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add rundeck/rundeck --skill create-plugin -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install rundeck/rundeck create-plugin --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rundeck/rundeck.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/create-plugin .agents/skills/create-plugin && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "create-plugin" agent skill from https://github.com/rundeck/rundeck/tree/main/.claude/skills/create-plugin into .agents/skills/create-plugin/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-plugin", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add rundeck/rundeck --skill create-plugin -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install rundeck/rundeck create-plugin --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rundeck/rundeck.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/create-plugin .cursor/skills/create-plugin && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "create-plugin" agent skill from https://github.com/rundeck/rundeck/tree/main/.claude/skills/create-plugin into .cursor/skills/create-plugin/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-plugin", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/rundeck/rundeck.git --path .claude/skills/create-plugin--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add rundeck/rundeck --skill create-plugin -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install rundeck/rundeck create-plugin --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rundeck/rundeck.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/create-plugin .gemini/skills/create-plugin && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "create-plugin" agent skill from https://github.com/rundeck/rundeck/tree/main/.claude/skills/create-plugin into .gemini/skills/create-plugin/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-plugin", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install rundeck/rundeck create-pluginInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add rundeck/rundeck --skill create-plugin -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/rundeck/rundeck.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/create-plugin .github/skills/create-plugin && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "create-plugin" agent skill from https://github.com/rundeck/rundeck/tree/main/.claude/skills/create-plugin into .github/skills/create-plugin/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-plugin", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add rundeck/rundeck --skill create-plugin -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install rundeck/rundeck create-plugin --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/rundeck/rundeck.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/create-plugin .opencode/skills/create-plugin && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "create-plugin" agent skill from https://github.com/rundeck/rundeck/tree/main/.claude/skills/create-plugin into .opencode/skills/create-plugin/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-plugin", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
create-pluginCreate bundled Rundeck plugins following development standards.
Create Plugin is an agent skill from rundeck/rundeck. Create bundled Rundeck plugins following development standards. Auto-loads plugin development guidelines, build configuration, and release processes.
Its SKILL.md is about 3.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in DevOps & Cloud, covering Hooks and plugins and Deployment. It works with Gradle. The repository describes itself as: Enable Self-Service Operations: Give specific users access to your existing tools, services, and scripts. The licence is Apache-2.0.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 9c3c82c. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are groovy, yaml, toml, bash and markdown).
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
packagecloud.ioAlso links to:
github.compagerduty.atlassian.netdocs.rundeck.comdocs.gradle.orgaxion-release-plugin.readthedocs.ioFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
PKGCLD_WRITE_TOKENSIGNING_PASSWORDGITHUB_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Create Plugin loads about 3.6k tokens when it runs. Until then it costs about 41 tokens; SKILL.md has 817 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from rundeck/rundeck at commit 9c3c82c, republished under its Apache-2.0 licence (© rundeck). 817 words, ~3,649 tokens.
.claude/skills/create-plugin/SKILL.md (or your agent's skills folder).Automatically read:
.claude/docs/plugin-development.md - Complete plugin guide.claude/docs/development-guidelines.md - Code standards (@CompileStatic, Git, etc.).claude/docs/testing-guidelines.md - Plugin testing requirementsDetermine:
1. Plugin Type
2. Service Name
Use appropriate service name from ServiceNameConstants:
WorkflowStep - "WorkflowStep"WorkflowNodeStep - "WorkflowNodeStep" NodeExecutor - "NodeExecutor"ResourceModelSource - "ResourceModelSource"Notification - "Notification"LogFilter - "LogFilterPlugin"StorageConverter - "StorageConverter"3. Plugin Properties
Basic Plugin build.gradle:
plugins {
id 'groovy'
id 'java-library'
}
// Apply shared plugin configuration
apply from: "${rootProject.projectDir}/gradle/java-plugin.gradle"
group = 'com.rundeck.plugins'
version = '1.0.0'
dependencies {
// Rundeck core dependencies
compileOnly "org.rundeck:rundeck-core:${rundeckVersion}"
// Plugin-specific dependencies (use version properties from gradle.properties)
implementation "com.example:library:${exampleLibraryVersion}"
// Testing
testImplementation "org.spockframework:spock-core:${spockVersion}"
}
jar {
manifest {
attributes(
'Rundeck-Plugin-Version': '1.2',
'Rundeck-Plugin-Archive': 'true',
'Rundeck-Plugin-Classnames': 'com.example.MyPlugin',
'Rundeck-Plugin-Name': 'my-plugin',
'Rundeck-Plugin-Description': 'My awesome plugin'
)
}
}
// Copy plugin jar to output directory
task copyToLib(type: Copy) {
from jar
into "${rootProject.projectDir}/rundeckapp/src/main/resources/WEB-INF/rundeck/plugins"
}
build.finalizedBy copyToLibGradle Version Catalog:
# gradle/libs.versions.toml
[versions]
rundeck = "5.4.0"
aws-sdk = "1.12.572"
spock = "2.3-groovy-3.0"
[libraries]
rundeck-core = { module = "org.rundeck:rundeck-core", version.ref = "rundeck" }
aws-s3 = { module = "com.amazonaws:aws-java-sdk-s3", version.ref = "aws-sdk" }
spock-core = { module = "org.spockframework:spock-core", version.ref = "spock" }Annotate with @Plugin:
import com.dtolabs.rundeck.plugins.descriptions.Plugin
import com.dtolabs.rundeck.plugins.descriptions.PluginDescription
import com.dtolabs.rundeck.plugins.descriptions.PluginProperty
import com.dtolabs.rundeck.core.plugins.configuration.PropertyScope
@Plugin(name = "my-plugin", service = "WorkflowStep")
@PluginDescription(title = "My Plugin", description = "Does awesome things")
class MyPlugin implements StepPlugin {
@PluginProperty(
title = "API Key",
description = "Your API key",
required = true,
scope = PropertyScope.Instance
)
String apiKey
@PluginProperty(
title = "Timeout",
description = "Request timeout in seconds",
defaultValue = "30"
)
Integer timeout
@Override
void executeStep(PluginStepContext context, Map<String, Object> configuration) {
// Plugin implementation
def result = doWork(apiKey, timeout)
context.getLogger().log(2, "Result: ${result}")
}
}Common Annotations:
// Basic plugin definition
@Plugin(name = "plugin-name", service = "ServiceName")
// Description
@PluginDescription(title = "Display Title", description = "What it does")
// Properties
@PluginProperty(
title = "Property Title",
description = "What this property does",
required = false,
defaultValue = "default",
scope = PropertyScope.Instance
)
// Rendering options (UI)
@RenderingOptions({
@RenderingOption(key = "displayType", value = "PASSWORD"),
@RenderingOption(key = "selectionAccessor", value = "STORAGE_PATH")
})
// Select values
@SelectValues(values = ["option1", "option2", "option3"])scope — always set it explicitly: PropertyScope.Instance resolves the job/step value first, then falls back to Project, then Framework/System config. If scope is left unset, the effective default depends on the plugin type — Workflow Step / Workflow Node Step plugins (the common script-plugin case) default to PropertyScope.InstanceOnly, which resolves only the per-job value and silently ignores any Project- or System-level configuration for that property, with no error or warning. Other plugin types (Script Node Executor/File Copier, notification, resource model source, etc.) default to PropertyScope.Instance. Because this default is inconsistent and undocumented at the framework level, always declare scope = PropertyScope.Instance explicitly for any property that should be configurable above the individual job/step level — do not rely on the default. See RUN-4800 for details.
Test plugin properties:
class MyPluginSpec extends Specification {
def "should have correct plugin annotations"() {
given:
def plugin = MyPlugin.class.getAnnotation(Plugin)
expect:
plugin.name() == "my-plugin"
plugin.service() == "WorkflowStep"
}
def "should have required properties"() {
given:
def fields = MyPlugin.declaredFields
def apiKeyField = fields.find { it.name == "apiKey" }
def property = apiKeyField.getAnnotation(PluginProperty)
expect:
property.required() == true
property.title() == "API Key"
}
def "should execute successfully with valid config"() {
given:
def plugin = new MyPlugin()
def context = Mock(PluginStepContext)
def config = [apiKey: "test-key", timeout: 30]
when:
plugin.executeStep(context, config)
then:
notThrown(Exception)
1 * context.getLogger() >> Mock(PluginLogger)
}
}# Build plugin
./gradlew :plugins:my-plugin:build
# Run tests
./gradlew :plugins:my-plugin:test
# Copy to rundeck plugins directory
./gradlew :plugins:my-plugin:copyToLib
# Check plugin was copied
ls rundeckapp/src/main/resources/WEB-INF/rundeck/plugins/README.md following Howto CLI conventions:
# My Plugin
Description of what the plugin does
## How to Build
\`\`\`bash
./gradlew build
\`\`\`
## How to Test
\`\`\`bash
./gradlew test
\`\`\`
## How to Install
\`\`\`bash
cp build/libs/my-plugin-1.0.0.jar $RDECK_BASE/libext/
\`\`\`
## How to Use
1. Create a job
2. Add "My Plugin" step
3. Configure API Key
4. Run the job
## Configuration
| Property | Required | Default | Description |
|----------|----------|---------|-------------|
| API Key | Yes | - | Your API key |
| Timeout | No | 30 | Timeout in seconds |GitHub Actions: ./github/workflows/build.yml
name: Build
on: [push]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
- name: Build with Gradle
run: ./gradlew build
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: plugin-jar
path: build/libs/*.jarRelease Workflow: .github/workflows/release.yml
name: Release
on:
push:
tags:
- 'v*'
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: '17'
- name: Build with Gradle
run: ./gradlew build
- name: Create Release
run: |
gh release create \
--generate-notes \
--title 'Release ${{ github.ref_name }}' \
${{ github.ref_name }} \
build/libs/*.jar
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}PackageCloud (Preferred over JitPack; replaces Maven Central for rundeck-plugins — see RUN-4570):
Requirements:
maven publishing repository pointing at
https://packagecloud.io/pagerduty/rundeck-plugins/maven2 (Bearer token auth via PKGCLD_WRITE_TOKEN) —
do not apply nexusPublish/nexusPublishingwithJavadocJar() and withSourcesJar()gpg CLI (not Gradle's signing plugin) and upload the .asc via curl —
PackageCloud rejects Gradle's auto-generated checksum-of-signature filePKGCLD_WRITE_TOKEN, SIGNING_KEY_B64, SIGNING_PASSWORD) and the
PKGCLD_REPO_URL org variableSee: .claude/docs/plugin-development.md and the migrate-plugin-to-packagecloud skill for complete
publishing setup
Before considering plugin complete:
Plugin Design:
Build Configuration:
Plugin Implementation:
Testing:
./gradlew test)./gradlew build)Documentation:
Repository Setup (if standalone repo):
Publishing (if standalone, open source):
Real-world plugin examples:
❌ Don't:
✅ Do:
| Type | Service Name | Interface | Use Case |
|---|---|---|---|
| Workflow Step | WorkflowStep | StepPlugin | Job step in workflow |
| Node Step | WorkflowNodeStep | NodeStepPlugin | Step on specific nodes |
| Resource Model | ResourceModelSource | ResourceModelSource | Node source provider |
| Notification | Notification | NotificationPlugin | Job notifications |
| Log Filter | LogFilterPlugin | LogFilterPlugin | Process log output |
| Node Executor | NodeExecutor | NodeExecutor | Execute commands on nodes |
| File Copier | FileCopier | FileCopier | Copy files to nodes |
| Storage | StorageConverter | StorageConverter | Storage backend |
.claude/docs/plugin-development.md - Complete plugin development guide.claude/docs/development-guidelines.md - Code standards© rundeck, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/create-plugin of rundeck/rundeck.
Open the folder on GitHubat commit 9c3c82c
Create Plugin next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Create Plugin this skillrundeck/rundeck | 6.3k | — | ~3.6k | Automated safety check: Pass | Apache-2.0 | |
| Minecraft Essentials OpsJahrome907/minecraft-agent-skills | 166 | — | ~2.2k | Automated safety check: Pass | MIT | |
| ReleaseMadAppGang/claude-code | 284 | — | ~1.2k | Automated safety check: Pass | MIT | |
| Kubeshark Installerkubeshark/kubeshark | 12k | — | ~3.6k | Automated safety check: Notes | Apache-2.0 | |
| GreptimeDB Dev Docker ImageGreptimeTeam/greptimedb | 6.7k | — | ~4k | Automated safety check: Notes | Apache-2.0 | |
| KubeSphere ServiceMesh Managerkubesphere/kubesphere | 17k | — | ~2.4k | Automated safety check: Pass | Custom licence |
Jahrome907/minecraft-agent-skills
Operate EssentialsX on Minecraft 26.x and 1.21.x servers, including configuration, permissions, economy, kits, warps, homes, and moderation.
MadAppGang/claude-code
Plugin release process for MAG Claude Plugins marketplace. An agent skill from MadAppGang/claude-code.
kubeshark/kubeshark
Installs and configures Kubeshark on a Kubernetes cluster, choosing between the quick CLI path and a Helm install with custom values.
GreptimeTeam/greptimedb
Packages a locally built GreptimeDB debug binary into a development-only Docker image for local-cluster testing, with an optional push to a dev registry.
kubesphere/kubesphere
Installs, checks and troubleshoots the KubeSphere ServiceMesh extension (Istio, Kiali, Jaeger), including grayscale release, sidecar injection, topology and tracing issues.
remotion-dev/remotion
Set up a Codex monitor for Vercel deployments and preview URLs.
rundeck/rundeck
Backport commits from an existing GitHub Pull Request to a target branch and open a new backport PR.
rundeck/rundeck
Verify if a CVE affects the project and remediate it. An agent skill from rundeck/rundeck.
rundeck/rundeck
Generate standardized CONTEXT.md files for features. An agent skill from rundeck/rundeck.
rundeck/rundeck
Internationalize Vue component templates by replacing all hardcoded strings with $t() calls and adding translations to i18n.ts or enUS.js.
rundeck/rundeck
Guide a new contributor through the rundeck OSS repo. An agent skill from rundeck/rundeck.
rundeck/rundeck
Write Vue component unit tests. An agent skill from rundeck/rundeck.
Works with
Categories
Create bundled Rundeck plugins following development standards. Create Plugin is an agent skill from rundeck/rundeck. Create bundled Rundeck plugins following development standards.
Create Plugin fits situations like: tasks that involve Hooks and plugins; tasks that involve Deployment.
Run `npx skills add rundeck/rundeck --skill create-plugin -a claude-code`. Or copy the skill folder (.claude/skills/create-plugin in rundeck/rundeck) into .claude/skills/create-plugin in your project. Claude Code loads it when a task matches its description.
Run `npx skills add rundeck/rundeck --skill create-plugin -a codex`. Or copy the skill folder (.claude/skills/create-plugin in rundeck/rundeck) into .agents/skills/create-plugin in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add rundeck/rundeck --skill create-plugin -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/create-plugin, .gemini/skills/create-plugin, .github/skills/create-plugin and .opencode/skills/create-plugin in your project.
Going by SKILL.md and its folder, Create Plugin needs credentials named PKGCLD_WRITE_TOKEN, SIGNING_PASSWORD and GITHUB_TOKEN. Our summary lists: A credential in GITHUB_TOKEN; A credential in PKGCLD_WRITE_TOKEN.
SKILL.md names 6 domains. In commands or code: packagecloud.io; the agent is likely to contact it when it follows the instructions. As links in the text: github.com, pagerduty.atlassian.net, docs.rundeck.com, docs.gradle.org and axion-release-plugin.readthedocs.io. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Create Plugin is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.6k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Create Plugin: Minecraft Essentials Ops (Jahrome907/minecraft-agent-skills, 166 stars), Release (MadAppGang/claude-code, 284 stars), Kubeshark Installer (kubeshark/kubeshark, 12k stars) and GreptimeDB Dev Docker Image (GreptimeTeam/greptimedb, 6.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
rundeck (a GitHub organization) maintains it in rundeck/rundeck, which has 6,329 GitHub stars. The repository holds 10 skills in this directory. The repository was last updated on October 8, 2026.
Source: rundeck/rundeck on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.