pinescript-plugin
Pine Script v6 skills and MCP tooling for coding agents — backed by a real validator, not prose.
Install / Use
claude mcp add jpantsjoha -- npx -y github:jpantsjoha/pinescript-pluginIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
Development & EngineeringSupported Platforms
Tags
Our assessment of pinescript-plugin
pinescript-plugin scores 80/100 on our quality scale, 3613th of 4,658 Development & Engineering skills we index.
Its MCP Server is 12 KB long, well organised into 17 sections with 10 code examples: a thorough specification that gives an agent plenty to work with.
It has 3 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated 28 days ago, so pinescript-plugin is actively maintained.
- No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
- Its trust signals score 75/100, with 3 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
pinescript-plugin compared with similar skills
All 4 of these similar skills score higher than pinescript-plugin; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| pinescript-plugin (this skill)by jpantsjoha | 80 | 3 | 28d ago | MCP Server |
| Agent-Reachby Panniantong | 100 | 106.6k | 5d ago | CLAUDE.md |
| taste-skillby Leonxlnx | 100 | 106.0k | today | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 78.3k | today | CLAUDE.md |
| ai-job-searchby ai-job-search-dev | 100 | 67.6k | 3d ago | CLAUDE.md |
Frequently asked questions
- How do I install pinescript-plugin?
- Run
claude mcp add jpantsjoha -- npx -y github:jpantsjoha/pinescript-plugin. The install tabs above show the steps for each supported agent. - Which AI agents does pinescript-plugin work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is pinescript-plugin safe to use?
- It declares no license and scores 75/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is pinescript-plugin still maintained?
- The repository was last updated 28 days ago, so pinescript-plugin is actively maintained.
Skill content
View source on GitHubpinescript-plugin
Your agent writes Pine Script it cannot check. This gives it a checker.
Eight of these checks catch code that compiles perfectly and still loses money.
Every AI Pine Script tool on the market ships advice. None of them can verify a single line they produce. That gap is the whole reason this exists.
The problem, precisely
Ask any coding agent for a TradingView indicator. You get code that reads fluently and does not compile.
// Confident. Fluent. Four compile errors.
l = line.new(x1=1, y1=2, x2=3, y2=4, colour=color.red) // it is `color`
plotshape(cond, shape=shape.triangleup) // it is `style=`
v = math.clamp(x, 0, 1) // no such function
b = box.new(left=1, top=2, right=3, bottom=4, textalign=text.align_left)
Three properties of Pine make this near-certain:
- Parameter names are not guessable.
label.newtakestextalign.box.newtakestext_halign. Nothing about either implies the other. - Several functions have two valid call forms.
line.new,label.newandbox.neweach accept achart.pointor independent coordinates. A model that has seen one will insist the other is wrong. - The language moves quarterly, in both directions. TradingView added
request.footprint()and multiline strings, then removed the wrapped-line indentation rules in December 2025. Training data goes stale coming and going.
Sparse training data is the root cause, and TradingView say so plainly: the corpus for Python is large enough to generate working code, and for Pine it is not.
The expensive half nobody addresses
Compile errors cost a minute. The real damage is code that compiles and is still
wrong: a repainting signal, a ta.* call inside a conditional quietly corrupting
its own history, a strategy that opens positions and never closes them.
"One overlooked mistake, like a repainting signal or scope error, can invalidate months of backtesting." — PickMyTrade
Prose cannot fix that class of bug, because the author already believes the code is right. Detection can. Nine checks ship today:
| ID | Catches | Severity |
|---|---|---|
| S1 | request.security() reading the current, still-forming bar | Warning |
| S2 | ta.* inside a ternary or block, leaving gaps in its history | Warning |
| S3 | A var accumulator a loop re-adds to every bar and never resets | Warning |
| S5 / S6 | Over 64 plots or 40 request.*() calls | Error |
| S7 | plot / bgcolor / fill outside global scope | Error |
| S8 | A function defined inside a block | Error |
| S9 | strategy.entry with no exit anywhere in the script | Warning |
| S10 | A hard-coded external feed in request.*() without ignore_invalid_symbol | Info |
Considered one and decided it is fine? Silence it:
d = request.security(syminfo.tickerid, "D", close) // pine-ignore: S1
Syntactic errors are never suppressible. A compile failure is a fact, not a judgement.
What you get
| Component | Does |
|---|---|
| validate_pine_script | Runs every check, returns diagnostics with line numbers |
| lookup_pine_reference | The real signature of any v6 built-in, overloads included |
| 4 skills | Language rules, the fix loop, indicator and strategy patterns |
| 1 hook | Validates every .pine file the agent edits, automatically |
Why trust it
The engine is
pinescript-v6-validator,
the same code running inside a VS Code extension with 1,400+ installs at 4.45
stars. Your agent and your editor read from one implementation, so they cannot
disagree about a file.
Behind it: 475 function signatures from the official reference, a hand-maintained layer for everything TradingView shipped since, explicit overload modelling, and a golden corpus proven able to fail. Reintroduce a fixed bug and the build goes red.
Every Pine example in every skill is extracted and run through that validator in CI. A skill shipping code that fails its own checker would be worse than no skill, so the build blocks it.
Plugin, or VS Code extension?
Both. The distinction matters, because getting it wrong is what makes two tools contradict each other.
pinescript-v6-validator (npm) detection lives here, once
|
+------------+------------+
v v
VS Code extension this plugin
surface: humans surface: agents
squiggles, hover MCP, skills, hook
A check is written once, in the engine. The extension renders it as a squiggle. This plugin returns it to the model. Neither reimplements it. The moment the same rule exists twice they drift, and a drifted rule means your agent and your editor disagree about the same file.
Skills are plugin-only. Prose is useless in an editor and is the whole point for an agent. Editor affordances such as formatting and go-to-definition stay in the extension.
Install
One plugin, four coding assistants. Skills live in skills/; each harness reads
its own manifest. The validation engine comes from
pinescript-v6-validator
on npm — no separate checkout required.
Claude Code
/plugin marketplace add jpantsjoha/pinescript-plugin
/plugin install pinescript-plugin@pinescript-plugin-marketplace
Antigravity (Gemini)
agy plugin install https://github.com/jpantsjoha/pinescript-plugin
Codex
codex plugin marketplace add https://github.com/jpantsjoha/pinescript-plugin
codex plugin add pinescript-plugin@pinescript-plugin-marketplace
Codex reads AGENTS.md as its always-on contract and discovers skills under
.agents/skills/.
Kimi Code
Kimi reads .kimi-plugin/plugin.json. Point it at the skills directly:
git clone https://github.com/jpantsjoha/pinescript-plugin
kimi --skills-dir ./pinescript-plugin/skills
Verify the install
Ask your agent to validate something deliberately wrong:
//@version=6
indicator("check")
l = line.new(x1=1, y1=2, x2=3, y2=4, colour=color.red)
You should get No parameter named 'colour' in 'line.new'. If instead you are
told the script is fine, the MCP server is not connected — check your harness's
MCP configuration.
Harness support
Every row below was verified by installing and running the tools, not by reading a manifest.
| | Skills | MCP tools | Hook |
|---|:---:|:---:|:---:|
| Claude Code | ✅ | ✅ | ✅ |
| Antigravity | ✅ | ✅ | — (harness has no hook support) |
| Codex | ✅ | ✅ | — |
| Kimi Code | ✅ (via --skills-dir) | ✅ | — |
Antigravity auditing a script through the plugin, and finding the repainting the author did not:

Two things are worth noticing. The model calls the plugin's own
validatePineScript rather than reasoning about the code from memory — the
verdict comes from the engine, not from the model's recollection of Pine. And it
does not paraphrase the warning: it names the check, states the mechanism
(reading a still-forming higher-timeframe bar), and gives the specific edit.
That is the difference between a skill that explains a diagnostic and one that merely mentions it.
Working on the plugin itself
git clone https://github.com/jpantsjoha/pinescript-plugin
cd pinescript-plugin && npm install && make hooks
make gate # spec · packaging · skills · links · Pine examples · MCP tests
What's in it
skills/pinescript-v6/ execution model, overloads, anti-repainting, limits
skills/pinescript-validation/ every diagnostic class and its deterministic fix
skills/pinescript-indicator/ validated scaffolds: overlay, oscillator, drawings
skills/pinescript-strategy/ entries, exits, sizing, and the repainting traps
mcp/server.js validate_pine_script + lookup_pine_reference
hooks/ validates every .pine file the agent edits
scripts/ spec, packaging, skill, link and example validation
tests/ MCP behaviour tests
make gate runs everything: Agent Plugins 1.0.0 conformance, multi-client
packaging consistency, skill frontmatter contracts, reference-URL resolution,
embedded Pine validation, and the MCP behaviour tests.
What this does not do yet
Stating it plainly beats you finding out.
- Only constant namespaces have their member names checked. Since engine
0.4.x,
shape.trianglup,color.grene,plot.style_circlezandbarstate.islasttare errors. Variables in namespaces without a complete member list —syminfo.*,timeframe.*,chart.*, and non-call members ofta.*such asta.tr— are not checked, sosyminfo.tickeriddandta.trrstill validate clean. (Misspelled function calls, such asta.smaa(...), are errors.)lookup_pine_referencecovers functions only, so afound: falseforbarstate.islastmeans "not a function", not "not real". - One check is specified but not built. S4 (assignment inside
and/or) is a heuristic about intent. Until its false-positive rate measures at zero it stays out. The related shape — ata.*call on the right ofand/or, which v6 short-circuits into a conditional call — escapes S2 for the same reason. - Re-declaring a name with
=is a TradingView error and passes here. - No type inference. A
seriesvalue passed wheresimpleis required compiles here and fails on TradingView. The one type rule (engine 0.4.x): a declared type is checked against a single directinput.*()call, soint x = input.float(1.0)is an error. Fixing that needs an AST the engine does not have. - Hooks work in Claude Code only. Antigravity, Codex and Kimi get the skills and the MCP tools. Their harnesses do not load the hook.
- A clean validation is not proof the script is right. It means no known defect matched. Backtest assumptions, unconfirmed-bar entries and position sizing remain yours to check.
Related projects
| Project | What it is | |---|---| | pinescript-vscode-extension | The VS Code extension — IntelliSense, hover docs, real-time validation. Source of the engine this plugin uses. | | googlecloud-plugin | Same plugin architecture applied to Google Cloud delivery — solution design, security, SRE, agentic patterns. |
Prior art
TradersPost/pinescript-agents covers similar ground with seven skills and is worth a look. double232/pinescript-skill is one deep skill with a good catalogue of hard language constraints.
The claim here is narrow and checkable. Both are
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
106.6kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
taste-skill
106.0kAgent skills that give coding agents taste: art direction, reference images and a browser check instead of generic AI pages
headroom
78.3kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
ai-job-search
67.6kThe job search that runs on your machine. AI job application framework built on Claude Code: evaluate postings, tailor CVs, write cover letters, prep interviews. Fork it and own it.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
