diff --git a/skills/rust-cli-inspector/.claude-plugin/plugin.json b/skills/rust-cli-inspector/.claude-plugin/plugin.json new file mode 100644 index 00000000..b8d67d8a --- /dev/null +++ b/skills/rust-cli-inspector/.claude-plugin/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "rust-cli-inspector", + "description": "Rust CLI querying ETH price via Onchain OS", + "version": "1.1.0", + "author": {"name": "yz06276"}, + "license": "MIT", + "keywords": ["rust", "onchainos", "eth"] +} diff --git a/skills/rust-cli-inspector/Cargo.lock b/skills/rust-cli-inspector/Cargo.lock new file mode 100644 index 00000000..41ed1975 --- /dev/null +++ b/skills/rust-cli-inspector/Cargo.lock @@ -0,0 +1,7 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "rust-cli-inspector" +version = "1.1.0" diff --git a/skills/rust-cli-inspector/Cargo.toml b/skills/rust-cli-inspector/Cargo.toml new file mode 100644 index 00000000..7aa07c70 --- /dev/null +++ b/skills/rust-cli-inspector/Cargo.toml @@ -0,0 +1,4 @@ +[package] +name = "rust-cli-inspector" +version = "1.1.0" +edition = "2021" diff --git a/skills/rust-cli-inspector/LICENSE b/skills/rust-cli-inspector/LICENSE new file mode 100644 index 00000000..d1e1072e --- /dev/null +++ b/skills/rust-cli-inspector/LICENSE @@ -0,0 +1 @@ +MIT License diff --git a/skills/rust-cli-inspector/SKILL.md b/skills/rust-cli-inspector/SKILL.md new file mode 100644 index 00000000..2e2b1a41 --- /dev/null +++ b/skills/rust-cli-inspector/SKILL.md @@ -0,0 +1,99 @@ +--- +name: rust-cli-inspector +description: "Rust CLI querying ETH price via Onchain OS" +version: "1.1.0" +author: "yz06276" +tags: [rust, onchainos] +--- + + +## Pre-flight Dependencies (auto-injected by Plugin Store CI) + +> Run once per session before first use. These checks ensure required tools are installed. + +### Install onchainos CLI + Skills (auto-injected) + +```bash +# 1. Install onchainos CLI +onchainos --version 2>/dev/null || curl -fsSL https://raw.githubusercontent.com/okx/onchainos-skills/main/install.sh | sh + +# 2. Install onchainos skills (enables AI agent to use onchainos commands) +npx skills add okx/onchainos-skills --yes --global + +# 3. Install plugin-store skills (enables plugin discovery and management) +npx skills add okx/plugin-store --skill plugin-store --yes --global +``` + +### Install rust-cli-inspector binary (auto-injected) + +```bash +if ! command -v rust-cli-inspector >/dev/null 2>&1; then + OS=$(uname -s | tr A-Z a-z) + ARCH=$(uname -m) + case "${OS}_${ARCH}" in + darwin_arm64) TARGET="aarch64-apple-darwin" ;; + darwin_x86_64) TARGET="x86_64-apple-darwin" ;; + linux_x86_64) TARGET="x86_64-unknown-linux-gnu" ;; + linux_aarch64) TARGET="aarch64-unknown-linux-gnu" ;; + esac + curl -fsSL "https://github.com/okx/plugin-store/releases/download/plugins/rust-cli-inspector@1.1.0/rust-cli-inspector-${TARGET}" -o ~/.local/bin/rust-cli-inspector + chmod +x ~/.local/bin/rust-cli-inspector +fi +``` + +### Report install (auto-injected, runs once) + +```bash +REPORT_FLAG="$HOME/.plugin-store/reported/rust-cli-inspector" +if [ ! -f "$REPORT_FLAG" ]; then + mkdir -p "$HOME/.plugin-store/reported" + # Device fingerprint → SHA256 → 32-char device ID + DEV_RAW="$(hostname):$(uname -s):$(uname -m):$HOME" + DEV_ID=$(echo -n "$DEV_RAW" | shasum -a 256 | head -c 32) + # HMAC signature (obfuscated key, same as CLI binary) + _K=$(echo 'OE9nNWFRUFdfSVJkektrMExOV2RNeTIzV2JibXo3ZWNTbExJUDFIWnVoZw==' | base64 -d 2>/dev/null || echo 'OE9nNWFRUFdfSVJkektrMExOV2RNeTIzV2JibXo3ZWNTbExJUDFIWnVoZw==' | openssl base64 -d) + HMAC_SIG=$(echo -n "${_K}${DEV_ID}" | shasum -a 256 | head -c 8) + DIV_ID="${DEV_ID}${HMAC_SIG}" + unset _K + # Report to Vercel stats + curl -s -X POST "https://plugin-store-dun.vercel.app/install" \ + -H "Content-Type: application/json" \ + -d '{"name":"rust-cli-inspector","version":"1.1.0"}' >/dev/null 2>&1 || true + # Report to OKX API (with HMAC-signed device token) + curl -s -X POST "https://www.okx.com/priapi/v1/wallet/plugins/download/report" \ + -H "Content-Type: application/json" \ + -d '{"pluginName":"rust-cli-inspector","divId":"'"$DIV_ID"'"}' >/dev/null 2>&1 || true + touch "$REPORT_FLAG" +fi +``` + +--- + + +# Rust CLI Inspector + +## Overview +Queries ETH price via Onchain OS token price-info. + +## Pre-flight Checks +1. Ensure rust-cli-inspector binary is installed +2. Ensure onchainos CLI is available + +## Commands + +### Query ETH Price (default) +`rust-cli-inspector` + +**When to use:** When user asks about ETH price. Runs onchainos token price-info automatically. + +### Query ETH Price (explicit) +`rust-cli-inspector --query eth-price` + +### Help +`rust-cli-inspector --help` + +## Error Handling +| Error | Cause | Resolution | +|-------|-------|------------| +| Binary not found | CLI not installed | Run pre-flight | +| onchainos not found | Onchain OS not installed | Install onchainos | diff --git a/skills/rust-cli-inspector/plugin.yaml b/skills/rust-cli-inspector/plugin.yaml new file mode 100644 index 00000000..63ac0fe3 --- /dev/null +++ b/skills/rust-cli-inspector/plugin.yaml @@ -0,0 +1,16 @@ +schema_version: 1 +name: rust-cli-inspector +version: "1.1.0" +description: "Rust CLI querying ETH price via Onchain OS" +author: + name: "yz06276" + github: "yz06276" +license: MIT +category: utility +tags: [rust, onchainos, eth] +components: + skill: + dir: . +build: + lang: rust + binary_name: rust-cli-inspector diff --git a/skills/rust-cli-inspector/src/main.rs b/skills/rust-cli-inspector/src/main.rs new file mode 100644 index 00000000..4dd94e36 --- /dev/null +++ b/skills/rust-cli-inspector/src/main.rs @@ -0,0 +1,19 @@ +use std::process::Command; + +fn main() { + let args: Vec = std::env::args().collect(); + if args.len() > 1 && args[1] == "--help" { + println!("rust-cli-inspector v1.1.0"); + println!("Usage: rust-cli-inspector [--query eth-price]"); + println!("Queries ETH price via onchainos token price-info"); + } else { + println!("rust-cli-inspector v1.1.0 - Querying ETH price via onchainos..."); + let output = Command::new("onchainos") + .args(["token", "price-info", "--address", "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", "--chain", "ethereum"]) + .output(); + match output { + Ok(o) => print!("{}", String::from_utf8_lossy(&o.stdout)), + Err(e) => eprintln!("Error: {}", e), + } + } +}