# Send PineTS - PineScript executor to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "pinets",
    "name": "PineTS - PineScript executor",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/alaa-eddine/pinets",
    "canonicalUrl": "https://clawhub.ai/alaa-eddine/pinets",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/pinets",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=pinets",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "pinets",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-07T03:09:16.651Z",
      "expiresAt": "2026-05-14T03:09:16.651Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=pinets",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=pinets",
        "contentDisposition": "attachment; filename=\"pinets-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "pinets"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/pinets"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/pinets",
    "downloadUrl": "https://openagent3.xyz/downloads/pinets",
    "agentUrl": "https://openagent3.xyz/skills/pinets/agent",
    "manifestUrl": "https://openagent3.xyz/skills/pinets/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/pinets/agent.md"
  }
}
```
## Documentation

### pinets-cli — Run Pine Script Indicators from the Terminal

pinets is a CLI tool that executes TradingView Pine Script indicators via the PineTS runtime. It outputs structured JSON with calculated indicator values.

### Installation

# Global install
npm install -g pinets-cli

# Or run directly with npx (no install needed)
npx pinets-cli run indicator.pine --symbol BTCUSDT -q

Verify (if installed globally):

pinets --version

When using npx, replace pinets with npx pinets-cli in all examples below.

### Core command

pinets run [file] [options]

The indicator can be a file argument or piped from stdin.

### Data source (one required)

FlagDescription-s, --symbol <ticker>Symbol from Binance (e.g., BTCUSDT, ETHUSDT, SOLUSDT.P for futures)-t, --timeframe <tf>Candle timeframe: 1, 5, 15, 30, 60, 120, 240, 1D, 1W, 1M (default: 60)-d, --data <path>JSON file with candle data (alternative to --symbol)

### Output

FlagDescription-o, --output <path>Write to file instead of stdout-f, --format <type>default (plots only) or full (plots + result + marketData)--prettyPretty-print JSON--cleanFilter out null, false, and empty values from plot data--plots <names>Comma-separated list of plot names to include (default: all)-q, --quietSuppress info messages (essential when parsing stdout)

### Candle control

FlagDescription-n, --candles <N>Number of output candles (default: 500)-w, --warmup <N>Extra warmup candles excluded from output (default: 0)

### Debug

FlagDescription--debugShow transpiled JavaScript code (to stderr)

### Run a .pine file with live Binance data

pinets run indicator.pine --symbol BTCUSDT --timeframe 60 --candles 100 -q

### Run with warmup (important for long-period indicators)

# EMA 200 needs at least 200 bars to initialize
pinets run ema200.pine -s BTCUSDT -t 1D -n 100 -w 200 -q

### Pipe Pine Script from stdin

echo '//@version=5
indicator("RSI")
plot(ta.rsi(close, 14), "RSI")' | pinets run -s BTCUSDT -t 60 -n 20 -q

### Run with custom JSON data

pinets run indicator.pine --data candles.json --candles 50 -q

### Save output to file

pinets run rsi.pine -s BTCUSDT -t 60 -o results.json -q

### Get full execution context

pinets run indicator.pine -s BTCUSDT -f full -q --pretty

### Filter signals with --clean (for signal-based indicators)

# Without --clean: 500 entries, mostly false
pinets run ma_cross.pine -s BTCUSDT -t 1D -n 500 -q

# With --clean: Only actual signals
pinets run ma_cross.pine -s BTCUSDT -t 1D -n 500 --clean -q

### Select specific plots with --plots

# Get only RSI, ignore bands
pinets run rsi_bands.pine -s BTCUSDT --plots "RSI" -q

# Get only Buy and Sell signals
pinets run signals.pine -s BTCUSDT --plots "Buy,Sell" -q

# Combine both: only signals, only true values
pinets run signals.pine -s BTCUSDT --plots "Buy,Sell" --clean -q

### default format

{
  "indicator": {
    "title": "RSI",
    "overlay": false
  },
  "plots": {
    "RSI": {
      "title": "RSI",
      "options": { "color": "#7E57C2" },
      "data": [
        { "time": 1704067200000, "value": 58.23 },
        { "time": 1704070800000, "value": 61.45 }
      ]
    }
  }
}

### full format

Adds result (raw return values per bar) and marketData (OHLCV candles) to the default output.

### JSON data format (for --data)

[
  {
    "openTime": 1704067200000,
    "open": 42000.5,
    "high": 42500.0,
    "low": 41800.0,
    "close": 42300.0,
    "volume": 1234.56,
    "closeTime": 1704070799999
  }
]

Required fields: open, high, low, close, volume. Recommended: openTime, closeTime.

### Pine Script quick reference

pinets-cli accepts standard TradingView Pine Script v5+:

//@version=5
indicator("My Indicator", overlay=false)

// Technical analysis functions
rsi = ta.rsi(close, 14)
[macdLine, signalLine, hist] = ta.macd(close, 12, 26, 9)
sma = ta.sma(close, 20)
ema = ta.ema(close, 9)
bb_upper = ta.sma(close, 20) + 2 * ta.stdev(close, 20)

// Output — each plot() creates a named entry in the JSON output
plot(rsi, "RSI", color=color.purple)

### Important notes

Always use -q when parsing JSON output programmatically.
Warmup matters: Indicators with long lookback periods (SMA 200, EMA 200) produce NaN for the first N bars. Use --warmup to pre-feed the indicator.
time values are Unix timestamps in milliseconds.
Errors go to stderr with exit code 1.
The tool bundles PineTS internally — no additional npm packages are needed at runtime.

### Warmup recommendations

IndicatorMinimum warmupSMA(N) / EMA(N)NRSI(14)30MACD(12,26,9)50Bollinger Bands(20)30SMA(200)200+

Rule of thumb: set warmup to 1.5x-2x the longest lookback period.
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: alaa-eddine
- Version: 1.0.0
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-05-07T03:09:16.651Z
- Expires at: 2026-05-14T03:09:16.651Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/pinets)
- [Send to Agent page](https://openagent3.xyz/skills/pinets/agent)
- [JSON manifest](https://openagent3.xyz/skills/pinets/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/pinets/agent.md)
- [Download page](https://openagent3.xyz/downloads/pinets)