Skip to content
Back to skills

Chassis

ASecurity

Example maintenance tracker for a vehicle (bike, scooter, car): owner's manual setup, service slip images, odometer readings, what's due, service history, maintenance intervals. Commands - configure-manual, configure-history, odom, deadlines, service, history, manual. Trigger even on bare inputs like "odo 15230" or a photo of a service slip.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
ai-agentspythongo

Security analysis

A100/100

Scanned November 7, 2026

npx -y skills add aalishan001/opencockpit --skill chassis --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Chassis?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Chassis
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/aalishan001-chassis/badge)](https://www.skillsdirectory.com/skills/aalishan001-chassis)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: chassis
description: Example maintenance tracker for a vehicle (bike, scooter, car): owner's manual setup, service slip images, odometer readings, what's due, service history, maintenance intervals. Commands - configure-manual, configure-history, odom, deadlines, service, history, manual. Trigger even on bare inputs like "odo 15230" or a photo of a service slip.
---

# CHASSIS

**No command given** (bare `/chassis`): read `COMMANDS.md` and print its `## CHASSIS` section verbatim (heading through the line before the next `## `) in a fenced code block. Nothing else, no commit.

A worked example of a domain: maintenance tracking on **kilometres** (months-or-km "whichever earlier" → keep the km only, by design). Exception: a job the manual gives *no* km interval for (and none is found on the web) goes in a separate time-based category with `interval_months`.
All deadline math is done by `python scripts/chassis.py`. Never compute due km yourself.

Data: `data/chassis/manual.json`, `services.jsonl`, `odometer.jsonl`, `anomalies.jsonl` (schemas in `scripts/schemas.md`).

## One-off setup

### configure-manual
Input: owner's manual (PDF/images) in `inbox/` (or the optional second inbox set in `COCKPIT_DRIVE_INBOX`). Manual page images go through `python scripts/ingest_images.py chassis <paths>` first; PDFs are moved as-is.
1. Extract every maintenance job: id, name, action, interval_km, and a source page reference.
2. If a job has no km interval in the manual, find it on the web for this exact model and record `source: web:<url>`. If the web has nothing model-specific, store it with `interval_months` from the manual (time-based category), never a guessed km.
   Fully itemized: one row per item per distinct action/interval (e.g. `brake_fluid` replace 21000 and `brake_fluid_check` check 3000). Keep the manual's code (I, R, I & T, …) in `notes`.
3. Show the full table, write `manual.json`, move originals to `raw/chassis/`, commit.

### configure-history
Input: bulk service slip images in `inbox/` or the second inbox.
0. `python scripts/ingest_images.py chassis <paths>` (or `--pending` to find them). Work from the printed `raw/chassis/` copies; each row's `source` is that file name.
1. Read every slip into a candidate row: date, odo, jobs (mapped to manual ids), workshop, source file. Keep unmapped job lines in `notes`.
2. Unreadable or ambiguous fields go to a question list, not into data.
3. Sort by date and run `python scripts/chassis.py check-candidates <tmpfile>` to detect anomalies: decreasing odo, implausible jumps, date/odo order conflicts.
4. Present the timeline plus each anomaly with a proposed resolution. I decide. Log decisions to `anomalies.jsonl`.
5. Ask for the current odometer reading, append it, write `services.jsonl`, commit, then run `deadlines`.

## Commands

| Command | Trigger | Does | End |
|---|---|---|---|
| `odom <km>` | command + reading | `python scripts/chassis.py odom <km>` (appends, rejects decreases, flags jumps), then shows deadlines | one-off |
| `deadlines` | command | `python scripts/chassis.py deadlines`: every job with last done (odo + date) and km remaining, sorted soonest first; overdue at top | one-off |
| `service` | command + image | Ingest the image (`ingest_images.py chassis <path>`; `source` = the raw/ copy) → extract slip → show parsed row → ask only about unclear items → `python scripts/chassis.py add-service <json>` → show deadlines → commit | one-off (asks if needed) |
| `history` | command | `python scripts/chassis.py history` | one-off |
| `manual` | command | `python scripts/chassis.py manual` | one-off |

## Extraction rules for slips
- Workshop shorthand varies. Map to manual ids by meaning (e.g. "EO chg" → engine_oil). If unsure, ask.
- "Checked" vs "replaced" matters: only count a job as done if the slip shows it was actually performed.
- Never infer an odometer value from neighbouring slips. Missing odo → question.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.