/SKILL.md
Use this skill for Hyperliquid and dPro workflows: market/account reads, account readiness checks, spot-perp fund transfers, explicitly confirmed live trading, and dPro onchain analytics. Supports spot, perp, and HIP-3 assets with strict symbol matching, explicit market namespaces for trading, account resolution, preflight checks, and post-submit verification.
npx skillsauth add dprolabs/dpro-hyperliquid dpro-hlInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill for Hyperliquid-only workflows backed by the dPro command surface and dPro read-only onchain API.
This skill supports five domains inside one skill:
This file defines the routing policy, execution policy, and safety policy.
Do not duplicate the full command reference here. Use the reference files for full command details:
references/commands.mdreferences/onchain.mdreferences/troubleshooting.mdUse this skill when the user wants to do any of the following on Hyperliquid:
Do not use this skill for:
Always treat the following files as the source of truth:
references/commands.mdUse for:
references/onchain.mdUse for:
references/troubleshooting.mdUse for:
If this file and a reference file ever disagree, follow the reference file for command syntax and protocol details.
Treat any dpro-hl ... string as skill input text.
Do not assume dpro-hl is a PATH binary unless the runtime explicitly exposes it that way.
Normalize all requests into canonical commands before execution.
Accepted user input forms include:
Use runtime invocation first. If unavailable, execute via Node entrypoint:
node --input-type=module -e "
import { runHyperliquidSkill } from './scripts/entry.mjs';
console.log(await runHyperliquidSkill('dpro-hl quote BTC'));
"
This section defines command taxonomy only, not full syntax.
For canonical command forms, flags, and exact argument shapes, always use:
references/commands.mdFamilies:
Route each request into exactly one branch.
Use for:
Examples:
dpro-hl quote BTCdpro-hl book ETH --levels 10dpro-hl candles SOL --interval 1h --last 20dpro-hl markets lsUse for:
Examples:
dpro-hl account lsdpro-hl positionsdpro-hl balances maindpro-hl fills main --limit 20dpro-hl builder-approval mainUse for:
transfer requests between spot and perp bucketsExamples:
dpro-hl transfer 10dpro-hl transfer 25 --to spotdpro-hl transfer 5 --to perp --account mainUse for:
spot order ...perp order ...hip3 order ...approve-builderExamples:
dpro-hl spot order limit buy 10 PURR 0.08dpro-hl perp order market sell 0.01 BTC --slippage 0.5dpro-hl hip3 order limit buy 1 xyz:NVDA 120dpro-hl perp order set-leverage BTC 5 --crossUse for:
dpro-hl onchain ... requestExamples:
dpro-hl onchain healthdpro-hl onchain midsdpro-hl onchain spot-holders PURR --limit 5dpro-hl onchain orders-book BTC --page 1 --limit 20dpro-hl onchain liqmap BTC --groupBy alldpro-hl onchain trending --period 1h --market alldpro-hl onchain leaderboard --limit 10Trading must use explicit market namespaces.
Use dpro-hl spot ... only for spot trading actions.
Use dpro-hl perp ... only for standard perpetual trading actions.
Use dpro-hl hip3 ... only for HIP-3 asset trading actions.
For live writes, never silently choose spot, perp, or hip3 when the user's intent is ambiguous.
If the user gives a natural-language trade request without an explicit market namespace, apply the market namespace inference policy below.
Use this policy only when the user gives a natural-language trade request without an explicit market namespace.
Inference hints:
spot, cash, or cash market -> prefer spotperp, perpetual, leverage, long, or short -> prefer perpHIP-3, stock, equity, commodity, index, or namespaced symbols such as xyz:NVDA -> prefer hip3Inference is only a routing aid.
Rules:
Examples of ambiguous requests include:
These requests are not sufficient for a live write unless the intended market type is clarified or explicitly confirmed.
Symbol matching is strict.
Rules:
dpro-hl markets ls is the symbol source of truth.AAPL and xyz:AAPL are different assets.For read requests:
dpro-hl markets ls when neededFor write requests:
Account resolution order:
--account flagNever guess among multiple configured accounts.
Read operations may use:
For dpro-hl account ls interpretation:
MasterAddress as the master account address and AgentAddress as the API sub-account addressMasterKey=no, explain this as missing master-key mapping for the existing account, not a missing "master account" entryMasterKey=no with dpro-hl account add-master ..., explicitly say this flow needs master-wallet password first--master-password <YOUR_PASSWORD> (or runtime masterPassword=<YOUR_PASSWORD>) before constructing the add-master commandWrite operations require:
Some write operations also require extra signer state:
dpro-hl transfer ... requires a stored master key mapping for the selected account's masterAddressIf account state is unknown before a write, check dpro-hl account ls first.
If the runtime supports runtimeContext.apiPassword / runtimeContext.masterPassword, prefer those.
Otherwise use the canonical secure command path supported by the implementation.
Credential split rules:
api-wallet password protects API-wallet-related encrypted material used for spot/perp/hip3 order ... flowsmaster-wallet password protects master-wallet-related encrypted material used for transfer ... and account add-master|update-master|remove-master ... flowsapi-wallet password and master-wallet password are separate secrets and must not be assumed interchangeablePassword session cache is enabled by default for this skill runtime:
dpro-hl account clear-password-cacheWhen password is missing for a write/decrypt flow, explicitly ask the user to provide it in one of these forms:
apiPassword=<YOUR_PASSWORD> / masterPassword=<YOUR_PASSWORD> (chat/runtime input form)--api-password <YOUR_PASSWORD> / --master-password <YOUR_PASSWORD> (command form)Use direct prompt styles that name the credential class:
This action needs your api-wallet password. Please provide: --api-password <YOUR_PASSWORD>.This transfer needs your master-wallet password. Please provide: --master-password <YOUR_PASSWORD>.This action needs your master-wallet password. Please provide: --master-password <YOUR_PASSWORD>.Never assume reuse across credential classes:
api-wallet password, still ask for master-wallet password before transfer ... unless master-password availability is explicitly knownmaster-wallet password, still ask for api-wallet password before order/decrypt flows unless API-password availability is explicitly knownFor master-key management commands:
dpro-hl account add-master ..., update-master ..., and remove-master ... as master-wallet secret-management flowsadd-master directly" before resolving master-wallet password inputNever:
If account setup is needed, explain the flow, but do not expose secret values in responses.
Only enter this flow when:
dpro-hl account ls shows no API account is configuredGuide the user through:
dpro-hl account lsdpro-hl positions <alias>If an API account already exists:
All write actions are high risk.
This includes:
For every write, execute the following state machine.
Identify:
Then identify the exact sub-action:
--to perp|spot)Before any write:
transfer, confirm master-wallet password availabilitytransfer, verify master-key mapping exists for the account masterAddressmaster-wallet password availability before suggesting or executing add-master, update-master, or remove-masterapi-wallet password availabilitymaxBuilderFee using the selected account masterAddressAt minimum check:
transfer, destination bucket exactness (perp or spot)maxBuilderFee > 0, attach builder payload {"b": <builderAddress>, "f": <fee>}; if maxBuilderFee = 0, submit without builder payloadFor perp / HIP-3 order writes:
perpEquity is 0insufficient margin / insufficient balance) as the funding truth signalBefore submission, summarize:
transfer, selected account or alias, from bucket, to bucket, and USD amountattached vs not attached, with b and f when attached)maxBuilderFee = 0, include an informational reminder: "Please log in to https://www.d.pro/ to get trading fee discounts." (plain reminder tone, not a warning)Require explicit confirmation before proceeding when supported by the runtime, especially for:
For trading writes when maxBuilderFee = 0:
For transfer ...:
spot -> perp and perp -> spot transfersUse the canonical command model defined in this file and the synchronized command reference.
After submission:
If the result is uncertain because of timeout or network failure:
Use:
dpro-hl account add-master <masterAddress> <masterPrivKey> --master-password <password>dpro-hl account update-master <masterAddress> <masterPrivKey> --master-password <password>dpro-hl account remove-master <masterAddress> --master-password <password>Rules:
master-wallet passwordMasterKey=no or a missing master key error, ask for password input before giving or executing the repair commandadd-master directly"--master-password <YOUR_PASSWORD> (or runtime masterPassword=<YOUR_PASSWORD>)add-master, update-master, or remove-masterMaster-key management example:
account ls shows MasterKey=no for an API accountmaster-wallet passworddpro-hl account add-master <masterAddress> <masterPrivKey> --master-password <password>Use dpro-hl transfer <usd> [--to perp|spot].
Rules:
transfer is a top-level command, not a spot/perp/hip3 order subcommandperp when --to is omittedmaster-wallet password, not api-wallet passwordmaster-wallet password and api-wallet password must be treated as independent credentialsmasterAddress, not by alias--to values; reject anything other than perp or spotspot -> perp or perp -> spot transfer, confirmation of both direction and USD amount is mandatoryfrom, to, and USD amount--to perp--to was omitted, normalize to the default destination only for command construction, then explicitly present that resolved direction for confirmation before executionTransfer safety example:
master-wallet passwordfrom, to, and USD amountUse dpro-hl spot order ....
Rules:
maxBuilderFee with user=masterAddress and builder=BUILDER_ADDRESS; attach {"b": builder, "f": fee} only when approved (maxBuilderFee > 0)Use dpro-hl perp order ....
Rules:
set-leverage and topup-isolated are valid heremarket uses bounded slippage / IOC-limit semanticsreduce-only is valid where supportedperpEquity; if the venue rejects for funding, return that rejection and guide the user to add collateral or reduce sizemaxBuilderFee with user=masterAddress and builder=BUILDER_ADDRESS; attach {"b": builder, "f": fee} only when approved (maxBuilderFee > 0)Use dpro-hl hip3 order ....
Rules:
maxBuilderFee with user=masterAddress and builder=BUILDER_ADDRESS; attach {"b": builder, "f": fee} only when approved (maxBuilderFee > 0)Treat dpro-hl approve-builder as a persistent account-affecting action.
Use dpro-hl builder-approval [alias|masterAddress] [--builder <builderAddress>] to read whether a user already approved a builder.
When builder-approval returns maxBuilderFee = 0, explicitly inform the user: "Please log in to https://www.d.pro/ to get trading fee discounts." Present this as an informational reminder, not as a warning.
Before execution, clearly state:
Require explicit confirmation.
For any dpro-hl onchain ... request:
references/onchain.mdThe onchain branch is read-only and requires no account credentials.
When a command fails:
references/troubleshooting.mdFail closed on writes.
Prefer concise user-facing summaries backed by structured internal results.
Preserve structured fields where available, such as:
If the user asks for raw structured data, use --json when supported.
“Show me the latest BTC price”
-> market read branch
-> normalize to dpro-hl quote BTC
“Check positions for my main account”
-> account read branch
-> normalize to dpro-hl positions main
“Buy 10 PURR spot at 0.08”
-> trade write branch
-> normalize to dpro-hl spot order limit buy 10 PURR 0.08
“Sell 0.01 BTC perp at market with 0.5 slippage”
-> trade write branch
-> normalize to dpro-hl perp order market sell 0.01 BTC --slippage 0.5
“Buy 1 share of NVDA at 120 on HIP-3”
-> trade write branch
-> normalize to dpro-hl hip3 order limit buy 1 xyz:NVDA 120
“Set 5x cross leverage on BTC perp”
-> trade write branch
-> normalize to dpro-hl perp order set-leverage BTC 5 --cross
“Show me the top 5 PURR holders”
-> onchain read branch
-> normalize to dpro-hl onchain spot-holders PURR --limit 5
Before reads:
Before writes:
references/commands.mdreferences/onchain.mdreferences/troubleshooting.mdtesting
Create, edit, improve, or audit AgentSkills. Use when creating a new skill from scratch or when asked to improve, review, audit, tidy up, or clean up an existing skill or SKILL.md file. Also use when editing or restructuring a skill directory (moving files to references/ or scripts/, removing stale content, validating against the AgentSkills spec). Triggers on phrases like "create a skill", "author a skill", "tidy up a skill", "improve this skill", "review the skill", "clean up the skill", "audit the skill".
testing
Host security hardening and risk-tolerance configuration for OpenClaw deployments. Use when a user asks for security audits, firewall/SSH/update hardening, risk posture, exposure review, OpenClaw cron scheduling for periodic checks, or version status checks on a machine running OpenClaw (laptop, workstation, Pi, VPS).
testing
Create, edit, improve, or audit AgentSkills. Use when creating a new skill from scratch or when asked to improve, review, audit, tidy up, or clean up an existing skill or SKILL.md file. Also use when editing or restructuring a skill directory (moving files to references/ or scripts/, removing stale content, validating against the AgentSkills spec). Triggers on phrases like "create a skill", "author a skill", "tidy up a skill", "improve this skill", "review the skill", "clean up the skill", "audit the skill".
testing
Host security hardening and risk-tolerance configuration for OpenClaw deployments. Use when a user asks for security audits, firewall/SSH/update hardening, risk posture, exposure review, OpenClaw cron scheduling for periodic checks, or version status checks on a machine running OpenClaw (laptop, workstation, Pi, VPS).