🎯

pine-debugger

🎯Skill

from traderspost/pinescript-agents

VibeIndex|
What it does

pine-debugger skill from traderspost/pinescript-agents

πŸ“¦

Part of

traderspost/pinescript-agents(7 items)

pine-debugger

Installation

git cloneClone repository
git clone https://github.com/tosaha/pinescript-agents.git
pip installInstall dependencies
pip install -r requirements.txt
πŸ“– Extracted from docs: traderspost/pinescript-agents
8Installs
42
-
Last UpdatedJan 8, 2026

Skill Details

SKILL.md

Adds debugging capabilities and troubleshoots Pine Script issues in TradingView's opaque environment. Use when scripts have errors, unexpected behavior, need debugging tools added, or require troubleshooting. Triggers on "debug", "fix", "error", "not working", "wrong values", or troubleshooting requests.

Overview

# Pine Script Debugger

Specialized in adding debugging tools and troubleshooting Pine Script code in TradingView's often opaque environment.

Core Responsibilities

Debug Tool Implementation

  • Insert label.new() for value inspection
  • Create table-based variable monitors
  • Add conditional plotting for testing
  • Implement bar_index tracking
  • Create calculation flow visualizers

Issue Identification

  • Detect repainting problems
  • Find calculation errors
  • Identify na value propagation
  • Spot logic flow issues
  • Diagnose performance bottlenecks

TradingView Quirk Handling

  • Deal with undocumented behaviors
  • Work around platform limitations
  • Handle execution model oddities
  • Debug real-time vs historical differences

Common Pine Script Syntax Errors

CRITICAL: Line Continuation Issues

Pine Script does NOT support splitting expressions across multiple lines without proper syntax. This is a frequent source of errors.

WRONG - Will cause "end of line without line continuation" error:

```pinescript

// DON'T DO THIS - Ternary split across lines

dollarsText = priceDiff >= 0 ?

str.format("+${0}", priceDiff) :

str.format("-${0}", math.abs(priceDiff))

```

CORRECT - Keep ternary on one line:

```pinescript

// DO THIS - Entire ternary on one line

dollarsText = priceDiff >= 0 ? str.format("+${0}", priceDiff) : str.format("-${0}", math.abs(priceDiff))

```

Debugging Toolkit

1. Label-Based Debugging

```pinescript

// Debug label showing multiple values

if barstate.islast

debugText = "RSI: " + str.tostring(rsiValue, "#.##") + "\n" + "MA: " + str.tostring(maValue, "#.##") + "\n" + "Signal: " + (buySignal ? "BUY" : "NEUTRAL")

label.new(bar_index, high * 1.05, debugText, style=label.style_label_down, color=color.yellow, textcolor=color.black)

```

2. Table-Based Monitor

```pinescript

// Real-time variable monitor table

var table debugTable = table.new(position.top_right, 2, 10, bgcolor=color.black, border_width=1)

if barstate.islast

table.cell(debugTable, 0, 0, "Variable", bgcolor=color.gray, text_color=color.white)

table.cell(debugTable, 1, 0, "Value", bgcolor=color.gray, text_color=color.white)

table.cell(debugTable, 0, 1, "Bar Index", text_color=color.white)

table.cell(debugTable, 1, 1, str.tostring(bar_index), text_color=color.yellow)

table.cell(debugTable, 0, 2, "Close Price", text_color=color.white)

table.cell(debugTable, 1, 2, str.tostring(close, "#.####"), text_color=color.yellow)

table.cell(debugTable, 0, 3, "Signal Active", text_color=color.white)

table.cell(debugTable, 1, 3, signalActive ? "YES" : "NO", text_color=signalActive ? color.green : color.red)

```

3. Historical Value Tracker

```pinescript

// Track historical values for debugging

var array histValues = array.new()

var array histBarIndex = array.new()

if condition

array.push(histValues, valueToTrack)

array.push(histBarIndex, bar_index)

if array.size(histValues) > 50 // Keep last 50 values

array.shift(histValues)

array.shift(histBarIndex)

// Display historical values

if barstate.islast and array.size(histValues) > 0

for i = 0 to math.min(array.size(histValues) - 1, 10)

label.new(array.get(histBarIndex, i), array.get(histValues, i), str.tostring(array.get(histValues, i)), style=label.style_circle, size=size.tiny)

```

4. Repainting Detector

```pinescript

// Detect potential repainting

var bool repaintDetected = false

var float previousValue = na

if not barstate.isrealtime

if not na(previousValue) and previousValue != value[1]

repaintDetected := true

previousValue := value

if barstate.islast and repaintDetected

label.new(bar_index, high * 1.1, "⚠️ REPAINTING DETECTED", style=label.style_label_down, color=color.red, textcolor=color.white)

```

5. Calculation Flow Tracer

```pinescript

// Trace calculation flow

var string calcFlow = ""

calcFlow := "Step 1: Input = " + str.tostring(input) + "\n"

intermediate1 = input * 2

calcFlow := calcFlow + "Step 2: x2 = " + str.tostring(intermediate1) + "\n"

intermediate2 = intermediate1 + 10

calcFlow := calcFlow + "Step 3: +10 = " + str.tostring(intermediate2) + "\n"

result = intermediate2 / 3

calcFlow := calcFlow + "Step 4: /3 = " + str.tostring(result)

if barstate.islast

label.new(bar_index - 10, high, calcFlow, style=label.style_label_left, size=size.small)

```

Common Issues and Solutions

1. Na Value Propagation

```pinescript

// Debug na propagation

debugNa = "NA Debug:\n"

debugNa := debugNa + "Value1 is " + (na(value1) ? "NA" : "OK") + "\n"

debugNa := debugNa + "Value2 is " + (na(value2) ? "NA" : "OK") + "\n"

debugNa := debugNa + "Result is " + (na(result) ? "NA" : "OK")

```

2. Series vs Simple

```pinescript

// Debug series/simple type issues

// Will show compilation error if mixing types incorrectly

debugSeriesType = ta.sma(close, 10) // series float

debugSimpleType = 10 // simple int

// debugWrong = debugSimpleType[1] // Error: Cannot use [] on simple

```

3. Security Function Issues

```pinescript

// Debug security() calls

[htfValue, htfTime] = request.security(syminfo.tickerid, "D", [close, time])

if barstate.islast

label.new(bar_index, high, "HTF Close: " + str.tostring(htfValue) + "\n" + "HTF Time: " + str.format_time(htfTime, "yyyy-MM-dd HH:mm"))

```

Debugging Workflow

  1. Add Initial Debug Points

- Insert labels at key calculation points

- Add table for monitoring variables

- Plot intermediate values

  1. Trace Execution

- Follow calculation flow

- Check condition evaluations

- Monitor state changes

  1. Identify Issues

- Look for unexpected na values

- Check for repainting

- Verify logic conditions

  1. Test Edge Cases

- First bars behavior

- Real-time vs historical

- Different market conditions

  1. Clean Up

- Comment out debug code

- Or wrap in debug mode flag

Debug Mode Implementation

```pinescript

debugMode = input.bool(false, "Debug Mode", group="Debug")

// Conditional debugging

if debugMode

// All debug code here

label.new(...)

table.cell(...)

```

TradingView's environment is opaque and changes frequently. Always test thoroughly and provide multiple debugging approaches.