Cc-skills plotext-financial-chart
ASCII financial line charts for markdown using plotext dot marker. TRIGGERS - financial chart, line chart, plotext, price chart, trading chart, ASCII chart.
git clone https://github.com/terrylica/cc-skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/terrylica/cc-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/plugins/doc-tools/skills/plotext-financial-chart" ~/.claude/skills/terrylica-cc-skills-plotext-financial-chart && rm -rf "$T"
plugins/doc-tools/skills/plotext-financial-chart/SKILL.mdPlotext 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.
Analogy:
graph-easy is for flowcharts. plotext with dot marker is for financial line charts.
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 — use
graph-easy for those.
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:
| Setting | Code | Why |
|---|---|---|
| Reset state | | Prevent stale data |
| Dot marker | | GitHub-safe alignment |
| No color | | Clean text output |
| Strip ANSI | | Remove residual escape codes |
| Build as string | | Not |
Marker Reference
| Marker | GitHub Safe | Use When |
|---|---|---|
| Yes | Default — always use |
| Yes | Terminal-only, need smoothness |
| No | Never for markdown |
| No | Never — 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
-
— Reset stateplt.clear_figure() -
— Dot marker for GitHubmarker="dot" -
+plt.theme("clear")
strip — No ANSI codesre.sub() -
— Every chart needs a titleplt.title("...") -
/plt.xlabel
— Axis labelsplt.ylabel -
— Fits 80-col code blocksplt.plotsize(65, 22) -
block immediately after chart (before any explanatory text)<details>
Troubleshooting
| Issue | Cause | Solution |
|---|---|---|
| ANSI codes in output | Missing theme/strip | Add and strip |
| Misaligned on GitHub | Wrong marker type | Use , never braille/fhd |
| Chart too wide | plotsize too large | Use for 80-col blocks |
| No diagonal slopes | Too few data points | Use 15+ data points for visible slopes |
| Not installed | Run preflight check |
| Empty output | Missing | Use not |
Resources
Post-Execution Reflection
After this skill completes, check before closing:
- Did the command succeed? — If not, fix the instruction or error table that caused the failure.
- Did parameters or output change? — If the underlying tool's interface drifted, update Usage examples and Parameters table to match.
- 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.