feat: add eth-price-demo plugin#4
Conversation
Simple Rust CLI demo plugin for CI pipeline testing. Queries ETH price using OnchainOS CLI with OKX public API fallback. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
a2444de to
6412a2b
Compare
Phase 4: Summary + Pre-flight for
|
| Command | Parameters | Description |
|---|---|---|
get-price |
--chain <CHAIN_ID> (optional, default: 1) |
Retrieves current ETH price and 24-hour trading statistics |
Triggers
An AI agent should activate this skill when users request current Ethereum price information, market data, or need to incorporate real-time ETH pricing into trading or analytics decisions.
Auto-injected Pre-flight
## Pre-flight Dependencies (auto-injected by Plugin Store CI)
> Run once per session before first use. These checks ensure required tools are installed.
### Version check (auto-injected)
> **AI Agent Instruction**: Run this version check before executing any commands from this skill. If an update is applied, re-read this SKILL.md before proceeding — the instructions may have changed.
```bash
# Check for skill updates (1-hour cache)
UPDATE_CACHE="$HOME/.plugin-store/update-cache/eth-price-demo"
CACHE_MAX=3600
LOCAL_VER="0.1.0"
DO_CHECK=true
if [ -f "$UPDATE_CACHE" ]; then
CACHE_MOD=$(stat -f %m "$UPDATE_CACHE" 2>/dev/null || stat -c %Y "$UPDATE_CACHE" 2>/dev/null || echo 0)
NOW=$(date +%s)
AGE=$(( NOW - CACHE_MOD ))
[ "$AGE" -lt "$CACHE_MAX" ] && DO_CHECK=false
fi
if [ "$DO_CHECK" = true ]; then
REMOTE_VER=$(curl -sf --max-time 3 "https://raw.githubusercontent.com/mig-pre/plugin-store/main/skills/eth-price-demo/plugin.yaml" | grep '^version' | head -1 | tr -d '"' | awk '{print $2}')
if [ -n "$REMOTE_VER" ]; then
mkdir -p "$HOME/.plugin-store/update-cache"
echo "$REMOTE_VER" > "$UPDATE_CACHE"
fi
fi
REMOTE_VER=$(cat "$UPDATE_CACHE" 2>/dev/null || echo "$LOCAL_VER")
if [ "$REMOTE_VER" != "$LOCAL_VER" ]; then
echo "Update available: eth-price-demo v$LOCAL_VER -> v$REMOTE_VER. Updating..."
npx skills add mig-pre/plugin-store --skill eth-price-demo --yes --global 2>/dev/null || true
echo "Updated eth-price-demo to v$REMOTE_VER. Please re-read this SKILL.md."
fiInstall onchainos CLI + Skills (auto-injected)
# 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 mig-pre/plugin-store --skill plugin-store --yes --globalInstall eth-price-demo binary + launcher (auto-injected)
# Install shared infrastructure (launcher + update checker, only once)
LAUNCHER="$HOME/.plugin-store/launcher.sh"
CHECKER="$HOME/.plugin-store/update-checker.py"
if [ ! -f "$LAUNCHER" ]; then
mkdir -p "$HOME/.plugin-store"
curl -fsSL "https://raw.githubusercontent.com/mig-pre/plugin-store/main/scripts/launcher.sh" -o "$LAUNCHER" 2>/dev/null || true
chmod +x "$LAUNCHER"
fi
if [ ! -f "$CHECKER" ]; then
curl -fsSL "https://raw.githubusercontent.com/mig-pre/plugin-store/main/scripts/update-checker.py" -o "$CHECKER" 2>/dev/null || true
fi
# Clean up old installation
rm -f "$HOME/.local/bin/eth-price-demo" "$HOME/.local/bin/.eth-price-demo-core" 2>/dev/null
# Download binary
OS=$(uname -s | tr A-Z a-z)
ARCH=$(uname -m)
EXT=""
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-musl" ;;
linux_i686) TARGET="i686-unknown-linux-musl" ;;
linux_aarch64) TARGET="aarch64-unknown-linux-musl" ;;
linux_armv7l) TARGET="armv7-unknown-linux-musleabihf" ;;
mingw*_x86_64|msys*_x86_64|cygwin*_x86_64) TARGET="x86_64-pc-windows-msvc"; EXT=".exe" ;;
mingw*_i686|msys*_i686|cygwin*_i686) TARGET="i686-pc-windows-msvc"; EXT=".exe" ;;
mingw*_aarch64|msys*_aarch64|cygwin*_aarch64) TARGET="aarch64-pc-windows-msvc"; EXT=".exe" ;;
esac
mkdir -p ~/.local/bin
curl -fsSL "https://github.com/mig-pre/plugin-store/releases/download/plugins/eth-price-demo@0.1.0/eth-price-demo-${TARGET}${EXT}" -o ~/.local/bin/.eth-price-demo-core${EXT}
chmod +x ~/.local/bin/.eth-price-demo-core${EXT}
# Symlink CLI name to universal launcher
ln -sf "$LAUNCHER" ~/.local/bin/eth-price-demo
# Register version
mkdir -p "$HOME/.plugin-store/managed"
echo "0.1.0" > "$HOME/.plugin-store/managed/eth-price-demo"Report install (auto-injected, runs once)
REPORT_FLAG="$HOME/.plugin-store/reported/eth-price-demo"
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":"eth-price-demo","version":"0.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":"eth-price-demo","divId":"'"$DIV_ID"'"}' >/dev/null 2>&1 || true
touch "$REPORT_FLAG"
fi
</details>
---
*Generated by Plugin Store CI after maintainer approval.*
🔨 Phase 2: Build Verification — ✅ PASSED
Build succeeded. Compiled artifact uploaded as workflow artifact. Source integrity: commit SHA `` is the content fingerprint. |
📋 Phase 3: AI Code Review Report — Score: 72/100
1. Plugin Overview
Summary: A minimal demo plugin that queries the current ETH price. It attempts to use the onchainos CLI ( Target Users: Developers testing the Plugin Store CI pipeline, or users who want a quick ETH price check. 2. Architecture AnalysisComponents:
Skill Structure:
Data Flow:
Dependencies:
3. Auto-Detected Permissionsonchainos Commands Used
Wallet Operations
External APIs / URLs
Chains Operated On
Overall Permission SummaryThis plugin is strictly read-only. It queries ETH price data from two sources (onchainos CLI and OKX public API). It does not access any wallet, sign any transactions, read any sensitive files, or modify any system state. The only network request is to the well-known OKX public API endpoint. Risk is minimal. 4. onchainos API ComplianceDoes this plugin use onchainos CLI for all on-chain write operations?N/A — this plugin performs no on-chain write operations. On-Chain Write Operations (MUST use onchainos)
Data Queries (allowed to use external sources)
External APIs / Libraries Detected
Verdict: ✅ Fully CompliantNo on-chain write operations are performed. Data queries use legitimate public API endpoints. 5. Security AssessmentStatic Rule Scan (C01-C09, H01-H09, M01-M08, L01-L02)
LLM Judge Analysis (L-PINJ, L-MALI, L-MEMA, L-IINJ, L-AEXE, L-FINA, L-FISO)
Toxic Flow Detection (TF001-TF006)No toxic flows detected. No combinations of triggered rules form attack chains. Prompt Injection Scan
Result: ✅ Clean Dangerous Operations Check
Result: ✅ Safe Data Exfiltration Risk
Result: ✅ No Risk Overall Security Rating: 🟢 Low Risk6. Source Code Security (if source code is included)Language & Build Config
Dependency Analysis
All dependencies are mainstream, well-maintained Rust crates from crates.io. No suspicious or unmaintained packages. Cargo.lock is present and pins all transitive dependencies. Code Safety Audit
Does SKILL.md accurately describe what the source code does?Yes — with one minor discrepancy:
Verdict: ✅ Source Safe7. Code ReviewQuality Score: 72/100
Strengths
Issues Found
8. Recommendations
9. Reviewer SummaryOne-line verdict: A clean, safe, read-only demo plugin with a minor bug in the onchainos command path that causes it to always fall back to the OKX public API. Merge recommendation: The plugin is security-clean and poses no risk to users. However, the following should ideally be addressed:
Generated by Claude AI via Anthropic API — review the full report before approving. |
Summary
eth-price-demo— a minimal Rust CLI plugin that queries ETH price/v5/market/ticker)Plugin Structure
plugin.yaml.claude-plugin/plugin.jsonSKILL.mdCargo.toml+Cargo.locksrc/main.rsget-pricesubcommandLICENSEPre-submission Checklist
plugin-store lintstructure validatedcargo build --releasepasses with zero warnings--versionoutputs0.1.0rustls-tls(no OpenSSL dependency)Test plan
🤖 Generated with Claude Code