mcpField
P
plotext-financial-chart

plotext-financial-chart

github.com/terrylicaData & databases1145 installsUpdated 1d ago
Repository

About plotext-financial-chart

A skill for creating ASCII financial line charts with plotext for GitHub Flavored Markdown. It is intended for documentation and trading visualizations, with settings and embedding rules aimed at readable text output.

Key features

  1. 01Creates ASCII line charts with plotext
  2. 02Uses GitHub-safe dot markers
  3. 03Removes ANSI escape codes
  4. 04Provides chart rendering and embedding rules
  5. 05Includes troubleshooting guidance

Use cases

  1. 01Add price charts to Markdown documentation
  2. 02Illustrate trading barriers and thresholds
  3. 03Visualize financial data in terminal-friendly text

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/terrylica/cc-skills --skill plotext-financial-chart

After installing, type/plotext-financial-chartin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
api-and-patterns.md
evolution-log.md
tool-selection.md

Details

From the project README

Plotext Financial Chart Skill

Create ASCII financial line charts for GitHub Flavored Markdown using plotext with dot marker (•). Pure text output — renders correctly on GitHub, terminals, and all monospace environments.

Self-Evolving Skill: This skill improves through use. If instructions are wrong, parameters drifted, or a workaround was needed — fix this file immediately, don't defer. Only update for real, reproducible issues.

When to Use This Skill

  • Adding price path / line chart diagrams to markdown documentation
  • Visualizing trading concepts (barriers, thresholds, entry/exit levels)
  • Any GFM markdown file needing financial data visualization
  • User mentions "financial chart", "line chart", "price chart", "plotext", or "trading chart"

NOT for: Flowcharts or architecture diagrams.

Preflight Check

All-in-One Preflight Script
/usr/bin/env bash << 'PREFLIGHT_EOF'
python3 --version &>/dev/null || { echo "ERROR: Python 3 not found"; exit 1; }
if command -v uv &>/dev/null; then PM="uv pip"
elif command -v pip3 &>/dev/null; then PM="pip3"
else echo "ERROR: Neither uv nor pip3 found"; exit 1; fi
python3 -c "import plotext" 2>/dev/null || { echo "Installing plotext via $PM..."; $PM install plotext; }
python3 -c "
import plotext as plt, re
plt.clear_figure()
plt.plot([1,2,3], [1,2,3], marker='dot')
plt.plotsize(20, 5)
plt.theme('clear')
output = re.sub(r'\x1b\[[0-9;]*m', '', plt.build())
assert '•' in output
" && echo "✓ plotext ready (dot marker verified)"
PREFLIGHT_EOF

Quick Start

import re
import plotext as plt

x = list(range(20))
y = [97, 98, 100, 101, 100, 98, 100, 101, 102, 101,
     100, 98, 100, 101, 102, 103, 102, 101, 100, 100]

plt.clear_figure()
plt.plot(x, y, marker="dot", label="Price path")
plt.hline(103)    # Upper barrier
plt.hline(97)     # Lower barrier
plt.hline(100)    # Entry price
plt.title("Triple Barrier Method")
plt.xlabel("Time (bars)")
plt.ylabel("Price")
plt.plotsize(65, 22)
plt.theme("clear")
print(re.sub(r'\x1b\[[0-9;]*m', '', plt.build()))

Mandatory Settings

Every chart MUST use these settings:

SettingCodeWhy
Reset stateplt.clear_figure()Prevent stale data
Dot markermarker="dot"GitHub-safe alignment
No colorplt.theme("clear")Clean text output
Strip ANSIre.sub(r'\x1b\[…', '', …)Remove residual escape codes
Build as stringplt.build()Not plt.show()

Marker Reference

MarkerGitHub SafeUse When
"dot"YesDefault — always use
"hd"YesTerminal-only, need smoothness
"braille"NoNever for markdown
"fhd"NoNever — Unicode 13.0+ only

Rendering Command

/usr/bin/env bash << 'RENDER_EOF'
python3 << 'CHART_EOF'
import re
import plotext as plt

x = list(range(20))
y = [97, 98, 100, 101, 100, 98, 100, 101, 102, 101,
     100, 98, 100, 101, 102, 103, 102, 101, 100, 100]

plt.clear_figure()
plt.plot(x, y, marker="dot", label="Price path")
plt.hline(103)
plt.hline(97)
plt.hline(100)
plt.title("Triple Barrier Method")
plt.xlabel("Time (bars)")
plt.ylabel("Price")
plt.plotsize(65, 22)
plt.theme("clear")
print(re.sub(r'\x1b\[[0-9;]*m', '', plt.build()))
CHART_EOF
RENDER_EOF

Embedding in Markdown (MANDATORY: Source Adjacent to Chart)

Every chart MUST be immediately followed by a <details> block with Python source. Explanatory text goes after the <details> block, never between chart and source.

✅ CORRECT: Chart → <details> → Explanatory text
❌ WRONG:   Chart → Explanatory text → <details>

See ./references/api-and-patterns.md for full embedding template.

Mandatory Checklist

  • plt.clear_figure() — Reset state
  • marker="dot" — Dot marker for GitHub
  • plt.theme("clear") + re.sub() strip — No ANSI codes
  • plt.title("...") — Every chart needs a title
  • plt.xlabel / plt.ylabel — Axis labels
  • plt.plotsize(65, 22) — Fits 80-col code blocks
  • <details> block immediately after chart (before any explanatory text)

Troubleshooting

IssueCauseSolution
ANSI codes in outputMissing theme/stripAdd plt.theme("clear") and re.sub() strip
Misaligned on GitHubWrong marker typeUse marker="dot", never braille/fhd
Chart too wideplotsize too largeUse plt.plotsize(65, 22) for 80-col blocks
No diagonal slopesToo few data pointsUse 15+ data points for visible slopes
ModuleNotFoundErrorNot installedRun preflight check
Empty outputMissing build()Use plt.build() not plt.show()

Resources

Post-Execution Reflection

After this skill completes, check before closing:

  1. Did the command succeed? — If not, fix the instruction or error table that caused the failure.
  2. Did parameters or output change? — If the underlying tool's interface drifted, update Usage examples and Parameters table to match.
  3. Was a workaround needed? — If you had to improvise (different flags, extra steps), update this SKILL.md so the next invocation doesn't need the same workaround.

Only update if the issue is real and reproducible — not speculative.

Comments

Markdown supported