deeleeramone/pywry/tvchart
Claude Code and agent skill by deeleeramone/pywry
- community
Checking that the SKILL.md file is still in the repository.
Drive a live TradingView Lightweight Charts widget end-to-end via PyWry MCP tools — symbol, interval, indicators, markers, price lines, layouts, state.
Install
npx vskill@latest install deeleeramone/pywry/tvchartSKILL.md
TradingView Chart — Agent Reference
**Use this when an agent needs to read or mutate a livetvchartwidget.** Every action is an MCP tool call on the PyWry FastMCPserver — there are no local helpers, no side channels, no customtools. Pick the typed tool that matches the user's intent, pass therequired arguments, and quote the tool's return values in yourreply.
Every tool takes widget_id
widget_id identifies which chart to operate on. On a single-chart server the framework auto-resolves it from the registry; on a multi-chart server you must pass it explicitly. Read the value from the user's @<name> attachment (the chat prepends --- Attached: <name> ---\nwidget_id: <id>) or call list_widgets() to enumerate.
Reading chart state — always via tvchart_request_state
Never report symbol / interval / indicators / bars / last close from memory. Call the tool, quote the return.
When the user asks "what's on the chart", "what's the current price", "what indicators are applied", call this and quote from state.
Mutating tools — all confirm the change
Every mutation returns the real post-change state. The model never has to guess whether the change took effect. If the mutation didn't land within the settle window, the tool includes a note field — relay it to the user.
Symbol change
Use this to switch the ticker. auto_select=True commits the selection; auto_select=False just opens the search dialog for the user. The tool polls chart state until the symbol actually changes to the target (up to ~6s) so the return reflects reality.
Pass symbol_type to narrow the datafeed search to a specific security class — values come from the datafeed, typically equity, etf, index, mutualfund, future, cryptocurrency, currency. Use it whenever the user's query is ambiguous: SPY with symbol_type="etf" resolves to the SPDR S&P 500 ETF instead of picking a near-prefix equity like SPYM. exchange narrows to a specific venue the same way. Both are case-insensitive; unknown values are silently dropped rather than erroring.
Interval / timeframe
Valid values: 1m 3m 5m 15m 30m 45m 1h 2h 3h 4h 1d 1w 1M 3M 6M 12M. Tool confirms the change via state polling.
Indicators
Supported names: SMA, EMA, WMA, RSI, ATR, VWAP, Bollinger Bands, plus the rest of the built-in library. period defaults to a sensible value per indicator; override when the user asks.
Compare-derivative indicators
Spread, Ratio, Sum, Product, Correlation require a secondary series — a second ticker to spread/ratio/etc. against the main series. The flow is two steps:
- Call
tvchart_compare(widget_id, query="<ticker>")to add the
secondary ticker as a compare series and confirm it landed in state.compareSymbols.
- Call
tvchart_add_indicator(widget_id, name="Spread", ...). The
chart picks up the most recent compare series as the secondary automatically; pass source / method / multiplier to tune.
State reporting for these indicators:
state.indicators[i].typeis"spread"/"ratio"/ etc.state.indicators[i].secondarySeriesId— the compare seriesId.state.indicators[i].secondarySymbol— the ticker it resolves to
(this is what the user actually cares about when you describe the indicator).
state.indicatorSourceSymbols— the compare-series map restricted
to indicator inputs; these are NOT user-facing compares (they're hidden from the Compare panel). Don't conflate with state.compareSymbols when listing "what's compared on the chart".
If the user asks "what's on the chart" for a chart with a Spread against MSFT, quote it as Spread(AAPL, MSFT) using the indicator's secondarySymbol, not the raw seriesId.
Chart type / rendering
Visible range / zoom
Markers and price lines
Use markers for signals / events on specific bars. Use price lines for support / resistance / targets (horizontal lines across the whole chart).
Drawing tools
History and layout
Misc UI
Adding a compare overlay
query is the ticker to add. Pass symbol_type to disambiguate: SPY without it may resolve to SPYM (a near-prefix equity); symbol_type="etf" routes it to the SPDR ETF. exchange narrows to a specific venue. Both are case-insensitive and silently dropped when the datafeed doesn't know the value.
The tool polls state.compareSymbols for up to ~10s (compares require a full datafeed round-trip) before reporting a note. Calling tvchart_compare(widget_id) with no query just opens the dialog for the user — no state confirmation.
Series and bar updates (non-datafeed mode)
Use these only when the chart is NOT in datafeed mode (the datafeed manages its own streams). In datafeed mode, new symbol / interval data is fetched automatically via tvchart:data-request — don't try to push bars yourself.
Last-resort escape hatch
If no typed tool exists for a specific event, use:
Event types are namespaced tvchart:<event-name>. This is a raw passthrough — prefer the typed tools above in every other case.
Don'ts
- Do NOT fabricate chart state, bars, or timestamps. Call the tool.
- Do NOT emit "Updated Chart State" or "Chart Update Response"
pseudo-JSON blocks in replies — only quote real tool returns.
- Do NOT guess a
widget_id— read it from the attachment or call
list_widgets().
- Do NOT call
send_eventwhen a typed tool already exists for the
event.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingpywry/pywry/mcp/skills/tvchart/SKILL.md
Popularity
- Repository stars
- 89
- Repository forks
- 7
- 7-day trend score
- 22
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/deeleeramone/pywry/tvchart)