Web3 Polymarket
Polymarket/agent-skills
Polymarket integration for prediction market trading on Polygon.
Build a full trading terminal on openalgo-charts - symbol search, interval switcher, chart-type picker, indicator menu, drawing rail with clipboard, live OpenAlgo REST plus WebSocket data behind a…
$ npx skills add marketcalls/openalgo-charts --skill openalgo-chart-terminal -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install marketcalls/openalgo-charts openalgo-chart-terminal --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/marketcalls/openalgo-charts.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.github/skills/openalgo-chart-terminal .claude/skills/openalgo-chart-terminal && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "openalgo-chart-terminal" agent skill from https://github.com/marketcalls/openalgo-charts/tree/master/.github/skills/openalgo-chart-terminal into .claude/skills/openalgo-chart-terminal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openalgo-chart-terminal", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/marketcalls/openalgo-charts/tree/master/.github/skills/openalgo-chart-terminalType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add marketcalls/openalgo-charts --skill openalgo-chart-terminal -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install marketcalls/openalgo-charts openalgo-chart-terminal --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/marketcalls/openalgo-charts.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.github/skills/openalgo-chart-terminal .agents/skills/openalgo-chart-terminal && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "openalgo-chart-terminal" agent skill from https://github.com/marketcalls/openalgo-charts/tree/master/.github/skills/openalgo-chart-terminal into .agents/skills/openalgo-chart-terminal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openalgo-chart-terminal", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add marketcalls/openalgo-charts --skill openalgo-chart-terminal -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install marketcalls/openalgo-charts openalgo-chart-terminal --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/marketcalls/openalgo-charts.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.github/skills/openalgo-chart-terminal .cursor/skills/openalgo-chart-terminal && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "openalgo-chart-terminal" agent skill from https://github.com/marketcalls/openalgo-charts/tree/master/.github/skills/openalgo-chart-terminal into .cursor/skills/openalgo-chart-terminal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openalgo-chart-terminal", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/marketcalls/openalgo-charts.git --path .github/skills/openalgo-chart-terminal--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add marketcalls/openalgo-charts --skill openalgo-chart-terminal -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install marketcalls/openalgo-charts openalgo-chart-terminal --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/marketcalls/openalgo-charts.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.github/skills/openalgo-chart-terminal .gemini/skills/openalgo-chart-terminal && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "openalgo-chart-terminal" agent skill from https://github.com/marketcalls/openalgo-charts/tree/master/.github/skills/openalgo-chart-terminal into .gemini/skills/openalgo-chart-terminal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openalgo-chart-terminal", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install marketcalls/openalgo-charts openalgo-chart-terminalInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add marketcalls/openalgo-charts --skill openalgo-chart-terminal -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/marketcalls/openalgo-charts.git skills-src && mkdir -p .github/skills && cp -r skills-src/.github/skills/openalgo-chart-terminal .github/skills/openalgo-chart-terminal && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "openalgo-chart-terminal" agent skill from https://github.com/marketcalls/openalgo-charts/tree/master/.github/skills/openalgo-chart-terminal into .github/skills/openalgo-chart-terminal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openalgo-chart-terminal", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add marketcalls/openalgo-charts --skill openalgo-chart-terminal -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install marketcalls/openalgo-charts openalgo-chart-terminal --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/marketcalls/openalgo-charts.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.github/skills/openalgo-chart-terminal .opencode/skills/openalgo-chart-terminal && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "openalgo-chart-terminal" agent skill from https://github.com/marketcalls/openalgo-charts/tree/master/.github/skills/openalgo-chart-terminal into .opencode/skills/openalgo-chart-terminal/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "openalgo-chart-terminal", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
openalgo-chart-terminalBuild a full trading terminal on openalgo-charts - symbol search, interval switcher, chart-type picker, indicator menu, drawing rail with clipboard, live OpenAlgo REST plus WebSocket data behind a…
Openalgo Chart Terminal is an agent skill from marketcalls/openalgo-charts. Build a full trading terminal on openalgo-charts - symbol search, interval switcher, chart-type picker, indicator menu, drawing rail with clipboard, live OpenAlgo REST plus WebSocket data behind a warm-load bar cache, on-chart order lines with drag-to-modify, market depth, a settings dialog and context menu, market replay, symbol comparison, a linked split view, and layout persistence. Use when the user asks for a trading terminal, a charting workstation, on-chart trading, a linked chart grid, or to wire orders…
Its SKILL.md is about 3.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Backend & APIs, covering Trading and backtesting, Codebase onboarding and Realtime and WebSockets. It works with React. The repository describes itself as: Production-grade charts built for brokers, exchanges, trading platforms, and financial portals. Bring your own market data, plug it in, and deliver a complete charting experience… The licence is Apache-2.0.
12 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 8b4cffe. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
ReadWriteEditBashGlobGrepFrom allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Openalgo Chart Terminal loads about 3.8k tokens when it runs. Until then it costs about 139 tokens; SKILL.md has 1,884 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, Write, Edit, Bash, Glob, GrepAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from marketcalls/openalgo-charts at commit 8b4cffe, republished under its Apache-2.0 licence (© marketcalls). 1,884 words, ~3,772 tokens.
.claude/skills/openalgo-chart-terminal/SKILL.md (or your agent's skills folder).Build or extend a terminal. This is the largest thing you can build with this library, so build it in the order below and get each layer working before starting the next.
Two working references exist. Read the one closer to the user's stack before writing code:
examples/yfinance/index.html in the openalgo-charts repo - a native-ESM terminal shell with modules under src/, no framework.frontend/src/components/trading/ChartPane.tsx and frontend/src/lib/trading/terminal.ts in the OpenAlgo application repo - a production React terminal. Its central lesson: keep chart orchestration in a plain TypeScript module and let React own only the DOM shell.For async startup, pagination, replay entry/exit and concurrent registration, read host-integration. The widget already implements its documented reconnect recovery; a custom terminal must protect every data writer, including polling and older-history responses.
For an Objects panel, use the base-tier ChartObjects inventory described in
core-api. Own one model per live chart
generation, route drawing actions through its existing controller, and destroy the
model before replacing the chart. Register profile capabilities explicitly; order
and position primitives are outside the inventory. Persist indicator visible with
its settings, defaulting older layouts to true. A custom React panel should clear old
rows immediately when its focused chart changes. Packaged hosts can use
widget.openObjects() and the existing editors.
import { createChart, darkTheme, OpenAlgoLiveDataFeed } from 'openalgo-charts';
const chart = createChart(el, { theme: darkTheme, crosshairMode: 'magnet' });
const price = chart.addSeries('candlestick');
const volume = chart.addSeries('histogram', { paneIndex: 1 });Load history, then subscribe, seeding the builder from the last historical bar so the live candle continues its bucket instead of starting a fresh one. See feeds-and-live.
Wrap the feed in withBarCache before anything else touches it. A terminal reloads the same series constantly (symbol flicking, interval pills, a page refresh), and the wrapper turns those into warm reads. It never stores the forming bar, so what comes back is short by at most the bar the live subscription is about to send you anyway.
const feed = withBarCache(new OpenAlgoLiveDataFeed(cfg), { ttlMs: 60_000 });Two things a terminal has to do itself. Show the verdict: a status line saying "warm 1 ms" against "fetched 320 ms" is the only way anyone can tell the cache is working, and feed.stats() gives you the hits. And cap to at the newest bar that can exist when the venue is shut: a hit past the entry's coverage is only allowed while the next bar is still forming, and the cache cannot know a market is closed, so out of hours every load is cold without the cap. You already have a session table for the clock; reuse it.
Switching either one is a full data reload, not a chart rebuild. Tear down the old subscription first, then setData, then resubscribe. Do not create a second chart.
Every code on the interval pills must resolve. s/m/h/d/w are built in; anything else (monthly, quarterly, a 500-tick bar) is a registerInterval call carrying a Bucketing rule, and an unregistered code now throws UnknownIntervalError at subscribe time rather than quietly drawing minute bars. Validate with isKnownInterval when the code can come from the user, and bucket calendar codes with bucketStartOf, never with a seconds-per-month constant: a month is 28 to 31 days and a New York month is not a Mumbai month.
registerInterval({ code: '1MO', bucketing: { mode: 'calendar', unit: 'month', count: 1 } });Switch the clock with the symbol. chart.setTimezone(zoneForExchange(exchange)) takes an IANA name (default Asia/Kolkata) and moves the axis labels, the crosshair tag and every session-anchored study, so a US symbol stops restarting its VWAP in the middle of the afternoon. Hold the chosen zone in your own state if anything in the terminal rebuilds the chart, and offer it as a control: a user watching a US symbol from Mumbai may want either clock. The settings schema ships that control (time.timezone, step 10), so mirror the zone rather than building a second picker. It throws on a name the runtime does not know, so guard user input with isValidTimezone. See data-and-time.
chart.setHistoryLoader(fn) fires when the user pans past the left edge. Fetch older bars, series.prependData(older), then chart.historyLoadComplete(). Prepending shifts logical indices but the visible window is preserved - do not re-fit.
For a recent-bar default, use navigation.defaultVisibleBars and resetScale() after a
symbol load that should adopt it. This is independent of the REST lookback. An explicit
saved viewport still applies after data. Keep paging behind a request-owner guard so an
old response or finally cannot alter a replacement chart or a newer request.
The picker maps a label to a SeriesType. Renko, Range, Line Break and Heikin Ashi transform the bars you pass to an ordinary series; Point and Figure and Kagi need import 'openalgo-charts/transform' for their renderers. See transforms.
import 'openalgo-charts/indicators', then a menu built from registeredIndicators(). The gear on a pane legend emits indicatorSettings - open your own dialog generated from the descriptor. See indicators.
import { DrawingController } from 'openalgo-charts/draw';
const draw = new DrawingController(chart, { magnet: true });
draw.setTool('trend-line');The controller is headless. Build the rail from registeredDrawingTools() and show the chord from drawingShortcuts() beside each name. The library installs no key listener - call matchDrawingShortcut(event) from your own handler, gated on the chart having focus and no dialog being open. See drawing-tools.
Wire Ctrl+C / Ctrl+X / Ctrl+V to draw.copy(), draw.cut() and draw.paste() in the same handler, and show the chords in the drawing's right-click menu. All three are async: await the cut, because it deletes only after the clipboard write succeeds and its boolean is the difference between "gone" and "still there". A paste of foreign clipboard content resolves to an empty array rather than throwing, so treat that as nothing to paste, not as an error to report.
Two distinct layers. Get this right or you will build the wrong one.
| Need | Layer |
|---|---|
| Draw positions, working orders, brackets, fills; let the user drag them | chart.trading in the base bundle |
| Actually place, modify and cancel with a broker | OrderEngine from openalgo-charts/trade |
The loop is: push exchange state into chart.trading, the user drags a line, the chart emits a trading:* event, your handler calls the broker, the broker's response comes back as new exchange state which you push in again. The chart is never the source of truth. See trading and trade-tier.
Ship analyzer/sandbox mode first and default to it. Nothing should reach a live broker until the user explicitly arms it.
DomLadder from the trade tier, fed by subscribeDepth on the feed. Levels range from 5 to 200 depending on what the broker streams.
localStorage.setItem('layout', JSON.stringify(chart.getState()));
chart.restoreState(JSON.parse(localStorage.getItem('layout')!));One payload covers viewport, grid, panes, price scales, indicator instances, drawings and the settings block (canvas, status line, trading colours, event filters). Indicators whose tier is not loaded are skipped on restore rather than throwing, so restore after your tier imports. See events-and-state.
const tabs = chartSettingsSchema(chart); // render these
applyChartSettings(chart, { 'canvas.grid.vertLines': false }); // patch on change
chart.on('contextmenu', (e) => { (e as ContextMenuEvent).preventDefault(); showMenu(e); });Render the tabs from the schema rather than hardcoding controls: the inputs are the IndicatorInput union your indicator settings form already handles plus one extra kind, colorPair, and every control maps to a real option. Five tabs: Price, Readout, Axes, Appearance, Trading. See settings-and-menus.
Build the colorPair widget before anything else in the dialog. It is a bullish/bearish pair on one labelled row (switch, up swatch, down swatch), and it is what keeps a dense tab fitting without a scrollbar. Its enabled half is optional: a candle Body has no visibility flag, so that row renders with two swatches and an empty switch slot rather than a checkbox that does nothing.
The timezone is a schema control now, time.timezone on the Axes tab. Drive it through applyChartSettings like every other key and let Cancel restore it with the rest; do not add a second zone row of your own.
A menu raised on a price axis is the other half of step 10. It is a branch of the same handler, not a second listener:
chart.on('contextmenu', (e) => {
const ev = e as ContextMenuEvent;
if (ev.target.kind !== 'price-scale') return;
ev.preventDefault();
renderAxisMenu(ev.point, chart.priceAxisState(ev.paneIndex, ev.target.scaleId ?? 'right'));
});Every row it draws is readable back from priceAxisState and actionable through setPriceAxisOptions, setPriceAxisAutoFit, setPriceAxisLockRatio and movePriceAxis, so no row is drawn with a checkmark and nothing behind it. Reference levels (previous close, session high and low) belong in the same menu, driven by a PriceLevels primitive: each level's plot line and axis tag are two flags in one group, and a level whose available(kind) is false is a disabled row, not a missing one.
Hold your chrome to the UI standard in themes-and-styling: styled scrollbars on every dark surface, colour inputs as small squares, paired colours on one row, themed checkboxes and selects, tab glyphs, and no control with nothing behind it.
const replay = new ReplayController(chart, { bars, startIndex, barMs: 500 });
addComparison(chart, { symbol: 'BANKNIFTY', bars: otherBars });Both are headless: draw the transport bar from replay.state() plus the replay:* events, and the symbol chips from list(). Detach the live feed while replaying, and pass every series on the timeline (volume included) to the replay controller. See replay-and-compare.
A second chart is the one place rule 1 does not apply: a split view is genuinely two Chart instances, each with its own symbol picker, interval pills and feed subscription, joined by a link group.
const group = createLinkGroup({ crosshair: true, viewport: true, symbol: false });
group.add(chartA, { symbol: symA, onSymbol: (s, c) => load(s, c) });
group.add(chartB, { symbol: symB, onSymbol: (s, c) => load(s, c) });Do not write your own sync. Copying one chart's getVisibleLogicalRange() onto the other is the bug this feature exists to prevent: the logical index belongs to that chart's own bars, so it is a different instant on a chart with a different interval or a different history depth. The group converts through time on both sides.
Three switches in the link menu, one per channel, plus the nearest/hide choice for an instant the follower has no bar for. Symbol sync needs a per-member onSymbol that loads bars, or the switch does nothing; a member without one is your "pin this chart" affordance rather than an omission.
Suspend viewport sync while a member loads its first dataset. Letting a fresh follower's fitContent broadcast throws the leader off the window the user was on (fitContent emits zoom/pan like a gesture does since 1.4.0), and adopting the leader's window instead can leave a month of hourly bars as a sliver. Turn it off for the load, turn it back on, and let the two converge on the first pan. See chart-linking.
Destroying a split pane is chart.destroy(): the group notices the 'destroy' event and prunes the member itself, so there is no bookkeeping to forget.
Typecheck, then drive the real thing: switch symbol, switch interval, pan left until history loads, add an indicator, place a drawing, copy it and paste it, reload the page and confirm the layout came back and the second load reported warm. If you built the split view, open it on a different interval from the first chart and check that the linked crosshair lands on the bar at the same clock time, not on the same bar number. Report which of these you actually exercised and which you could not.
© marketcalls, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .github/skills/openalgo-chart-terminal of marketcalls/openalgo-charts.
Open the folder on GitHubat commit 8b4cffe
Openalgo Chart Terminal next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Openalgo Chart Terminal this skillmarketcalls/openalgo-charts | 146 | — | ~3.8k | Automated safety check: Notes | Apache-2.0 | |
| Web3 PolymarketPolymarket/agent-skills | 192 | 1 repos | ~2k | Automated safety check: Pass | None | |
| Cryptofeed2025Emma/vibe-coding-cn | 23k | 1 repos | ~1.6k | Automated safety check: Pass | MIT | |
| Tiger Brokers C++ OpenAPI SDKqusong0627/QuantMind | 1.7k | — | ~942 | Automated safety check: Pass | Apache-2.0 | |
| Polymarket2025Emma/vibe-coding-cn | 23k | 1 repos | ~1.6k | Automated safety check: Pass | MIT | |
| Dflowsendaifun/skills | 130 | 1 repos | ~5.7k | Automated safety check: Pass | Apache-2.0 |
Polymarket/agent-skills
Polymarket integration for prediction market trading on Polygon.
2025Emma/vibe-coding-cn
Cryptofeed - Real-time cryptocurrency market data feeds from 40+ exchanges.
qusong0627/QuantMind
Guides an agent through the Tiger Brokers OpenAPI C++ SDK for build setup, market data, orders and real-time push, defaulting to paper trading.
2025Emma/vibe-coding-cn
Comprehensive Polymarket skill covering prediction markets, API, trading, market data, and real-time WebSocket data streaming.
sendaifun/skills
Complete DFlow trading protocol SDK - the single source of truth for integrating DFlow on Solana.
LeoYeAI/openclaw-master-skills
Complete autonomous trading engine for Binance with WebSocket real-time, OCO orders, Kelly Criterion position sizing, trailing stops, circuit breakers, daily performance reports, AND NOW adaptive…
marketcalls/openalgo-charts
Diagnose an openalgo-charts problem - blank or invisible chart, bars in the wrong place, unknown series type or indicator errors, misaligned indicators, drawings that drift, a chart that will not…
marketcalls/openalgo-charts
Add a built-in openalgo-charts indicator, restyle it, build a settings UI from its descriptor, or author a custom indicator with registerIndicator or the Tier-2 external-data contract.
marketcalls/openalgo-charts
Extend openalgo-charts with a custom primitive, drawing tool, chart type, or indicator descriptor.
marketcalls/openalgo-charts
Scaffold a working openalgo-charts chart in an existing project - detects the host (React, Next.js, Vue, vanilla bundler, or plain script tag), installs the right tiers, and writes a chart that…
marketcalls/openalgo-charts
A skill your agent uses when building, configuring, extending or debugging openalgo-charts in a consumer app or the source repository, including chart navigation, drawing tools, indicators…
Works with
Categories
Build a full trading terminal on openalgo-charts - symbol search, interval switcher, chart-type picker, indicator menu, drawing rail with clipboard, live OpenAlgo REST plus WebSocket data behind a…. Openalgo Chart Terminal is an agent skill from marketcalls/openalgo-charts. Build a full trading terminal on openalgo-charts - symbol search, interval switcher, chart-type picker, indicator menu, drawing rail with clipboard, live OpenAlgo REST plus WebSocket data behind a warm-load bar cache, on-chart order lines with drag-to-modify, market depth, a settings dialog and context menu, market replay, symbol comparison, a linked split view, and layout persistence.
Openalgo Chart Terminal fits situations like: the user asks for a trading terminal; A charting workstation; on-chart trading; A linked chart grid.
Run `npx skills add marketcalls/openalgo-charts --skill openalgo-chart-terminal -a claude-code`. Or copy the skill folder (.github/skills/openalgo-chart-terminal in marketcalls/openalgo-charts) into .claude/skills/openalgo-chart-terminal in your project. Claude Code loads it when a task matches its description.
Run `npx skills add marketcalls/openalgo-charts --skill openalgo-chart-terminal -a codex`. Or copy the skill folder (.github/skills/openalgo-chart-terminal in marketcalls/openalgo-charts) into .agents/skills/openalgo-chart-terminal in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add marketcalls/openalgo-charts --skill openalgo-chart-terminal -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/openalgo-chart-terminal, .gemini/skills/openalgo-chart-terminal, .github/skills/openalgo-chart-terminal and .opencode/skills/openalgo-chart-terminal in your project.
SKILL.md names no scripts, command-line tools or credentials: Openalgo Chart Terminal is instructions for the agent only. Its frontmatter pre-approves these tools: Read, Write, Edit, Bash, Glob, Grep.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Openalgo Chart Terminal is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Openalgo Chart Terminal: Web3 Polymarket (Polymarket/agent-skills, 192 stars), Cryptofeed (2025Emma/vibe-coding-cn, 23k stars), Tiger Brokers C++ OpenAPI SDK (qusong0627/QuantMind, 1.7k stars) and Polymarket (2025Emma/vibe-coding-cn, 23k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
marketcalls (a GitHub user) maintains it in marketcalls/openalgo-charts, which has 146 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on October 1, 2026.
Source: marketcalls/openalgo-charts on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.