<< All versions
Skill v1.0.0
currentAutomated scan100/100sapientinc/praxist/terminal-line-plot
──Details
PublishedOctober 23, 2026 at 08:37 AM
Content Hashsha256:38c078decdfbbc92...
Git SHA5b50658b219d
──Files
Files (1 file, 3.4 KB)
SKILL.md3.4 KBactive
SKILL.md · 94 lines · 3.4 KB
version: "1.0.0" name: terminal-line-plot description: Draw readable ASCII line charts directly in the terminal from numeric series, command output, CSV, JSON, or manually extracted points. Use when the user asks for a curve, trend line, score progression, leaderboard trend, metric history, or any plot that should be visible in a CLI/chat transcript without opening a GUI or writing image files.
Terminal Line Plot
Use this skill to turn numeric sequences into terminal-readable line charts. It is task-agnostic: do not assume any domain, metric direction, filtering rule, or data layout unless the user or artifacts define it.
Workflow
- Identify the series to plot:
- x values are usually ordered steps, dates, versions, generations, epochs, or run ids.
- y values must be numeric.
- If multiple plausible metrics exist, choose the one the user asked for; otherwise state the selected metric before plotting.
- Preserve metric semantics:
- Use exact metric names from artifacts when available.
- Label whether higher or lower is better if known.
- Do not mix partial and complete points silently; mark provisional or incomplete points in the title, notes, or point list.
- Use
scripts/plot_series.pyfor deterministic plotting. - Print a compact table or point list when it prevents misreading the curve.
- Do not write image files unless the user explicitly asks. Prefer stdout.
Script Usage
Run the bundled script from the skill directory:
bash
python /path/to/terminal-line-plot/scripts/plot_series.py \--points "0:-4.49,1:-4.53,2:-4.87,3:-4.77,4:-3.23" \--title "Best future_fitness by generation" \--x-label generation \--y-label future_fitness \--higher-better
Input options:
--points "x:y,x:y,..."for quick point lists.--csv FILE --x-field FIELD --y-field FIELDfor CSV.--json FILE --x-field FIELD --y-field FIELDfor JSON arrays of objects, arrays of pairs, or mappings.--stdin csv|json|pointsto read data from stdin.
Useful options:
--height Ncontrols chart height.--x-step Ncontrols horizontal spacing between points.--provisional-x Xmay be repeated to mark incomplete points with○.--value-tableprints the plotted values below the chart.--invert-y-noteonly changes the note; it does not invert the axis.
Plotting Guidelines
- Prefer line drawing characters
●,○,╱,╲, and─. - Keep the x-axis readable. If labels collide, increase
--x-stepor plot fewer points. - Use a taller chart for noisy or close-valued curves.
- For negative scores where "higher is better", the visually higher point should still mean numerically larger.
- If the active/final point is incomplete, mark it provisional and do not draw conclusions from it.
- For dense data, aggregate intentionally: best per generation, mean per epoch bucket, rolling median, or another stated rule.
Example Patterns
Manual points:
bash
python /path/to/terminal-line-plot/scripts/plot_series.py \--points "0:7.88,1:7.78,2:8.45,3:8.61,4:9.28" \--title "Mean objective value by generation" \--y-label "objective" \--value-table
CSV:
bash
python /path/to/terminal-line-plot/scripts/plot_series.py \--csv metrics.csv \--x-field generation \--y-field score \--title "Score by generation"
JSON:
bash
python /path/to/terminal-line-plot/scripts/plot_series.py \--json metrics.json \--x-field gen \--y-field best_score