lapvisor-cli
Navigates the lapvisor telemetry CLI for race data analysis.
Install
mkdir -p .claude/skills/lapvisor-cli && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/18158" && unzip -o skill.zip -d .claude/skills/lapvisor-cli && rm skill.zipInstalls to .claude/skills/lapvisor-cli
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Use this skill when the user asks how to use the lapvisor CLI — what each subcommand does (laps, session, lap, ideal, compare, improve, track), which one to pick for goals like "where am I losing time?", "compare two laps", or "is my best lap really my best?", what flags and JSON schemas each command emits, and how to drive lapvisor from a script or AI agent.Key capabilities
- →Summarize a session with lap count, best lap, and mean lap
- →Extract a full session bundle including raw samples, lap boundaries, and sector splits
- →Drill into specific lap data with telemetry, distance, and aggregates
- →Compose an "ultimate lap" from best mini-sectors across a session
- →Compare two laps with delta-t curves and per-mini-sector deltas
- →Generate a session-level report identifying where to find time
How it works
The skill maps user goals to specific `lapvisor` CLI subcommands, executes the command with the provided file, and returns the analysis in JSON or human-readable format.
Inputs & outputs
When to use lapvisor-cli
- →Compare race laps
- →Improve lap times
- →Analyze telemetry data
About this skill
lapvisor CLI guide
lapvisor is a TypeScript SDK + CLI for analyzing race-data files (laps, GPS,
sectors, telemetry) for hobby karting and amateur motorsport. The CLI is a
thin shell over the SDK — its JSON output is the contract; the
human-readable (TTY) view is patch-level convenience and not stable across
versions.
This skill maps user goals to the right subcommand, gives a compact reference for each, and routes to the wire-format docs when the user wants depth.
Focus
User passed: $ARGUMENTS
If $ARGUMENTS names a subcommand below (e.g. compare, improve), lead
with that command's section and skip the goal table. Otherwise present the
full goal→command map.
Pick the right command for the goal
| If the user is trying to… | Run |
|---|---|
| Summarize a session — count, best lap, mean lap, venue | lapvisor laps <file> |
| Get the entire session as one JSON bundle (samples + laps + sectors + gates) | lapvisor session <file> |
| Drill into one specific lap (rich telemetry, distance, sectors, peaks) | lapvisor lap <file> <N> |
| Answer "is my best lap really my best?" / build the ultimate lap | lapvisor ideal <file> |
| Compare two specific laps (delta-t curve, per-mini-sector deltas, optional per-corner) | lapvisor compare <file> <refIdx> <candIdx> |
| Answer "where am I losing time and what should I do differently?" — the headline | lapvisor improve <file> |
Author a kart-track/v1 GeoJSON gate file from a structured description | lapvisor track create -i <intent.json> -o <track.json> |
| Edit a track interactively in a browser | lapvisor track edit <track.json> |
When the goal is generic ("analyze this session", "find time"), default
to lapvisor improve — it is the highest-leverage command.
Per-command reference
All commands take .vbo (Racelogic VBOX text) inputs. Other formats
(.gpx, .fit, .tcx, .lap-csv) are reserved but not yet implemented.
lapvisor laps
lapvisor laps <file> [--json]
Compact summary: lapCount, bestMs, meanMs, source, format, meta.
Schema: an unversioned LapsSummary shape (no schema field). Use
lapvisor session when you need a stable wire format.
lapvisor session
lapvisor session <file> [--track <track.json>]
Full bundle with raw samples, lap boundaries, sector splits, per-lap
summaries, session summary, gates. Always emits JSON (no human render).
Schema: lapvisor-session/v2 — see docs/formats/lapvisor-session-v2.md.
lapvisor lap
lapvisor lap <file> <index> [--track <track.json>] [--json]
One lap with rich per-sample telemetry on a distance-along-track axis,
sector boundaries, and per-lap aggregates (top/min speed, peak Gs).
Schema: lapvisor-lap/v1 — see docs/formats/lapvisor-lap-v1.md.
lapvisor ideal
lapvisor ideal <file> [--track <track.json>] [--mini-sectors N] [--json]
Best-of-each-mini-sector "ultimate lap" composed across the session, plus
the gap to your actual best lap. Default 100 mini-sectors.
Schema: lapvisor-session-improvement/v1 (without topOpportunities).
See docs/formats/lapvisor-session-improvement-v1.md.
lapvisor compare
lapvisor compare <file> <refIdx> <candIdx> [--track <track.json>] [--mini-sectors N] [--corners] [--json]
Pairwise lap comparison: continuous delta-t curve + per-mini-sector deltas.
Pass --corners to additionally include per-corner deltas (auto-detected
from speed minima on the reference lap).
Schema: lapvisor-lap-compare/v1 — see
docs/formats/lapvisor-lap-compare-v1.md and
docs/analysis/corners.md for the corner-detection heuristic.
lapvisor improve — headline
lapvisor improve <file> [--track <track.json>] [--mini-sectors N] [--top N] [--json]
Session-level "where to find time" report. Detects corners on the best lap,
finds which lap drove each corner fastest, ranks corners by time-loss, and
attaches topOpportunities[] with apex/exit deltas and short plain-text
observations (e.g. "carry +3.0 km/h through apex"). --top caps the
number of opportunities returned (default 5).
Schema: lapvisor-session-improvement/v1 (with topOpportunities).
lapvisor track create
lapvisor track create [-i <intent.json>] [-o <track.json>] [--no-pretty]
Build a kart-track/v1 GeoJSON gate file from a structured intent
(center + bearing + width per gate). Reads stdin / writes stdout when
flags are omitted. Validated by zod (kartTrackIntentSchema).
Schema: kart-track/v1 — see docs/formats/kart-track-v1.md.
lapvisor track edit
lapvisor track edit <track.json> [--port <n>] [--no-open] [--readOnly]
Opens a local HTTP browser editor for a kart-track/v1 file. Default port
5174; set 0 for a free port. Use --readOnly to view without saving.
Output mode rules
- JSON when
--jsonis passed or when stdout is not a TTY (piped, redirected, sub-shell, agent invocation). Always machine-readable, with a stableschemafield on every bundle (exceptlaps). - Human-readable when stdout is a TTY and
--jsonis not set. Coloured via picocolors. Not a stable contract — wording and formatting can change between minor versions. - Exit 0 on success, exit 1 on any error (file missing, parse failure, lap index out of range, etc.). Errors go to stderr.
So when driving lapvisor from a script or agent: just pipe stdout —
you don't need --json because non-TTY already triggers JSON output.
Driving from an agent
# 1. Quick lap summary
lapvisor laps session.vbo | jq '.bestMs'
# 2. Full session bundle for a UI / dashboard
lapvisor session session.vbo --track track.json > session.json
# 3. Headline "where can I find time?" report
lapvisor improve session.vbo | jq '.topOpportunities[]'
The same JSON can be produced from the SDK programmatically — every CLI
command has a buildXBundle counterpart in lapvisor/bundles. Useful when
embedding lapvisor inside a larger TypeScript app rather than shelling out.
Where to look next
- CLI overview & flag tables:
docs/cli/overview.md - Wire-format specs (the JSON contracts):
docs/formats/lapvisor-lap-v1.mddocs/formats/lapvisor-session-v2.mddocs/formats/lapvisor-lap-compare-v1.mddocs/formats/lapvisor-session-improvement-v1.mddocs/formats/kart-track-v1.mddocs/formats/vbo.md(input format)
- Analysis notes (heuristics, edge cases):
docs/analysis/laps.mddocs/analysis/corners.md
- SDK quickstart & API reference:
docs/sdk/quickstart.mdand the generateddocs/api/. - Project rules / architecture:
CLAUDE.md. - Driving from non-Claude AI tools:
AGENTS.md.
When the user wants depth on a specific schema, read the matching
docs/formats/<schema>.md rather than re-deriving from this skill.
When not to use it
- →When the user is not asking about lapvisor CLI commands
- →When the user is not analyzing race-data files
- →When the input file format is not .vbo
Limitations
- →Only .vbo (Racelogic VBOX text) inputs are supported
- →Human-readable output is not a stable contract and can change between versions
- →The skill focuses on the `lapvisor` CLI and its JSON output contract
How it compares
This skill provides a structured mapping from user goals to specific CLI commands and their JSON output schemas, offering a direct path to desired analysis compared to manually exploring command options.
Compared to similar skills
lapvisor-cli side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| lapvisor-cli (this skill) | 0 | 27d | Review | Intermediate |
| openevidence-core-workflow-b | 0 | 10d | Review | Advanced |
| daily-digest | 0 | 3mo | Review | Intermediate |
| markitdown | 177 | 1mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
openevidence-core-workflow-b
jeremylongshore
Execute OpenEvidence DeepConsult workflow for comprehensive medical research. Use when implementing deep research synthesis, complex clinical questions, or when physicians need extensive literature review. Trigger with phrases like "openevidence deepconsult", "deep research", "comprehensive evidence", "literature synthesis".
daily-digest
yayajjiang
Add today's ML/AI paper and news picks to the PaperTrace daily feed. Use when the user wants to update the daily page with new content.
markitdown
K-Dense-AI
Convert various file formats (PDF, Office documents, images, audio, web content, structured data) to Markdown optimized for LLM processing. Use when converting documents to markdown, extracting text from PDFs/Office files, transcribing audio, performing OCR on images, extracting YouTube transcripts, or processing batches of files. Supports 20+ formats including DOCX, XLSX, PPTX, PDF, HTML, EPUB, CSV, JSON, images with OCR, and audio with transcription.
whisper
davila7
OpenAI's general-purpose speech recognition model. Supports 99 languages, transcription, translation to English, and language identification. Six model sizes from tiny (39M params) to large (1550M params). Use for speech-to-text, podcast transcription, or multilingual audio processing. Best for robust, multilingual ASR.
fact-check
leonardomso
Verify technical accuracy of JavaScript concept pages by checking code examples, MDN/ECMAScript compliance, and external resources to prevent misinformation
react-expert
reactjs
Use when researching React APIs or concepts for documentation. Use when you need authoritative usage examples, caveats, warnings, or errors for a React feature.