Agent skill

Ospex One

by LeoYeAI in LeoYeAI/openclaw-master-skills

Bet on sports with one word (or maybe, a few words). An agent skill from LeoYeAI/openclaw-master-skills.

MITAuto-check passed

Install Ospex One

skills CLI
$ npx skills add LeoYeAI/openclaw-master-skills --skill ospex-one -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install LeoYeAI/openclaw-master-skills ospex-one --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/LeoYeAI/openclaw-master-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/ospex-one .claude/skills/ospex-one && rm -rf skills-src

Use ~/.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/

Facts

Skill name
ospex-one
GitHub stars
2.2k
Token cost
~5k tokens
SKILL.md length
2,182 words
Files
5 (incl. references)
Skills in repo
1,235
Repo updated
First seen
Licence
MIT

At a glance

Bet on sports with one word (or maybe, a few words). An agent skill from LeoYeAI/openclaw-master-skills.

  • Works in 5 steps: Resolve Team and Market Type → Get a Quote from the agent market maker… → Create Position and Match → …
  • SKILL.md covers Defaults, Communication Rules, Step 1: Resolve Team and… and Step 2: Get a Quote from the…, plus 5 more sections
  • Reaches api.ospex.org and ospex.org; needs OSPEX_WALLET_PRIVATE_KEY

What it does

Ospex One is an agent skill from LeoYeAI/openclaw-master-skills. Bet on sports with one word (or maybe, a few words). Say a team name, city, or abbreviation. 'Edmonton', 'Duke', 'Celtics', 'Lakers'. NBA, NHL, NCAAB.

Its SKILL.md is about 5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `PROMPT.md`, `_meta.json` and `references/api-reference.md`). Compatibility notes: Requires Node and ethers.js v6. Required env: OSPEXWALLETPRIVATEKEY (wallet private key; high-sensitivity — do not log or expose), OSPEXWALLETADDRESS…

The repository describes itself as: 🧠 Curated collection of 1209+ best OpenClaw skills — weekly updated by MyClaw.ai. The licence is MIT.

Example prompts

  • “Edmonton”
  • “Celtics”
  • “Lakers”
  • “/ospex-one”

Requirements

  • Node.js
  • A credential in OSPEX_WALLET_PRIVATE_KEY
  • Compatibility (from SKILL.md): Requires Node and ethers.js v6. Required env: OSPEX_WALLET_PRIVATE_KEY (wallet private key; high-sensitivity — do not log or expose), OSPEX_WALLET_ADDRESS, OSPEX_RPC_URL (Polygon RPC). Use a dedicated low-fund betting wallet; do not use your primary wallet.
  • Pre-approved tools (allowed-tools): bash, exec

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Resolve Team and Market Type
  2. Get a Quote from the agent market maker (Michelle)
  3. Create Position and Match
  4. Report Result
  5. Additional Operations

What it can do on your machine

Read from SKILL.md and the folder at commit e5199b5. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • bash
    • exec

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are javascript and json).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • api.ospex.org
    • ospex.org

    Also links to:

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • OSPEX_WALLET_PRIVATE_KEY

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Requires Node and ethers.js v6. Required env: OSPEX_WALLET_PRIVATE_KEY (wallet private key; high-sensitivity — do not log or expose), OSPEX_WALLET_ADDRESS, OSPEX_RPC_URL (Polygon RPC). Use a dedicated low-fund betting wallet; do not use your primary wallet.

    From compatibility in the SKILL.md frontmatter.

Context cost

Ospex One loads about 5k tokens when it runs, and up to ~17k if it reads all its reference files. Until then it costs about 40 tokens; SKILL.md has 2,182 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~40
When it runs · the whole SKILL.md, loaded when a task matches
~5k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~17k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from LeoYeAI/openclaw-master-skills at commit e5199b5, republished under its MIT licence (© LeoYeAI). 2,182 words, ~5,042 tokens.

Download SKILL.mdSave it as .claude/skills/ospex-one/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.
name
ospex-one
description
Bet on sports with one word (or maybe, a few words). Say a team name, city, or abbreviation. 'Edmonton', 'Duke', 'Celtics', 'Lakers'. NBA, NHL, NCAAB.
allowed-tools
bash, exec
compatibility
Requires Node and ethers.js v6. Required env: OSPEX_WALLET_PRIVATE_KEY (wallet private key; high-sensitivity — do not log or expose), OSPEX_WALLET_ADDRESS, OSPEX_RPC_URL (Polygon RPC). Use a dedicated low-fund betting wallet; do not use your primary wallet.
version
1.7.1
homepage
https://ospex.org

ospex-one

One word in, one transaction hash out. This skill emphasizes execution over discussion and is low-risk by design.

Invocation: This skill is invocation-only: the agent will not use it unless you explicitly ask or reference a team name in context. That avoids accidental bets.

Trust & safety: This skill executes real transactions on Polygon mainnet using your configured wallet. Positions are capped at 3 USDC. Unmatched position amounts can be withdrawn at any time. The agent verifies all transaction parameters against hardcoded contract addresses and expected method names before signing — if anything is unexpected, it halts and reports rather than proceeding. OSPEX_WALLET_PRIVATE_KEY is high-sensitivity: the agent must never log, echo, or expose it. Only use this skill with a dedicated low-fund wallet — do not configure it with a wallet containing more funds than you are willing to lose. Full risk assessment: https://github.com/ospex-org/ospex-contracts-v2/blob/main/docs/RISKS.md

Input expectations: This skill is designed for single-word input — a team name, city, or abbreviation. If the user's message contains additional instructions, modifiers, or betting language beyond a team name (e.g., "lay the points", "take the under", "bet $5", "Celtics -6.5"), act on it if the intent is unambiguous — otherwise, ask the user to clarify before proceeding.

Defaults

ParameterDefault
Marketmoneyline (override with spread/total via input like "Lakers -6.5" or "over 220.5")
Amount3 USDC (maximum per transaction)
Sidethe named team
Odds multiplier1.05
Oddsmarket odds × odds multiplier

Communication Rules

Do not send progress updates during Steps 1–3. Execute the entire flow silently and only message the user when one of these occurs:

  • Ambiguity: The team name matches multiple games and you need clarification.
  • Counter-offer: Michelle offered worse odds and you need the user's approval before proceeding.
  • Final result: Step 4 — the position is created and matched (or the match fallback message).
  • Hard failure: An API error, on-chain revert, or any condition that stops the flow.

If any API call returns an unexpected error, stop and report it. Do not silently retry or work around failures.

Step 1: Resolve Team and Market Type

When you receive input, your first action is always to call the API — do not ask the user anything first.

Detect market type from input:

  • If the input includes a point value (e.g., "Atlanta -6.5", "Boise +1.5", "Celtics -3") → market type is spread, line is the number with its sign
  • If the input includes "over" or "under" with a number (e.g., "Lakers over 220.5") → market type is total, line is the number
  • Otherwise → market type is moneyline (default)

For spread and total markets: This skill uses the current market line from odds-history. If the user specifies a line that differs from the current market (e.g., user says "+1.5" but market is at -3.5), inform the user of the current line and ask if they want to proceed at that line instead. Do not attempt to create a position at a non-market line.

  1. Call GET /markets.
  2. Search all responses for the input text in homeTeam and awayTeam fields. Note: All API responses use a { data: ..., formatted: "..." } envelope. The formatted field is a display convenience — never use it for branching decisions. Always use the data object. When searching for teams, look inside the data array, not the top-level response.
  3. If found in exactly one game → that is the team and game. Note contestId, matchTime, and whether the team is home or away. Check the speculations array for an existing speculationId matching the detected market type. If one exists, note the speculationId. For spread speculations, note awayLine (away team's perspective, e.g. -3.5) and homeLine (home team's perspective, e.g. 3.5) — use whichever matches the user's team. For total speculations, note the line field. These are the actual on-chain lines for the bet. If no speculationId exists for the detected market type, respond: "No {marketType} market available for {team} right now." and stop.
  4. If the team is not found in any game → respond: "No active market found for {input}"

Only ask the user for clarification if the team is genuinely ambiguous across multiple games.

Step 2: Get a Quote from the agent market maker (Michelle)

First, determine the odds to request. Call GET /analytics/odds-history/{contestId} to get current market odds. Select the odds for the detected market type:

  • Moneyline: Use current.moneyline.awayOdds or current.moneyline.homeOdds depending on which team the user picked.
  • Spread: Use current.spread.awayOdds or current.spread.homeOdds.
  • Total: Use current.total.overOdds or current.total.underOdds.

Apply the odds multiplier from the Defaults section and floor to 2 decimal places: Math.floor(marketOdds * oddsMultiplier * 100) / 100. This is your minimum acceptable odds.

Note: Higher decimal odds = higher payout for the bettor. A quote at 2.00 is better than 1.85.

If the odds-history endpoint returns no data for the relevant market type, use 1.91 as a reasonable default for spread/total (standard -110 line). For moneyline, ask the user — don't guess, since moneyline odds vary widely depending on the matchup.

Line reporting: For spread markets, use awayLine or homeLine from the speculation (noted in Step 1) depending on the user's team — not the line from odds-history. For total markets, use line from the speculation. Odds-history is for odds values only — ignore its line field for spread/total direction. The speculation's line fields are the actual on-chain lines the user is betting on. Use these in all user-facing messages including the Step 4 result.

Line validation: The quote API requires lines in .5 increments (e.g., -10.5, +3.5, 195.5). If the line from odds-history is a whole number or does not end in .5, stop and tell the user: "Spread/total line unavailable for this market right now." Do not attempt to convert it.

Request a quote from Michelle using the speculationId from Step 1:

POST /instant-match/{speculationId}/quote?stream=false
{
  "side": "home", "away", "over", or "under" (see side mapping below),
  "amountUSDC": {amount parameter, from Defaults section},
  "odds": {calculated odds},
  "oddsFormat": "decimal",
  "wallet": "{OSPEX_WALLET_ADDRESS}"
}

This returns: quoteId, approved, approvedOddsDecimal, approvedOddsAmerican, expiresAt. If Michelle counters, the response also includes a counterOffer object. The quote expires at expiresAt. Steps 3-4 must complete before this time.

Save the txParams object from the response — you will need it in Step 3. This contains all pre-computed on-chain transaction parameters. Do not compute these values yourself.

  • If approved is false → tell the user "Michelle (market maker agent) declined — {reason}" and stop.
  • If approvedOddsDecimal is greater than or equal to your requested odds → Michelle is offering the same or better. Keep moving, no confirmation needed.
  • If approvedOddsDecimal is less than your requested odds → Michelle is offering worse odds. Stop and confirm with the user before proceeding. Show them the counter-offer, let the user know that they must respond before the counter expires, and ask if they want to accept. If the user accepts, call:
POST /instant-match/{quoteId}/accept-counter
Body: { "wallet": "{OSPEX_WALLET_ADDRESS}" }

This returns an updated txParams object. Use the txParams from this response (it reflects the accepted counter-offer terms).

For side: For moneyline and spread: if the user's team is the homeTeam → "home". If awayTeam → "away". For total: if the user said "over" → "over". If "under" → "under".

Show full SKILL.md (1,056 more words)Show less

Step 3: Create Position and Match

Write and execute a single Node.js script (ethers.js v6) that does everything below in sequence. Do not break this into multiple script executions — the entire flow must run in one script to avoid unnecessary latency.

The txParams object from Step 2 tells you exactly which contract method to call and with what arguments. Use it directly.

Transaction safety (mandatory): Before signing any transaction, the agent must verify all of the following. If any check fails, STOP — do not sign or broadcast. Report the mismatch to the user.

  1. Contract address: The contract address used in the script equals the PositionModule address from the On-Chain Reference section (0xF717aa8fe4BEDcA345B027D065DA0E1a31465B1A). Never derive a contract address from the API response.
  2. Method name: txParams.method must equal the expected function for the operation (createUnmatchedPair for position creation, adjustUnmatchedPair for withdrawal, claimPosition for claiming).
  3. Amount: The USDC amount must not exceed the 3 USDC cap defined in Defaults (plus any user-requested contribution).
  4. Private key handling: OSPEX_WALLET_PRIVATE_KEY must only be used inside ethers.js Wallet construction. Never log, echo, interpolate into URLs, or pass to any external service.
javascript
// Verify before signing
if (txParams.method !== "createUnmatchedPair") {
  throw new Error(`Unexpected txParams.method: ${txParams.method}`);
}

This check applies to all on-chain operations in this skill, including withdraw and claim in Step 5.

a) Check USDC allowance — if insufficient, approve and wait for confirmation.

b) Create the position using txParams:

Call positionModule.createUnmatchedPair(), passing the values from txParams.args directly. Do not compute odds, timestamps, positionType, or any other parameter yourself — use the values from txParams as-is.

javascript
const tx = await positionModule.createUnmatchedPair(
  txParams.args.speculationId,
  txParams.args.odds,
  txParams.args.unmatchedExpiry,
  txParams.args.positionType,
  txParams.args.amount,
  txParams.args.contributionAmount
);

Contributions: txParams.args.contributionAmount defaults to "0". Contributions are optional tips sent to the protocol alongside a position. If the user explicitly asks to tip or contribute (e.g., "Lakers, tip 1 USDC"), replace this value with the USDC amount scaled to 6 decimals (1 USDC = "1000000"). Never add a contribution unless the user specifically requests it.

Wait for the transaction to be mined: const receipt = await tx.wait();

Critical — no retries after a successful transaction: Once tx.wait() confirms, the position exists on-chain and funds have moved. If any subsequent step fails (positionId lookup, match call, etc.), DO NOT re-run the script. Report the tx hash to the user and stop. To complete the interrupted flow, manually call GET /positions/by-tx/{txHash} and then POST /instant-match/{quoteId}/match as separate steps.

c) Get the positionId from the API:

Do not parse the transaction receipt yourself. Call the server-side endpoint which does this deterministically:

javascript
const posRes = await fetch(`https://api.ospex.org/v1/positions/by-tx/${receipt.hash}`);
const posData = await posRes.json();
const positionId = posData.data.positions[0].positionId;

d) Call the match endpoint:

javascript
await new Promise(r => setTimeout(r, 5000)); // wait for Firebase indexing
for (let attempt = 1; attempt <= 5; attempt++) {
  const res = await fetch(`https://api.ospex.org/v1/instant-match/${quoteId}/match`, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ positionId })
  });
  const data = await res.json();
  if (res.ok) { console.log(JSON.stringify({ matchTxHash: data.txHash, positionId })); break; }
  if (data.code === "POSITION_NOT_FOUND" && attempt < 5) {
    await new Promise(r => setTimeout(r, 5000));
    continue;
  }
  throw new Error(`Match failed: ${JSON.stringify(data)}`);
}

The protocol indexer can take 5-25 seconds, especially on cold starts. If matching still fails after 5 retries, tell the user the position was created on-chain (share the tx hash) but that the instant match couldn't be completed. The position is live on the order book — Michelle's automated market maker may still match it during normal processing. If it remains unmatched, the user can withdraw their funds at any time.

Step 4: Report Result

Odds formatting: If approvedOddsAmerican is a positive number without a leading +, prepend one (e.g., 110 → +110). Negative odds already include the -.

If matchedAmountUSDC or potentialPayoutUSDC is absent from the match response, use the quoted amount and compute payout as amount × approvedOddsDecimal.

Done. {Team} {marketType abbreviation: ML/spread line/total line} at {americanOdds} ({decimalOdds}x), {matchedAmountUSDC} USDC matched, potential payout {potentialPayoutUSDC} USDC.
https://ospex.org/p/{positionId}

Step 5: Additional Operations

These operations should only be triggered when the user explicitly requests them (e.g., "status", "withdraw", "claim").

Status check

When the user asks "status", "how am I doing", or similar:

  1. Call GET /positions/{OSPEX_WALLET_ADDRESS}/status
  2. Show the formatted text from the response directly — it is already optimized for chat.
  3. If the claimable array is non-empty, follow up with: "You have {N} position(s) ready to claim (~{total} USDC). Want me to claim them?"
  4. If the user confirms, follow the "Claim" flow below.
Withdraw an Unmatched Position

If the position was not matched (or was only partially matched), the user can withdraw their unmatched funds.

Precondition: The speculation must still be open (not yet settled). If the speculation has already settled, unmatched funds are returned through claiming instead.

  1. Call GET /positions/{OSPEX_WALLET_ADDRESS}/withdraw-params
  2. The response contains a positions array. Each entry includes a description (e.g., "Lakers ML — Unmatched, 3.00 USDC") and a txParams object.
  3. Write and execute a Node.js script (ethers.js v6) that calls positionModule.adjustUnmatchedPair() using the values from txParams.args directly. Do not compute any arguments yourself. Verify txParams.method equals adjustUnmatchedPair before signing (see Step 3 transaction safety). Wait for the transaction to be mined.
javascript
const tx = await positionModule.adjustUnmatchedPair(
  txParams.args.speculationId,
  txParams.args.oddsPairId,
  txParams.args.newUnmatchedExpiry,
  txParams.args.positionType,
  txParams.args.amount,
  txParams.args.contributionAmount
);
const receipt = await tx.wait();
  1. Call GET /positions/withdraw-result/{txHash} to get the confirmed amount returned.

Report: Withdrawn. {amountReturned} USDC returned. Tx: {txHash}

Claim a Resolved Position

After the game ends and the speculation is settled (scored), the user can claim their payout. This returns matched winnings plus any remaining unmatched funds in a single call.

Precondition: The speculation must be settled. Positions can only be claimed once.

  1. Call GET /positions/{OSPEX_WALLET_ADDRESS}/claim-params
  2. The response contains a positions array. Each entry includes a description (e.g., "Celtics ML — Won") and a txParams object.
  3. Write and execute a single Node.js script (ethers.js v6) that calls positionModule.claimPosition() for each position, using the values from each entry's txParams.args directly. Do not compute any arguments yourself. Verify txParams.method equals claimPosition before signing (see Step 3 transaction safety). Wait for each transaction to be mined.
javascript
for (const entry of positions) {
  const tx = await positionModule.claimPosition(
    entry.txParams.args.speculationId,
    entry.txParams.args.oddsPairId,
    entry.txParams.args.positionType
  );
  const receipt = await tx.wait();
}
  1. Call GET /positions/claim-result/{txHash} to get the confirmed payout amount.

Report: Claimed {payout} USDC. Tx: {txHash}

When to Use Which
SituationFunctionWhen available
Position unmatched, game hasn't startedadjustUnmatchedPair (negative amount)While speculation is open
Game ended, user won and/or has unmatched remainderclaimPositionAfter speculation is settled

API

Base URL: https://api.ospex.org/v1 — no auth, rate limit 100 req/60s/IP.

EndpointUse
GET /markets?sport={nba|nhl|ncaab}Find games, contestIds, speculationIds. Spread speculations include awayLine and homeLine instead of line.
GET /positions/{address}/statusActive, claimable, and withdrawable positions
GET /positions/by-tx/{txHash}Get positionId from a transaction hash (server-side event parsing)
GET /positions/{address}/claim-paramsPre-computed txParams for all claimable positions
GET /positions/{address}/withdraw-paramsPre-computed txParams for all withdrawable positions
GET /positions/claim-result/{txHash}Parse claim receipt, return payout amount
GET /positions/withdraw-result/{txHash}Parse withdraw receipt, return amount returned
GET /analytics/odds-history/{contestId}Current market odds + opening lines + line movement
POST /instant-match/{quoteId}/accept-counterAccept Michelle's counter-offer (required before match)
POST /instant-match/{speculationId}/quote?stream=falseRequest a quote from Michelle
POST /instant-match/{quoteId}/matchMatch a created position against an approved quote

On-Chain Reference

Network: Polygon (chain ID 137).

ContractAddress
USDC0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359 (6 decimals)
PositionModule0xF717aa8fe4BEDcA345B027D065DA0E1a31465B1A

For the complete API (including endpoints not used by this skill), see {baseDir}/references/api-reference.md. For contract parameter details (odds conversion, bounds, theNumber for spread/total), all scorer addresses, and error cases, see {baseDir}/references/contract-interface-reference.md.

Minimal ABI (ethers.js v6 human-readable):

json
[
  "function approve(address spender, uint256 amount) returns (bool)",
  "function allowance(address owner, address spender) view returns (uint256)",
  "function createUnmatchedPair(uint256 speculationId, uint64 odds, uint32 unmatchedExpiry, uint8 positionType, uint256 amount, uint256 contributionAmount)",
  "function adjustUnmatchedPair(uint256 speculationId, uint128 oddsPairId, uint32 newUnmatchedExpiry, uint8 positionType, int256 amount, uint256 contributionAmount)",
  "function claimPosition(uint256 speculationId, uint128 oddsPairId, uint8 positionType)",
  "event PositionCreated(uint256 indexed speculationId, address indexed user, uint128 oddsPairId, uint32 unmatchedExpiry, uint8 positionType, uint256 amount, uint64 upperOdds, uint64 lowerOdds)",
  "event PositionClaimed(uint256 indexed speculationId, address indexed user, uint128 oddsPairId, uint8 positionType, uint256 payout)"
]

© LeoYeAI, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 4 other files (references) in skills/ospex-one of LeoYeAI/openclaw-master-skills.

  • SKILL.md
  • PROMPT.md
  • _meta.json
  • references/api-reference.md
  • references/contract-interface-reference.md

Open the folder on GitHubat commit e5199b5

Compare with similar skills

Ospex One 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.

Ospex One compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Ospex One this skillLeoYeAI/openclaw-master-skills2.2k—~5kAutomated safety check: PassMIT
Stop Wordsthedaviddias/Front-End-Checklist74k—~521Automated safety check: PassMIT
Word Countthedaviddias/Front-End-Checklist74k—~577Automated safety check: PassMIT
Word to Markdown Convertergithub/awesome-copilot40k—~1.6kAutomated safety check: PassMIT
Ljg Wordlijigang/ljg-skills7.5k—~199Automated safety check: PassMIT
Word AnalysisOpenSenseNova/SenseNova-Skills5.7k—~2.2kAutomated safety check: PassMIT

Similar skills

  • Stop Words

    thedaviddias/Front-End-Checklist

    A skill your agent uses when applies primarily when creating new content pages.

    74k GitHub stars~521 tokensUpdated 4 days ago
    Auto-check passed
  • Word Count

    thedaviddias/Front-End-Checklist

    A skill your agent uses when applies to key landing pages, blog posts, product pages, and any page targeting competitive queries.

    74k GitHub stars~577 tokensUpdated 4 days ago
    Frontend & DesignAuto-check passed
  • Word to Markdown Converter

    github/awesome-copilot

    Official

    Converts Word .docx files to Markdown with a bundled script before analysis, extracting embedded images and handling whole folders alongside the PDF and Excel converters.

    40k GitHub stars~1.6k tokensUpdated yesterday
    Documents & OfficeAuto-check passed
  • Ljg Word

    lijigang/ljg-skills

    Deep-dive English word mastery tool. An agent skill from lijigang/ljg-skills.

    7.5k GitHub stars~199 tokensUpdated yesterday
    Auto-check passed
  • Word Analysis

    OpenSenseNova/SenseNova-Skills

    Word (.docx/.doc) 文档全量解析。覆盖:正文/段落文本提取、表格数据提取、高亮/颜色格式读取、多文件汇总对比、嵌入图片转 caption。

    5.7k GitHub stars~2.2k tokensUpdated yesterday
    Documents & OfficeAuto-check passed
  • Sports And Science

    brycewang-stanford/Awesome-Journal-Skills

    A skill your agent uses when targeting 《体育与科学》(Sports & Science, Jiangsu) — a CSSCI sport-science journal distinctive for reflective, interdisciplinary, theory-forward and methodologically…

    1.2k GitHub stars~647 tokensUpdated 13 days ago
    Auto-check passed

More from LeoYeAI/openclaw-master-skills

All 1,235 skills in this repo
  • DevOps Pipeline Management

    LeoYeAI/openclaw-master-skills

    Manages pipelines on a DevOps quality and efficiency platform through its OpenAPI: list workspaces and templates, create, update, run and cancel pipelines, and read run records.

    2.2k GitHub stars~4.2k tokensUpdated 2 mo ago
    Auto-check: notes
  • Feishu Document Collaboration

    LeoYeAI/openclaw-master-skills

    Patches OpenClaw's Feishu extension so an edited document triggers an isolated agent session that reads the doc and replies inline, turning it into a live chat space.

    2.2k GitHub stars~2k tokensUpdated 2 mo ago
    Auto-check passed
  • Files Memory System

    LeoYeAI/openclaw-master-skills

    Multi-context memory management system for OpenClaw agents with group-isolated storage, global shared memory, workspace organization, and group-specific skills isolation.

    2.2k GitHub stars~3.8k tokensUpdated 2 mo ago
    Auto-check passed
  • GEO-Claw AI Visibility Agent

    LeoYeAI/openclaw-master-skills

    Runs a brand's AI-search visibility work end to end: diagnosing how AI platforms represent it, repositioning it, producing AI-optimized content and monitoring ongoing mentions.

    2.2k GitHub stars~4.7k tokensUpdated 2 mo ago
    Auto-check passed
  • Google Workspace CLI

    LeoYeAI/openclaw-master-skills

    Installs and authenticates the gws CLI, then automates Gmail, Drive, Sheets, Calendar, Docs, Chat and Tasks with ready-made recipes, persona bundles and security audits.

    2.2k GitHub stars~2.6k tokensUpdated 2 mo ago
    Auto-check: notes
  • HealthFit Health Advisors

    LeoYeAI/openclaw-master-skills

    Runs four advisor roles, a fitness coach, nutritionist, data analyst and TCM practitioner, to build a health profile and track workouts, diet and wellness over time.

    2.2k GitHub stars~4.4k tokensUpdated 2 mo ago
    Auto-check passed

Questions about Ospex One

What does Ospex One do?

Bet on sports with one word (or maybe, a few words). An agent skill from LeoYeAI/openclaw-master-skills. Ospex One is an agent skill from LeoYeAI/openclaw-master-skills. Bet on sports with one word (or maybe, a few words).

How do I install Ospex One in Claude Code?

Run `npx skills add LeoYeAI/openclaw-master-skills --skill ospex-one -a claude-code`. Or copy the skill folder (skills/ospex-one in LeoYeAI/openclaw-master-skills) into .claude/skills/ospex-one in your project. Claude Code loads it when a task matches its description.

How do I install Ospex One in Codex?

Run `npx skills add LeoYeAI/openclaw-master-skills --skill ospex-one -a codex`. Or copy the skill folder (skills/ospex-one in LeoYeAI/openclaw-master-skills) into .agents/skills/ospex-one in your project. Codex loads it when a task matches its description.

Can I use Ospex One in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add LeoYeAI/openclaw-master-skills --skill ospex-one -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ospex-one, .gemini/skills/ospex-one, .github/skills/ospex-one and .opencode/skills/ospex-one in your project.

What does Ospex One need to run?

Going by SKILL.md and its folder, Ospex One needs credentials named OSPEX_WALLET_PRIVATE_KEY. Our summary lists: Node.js; A credential in OSPEX_WALLET_PRIVATE_KEY. Its frontmatter pre-approves these tools: bash, exec. Compatibility (from SKILL.md): Requires Node and ethers.js v6. Required env: OSPEX_WALLET_PRIVATE_KEY (wallet private key; high-sensitivity — do not log or expose), OSPEX_WALLET_ADDRESS, OSPEX_RPC_URL (Polygon RPC). Use a dedicated low-fund betting wallet; do not use your primary wallet..

Does Ospex One access the network?

SKILL.md names 3 domains. In commands or code: api.ospex.org and ospex.org; the agent is likely to contact these when it follows the instructions. As links in the text: github.com. This is read from the text; nothing was executed.

Is Ospex One safe to install?

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.

What licence does Ospex One use?

Ospex One is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Ospex One use?

About 5k tokens (SKILL.md is roughly 20k 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 12k tokens, read only when the agent opens those files.

What are the alternatives to Ospex One?

Skills that share tags, products or a category with Ospex One: Stop Words (thedaviddias/Front-End-Checklist, 74k stars), Word Count (thedaviddias/Front-End-Checklist, 74k stars), Word to Markdown Converter (github/awesome-copilot, 40k stars) and Ljg Word (lijigang/ljg-skills, 7.5k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Ospex One?

LeoYeAI (a GitHub user) maintains it in LeoYeAI/openclaw-master-skills, which has 2,161 GitHub stars. The repository holds 1,235 skills in this directory. The repository was last updated on July 20, 2026.

Source: LeoYeAI/openclaw-master-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.