Agent skill

Chart Annotation

by ginlix-ai in ginlix-ai/LangAlpha

Extra guidance for drawchartannotation, which works without loading this.

Apache-2.0Auto-check passed

Install Chart Annotation

skills CLI
$ npx skills add ginlix-ai/LangAlpha --skill chart-annotation -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install ginlix-ai/LangAlpha chart-annotation --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/ginlix-ai/LangAlpha.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/langalpha_deliverables/skills/chart-annotation .claude/skills/chart-annotation && rm -rf skills-src

Use ~/.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/

Facts

Skill name
chart-annotation
GitHub stars
1.8k
Token cost
~2.2k tokens
SKILL.md length
1,067 words
Files
1
Skills in repo
38
Repo updated
First seen
Licence
Apache-2.0

At a glance

Extra guidance for drawchartannotation, which works without loading this.

  • SKILL.md covers When to use, Interactive chart vs. a Python…, Charts are identified by… and Reacting to a user's chart…, plus 3 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Chart Annotation is an agent skill from ginlix-ai/LangAlpha. Extra guidance for drawchartannotation, which works without loading this. Covers choosing between similar variants, aligning times to bars, several charts in one turn, and answering a chart selection the user sends.

Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It works with Python. The repository describes itself as: Claude Code for Financial Market. The licence is Apache-2.0.

Example prompts

  • “/chart-annotation”

Requirements

  • Python 3

What it can do on your machine

Read from SKILL.md and the folder at commit 111a0f6. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are json and python).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Chart Annotation loads about 2.2k tokens when it runs. Until then it costs about 59 tokens; SKILL.md has 1,067 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~59
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k

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.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated 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.

SKILL.md

The full file from ginlix-ai/LangAlpha at commit 111a0f6, republished under its Apache-2.0 licence (© ginlix-ai). 1,067 words, ~2,211 tokens.

Download SKILL.mdSave it as .claude/skills/chart-annotation/SKILL.md (or your agent's skills folder).
name
chart-annotation
description
Extra guidance for draw_chart_annotation, which works without loading this. Covers choosing between similar variants, aligning times to bars, several charts in one turn, and answering a chart selection the user sends.

Chart Annotation Skill

When to use

You want to call out a technical level, a pattern, or an event on a stock's price chart. Drawing directly on the chart is almost always clearer than describing it in prose. Reach for draw_chart_annotation whenever you would otherwise say "look at the level around 205" or "notice the downtrend from October to December".

MarketView is the app's live, trading-chart style price chart page (pan, zoom, switch timeframes). You do not need the user to be on it to annotate. If they are, the drawing appears on their live chart immediately. Anywhere else in the app, the same drawing renders as a chart card in the chat that opens the live chart beside the conversation, so annotate freely whenever it helps, then mention the user can click the card to see it.

Both tools are always available; this guide is how to use them well:

  • draw_chart_annotation — add a single annotation to a chart.
  • manage_chart_annotations — list, remove, or clear annotations.

Interactive chart vs. a Python chart (deliverable)

There are two ways to show price information visually — pick by what the user needs:

  • The annotation tools (interactive). Annotations land on a live, pannable chart: MarketView's, or the one a chart card in the chat opens. Best when the user just wants to see and explore a level, pattern, or event themselves — quick, in-the-moment, nothing to hand off.
  • A Python chart (deliverable). A static image you render with code and embed in a report or document. Best when the output is a deliverable the user keeps, shares, or exports — a research note, PDF, or deck.

The two aren't exclusive: draw on the live chart for a quick look, render a Python chart when it belongs in a written artifact, or do both.

Charts are identified by SYMBOL:timeframe

Every annotation belongs to a chart identified by its ticker + timeframe (e.g. NVDA:1day) — that pair is the chart's id:

  • Pass the same symbol + timeframe again to add to / edit that same chart (annotations accumulate on it).
  • Use a different ticker or timeframe to start a separate chart — so you can draw several charts in one turn (e.g. AAPL:1day and AAPL:1hour, or AAPL:1day and MSFT:1day), each rendered as its own card.

Always pass the ticker the user is discussing. timeframe defaults to 1day; set it to match the interval the user is viewing (one of 1min, 5min, 15min, 30min, 1hour, 4hour, 1day). Annotations are scoped to that one chart instance — a line drawn on NVDA:1day does not appear on NVDA:1hour.

Time format (any annotation with a time field). Pass ISO 8601 datetimes (e.g. 2024-11-14T00:00:00Z) aligned to a bar on the chart — for daily bars, midnight UTC of that day is safest. A time that doesn't land on a bar still renders but may look offset. Applies to trendline, marker, vertical_line, text, event, and fib_retracement.

Reacting to a user's chart selection

A <chart-selection> block in the user's turn means they selected something on the chart and sent it to you. Its selection_type is one of:

  • region — a time×price box. Bounds come as a time range + price range, with the OHLCV bars inside it.
  • price_level — a single horizontal price they tapped.

The user may send several blocks in one turn — treat each independently. A block may carry a User note: line: that is the user's own comment about that selection (separate from their message text) — let it steer what you look for there.

Analyze each bounded area (lean on the supplied bars and/or your market-data path), then, when it helps, draw your read back onto the same symbol + timeframe with draw_chart_annotation — a rectangle over a region, or a price_line at a price_level. Each block already spells out the matching draw_chart_annotation(...) call; adjust it to the level or zone your analysis actually lands on.


Picking the right variant

draw_chart_annotation takes an annotation object discriminated by its type field.

Show full SKILL.md (423 more words)Show less
price_line — horizontal level

Use for anything flat on the y-axis: support, resistance, a target, a stop, an analyst price target, a 52-week high.

json
{
  "type": "price_line",
  "price": 205.0,
  "label": "Resistance 205",
  "style": "dashed"
}
trendline — two anchor points

Use to connect two (time, price) points on the chart: channel tops, pattern boundaries, connecting highs/lows across dates.

json
{
  "type": "trendline",
  "point1": {"time": "2024-10-16T00:00:00Z", "price": 145.2},
  "point2": {"time": "2024-12-20T00:00:00Z", "price": 138.7},
  "label": "Descending trend"
}
marker — single-bar event

Use for a callout at one specific date: earnings beat, entry signal, news event, grade change.

json
{
  "type": "marker",
  "time": "2024-11-14T00:00:00Z",
  "shape": "arrowUp",
  "position": "belowBar",
  "text": "Earnings beat"
}

shape options: arrowUp, arrowDown, circle, square. position options: aboveBar, belowBar, inBar.

vertical_line — a moment in time

Use to mark a single date across the whole chart: an earnings date, a split, an FOMC meeting, the start of a move.

json
{
  "type": "vertical_line",
  "time": "2024-11-14T00:00:00Z",
  "label": "Earnings",
  "style": "dashed"
}
rectangle — a zone

Use for supply/demand zones, consolidation ranges, or any box over a region of the chart. point1 and point2 are two opposite corners (the fill is translucent so candles stay visible).

json
{
  "type": "rectangle",
  "point1": {"time": "2024-10-16T00:00:00Z", "price": 150.0},
  "point2": {"time": "2024-11-20T00:00:00Z", "price": 140.0},
  "label": "Demand zone"
}
text — a free-floating label

Use for a callout that isn't tied to a marker or level. Anchored at a (time, price) point.

json
{
  "type": "text",
  "time": "2024-11-14T00:00:00Z",
  "price": 205.0,
  "text": "Breakout"
}
event — news/event badge with detail

Use when a callout needs more than a one-line label: an earnings report, an acquisition, an analyst upgrade, a product launch. Anchored at a (time, price) point, it shows a short title badge on the chart; the detail (a few sentences) is revealed on hover (desktop) or tap (mobile). Prefer this over marker/text when you want to explain why the event matters.

json
{
  "type": "event",
  "time": "2024-11-14T00:00:00Z",
  "price": 205.0,
  "title": "Q3 earnings beat",
  "detail": "Reported EPS of $1.40 vs $1.25 consensus and raised full-year guidance ~5%. Shares gapped up the next session on the print and the brighter outlook."
}
fib_retracement — Fibonacci levels

Use to map retracement targets of a move. Pass the two ends of the swing (e.g. swing low → swing high); standard levels (0, 0.236, 0.382, 0.5, 0.618, 0.786, 1.0) are drawn between them automatically.

json
{
  "type": "fib_retracement",
  "point1": {"time": "2024-10-16T00:00:00Z", "price": 100.0},
  "point2": {"time": "2024-12-20T00:00:00Z", "price": 200.0},
  "label": "Oct–Dec move"
}

Managing annotations

manage_chart_annotations covers list / remove / clear_all:

python
# See what's there
manage_chart_annotations(symbol="NVDA", action="list")

# Remove specific ones (get ids from `list`)
manage_chart_annotations(symbol="NVDA", action="remove", ids=["ann_ab12..."])

# Wipe everything for the symbol
manage_chart_annotations(symbol="NVDA", action="clear_all")
  • remove requires a non-empty ids list. The tool will reject an empty call.
  • clear_all must not be given ids. Use remove for partial deletion.
  • Existing chart primitives the user set up themselves (52W high, analyst target lines, earnings markers) are not managed by these tools and are never touched by clear_all.

Tips

  • Short labels. Chart space is tight — aim for a few words ("Resistance 205", "Entry", not "Strong resistance level we should watch"). Put the reasoning in the chat message, not the label.
  • One annotation per tool call. If you want three levels, call draw_chart_annotation three times.
  • Clean up stale work. If you drew provisional levels and the conversation moved on, offer to clear_all before drawing a fresh set.
  • No need to flag your drawings. Agent-drawn items render with a subtle dashed style, so the user can already tell them apart from their own — you don't have to call out which annotations you added.

© ginlix-ai, 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

Files

Just SKILL.md in plugins/langalpha_deliverables/skills/chart-annotation of ginlix-ai/LangAlpha.

Open the folder on GitHubat commit 111a0f6

Compare with similar skills

Chart Annotation 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.

Chart Annotation compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Chart Annotation this skillginlix-ai/LangAlpha1.8k—~2.2kAutomated safety check: PassApache-2.0
MCP Server Builderanthropics/skills180k64 repos~2.3kAutomated safety check: PassApache-2.0
PDF Processinganthropics/skills180k48 repos~2kAutomated safety check: PassProprietary
NotebookLM Research AssistantPleasePrompto/notebooklm-skill7.8k14 repos~2.4kAutomated safety check: NotesMIT
Manim Video Productionbrowser-use/video-use28k6 repos~3kAutomated safety check: PassMIT
Code Review ChecklistshareAI-lab/learn-claude-code78k5 repos~1.1kAutomated safety check: PassMIT

Similar skills

  • MCP Server Builder

    anthropics/skills

    Official

    Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.

    180k GitHub starsUsed in 64 repos~2.3k tokens
    Agent WorkflowsAuto-check passed
  • PDF Processing

    anthropics/skills

    Official

    Handles everyday PDF jobs in Python and on the command line: extract text and tables, merge, split, rotate, watermark, fill forms, encrypt and OCR.

    180k GitHub starsUsed in 48 repos~2k tokens
    Documents & OfficeAuto-check passed
  • NotebookLM Research Assistant

    PleasePrompto/notebooklm-skill

    Lets Claude Code ask questions of your Google NotebookLM notebooks through browser automation and return answers grounded in your uploaded sources.

    7.8k GitHub starsUsed in 14 repos~2.4k tokens
    Knowledge ManagementAuto-check: notes
  • Manim Video Production

    browser-use/video-use

    Produces math and technical explainer videos with Manim Community Edition: concept animations, equation derivations, algorithm walkthroughs and data stories.

    28k GitHub starsUsed in 6 repos~3k tokens
    Media & CreativeAuto-check passed
  • Code Review Checklist

    shareAI-lab/learn-claude-code

    Reviews code against a five-part checklist covering security, correctness, performance, maintainability and testing, and reports findings in a fixed format.

    78k GitHub starsUsed in 5 repos~1.1k tokens
    DevelopmentAuto-check passed
  • PPT Master

    hugohe3/ppt-master

    Generates editable PowerPoint decks, rebuilds slides from images, fills .pptx templates and polishes existing presentations through routed workflows.

    58k GitHub starsUsed in 1 repo~2.5k tokens
    Documents & OfficeAuto-check passed

More from ginlix-ai/LangAlpha

All 38 skills in this repo
  • Investment Deck Check

    ginlix-ai/LangAlpha

    Quality-checks an investment deck in .pptx form before it goes out: number consistency, chart and narrative alignment, source coverage, language and a circulation verdict.

    1.8k GitHub stars~3.7k tokensUpdated today
    Auto-check passed
  • Equity Initiation Report

    ginlix-ai/LangAlpha

    Produces a first-time equity research initiation report in five tasks: company research, financial model, valuation, charts and a DOCX report.

    1.8k GitHub stars~3.8k tokensUpdated today
    Auto-check passed
  • Builds or repairs an integrated income statement, balance sheet and cash flow model in Excel with live formulas, supporting schedules, scenarios and a Checks sheet.

    1.8k GitHub stars~5.4k tokensUpdated today
    Auto-check passed
  • Financial Model Checker

    ginlix-ai/LangAlpha

    Audits an existing Excel financial model without editing it, checking structure, formulas, integrity identities and source tie-out, and ends in a prioritized issue log.

    1.8k GitHub stars~4.2k tokensUpdated today
    Auto-check passed
  • DCF Model Builder

    ginlix-ai/LangAlpha

    Builds a live Excel DCF valuation workbook with free cash flow projections, WACC, terminal value, three scenarios, sensitivity grids and a reverse DCF.

    1.8k GitHub stars~7.7k tokensUpdated today
    Auto-check passed
  • Builds Word files with python-docx, edits existing ones in place with tracked changes and comments, then renders and validates the result.

    1.8k GitHub stars~4.8k tokensUpdated today
    Auto-check passed

Works with

Questions about Chart Annotation

What does Chart Annotation do?

Extra guidance for drawchartannotation, which works without loading this. Chart Annotation is an agent skill from ginlix-ai/LangAlpha. Extra guidance for drawchartannotation, which works without loading this.

How do I install Chart Annotation in Claude Code?

Run `npx skills add ginlix-ai/LangAlpha --skill chart-annotation -a claude-code`. Or copy the skill folder (plugins/langalpha_deliverables/skills/chart-annotation in ginlix-ai/LangAlpha) into .claude/skills/chart-annotation in your project. Claude Code loads it when a task matches its description.

How do I install Chart Annotation in Codex?

Run `npx skills add ginlix-ai/LangAlpha --skill chart-annotation -a codex`. Or copy the skill folder (plugins/langalpha_deliverables/skills/chart-annotation in ginlix-ai/LangAlpha) into .agents/skills/chart-annotation in your project. Codex loads it when a task matches its description.

Can I use Chart Annotation in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ginlix-ai/LangAlpha --skill chart-annotation -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/chart-annotation, .gemini/skills/chart-annotation, .github/skills/chart-annotation and .opencode/skills/chart-annotation in your project.

What does Chart Annotation need to run?

SKILL.md names no scripts, command-line tools or credentials: Chart Annotation is instructions for the agent only. Our summary lists: Python 3.

Does Chart Annotation access the network?

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.

Is Chart Annotation safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Chart Annotation use?

Chart Annotation 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.

How many tokens does Chart Annotation use?

About 2.2k tokens (SKILL.md is roughly 8.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Chart Annotation?

Skills that share tags, products or a category with Chart Annotation: MCP Server Builder (anthropics/skills, 180k stars), PDF Processing (anthropics/skills, 180k stars), NotebookLM Research Assistant (PleasePrompto/notebooklm-skill, 7.8k stars) and Manim Video Production (browser-use/video-use, 28k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Chart Annotation?

ginlix-ai (a GitHub organization) maintains it in ginlix-ai/LangAlpha, which has 1,806 GitHub stars. The repository holds 38 skills in this directory. The repository was last updated on October 8, 2026.

Source: ginlix-ai/LangAlpha on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.