Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Vehicle maintenance tracker and mechanic advisor. Tracks mileage, service intervals, fuel economy, costs, warranties, and recalls. Researches manufacturer schedules, estimates costs, projects service dates, tracks providers, and proactively reminds about upcoming/overdue services. Supports VIN decode and auto-population of vehicle specs, NHTSA recall monitoring, MPG tracking with anomaly detection, warranty expiration alerts, pre-trip/seasonal checklists, mileage projection, service provider history, tax deduction integration, emergency info cards, and cost-per-mile analysis. Use when discussing vehicle maintenance, oil changes, service intervals, mileage tracking, fuel economy, warranties, recalls, RV maintenance, roof sealing, generator service, slide-outs, winterization, or anything mechanic-related. Supports any vehicle type including trucks, cars, motorcycles, dirt bikes, ATVs, RVs, and boats.
Vehicle maintenance tracker and mechanic advisor. Tracks mileage, service intervals, fuel economy, costs, warranties, and recalls. Researches manufacturer schedules, estimates costs, projects service dates, tracks providers, and proactively reminds about upcoming/overdue services. Supports VIN decode and auto-population of vehicle specs, NHTSA recall monitoring, MPG tracking with anomaly detection, warranty expiration alerts, pre-trip/seasonal checklists, mileage projection, service provider history, tax deduction integration, emergency info cards, and cost-per-mile analysis. Use when discussing vehicle maintenance, oil changes, service intervals, mileage tracking, fuel economy, warranties, recalls, RV maintenance, roof sealing, generator service, slide-outs, winterization, or anything mechanic-related. Supports any vehicle type including trucks, cars, motorcycles, dirt bikes, ATVs, RVs, and boats.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.
Track mileage and service intervals for any combination of vehicles โ trucks, cars, motorcycles, RVs, dirt bikes, ATVs, boats, and more. Decodes VINs to auto-populate vehicle specs, researches manufacturer-recommended maintenance schedules, tracks service history, estimates costs, monitors recalls, tracks fuel economy, manages warranties, and proactively reminds about upcoming and overdue services.
All user data lives in <workspace>/data/mechanic/: FilePurposestate.jsonAll vehicles: current mileage/hours, history, service records, fuel logs, warranties, providers, emergency info<key>-schedule.jsonPer-vehicle service schedule with intervals and cost estimates Convention: Skill logic lives in <skill>/, user data lives in <workspace>/data/mechanic/. This keeps data safe when the skill is updated or reinstalled.
If <workspace>/data/mechanic/state.json doesn't exist: Create <workspace>/data/mechanic/ directory Ask the user what vehicles they want to track For each vehicle, run the Adding a New Vehicle workflow (includes choosing check-in frequency per vehicle) Create state.json with the vehicle entries Set up the cron job (see Mileage Check Setup)
{ "settings": { "check_in_tz": "America/Phoenix" }, "providers": [ { "id": "jims_diesel", "name": "Jim's Diesel Repair", "location": "123 Main St, Mesa, AZ", "phone": "480-555-1234", "specialties": ["diesel", "trucks"], "rating": 5, "notes": "Great with Power Stroke engines" } ], "vehicles": { "f350": { "label": "2021 Ford F-350 6.7L Power Stroke", "schedule_file": "f350-schedule.json", "check_in_frequency": "monthly", "current_miles": 61450, "last_updated": "2026-01-26", "last_check_in": "2026-01-26", "vin": "1FT8W3BT0MED12345", "vin_data": { "decoded": true, "decoded_date": "2026-01-26", "year": 2021, "make": "Ford", "model": "F-350", "trim": "Lariat", "body_class": "Pickup", "drive_type": "4WD", "engine": "6.7L Power Stroke V8 Turbo Diesel", "displacement_l": 6.7, "cylinders": 8, "fuel_type": "Diesel", "transmission": "10-Speed Automatic", "doors": 4, "gvwr_class": "Class 3", "bed_length": "8 ft", "wheel_base": "176 in", "plant_country": "United States", "plant_city": "Louisville", "raw_response": {} }, "business_use": false, "business_use_percent": 0, "mileage_history": [ {"date": "2026-01-26", "miles": 61450, "source": "user_reported"} ], "service_history": [ { "service_id": "oil_filter", "date": "2025-11-15", "miles": 58000, "hours": null, "notes": "Full synthetic Motorcraft FL-2051S", "actual_cost": 125.00, "provider": { "id": "jims_diesel", "name": "Jim's Diesel Repair", "parts_warranty_months": 12, "labor_warranty_months": 6 } } ], "fuel_history": [ { "date": "2026-01-20", "gallons": 32.5, "cost": 108.55, "odometer": 61300, "mpg": 14.2, "notes": "Regular fill-up" } ], "warranties": [ { "type": "factory_powertrain", "provider": "Ford", "start_date": "2021-03-15", "end_date": "2026-03-15", "start_miles": 0, "end_miles": 60000, "coverage_details": "Engine, transmission, drivetrain components", "status": "active" } ], "recalls": { "last_checked": "2026-01-26", "open_recalls": [], "completed_recalls": [] }, "emergency_info": { "vin": "1FT8W3BT0MED12345", "insurance_provider": "State Farm", "policy_number": "SF-123456789", "roadside_assistance_phone": "1-800-555-1234", "tire_size_front": "275/70R18", "tire_size_rear": "275/70R18", "tire_pressure_front_psi": 65, "tire_pressure_rear_psi": 80, "oil_type": "15W-40 CK-4 Full Synthetic", "oil_capacity": "15 quarts", "coolant_type": "Motorcraft Orange VC-3DIL-B", "def_type": "API certified DEF", "tow_rating_lbs": 20000, "gvwr_lbs": 14000, "gcwr_lbs": 37000, "key_fob_battery": "CR2450", "fuel_type": "Diesel (Ultra Low Sulfur)", "fuel_tank_gallons": 48, "notes": "" } } }, "last_service_review": "2026-01-26" } Top-level fields: settings โ global settings (timezone, etc.) providers โ reusable list of service providers vehicles โ keyed by short slug (e.g., f350, rv, crf450) last_service_review โ date of last full review Per-vehicle fields: label โ human-readable vehicle name schedule_file โ path to the service schedule JSON check_in_frequency โ how often to ask for mileage (weekly/biweekly/monthly/quarterly) current_miles / current_hours โ latest known readings last_updated / last_check_in โ date tracking vin โ Vehicle Identification Number (for recalls, VIN decode, and emergency info) vin_data โ decoded VIN data from NHTSA VPIC API (specs, engine, transmission, etc.) business_use โ whether vehicle is used for business (boolean) business_use_percent โ percentage of business use (0-100) mileage_history โ chronological array of mileage/hours entries service_history โ chronological array of completed services (with optional actual_cost and provider) fuel_history โ chronological array of fuel fill-ups warranties โ array of warranty records recalls โ recall monitoring state (last checked, open/completed) emergency_info โ quick-reference vehicle specs and emergency contacts
On skill load, read: <workspace>/data/mechanic/state.json โ current state for all vehicles The relevant <key>-schedule.json file(s) depending on what's being discussed
When the user wants to track a new vehicle:
Ask for the VIN first. If the user provides a VIN, run the VIN Decode (see below) to auto-populate year, make, model, engine, transmission, drive type, and other specs. This saves the user from answering questions you can look up automatically. Ask for: VIN (strongly recommended โ auto-populates specs, enables recall monitoring, emergency info) Year, make, model (only ask if no VIN provided) Engine/trim (only ask if no VIN or VIN decode was incomplete) Usage pattern โ daily driver, towing, off-road, weekend toy, etc. Current mileage/hours Business use? โ if yes, what percentage? (enables tax deduction tracking) Warranty info โ any active factory or extended warranties? Expiration date/mileage? Emergency info โ insurance provider, roadside assistance number, tire sizes (can be filled in later) If the user doesn't have the VIN handy, proceed with manual info and note that VIN can be added later to unlock auto-population and recall monitoring.
Ask about usage to classify the maintenance schedule: UsageDuty LevelEffectNormal commutingNormalStandard intervalsTowing, haulingSevereShorter intervals (typically 50-75% of normal)Off-road, dusty conditionsSevereShorter intervals, more frequent filter changesExtreme temps (hot desert, harsh cold)SevereShorter intervals, fluid/battery concernsTrack/racingSevere+Aggressive intervals, specialized fluidsLight use, garage keptNormalStandard intervals, but watch time-based items Most manufacturers publish both "normal" and "severe/special conditions" schedules. Use the one that matches.
Ask how often they want to be asked about this vehicle's mileage/hours: FrequencyBest forWeeklyDirt bikes, race vehicles, commercial/fleet, high-mileage daily driversEvery 2 weeksActive riders/drivers, vehicles with short service intervalsMonthlyMost cars and trucks (recommended default)QuarterlySeasonal vehicles, low-mileage, garage queens, stored boats Suggest a frequency based on the vehicle type and usage pattern, but let the user override.
Look up manufacturer-recommended maintenance intervals for that specific year/make/model/engine: Use web search to find the official maintenance schedule Check the owner's manual intervals Cross-reference with enthusiast forums for real-world advice Factor in the duty level from step 2
Create <workspace>/data/mechanic/<key>-schedule.json: { "vehicle": { "year": 2021, "make": "Ford", "model": "F-350", "type": "truck", "engine": "6.7L Power Stroke V8 Turbo Diesel", "transmission": "10R140 10-Speed Automatic", "duty": "severe", "notes": "Tows fifth wheel RV" }, "services": [ { "id": "oil_filter", "name": "Engine Oil & Filter Change", "interval_miles": 7500, "interval_months": 6, "details": "Specific oil type, filter part number, capacity, and any special instructions.", "priority": "critical", "cost_diy": "$XX-XX", "cost_shop": "$XX-XX", "cost_dealer": "$XX-XX", "cost_note": "Optional note about related expensive repairs" } ] } Required for every service item: id โ unique snake_case identifier name โ human-readable name At least one interval: interval_miles, interval_months, interval_hours, or interval_rides details โ specific parts, fluids, capacities, and any warnings priority โ critical, high, medium, or low cost_diy, cost_shop, cost_dealer โ estimated cost ranges Research costs: Search for typical costs for each service on that specific vehicle DIY = parts cost only Shop = independent mechanic Dealer = manufacturer dealership Add cost_note for items where failure/repair is significantly more expensive than maintenance
Add the vehicle to state.json under the vehicles object: { "<key>": { "label": "2021 Ford F-350 6.7L Power Stroke", "schedule_file": "<key>-schedule.json", "check_in_frequency": "monthly", "current_miles": 61450, "current_hours": null, "last_updated": "2026-01-26", "last_check_in": "2026-01-26", "vin": null, "vin_data": { "decoded": false }, "business_use": false, "business_use_percent": 0, "mileage_history": [ {"date": "2026-01-26", "miles": 61450, "source": "user_reported"} ], "service_history": [], "fuel_history": [], "warranties": [], "recalls": { "last_checked": null, "open_recalls": [], "completed_recalls": [] }, "emergency_info": { "vin": null, "insurance_provider": null, "policy_number": null, "roadside_assistance_phone": null, "tire_size_front": null, "tire_size_rear": null, "tire_pressure_front_psi": null, "tire_pressure_rear_psi": null, "oil_type": null, "oil_capacity": null, "coolant_type": null, "tow_rating_lbs": null, "gvwr_lbs": null, "key_fob_battery": null, "fuel_type": null, "fuel_tank_gallons": null, "notes": "" } } } Key naming: Use a short, memorable slug โ f350, civic, r1, rv, crf450, harley, bass_boat, etc.
Update the cron job prompt to include the new vehicle. If this vehicle's frequency is higher than the current cron schedule, update the cron to fire at the higher frequency.
If a VIN was provided, run the VIN Decode to auto-populate vehicle specs, emergency info fields, and the schedule file's vehicle section. Present the decoded info to the user for confirmation.
If a VIN was provided, immediately check for open recalls (see NHTSA Recall Monitoring). If no VIN, check by make/model/year.
TypeTrackKey Maintenance ItemsCarMilesOil, filters, brakes, tires, transmission, coolantTruckMilesSame as car + diff fluids, transfer case (4WD), heavier brake wear if towingMotorcycleMilesOil, chain/sprockets, valve clearance, fork oil, brake fluid, coolant (liquid-cooled), tires (wear faster)Dirt BikeHours + ridesAir filter (every ride!), oil (very frequent), valve clearance, suspension service, chain, coolantATV/UTVHours + milesSimilar to dirt bike + CV boots, belt (CVT), winch maintenanceRV/TrailerMiles + monthsRoof/sealant inspection, slide-outs, wheel bearings, electric brakes, tires (age-based), water system, generator, winterizationBoatHoursOil, impeller, lower unit fluid, zincs/anodes, winterization, trailer bearingsFifth Wheel/TrailerMiles + monthsNo engine, but: bearings, brakes, tires, roof, seals, slides, plumbing, LP gas, seasonal prep
Services can use any combination of: interval_miles โ odometer-based interval_hours โ engine/usage hours (generators, dirt bikes, boats) interval_months โ time-based (everything degrades with age) interval_rides โ per-use (e.g., dirt bike air filter = every ride) Whichever interval is reached first triggers the service.
When a user provides a VIN (during vehicle setup or later), decode it using the free NHTSA VPIC API to automatically look up and store vehicle specifications.
Endpoint: https://vpic.nhtsa.dot.gov/api/vehicles/DecodeVinValues/{VIN}?format=json No API key required. Free and unlimited. Example: GET https://vpic.nhtsa.dot.gov/api/vehicles/DecodeVinValues/1FT8W3BT0MED12345?format=json
The API returns a Results array with one object containing ~140+ fields. Extract and map these: VPIC FieldMaps ToNotesModelYearvin_data.yearVehicle yearMakevin_data.makeManufacturerModelvin_data.modelModel nameTrimvin_data.trimTrim level (Lariat, XLT, etc.)BodyClassvin_data.body_classPickup, SUV, Motorcycle, etc.DriveTypevin_data.drive_type4WD, AWD, RWD, FWDDisplacementLvin_data.displacement_lEngine displacement in litersEngineCylindersvin_data.cylindersNumber of cylindersFuelTypePrimaryvin_data.fuel_typeGasoline, Diesel, Electric, etc.EngineModelvin_data.engineCombine with displacement for labelTransmissionStylevin_data.transmissionAutomatic, Manual, CVTTransmissionSpeeds(append to transmission)"10-Speed Automatic"Doorsvin_data.doorsNumber of doorsGVWRvin_data.gvwr_classGross Vehicle Weight Rating classWheelBaseShortvin_data.wheel_baseWheelbase in inchesBedLengthINvin_data.bed_lengthTruck bed length (if applicable)PlantCountryvin_data.plant_countryAssembly countryPlantCityvin_data.plant_cityAssembly city Note: Many fields return empty strings "" if not applicable. Only store non-empty values.
Store decoded data in the vehicle's vin_data object in state.json: { "vin_data": { "decoded": true, "decoded_date": "2026-01-27", "year": 2021, "make": "Ford", "model": "F-350", "trim": "Lariat", "body_class": "Pickup", "drive_type": "4WD", "engine": "6.7L Power Stroke V8 Turbo Diesel", "displacement_l": 6.7, "cylinders": 8, "fuel_type": "Diesel", "transmission": "10-Speed Automatic", "doors": 4, "gvwr_class": "Class 3", "bed_length": "8 ft", "wheel_base": "176 in", "plant_country": "United States", "plant_city": "Louisville", "raw_response": {} } } Store raw_response as the full VPIC result object for reference โ it contains additional fields that may be useful later (e.g., AirBagLocFront, SeatBeltsAll, TPMS, ActiveSafetySysNote, etc.). If vin_data.decoded is false or missing, the VIN hasn't been decoded yet.
When a VIN is decoded: Update vin_data โ store all decoded fields Update label โ build from decoded year/make/model/engine (e.g., "2021 Ford F-350 6.7L Power Stroke") Update emergency_info โ auto-fill fields that can be derived: fuel_type from FuelTypePrimary gvwr_lbs from GVWR (parse weight class to approximate lbs) Update schedule file โ populate the vehicle section with decoded specs Present to user โ show what was decoded, confirm accuracy, ask about anything the VIN couldn't tell us (usage pattern, duty level, insurance, etc.)
TriggerActionNew vehicle added with VINDecode immediately, auto-populateUser provides VIN for existing vehicleDecode, backfill vin_data and any empty fieldsUser says "look up my VIN"Decode and display specsUser changes/corrects VINRe-decode and update
If a vehicle was added without a VIN and the user provides one later: Decode the VIN Store in vin_data Update vin field Backfill any empty emergency_info fields Update label if the decoded info is more specific Run an immediate recall check with the new VIN Confirm what was updated
When presenting decoded VIN data to the user: ๐ VIN Decoded โ [VIN] โโโโโโโโโโโโโโโโโโโโโโโโโโโ ๐ Vehicle Year: [year] | Make: [make] | Model: [model] Trim: [trim] | Body: [body_class] Drive: [drive_type] | Doors: [doors] ๐ง Powertrain Engine: [engine] ([displacement]L, [cylinders] cyl) Fuel: [fuel_type] Transmission: [transmission] ๐ Specs GVWR: [gvwr_class] Wheel Base: [wheel_base] Bed Length: [bed_length] (if truck) ๐ญ Built in [plant_city], [plant_country] โโโโโโโโโโโโโโโโโโโโโโโโโโโ
VPIC is NHTSA data โ best for US-market vehicles. Import/foreign-market VINs may have incomplete data. Trailers and RVs โ VIN decode may return limited data for trailers, fifth wheels, and RVs since they're built by different manufacturers with varying VIN encoding. Motorcycles and powersports โ coverage varies. Japanese brands (Honda, Yamaha, Kawasaki, Suzuki) generally decode well. Smaller manufacturers may not. Pre-1981 vehicles โ VINs weren't standardized until 1981. Older VINs won't decode. If decode returns sparse data, fall back to manual entry and web search for specs.
Monitor for open recalls on all tracked vehicles using the free NHTSA API (no API key required).
By make/model/year: https://api.nhtsa.dot.gov/recalls/recallsByVehicle?make=Ford&model=F-350&modelYear=2021 By VIN (more precise): https://api.nhtsa.dot.gov/recalls/recallsByVin?vin=XXXXX If a VIN is stored, prefer the VIN-based lookup. Otherwise fall back to make/model/year.
Per vehicle in state.json: { "recalls": { "last_checked": "2026-01-26", "open_recalls": [ { "nhtsa_id": "26V-123", "component": "FUEL SYSTEM", "summary": "Fuel line may crack under pressure", "consequence": "Fuel leak, fire risk", "remedy": "Dealer will replace fuel line at no cost", "date_reported": "2025-12-01", "status": "open" } ], "completed_recalls": [ { "nhtsa_id": "24V-456", "component": "ELECTRICAL", "summary": "Battery cable may corrode", "date_completed": "2025-06-15", "notes": "Done at dealer" } ] } }
Monthly cron: Include recall checks in the mileage check cron. Check recalls for all vehicles monthly regardless of their check-in frequency. On vehicle add: Check immediately when a new vehicle is added. On demand: User asks "any recalls on my truck?"
Track fuel fill-ups to monitor fuel economy, detect mechanical issues early, and track fuel spending.
When user says "filled up", "got gas/diesel", or reports a fill-up: Capture: date, gallons, cost (total or price per gallon), odometer reading Calculate MPG: (current_odometer - previous_odometer) / gallons Append to the vehicle's fuel_history array Check for MPG anomalies
{ "date": "2026-01-20", "gallons": 32.5, "cost": 108.55, "price_per_gallon": 3.34, "odometer": 61300, "mpg": 14.2, "partial_fill": false, "notes": "" }
Per fill-up MPG: (current_odometer - previous_fill_odometer) / gallons (skip if previous fill was partial) Rolling average: Average of last 10 fill-ups (or all if fewer than 10) Trend: Compare last 3 fill-ups to rolling average
When asked "how's my fuel economy?" or "MPG report": โฝ Fuel Report โ [Vehicle] Last fill-up: [X] MPG on [date] Rolling average: [X] MPG (last 10 fills) Trend: [improving/stable/declining] Total fuel cost (YTD): $[X] Total gallons (YTD): [X] Average cost per gallon: $[X]
If the user didn't fill up completely, mark partial_fill: true. Skip that entry for MPG calculation (the math won't be accurate), but still track cost and gallons.
Track what the user actually pays for maintenance to build accurate spending records.
When a user logs a completed service: After confirming the service details, ask: "What did you end up paying?" (or accept if they volunteered it) Store as actual_cost in the service_history entry If they don't know or don't want to share, leave it null โ don't block the log
{ "service_id": "oil_filter", "date": "2025-11-15", "miles": 58000, "hours": null, "notes": "Full synthetic, Motorcraft filter", "actual_cost": 125.00, "cost_type": "shop", "provider": { "id": "jims_diesel", "name": "Jim's Diesel Repair" } } cost_type values: diy, shop, dealer, warranty, recall (free)
Track and report on request: Per vehicle, per year: "You've spent $X on the F-350 this year" Actual vs estimated: Compare actual_cost to the schedule's cost estimates Category breakdown: Group by service type (oil changes, filters, tires, etc.) All-time total: Total maintenance spending per vehicle
When asked or at year-end: ๐ฐ [Year] Maintenance Summary โ [Vehicle] Total spent: $[X] Services performed: [count] Biggest expense: [service] โ $[X] Average cost per service: $[X] vs. Estimated: $[X] ([over/under] by [X]%)
Track warranties to know what's covered and get alerts before they expire.
{ "type": "factory_powertrain", "provider": "Ford", "start_date": "2021-03-15", "end_date": "2026-03-15", "start_miles": 0, "end_miles": 60000, "coverage_details": "Engine, transmission, transfer case, driveshaft, axle assemblies", "status": "active", "contact_phone": "1-800-392-3673", "claim_number": null, "notes": "" }
TypeTypical Coveragefactory_bumper_to_bumperEverything except wear items, shortest durationfactory_powertrainEngine, transmission, drivetrain โ longer durationfactory_corrosionBody rust-through โ usually 5+ yearsfactory_emissionsEmissions components โ federally mandated 8yr/80k for major componentsextendedThird-party or manufacturer extended warrantyparts_warrantySpecific parts from a shop/dealer (e.g., "new alternator, 2yr warranty")labor_warrantyShop's labor guarantee on a specific repair
Check warranties during every service review. Alert when: Within 3 months of end_date, OR Within 3,000 miles of end_miles (whichever comes first) Alert format: โ ๏ธ WARRANTY EXPIRING SOON [Vehicle] โ [Warranty type] from [Provider] Expires: [date] or [miles] miles (whichever first) Remaining: ~[X] months / ~[X] miles Coverage: [details] ๐ก Schedule any warranty-covered concerns before expiration!
When user asks "is this covered under warranty?" or when flagging a due service: Check all active warranties for the vehicle Match the service type to warranty coverage If potentially covered: "This may be covered under your [warranty type] from [provider] (expires [date]). Contact them before paying out of pocket."
active โ currently in effect expiring_soon โ within alert threshold expired โ past end date or end miles claimed โ warranty claim was filed
Generate vehicle-specific checklists when a trip or seasonal change is mentioned.
Activate when user says things like: "I'm heading on a trip" / "road trip" / "going to [location]" "towing this weekend" / "pulling the RV to [place]" "getting ready for winter" / "time to winterize" "spring is coming" / "time to de-winterize" "going off-road this weekend" / "trail ride"
Build the checklist by combining: Overdue/due-soon services โ Pull from service review for this vehicle Weather at destination โ Check forecast if location given (hot, cold, rain, snow, altitude) Trip-type items โ Based on what they're doing Seasonal items โ Based on current date and location
๐ Pre-Tow Checklist โ [Truck] + [Trailer/RV] TRUCK: โก Engine oil level โก Coolant level โก DEF level (diesel) โก Tire pressures (loaded spec: front [X] psi, rear [X] psi) โก Brake controller connected and tested โก Transmission temp gauge working โก All lights working โก Mirrors adjusted for towing HITCH/CONNECTION: โก Fifth wheel / gooseneck / ball mount secured โก Pin box / kingpin locked (verify with tug test) โก Safety chains crossed under tongue โก Breakaway cable attached โก 7-pin connector โ test all lights (brake, turn, running, reverse) โก Breakaway battery charged TRAILER/RV: โก Tire pressures (spec: [X] psi) โ check age on sidewall โก Wheel lug torque (spec: [X] ft-lbs) โก Slides fully retracted and locked โก Awning secured โก Fridge set to travel mode (or propane off) โก All compartments latched โก Stabilizer jacks fully up โก Roof vents closed โก TV antenna down โก Water heater bypass (if applicable) โก LP gas tank valve position (check local laws for travel) โก Cargo secured inside (open fridge, cabinets after arrival) OVERDUE/DUE SERVICES: [List any from service review]
Pre-Winter / Winterization: Antifreeze protection level (test with hydrometer) Battery load test (cold reduces capacity 30-50%) Wiper blades and washer fluid (cold-rated) Tire condition (all-season or winter tires?) Block heater working (diesel trucks) RV: Full winterization procedure (blow out lines, RV antifreeze, water heater drain, bypass) Boat: Winterize engine, fog cylinders, stabilize fuel, drain water systems Pre-Summer / De-Winterization: AC system check (run it before you need it) Coolant level and condition RV: De-winterize water system, sanitize tanks, check AC units Check tire pressures (heat increases pressure) Inspect belts and hoses (heat accelerates wear) Pre-Trip (General): All fluid levels Tire pressures and condition Lights and signals Brakes (visual or recent service) Wiper blades Emergency kit (jumper cables, flashlight, first aid) Registration and insurance current
Calculate driving pace and project when future services will come due.
Requires 2+ data points in mileage_history at least 14 days apart. average_miles_per_month = (latest_miles - earliest_miles) / months_between_readings Use the full history for a stable average, but weight recent data more heavily if there's a significant change in driving pattern.
If fewer than 2 data points or readings are too close together: Note: "Need more mileage history to project dates โ will be available after next check-in" Still show mile-based estimates without dates
Track where services are performed for easy reference and provider management.
When logging a completed service, optionally ask: Shop name (or "same as last time" / "DIY") Location (city/address) Phone number Satisfaction rating (1-5) Parts warranty (months) Labor warranty (months) Don't make this burdensome โ if they just say "got my oil changed", log the service first, then casually ask where. Skip if they seem uninterested.
Providers are stored in two places: Global providers array in state.json root โ reusable across vehicles: { "id": "jims_diesel", "name": "Jim's Diesel Repair", "location": "123 Main St, Mesa, AZ", "phone": "480-555-1234", "specialties": ["diesel", "trucks"], "rating": 5, "notes": "Great with Power Stroke engines" } Per service_history entry โ reference by id plus any service-specific warranty: { "provider": { "id": "jims_diesel", "name": "Jim's Diesel Repair", "parts_warranty_months": 12, "labor_warranty_months": 6 } }
Handle questions like: "Where did I get my last oil change?" โ Search service_history for most recent oil_filter entry, return provider "What shop did I use for the transmission service?" โ Search by service_id "Show me all services at Jim's" โ Filter service_history by provider.id "What's Jim's phone number?" โ Look up in providers array "Same shop as last time" โ Use the provider from the most recent service_history entry
For vehicles flagged as business-use, help track deductible maintenance expenses.
Per vehicle in state.json: { "business_use": true, "business_use_percent": 50 } If business_use is true and no percentage is set, assume 100%.
When a service is completed with an actual_cost on a business-use vehicle: Calculate deductible portion: actual_cost ร (business_use_percent / 100) Note it to the user: ๐ผ Tax Note: This $450 trans fluid service is 50% business use. Deductible amount: $225.00 (vehicle maintenance expense) Suggest logging to the tax-professional skill: Want me to log this to your tax deductions? โ $225.00 as vehicle maintenance expense
If the user confirms, reference skills/tax-professional/SKILL.md and log to data/tax-professional/YYYY-expenses.json: { "date": "2026-01-15", "category": "vehicle_maintenance", "description": "Trans fluid service โ F-350 (50% business use)", "amount": 225.00, "vehicle": "f350", "full_cost": 450.00, "business_percent": 50, "receipt": false }
On request or at tax time: ๐ผ [Year] Business Vehicle Deductions โ [Vehicle] Total maintenance costs: $[X] Business use: [X]% Deductible amount: $[X] Services included: [count] services
Store and quickly retrieve critical vehicle information for roadside emergencies, parts lookup, or quick reference.
Per vehicle in state.json: { "emergency_info": { "vin": "1FT8W3BT0MED12345", "insurance_provider": "State Farm", "policy_number": "SF-123456789", "roadside_assistance_phone": "1-800-555-1234", "tire_size_front": "275/70R18", "tire_size_rear": "275/70R18", "tire_pressure_front_psi": 65, "tire_pressure_rear_psi": 80, "oil_type": "15W-40 CK-4 Full Synthetic", "oil_capacity": "15 quarts", "coolant_type": "Motorcraft Orange VC-3DIL-B", "def_type": "API certified DEF", "trans_fluid": "Motorcraft Mercon ULV", "tow_rating_lbs": 20000, "gvwr_lbs": 14000, "gcwr_lbs": 37000, "payload_lbs": 4300, "key_fob_battery": "CR2450", "fuel_type": "Diesel (Ultra Low Sulfur)", "fuel_tank_gallons": 48, "lug_nut_torque_ft_lbs": 165, "jack_points": "Frame rails, front and rear", "notes": "" } }
Respond instantly to: "What's my VIN?" โ Return VIN "What are my truck's tire specs?" โ Tire sizes and pressures "What oil does my truck take?" โ Oil type and capacity "Insurance info?" โ Provider, policy number, phone "Roadside assistance number?" โ Phone number "What's my tow rating?" โ Tow rating, GVWR, GCWR "Key fob battery?" โ Battery type "Lug nut torque?" โ Torque spec
When asked for "emergency info" or "vehicle card": ๐จ Emergency Info โ [Vehicle Label] โโโโโโโโโโโโโโโโโโโโโโโโโโโ VIN: [vin] Insurance: [provider] โ Policy #[number] Roadside: [phone] ๐ง Specs Tires: F:[size] R:[size] Pressure: F:[X]psi R:[X]psi Oil: [type] ([capacity]) Coolant: [type] Fuel: [type] ([tank] gal) Key fob battery: [type] ๐ Ratings Tow: [X] lbs | GVWR: [X] lbs GCWR: [X] lbs | Payload: [X] lbs Lug torque: [X] ft-lbs โโโโโโโโโโโโโโโโโโโโโโโโโโโ
When adding a new vehicle, collect what's available. Many specs can be researched from the year/make/model. Let the user fill in personal info (insurance, roadside number) over time. Fields can be null until populated.
Calculate total cost of vehicle ownership on a per-mile basis.
Requires mileage history with at least 2 data points. total_miles_driven = latest_miles - earliest_miles (from mileage_history) Maintenance cost per mile = total_actual_costs / total_miles_driven Fuel cost per mile = total_fuel_cost / total_miles_driven Total operating cost per mile = (total_actual_costs + total_fuel_cost) / total_miles_driven
When asked "cost per mile" or "operating cost": ๐ Cost Per Mile โ [Vehicle] Period: [earliest date] to [latest date] ([X] miles driven) Maintenance only: $[X.XX]/mile Fuel only: $[X.XX]/mile (if fuel tracking active) Total operating: $[X.XX]/mile ๐ก National averages (approximate): Cars: ~$0.10/mi maintenance, ~$0.12/mi fuel Trucks: ~$0.14/mi maintenance, ~$0.20/mi fuel (diesel) Heavy-duty diesel (towing): ~$0.18/mi maintenance, ~$0.25/mi fuel
If tracking multiple vehicles, show a comparison: ๐ Fleet Cost Per Mile [Vehicle 1]: $[X.XX]/mi (maintenance) | $[X.XX]/mi (total) [Vehicle 2]: $[X.XX]/mi (maintenance) | $[X.XX]/mi (total) Fleet average: $[X.XX]/mi
Only include services with actual_cost recorded (skip nulls) If no fuel data, show maintenance-only Warn if data period is short (<3 months or <1,000 miles): "Limited data โ will become more accurate over time" Cost per mile naturally decreases as expensive one-time services are amortized over more miles
A single cron job runs weekly (the highest possible frequency) and checks which vehicles are due for a check-in based on their individual check_in_frequency and last_check_in date. It also performs monthly recall checks. Prompt: "Mechanic skill: mileage check" When this fires: Read <workspace>/data/mechanic/state.json For each vehicle, check if it's due for a check-in: Compare last_check_in date against check_in_frequency Weekly: due if 7+ days since last check-in Biweekly: due if 14+ days Monthly: due if 30+ days Quarterly: due if 90+ days Monthly recall check: If 30+ days since any vehicle's recalls.last_checked, fetch latest recalls from NHTSA API and update state If no vehicles are due for check-in AND no new recalls found, reply with HEARTBEAT_OK (skip silently) If vehicles are due, ask for current readings on only the due vehicles If new recalls found, include them in the message even if no vehicles are due for mileage check-in Update state and last_check_in when they respond Run a Service Review for the updated vehicles (includes warranty alerts, projections, recalls)
Create a single cron job that runs weekly. It will internally filter which vehicles are due. Check <workspace>/USER.md for timezone. Cron expression: 0 17 * * 0 (every Sunday at 5pm in user's timezone) Cron job config: Session: isolated with delivery to their chat channel Prompt: Read the mechanic skill, load state from data/mechanic/state.json. Check each vehicle's check_in_frequency and last_check_in to determine which are due. Also check recalls if 30+ days since last recall check. If none are due and no new recalls, reply HEARTBEAT_OK. Otherwise, ask for current readings on the due vehicles only, report any new recalls, then run a service review with costs, warranty alerts, and projections. Be conversational.
The user can change frequency per vehicle at any time: "Check my dirt bike weekly" โ update that vehicle's check_in_frequency "Ask about the truck less often" โ switch to quarterly "Change all vehicles to monthly" โ update all Update the vehicle's check_in_frequency in state.json and confirm the change.
When the user reports mileage or hours (in any context, not just monthly): Update the vehicle's current_miles and/or current_hours Set last_updated to today Append to mileage_history: {"date": "YYYY-MM-DD", "miles": <value>, "source": "user_reported"} Run a Service Review
After any mileage/hours update, analyze all services from the vehicle's schedule file.
Find the last time this service was done from service_history (match by service_id) If never done, assume done at mile 0 / hour 0 (vehicle acquisition) Calculate against all applicable intervals: miles_since_service vs interval_miles months_since_service vs interval_months hours_since_service vs interval_hours Categorize: ๐ด OVERDUE: Exceeded ANY interval ๐ก DUE SOON: Within 15% of ANY interval ๐ข OK: Not yet due
Only include sections that have relevant data: Skip recalls section if no open recalls Skip warranty alerts if none expiring soon Skip fuel economy if no fuel_history data Skip projections if insufficient mileage data Skip spending if no actual_cost data Skip tax note if vehicle isn't business-use
When the user says they've done a service (e.g., "just got my oil changed", "did the fuel filters at 65k"): Identify which vehicle and which service Ask what they paid (casually โ "What'd that run you?" / "How much was it?") Optionally capture provider ("Where'd you take it?" / "Same shop as last time?") Add to that vehicle's service_history: { "service_id": "<matching id>", "date": "YYYY-MM-DD", "miles": <mileage_at_service>, "hours": <hours_if_applicable>, "notes": "<any details the user mentions>", "actual_cost": <amount_or_null>, "cost_type": "shop", "provider": { "id": "<provider_id>", "name": "<provider_name>", "parts_warranty_months": null, "labor_warranty_months": null } } If business-use vehicle, note the deductible portion Offer to log to tax-professional if applicable Confirm what was logged Recalculate next due date for that service
Handle questions about any tracked vehicle. If ambiguous, ask which vehicle. Examples: "When's my next oil change?" โ Check the relevant vehicle(s) "What oil does my truck take?" โ Reference schedule details or emergency_info "What maintenance do I need?" โ Full review, all vehicles "I just hit 70,000 miles" โ Update mileage, run review "Got new tires at 61k" โ Log service, track rotation from there "I just got a new [vehicle]" โ Walk through adding it "How much would an oil change cost?" โ Reference cost estimates "What's the most urgent thing?" โ Prioritize across all vehicles "Any recalls on my truck?" โ Check NHTSA API "How's my fuel economy?" โ MPG report "How much have I spent this year?" โ Spending summary "Is my warranty still good?" โ Check warranty status "Is this covered under warranty?" โ Match service to active warranties "I'm heading on a road trip" โ Pre-trip checklist "When will my trans fluid be due?" โ Mileage projection "Where did I get my last oil change?" โ Provider lookup "What's my VIN?" โ Emergency info "Look up my VIN" / "Decode my VIN" โ Run VIN decode, show specs "Here's my VIN: [VIN]" โ Decode, store, auto-populate, run recall check "What are my tire specs?" โ Emergency info "Cost per mile?" โ Operating cost analysis "How much will I spend on maintenance in the next 6 months?" โ Budget projection
Check <workspace>/USER.md for the user's location and use it to tailor advice: Hot climates (desert, southern states): Battery life shortened significantly by heat Tire UV damage โ recommend tire covers for parked vehicles Coolant system more stressed Rubber components (belts, hoses, seals) degrade faster Mud daubers/wasps in vents and exhaust (RVs especially) Cold climates (northern states, mountains): Winterization critical for RVs and boats Battery capacity reduced in cold Check antifreeze protection level Furnace/heating system inspection before cold season Dusty/off-road environments: Engine and cabin air filters need more frequent inspection Generator air filters (RVs) Check CV boots (ATVs/UTVs) Coastal/marine environments: Corrosion concerns More frequent undercarriage wash Check electrical connections
Always include cost estimates when flagging overdue or due-soon services: DIY โ parts cost only Shop โ independent mechanic / specialty shop Dealer โ manufacturer dealership Include any cost_note warnings about expensive failure scenarios. When presenting a batch of services, provide a total estimate for bundling them in one shop visit.
Transmission flushes โ Many modern transmissions (especially Ford 10R series, CVTs) should ONLY be drain-and-fill, never flushed. Always check manufacturer recommendation. RV roofs โ Water intrusion is the #1 RV killer. Always emphasize sealant and roof inspections. Tire age โ Tires should be replaced at 5-6 years regardless of tread depth, especially RV/trailer tires. Severe duty โ If someone tows, hauls, drives off-road, or operates in extreme temps, they're almost always on the severe/special conditions schedule whether they realize it or not. Part numbers โ Include OEM part numbers in schedule details. Users can then find equivalent aftermarket parts. Seasonal items โ Flag winterization, de-winterization, and seasonal prep based on the user's location and time of year. Generator hours โ Track separately from vehicle miles. Generators have their own service intervals. Breakaway batteries (trailers) โ Often forgotten. Include in trailer/RV inspections. Recall completions โ Always free at the dealer. Never pay for a recall repair. Warranty work โ Document everything. Keep receipts. Note warranty claim numbers in service history. Fuel tracking consistency โ Always fill to the same level (full) for accurate MPG calculations. Mark partial fills.
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.