Tiger Brokers Java SDK
qusong0627/QuantMind
Reference guides for the Tiger Brokers OpenAPI Java SDK: setup, market data, stock, futures and options trading, real-time push, account queries and strategy examples.
Develop Dominion addon plugins using the DominionAPI. An agent skill from LunaDeerMC/Dominion.
$ npx skills add LunaDeerMC/Dominion --skill dominion-addon-dev -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install LunaDeerMC/Dominion dominion-addon-dev --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/LunaDeerMC/Dominion.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/dominion-addon-dev .claude/skills/dominion-addon-dev && 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 "dominion-addon-dev" agent skill from https://github.com/LunaDeerMC/Dominion/tree/master/.github/skills/dominion-addon-dev into .claude/skills/dominion-addon-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dominion-addon-dev", 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/LunaDeerMC/Dominion/tree/master/.github/skills/dominion-addon-devType 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 LunaDeerMC/Dominion --skill dominion-addon-dev -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install LunaDeerMC/Dominion dominion-addon-dev --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LunaDeerMC/Dominion.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.github/skills/dominion-addon-dev .agents/skills/dominion-addon-dev && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "dominion-addon-dev" agent skill from https://github.com/LunaDeerMC/Dominion/tree/master/.github/skills/dominion-addon-dev into .agents/skills/dominion-addon-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dominion-addon-dev", 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 LunaDeerMC/Dominion --skill dominion-addon-dev -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install LunaDeerMC/Dominion dominion-addon-dev --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LunaDeerMC/Dominion.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.github/skills/dominion-addon-dev .cursor/skills/dominion-addon-dev && 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 "dominion-addon-dev" agent skill from https://github.com/LunaDeerMC/Dominion/tree/master/.github/skills/dominion-addon-dev into .cursor/skills/dominion-addon-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dominion-addon-dev", 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/LunaDeerMC/Dominion.git --path .github/skills/dominion-addon-dev--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 LunaDeerMC/Dominion --skill dominion-addon-dev -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install LunaDeerMC/Dominion dominion-addon-dev --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LunaDeerMC/Dominion.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.github/skills/dominion-addon-dev .gemini/skills/dominion-addon-dev && 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 "dominion-addon-dev" agent skill from https://github.com/LunaDeerMC/Dominion/tree/master/.github/skills/dominion-addon-dev into .gemini/skills/dominion-addon-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dominion-addon-dev", 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 LunaDeerMC/Dominion dominion-addon-devInstalls 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 LunaDeerMC/Dominion --skill dominion-addon-dev -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/LunaDeerMC/Dominion.git skills-src && mkdir -p .github/skills && cp -r skills-src/.github/skills/dominion-addon-dev .github/skills/dominion-addon-dev && 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 "dominion-addon-dev" agent skill from https://github.com/LunaDeerMC/Dominion/tree/master/.github/skills/dominion-addon-dev into .github/skills/dominion-addon-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dominion-addon-dev", 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 LunaDeerMC/Dominion --skill dominion-addon-dev -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install LunaDeerMC/Dominion dominion-addon-dev --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/LunaDeerMC/Dominion.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.github/skills/dominion-addon-dev .opencode/skills/dominion-addon-dev && 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 "dominion-addon-dev" agent skill from https://github.com/LunaDeerMC/Dominion/tree/master/.github/skills/dominion-addon-dev into .opencode/skills/dominion-addon-dev/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "dominion-addon-dev", 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.
dominion-addon-devDevelop Dominion addon plugins using the DominionAPI. An agent skill from LunaDeerMC/Dominion.
Dominion Addon Dev is an agent skill from LunaDeerMC/Dominion. Develop Dominion addon plugins using the DominionAPI. Use when creating new Dominion addon plugins, writing code that interacts with the Dominion land-claim system, listening to Dominion events, operating on dominion/group/member data via Providers, registering custom flags, or checking privilege/environment flags within dominions. Also use when setting up Gradle/Maven build files for DominionAPI dependency, creating plugin.yml for Dominion addons, or debugging Dominion API integration issues.
Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/dominion-api-reference.md`). Compatibility notes: ["DominionProtect"]
It sits in Backend & APIs, covering Third-party API integration. It works with Gradle. The repository describes itself as: Dominion is a completely open-source, free, future-proof, territory anti-grief plugin developed specifically for high-versions minecraft server. The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit b80ace4. 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 java, kotlin, groovy, xml and yaml).
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:
oss.sonatype.orgrepo.papermc.iojitpack.ioAlso links to:
lunadeermc.github.iogithub.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
["DominionProtect"]
From compatibility in the SKILL.md frontmatter.
Dominion Addon Dev loads about 2.6k tokens when it runs, and up to ~7.6k if it reads all its reference files. Until then it costs about 129 tokens; SKILL.md has 432 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 LunaDeerMC/Dominion at commit b80ace4, republished under its MIT licence (© LunaDeerMC). 432 words, ~2,580 tokens.
.claude/skills/dominion-addon-dev/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.You are an expert developer for Dominion addon plugins (Minecraft Paper/Spigot). Dominion is a land-claim protection plugin; addons extend it using the DominionAPI.
references/dominion-api-reference.md for complete API details.repositories {
mavenLocal()
mavenCentral()
maven("https://oss.sonatype.org/content/groups/public")
maven("https://repo.papermc.io/repository/maven-public/")
maven("https://jitpack.io")
}
dependencies {
compileOnly("io.papermc.paper:paper-api:1.20.1-R0.1-SNAPSHOT")
compileOnly("cn.lunadeer:DominionAPI:4.7.3")
}dependencies {
compileOnly 'cn.lunadeer:DominionAPI:4.7.3'
}<dependency>
<groupId>cn.lunadeer</groupId>
<artifactId>DominionAPI</artifactId>
<version>4.7.3</version>
<scope>provided</scope>
</dependency>The addon's plugin.yml MUST include Dominion in the depend list:
name: YourAddonPlugin
version: '1.0.0'
main: com.example.yourplugin.YourPlugin
api-version: '1.20'
depend:
- DominionSet folia-supported: true if your addon supports Folia.
Always obtain DominionAPI in onEnable() after verifying the Dominion plugin is loaded:
import cn.lunadeer.dominion.api.DominionAPI;
public final class YourPlugin extends JavaPlugin {
private DominionAPI dominionAPI;
@Override
public void onEnable() {
if (Bukkit.getPluginManager().isPluginEnabled("Dominion")) {
dominionAPI = DominionAPI.getInstance();
getLogger().info("DominionAPI loaded successfully");
} else {
throw new IllegalStateException("Dominion plugin is not enabled.");
}
getServer().getPluginManager().registerEvents(this, this);
}
}Use DominionAPI methods for all read operations — they read from cache and are safe on any thread.
// Get dominion at a location
DominionDTO dom = dominionAPI.getDominion(player.getLocation());
// Get dominion by name or ID
DominionDTO dom = dominionAPI.getDominion("myDominion");
DominionDTO dom = dominionAPI.getDominion(42);
// Get player's current dominion
DominionDTO current = dominionAPI.getPlayerCurrentDominion(player);
// Get all dominions owned by a player
List<DominionDTO> owned = dominionAPI.getAllDominionsOfPlayer(player.getUniqueId());
// Get player info
PlayerDTO playerDTO = dominionAPI.getPlayer(player.getUniqueId());
// Get member in a dominion
MemberDTO member = dominionAPI.getMember(dom, player);
// Get group of a member
GroupDTO group = dominionAPI.getGroup(member);// Check privilege flag (with player notification on denial)
boolean canBuild = dominionAPI.checkPrivilegeFlag(location, priFlag, player);
// Check privilege flag silently (no notification)
boolean canBuild = dominionAPI.checkPrivilegeFlagSilence(location, priFlag, player);
// Check environment flag
boolean hasFire = dominionAPI.checkEnvironmentFlag(location, envFlag);Important (since 4.5.0): Always prefer the Location-based overloads over DominionDTO-based overloads. The Location-based methods also check world-wide flags.
All data modifications MUST go through Providers to ensure consistency and trigger events.
Provider methods are asynchronous and return CompletableFuture.
The operator parameter controls permission checks:
Player to enforce permission checksBukkit.getConsoleSender() to bypass permission checks (console-level access)// DominionProvider — create, delete, rename, resize, transfer dominions
DominionProvider domProvider = dominionAPI.getDominionProvider();
CompletableFuture<DominionDTO> future = domProvider.createDominion(
Bukkit.getConsoleSender(), // operator
"newDominion", // name
playerUUID, // owner
world, // world
new CuboidDTO(x1,y1,z1, x2,y2,z2), // boundaries
null, // parent (null = top-level)
false // skipEconomy
);
DominionDTO created = future.get(); // null means failure
// GroupProvider — create, delete, rename groups; manage group members and flags
GroupProvider groupProvider = dominionAPI.getGroupProvider();
// MemberProvider — add, remove members; set member flags
MemberProvider memberProvider = dominionAPI.getMemberProvider();Register listeners the standard Bukkit way. All events extend CallableEvent.
import cn.lunadeer.dominion.events.dominion.DominionCreateEvent;
import cn.lunadeer.dominion.events.member.MemberAddedEvent;
public class MyListener implements Listener {
@EventHandler
public void onDominionCreate(DominionCreateEvent event) {
if (event.isCancelled()) return;
// React to dominion creation
}
@EventHandler
public void onMemberAdded(MemberAddedEvent event) {
if (event.isCancelled()) return;
// Use callback to get the result after data is processed
event.afterAdded(memberDTO -> {
if (memberDTO == null) return; // addition failed
DominionDTO dominion = event.getDominion();
Player player = Bukkit.getPlayer(memberDTO.getPlayerUUID());
if (player != null) {
player.teleportAsync(dominion.getTpLocation());
}
});
}
}Key event categories:
| Package | Events |
|---|---|
cn.lunadeer.dominion.events | PlayerMoveInDominionEvent, PlayerMoveOutDominionEvent, PlayerCrossDominionBorderEvent, FlagRegisterEvent |
cn.lunadeer.dominion.events.dominion | DominionCreateEvent, DominionDeleteEvent |
cn.lunadeer.dominion.events.dominion.modify | DominionRenameEvent, DominionSizeChangeEvent, DominionSetEnvFlagEvent, DominionSetGuestFlagEvent, DominionSetMapColorEvent, DominionSetMessageEvent, DominionSetTpLocationEvent, DominionTransferEvent |
cn.lunadeer.dominion.events.group | GroupCreateEvent, GroupDeleteEvent, GroupRenamedEvent, GroupSetFlagEvent, GroupAddMemberEvent, GroupRemoveMemberEvent |
cn.lunadeer.dominion.events.member | MemberAddedEvent, MemberRemovedEvent, MemberSetFlagEvent |
Data operation events (like DominionCreateEvent, MemberAddedEvent) process the actual data after all listeners run. Use provided callback methods (e.g., event.afterAdded(...)) to access results.
Two flag types exist:
EnvFlag — environment flags (not player-specific, e.g., weather control)PriFlag — privilege flags (player-specific, e.g., can-build)import cn.lunadeer.dominion.api.dtos.flag.EnvFlag;
import cn.lunadeer.dominion.api.dtos.flag.PriFlag;
import cn.lunadeer.dominion.api.dtos.flag.Flags;
// Define custom flags
public static EnvFlag NO_RAIN = new EnvFlag(
"no_rain", // unique flag_name (no spaces)
"No Rain", // display_name
"Prevents rain in this dominion.", // description
false, // default_value
true, // enabled
Material.SUNFLOWER // CUI material icon
);
public static PriFlag CUSTOM_ACTION = new PriFlag(
"custom_action", // unique flag_name (no spaces)
"Custom Action", // display_name
"Allows custom action in dominion.", // description
false, // default_value
true, // enabled
Material.RED_BED // CUI material icon
);
// Register and apply in onEnable()
Flags.registerEnvFlag(NO_RAIN);
Flags.registerPriFlag(CUSTOM_ACTION);
Flags.applyNewCustomFlags(); // Must call after registration| DTO | Key Methods |
|---|---|
DominionDTO | getId(), getName(), getOwner(), getWorld(), getCuboid(), getTpLocation(), getEnvFlagValue(flag), getGuestFlagValue(flag), getGroups(), getMembers(), getParentDomId(), getJoinMessage(), getLeaveMessage() |
PlayerDTO | getId(), getUuid(), getLastKnownName(), getSkinUrl() |
MemberDTO | getId(), getPlayerUUID(), getDomID(), getGroupId(), getFlagValue(flag), getPlayer() |
GroupDTO | getId(), getDomID(), getNamePlain(), getNameRaw(), getFlagValue(flag), getMembers() |
CuboidDTO | getPos1(), getPos2(), x1()..z2(), xLength(), yLength(), zLength(), getSquare(), getVolume(), contain(...), intersectWith(...) |
compileOnly / provided dependency — never shade it into your jar.Dominion is enabled before calling DominionAPI.getInstance().Location-based flag checks over DominionDTO-based ones (since 4.5.0) to include world-wide flags.CompletableFuture) — handle appropriately.afterAdded) run after actual data processing — use them for post-operation logic.Flags.applyNewCustomFlags() after registering all custom flags.depend: [Dominion] in plugin.yml.© LunaDeerMC, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (references) in .github/skills/dominion-addon-dev of LunaDeerMC/Dominion.
Open the folder on GitHubat commit b80ace4
Dominion Addon Dev 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 |
|---|---|---|---|---|---|---|
| Dominion Addon Dev this skillLunaDeerMC/Dominion | 134 | — | ~2.6k | Automated safety check: Pass | MIT | |
| Tiger Brokers Java SDKqusong0627/QuantMind | 1.7k | — | ~1.2k | Automated safety check: Pass | Apache-2.0 | |
| ToolJet Marketplace Plugin BuilderToolJet/ToolJet | 41k | — | ~2.1k | Automated safety check: Pass | AGPL-3.0 | |
| WxJava API Contributorbinarywang/WxJava | 33k | — | ~154 | Automated safety check: Pass | Apache-2.0 | |
| fp-go HTTP Client PatternsIBM/fp-go | 2k | — | ~4.4k | Automated safety check: Pass | Apache-2.0 | |
| Read The Damn DocsBuilderIO/skills | 4.5k | — | ~1.8k | Automated safety check: Pass | MIT |
qusong0627/QuantMind
Reference guides for the Tiger Brokers OpenAPI Java SDK: setup, market data, stock, futures and options trading, real-time push, account queries and strategy examples.
ToolJet/ToolJet
Turns an API description, such as an OpenAPI file or a Postman collection, into a connector plugin for ToolJet's marketplace and checks it with the repo's validator.
binarywang/WxJava
Steps for adding or maintaining a WeChat official API in the WxJava SDK, following its Maven multi-module layout, Java 8 compatibility and TestNG test conventions.
IBM/fp-go
Shows how to build composable, context-aware HTTP pipelines in Go using fp-go's ReaderIOResult monad instead of raw net/http calls.
BuilderIO/skills
A skill your agent uses when implementing, integrating, upgrading, debugging, or answering anything involving third-party APIs, libraries, frameworks, CLIs, cloud services, model/provider SDKs…
Aiko-IT-Systems/DisCatSharp
Helps build, explain and troubleshoot C# Discord apps on DisCatSharp, answering from the project's installed version and the library's documentation rather than guesses.
Works with
Categories
Develop Dominion addon plugins using the DominionAPI. An agent skill from LunaDeerMC/Dominion. Dominion Addon Dev is an agent skill from LunaDeerMC/Dominion. Develop Dominion addon plugins using the DominionAPI.
Dominion Addon Dev fits situations like: creating new Dominion addon plugins; writing code that interacts with the Dominion land-claim system; listening to Dominion events; operating on dominion/group/member data via Providers.
Run `npx skills add LunaDeerMC/Dominion --skill dominion-addon-dev -a claude-code`. Or copy the skill folder (.github/skills/dominion-addon-dev in LunaDeerMC/Dominion) into .claude/skills/dominion-addon-dev in your project. Claude Code loads it when a task matches its description.
Run `npx skills add LunaDeerMC/Dominion --skill dominion-addon-dev -a codex`. Or copy the skill folder (.github/skills/dominion-addon-dev in LunaDeerMC/Dominion) into .agents/skills/dominion-addon-dev 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 LunaDeerMC/Dominion --skill dominion-addon-dev -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/dominion-addon-dev, .gemini/skills/dominion-addon-dev, .github/skills/dominion-addon-dev and .opencode/skills/dominion-addon-dev in your project.
SKILL.md names no scripts, command-line tools or credentials: Dominion Addon Dev is instructions for the agent only. Compatibility (from SKILL.md): ["DominionProtect"].
SKILL.md names 5 domains. In commands or code: oss.sonatype.org, repo.papermc.io and jitpack.io; the agent is likely to contact these when it follows the instructions. As links in the text: lunadeermc.github.io and github.com. 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.
Dominion Addon Dev is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.6k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 5k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Dominion Addon Dev: Tiger Brokers Java SDK (qusong0627/QuantMind, 1.7k stars), ToolJet Marketplace Plugin Builder (ToolJet/ToolJet, 41k stars), WxJava API Contributor (binarywang/WxJava, 33k stars) and fp-go HTTP Client Patterns (IBM/fp-go, 2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
LunaDeerMC (a GitHub organization) maintains it in LunaDeerMC/Dominion, which has 134 GitHub stars. The repository was last updated on October 8, 2026.
Source: LunaDeerMC/Dominion on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.