skills$openclaw/vehicle-tracker
huchengtw2.8k

by huchengtw

vehicle-tracker – OpenClaw Skill

vehicle-tracker is an OpenClaw Skills integration for coding workflows. Track vehicle expenses (gas, maintenance, parts) in Google Sheets and save related photos. Handles mileage, cost, category, and photo organization.

2.8k stars2.2k forksSecurity L1
Updated Feb 7, 2026Created Feb 7, 2026coding

Skill Snapshot

namevehicle-tracker
descriptionTrack vehicle expenses (gas, maintenance, parts) in Google Sheets and save related photos. Handles mileage, cost, category, and photo organization. OpenClaw Skills integration.
ownerhuchengtw
repositoryhuchengtw/vehicle-tracker
languageMarkdown
licenseMIT
topics
securityL1
installopenclaw add @huchengtw/vehicle-tracker
last updatedFeb 7, 2026

Maintainer

huchengtw

huchengtw

Maintains vehicle-tracker in the OpenClaw Skills directory.

View GitHub profile
File Explorer
8 files
.
locales
en-US.json
2.3 KB
ja-JP.json
2.6 KB
zh-TW.json
2.3 KB
_meta.json
293 B
config.json
139 B
SKILL.md
6.1 KB
tracker.py
10.6 KB
SKILL.md

name: vehicle-tracker description: Track vehicle expenses (gas, maintenance, parts) in Google Sheets and save related photos. Handles mileage, cost, category, and photo organization.

Vehicle Expense Tracker

A multi-language vehicle expense tracking tool that supports Google Sheets and local Excel files.

Features

  • i18n Support: Multiple languages via locale files (locales/*.json)
  • Google Sheets Integration: Write directly to Google Sheets via API
  • Local Excel Fallback: Saves to local .xlsx files if no Spreadsheet ID configured
  • Metric/Imperial Units: Configurable unit system (km/L vs mi/gal)
  • Photo Management: Auto-saves and renames photos with timestamps
  • Aliases: Support vehicle aliases (e.g., "my car" → "Toyota Camry 2020")
  • Defaults: Auto-fill quantity and unit based on category

🚀 Initialization (First-Time Setup)

Step 1: Choose Your Locale

Available locales:

  • zh-TW - 繁體中文 (Taiwan)
  • en-US - English (US)
  • ja-JP - 日本語

Step 2: Create config.json

Copy the template below and save as skills/vehicle-tracker/config.json:

{
  "locale": "en-US",
  "unit_system": "metric",
  "vehicles": {},
  "aliases": {},
  "default_vehicle": null,
  "category_defaults": {}
}

Step 3: Copy Category Defaults from Locale

Based on your chosen locale and unit system, copy the appropriate category defaults.

For English (metric):

{
  "category_defaults": {
    "Gas": { "unit": "liter" },
    "Accessory": { "unit": "pc", "quantity": 1 },
    "Repair": { "unit": "job", "quantity": 1 },
    "Maintenance": { "unit": "service", "quantity": 1 },
    "Purchase": { "unit": "unit", "quantity": 1 }
  }
}

For English (imperial):

{
  "category_defaults": {
    "Gas": { "unit": "gallon" },
    "Accessory": { "unit": "pc", "quantity": 1 },
    "Repair": { "unit": "job", "quantity": 1 },
    "Maintenance": { "unit": "service", "quantity": 1 },
    "Purchase": { "unit": "unit", "quantity": 1 }
  }
}

For 繁體中文 (metric):

{
  "category_defaults": {
    "加油": { "unit": "公升" },
    "周邊": { "unit": "個", "quantity": 1 },
    "維修": { "unit": "件", "quantity": 1 },
    "保養": { "unit": "次", "quantity": 1 },
    "買車": { "unit": "輛", "quantity": 1 }
  }
}

For 日本語 (metric):

{
  "category_defaults": {
    "給油": { "unit": "リットル" },
    "アクセサリー": { "unit": "個", "quantity": 1 },
    "修理": { "unit": "件", "quantity": 1 },
    "メンテナンス": { "unit": "回", "quantity": 1 },
    "購入": { "unit": "台", "quantity": 1 }
  }
}

Step 4: Add Your Vehicle

Option A: Google Sheets (recommended for cloud sync)

  1. Create a Google Spreadsheet
  2. Share it with a Google Service Account (see google-workspace skill)
  3. Add the Spreadsheet ID to config:
{
  "vehicles": {
    "My Car 2020": "1ABC123...xyz"
  },
  "default_vehicle": "My Car 2020"
}

Option B: Local Excel (no setup required)

Just add the vehicle name without an ID:

{
  "vehicles": {
    "My Car 2020": null
  },
  "default_vehicle": "My Car 2020"
}

Files will be saved to ~/vehicle_tracker/My_Car_2020.xlsx.

Step 5: Add Aliases (Optional)

{
  "aliases": {
    "car": "My Car 2020",
    "toyota": "My Car 2020"
  }
}

Step 6: Custom Paths (Optional)

Override default directories:

{
  "photo_base_dir": "/path/to/photos",
  "local_excel_dir": "/path/to/excel/files",
  "sheet_name": "Expenses"
}

Default paths: ~/vehicle_tracker


Complete config.json Example

{
  "locale": "en-US",
  "unit_system": "imperial",
  "vehicles": {
    "Toyota Camry 2020": "1ABC123...spreadsheet_id",
    "Honda Civic 2018": null
  },
  "aliases": {
    "camry": "Toyota Camry 2020",
    "civic": "Honda Civic 2018",
    "car": "Toyota Camry 2020"
  },
  "default_vehicle": "Toyota Camry 2020",
  "category_defaults": {
    "Gas": { "unit": "gallon" },
    "Accessory": { "unit": "pc", "quantity": 1 },
    "Repair": { "unit": "job", "quantity": 1 },
    "Maintenance": { "unit": "service", "quantity": 1 },
    "Purchase": { "unit": "unit", "quantity": 1 }
  },
  "photo_base_dir": "~/vehicle_tracker",
  "local_excel_dir": "~/vehicle_tracker"
}

Usage

Preview (Dry Run) - Always do this first!

python3 skills/vehicle-tracker/tracker.py \
  --vehicle "camry" \
  --mileage 15000 \
  --category "Gas" \
  --cost 45.50 \
  --quantity 12.5 \
  --dry-run

Execute (After user confirms)

python3 skills/vehicle-tracker/tracker.py \
  --vehicle "camry" \
  --mileage 15000 \
  --category "Gas" \
  --cost 45.50 \
  --quantity 12.5

With Photos

python3 skills/vehicle-tracker/tracker.py \
  --vehicle "camry" \
  --mileage 15200 \
  --category "Maintenance" \
  --cost 89.99 \
  --description "Oil change" \
  --photos "/path/to/receipt.jpg" \
  --dry-run

Arguments

ArgumentRequiredDescription
--vehicleOptionalVehicle name or alias. Uses default if omitted.
--mileageRequiredCurrent odometer reading
--categoryRequiredExpense category
--costRequiredExpense amount (currency symbols auto-removed)
--quantityOptionalQuantity (uses default if available)
--unitOptionalUnit (uses category mapping if available)
--dateOptionalDate YYYY-MM-DD (defaults to today)
--descriptionOptionalAdditional notes
--photosOptionalPhoto file paths to save
--dry-runFlagPreview only, no write

Adding a New Locale

Create locales/{code}.json based on existing locale files. Required fields:

  • language_name
  • sheet_name
  • columns_metric / columns_imperial
  • photo_prefix
  • messages
  • units_metric / units_imperial
  • default_units_metric / default_units_imperial

Supported Locales

CodeLanguageUnit Systems
zh-TW繁體中文metric, imperial
en-USEnglish (US)metric, imperial
ja-JP日本語metric, imperial
README.md

No README available.

Permissions & Security

Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.

Requirements

  • OpenClaw CLI installed and configured.
  • Language: Markdown
  • License: MIT
  • Topics:

FAQ

How do I install vehicle-tracker?

Run openclaw add @huchengtw/vehicle-tracker in your terminal. This installs vehicle-tracker into your OpenClaw Skills catalog.

Does this skill run locally or in the cloud?

OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.

Where can I verify the source code?

The source repository is available at https://github.com/openclaw/skills/tree/main/skills/huchengtw/vehicle-tracker. Review commits and README documentation before installing.