{
  "schemaVersion": "1.0",
  "item": {
    "slug": "mechanic",
    "name": "Mechanic",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/ScotTFO/mechanic",
    "canonicalUrl": "https://clawhub.ai/ScotTFO/mechanic",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/mechanic",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=mechanic",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "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."
        },
        {
          "label": "Upgrade existing",
          "body": "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."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/mechanic"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/mechanic",
    "agentPageUrl": "https://openagent3.xyz/skills/mechanic/agent",
    "manifestUrl": "https://openagent3.xyz/skills/mechanic/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/mechanic/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "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."
      },
      {
        "label": "Upgrade existing",
        "body": "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."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Mechanic — Vehicle Maintenance Tracker",
        "body": "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."
      },
      {
        "title": "Data Storage",
        "body": "All user data lives in <workspace>/data/mechanic/:\n\nFilePurposestate.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\n\nConvention: Skill logic lives in <skill>/, user data lives in <workspace>/data/mechanic/. This keeps data safe when the skill is updated or reinstalled."
      },
      {
        "title": "First-Time Setup",
        "body": "If <workspace>/data/mechanic/state.json doesn't exist:\n\nCreate <workspace>/data/mechanic/ directory\nAsk the user what vehicles they want to track\nFor each vehicle, run the Adding a New Vehicle workflow (includes choosing check-in frequency per vehicle)\nCreate state.json with the vehicle entries\nSet up the cron job (see Mileage Check Setup)"
      },
      {
        "title": "State File Structure",
        "body": "{\n  \"settings\": {\n    \"check_in_tz\": \"America/Phoenix\"\n  },\n  \"providers\": [\n    {\n      \"id\": \"jims_diesel\",\n      \"name\": \"Jim's Diesel Repair\",\n      \"location\": \"123 Main St, Mesa, AZ\",\n      \"phone\": \"480-555-1234\",\n      \"specialties\": [\"diesel\", \"trucks\"],\n      \"rating\": 5,\n      \"notes\": \"Great with Power Stroke engines\"\n    }\n  ],\n  \"vehicles\": {\n    \"f350\": {\n      \"label\": \"2021 Ford F-350 6.7L Power Stroke\",\n      \"schedule_file\": \"f350-schedule.json\",\n      \"check_in_frequency\": \"monthly\",\n      \"current_miles\": 61450,\n      \"last_updated\": \"2026-01-26\",\n      \"last_check_in\": \"2026-01-26\",\n      \"vin\": \"1FT8W3BT0MED12345\",\n      \"vin_data\": {\n        \"decoded\": true,\n        \"decoded_date\": \"2026-01-26\",\n        \"year\": 2021,\n        \"make\": \"Ford\",\n        \"model\": \"F-350\",\n        \"trim\": \"Lariat\",\n        \"body_class\": \"Pickup\",\n        \"drive_type\": \"4WD\",\n        \"engine\": \"6.7L Power Stroke V8 Turbo Diesel\",\n        \"displacement_l\": 6.7,\n        \"cylinders\": 8,\n        \"fuel_type\": \"Diesel\",\n        \"transmission\": \"10-Speed Automatic\",\n        \"doors\": 4,\n        \"gvwr_class\": \"Class 3\",\n        \"bed_length\": \"8 ft\",\n        \"wheel_base\": \"176 in\",\n        \"plant_country\": \"United States\",\n        \"plant_city\": \"Louisville\",\n        \"raw_response\": {}\n      },\n      \"business_use\": false,\n      \"business_use_percent\": 0,\n      \"mileage_history\": [\n        {\"date\": \"2026-01-26\", \"miles\": 61450, \"source\": \"user_reported\"}\n      ],\n      \"service_history\": [\n        {\n          \"service_id\": \"oil_filter\",\n          \"date\": \"2025-11-15\",\n          \"miles\": 58000,\n          \"hours\": null,\n          \"notes\": \"Full synthetic Motorcraft FL-2051S\",\n          \"actual_cost\": 125.00,\n          \"provider\": {\n            \"id\": \"jims_diesel\",\n            \"name\": \"Jim's Diesel Repair\",\n            \"parts_warranty_months\": 12,\n            \"labor_warranty_months\": 6\n          }\n        }\n      ],\n      \"fuel_history\": [\n        {\n          \"date\": \"2026-01-20\",\n          \"gallons\": 32.5,\n          \"cost\": 108.55,\n          \"odometer\": 61300,\n          \"mpg\": 14.2,\n          \"notes\": \"Regular fill-up\"\n        }\n      ],\n      \"warranties\": [\n        {\n          \"type\": \"factory_powertrain\",\n          \"provider\": \"Ford\",\n          \"start_date\": \"2021-03-15\",\n          \"end_date\": \"2026-03-15\",\n          \"start_miles\": 0,\n          \"end_miles\": 60000,\n          \"coverage_details\": \"Engine, transmission, drivetrain components\",\n          \"status\": \"active\"\n        }\n      ],\n      \"recalls\": {\n        \"last_checked\": \"2026-01-26\",\n        \"open_recalls\": [],\n        \"completed_recalls\": []\n      },\n      \"emergency_info\": {\n        \"vin\": \"1FT8W3BT0MED12345\",\n        \"insurance_provider\": \"State Farm\",\n        \"policy_number\": \"SF-123456789\",\n        \"roadside_assistance_phone\": \"1-800-555-1234\",\n        \"tire_size_front\": \"275/70R18\",\n        \"tire_size_rear\": \"275/70R18\",\n        \"tire_pressure_front_psi\": 65,\n        \"tire_pressure_rear_psi\": 80,\n        \"oil_type\": \"15W-40 CK-4 Full Synthetic\",\n        \"oil_capacity\": \"15 quarts\",\n        \"coolant_type\": \"Motorcraft Orange VC-3DIL-B\",\n        \"def_type\": \"API certified DEF\",\n        \"tow_rating_lbs\": 20000,\n        \"gvwr_lbs\": 14000,\n        \"gcwr_lbs\": 37000,\n        \"key_fob_battery\": \"CR2450\",\n        \"fuel_type\": \"Diesel (Ultra Low Sulfur)\",\n        \"fuel_tank_gallons\": 48,\n        \"notes\": \"\"\n      }\n    }\n  },\n  \"last_service_review\": \"2026-01-26\"\n}\n\nTop-level fields:\n\nsettings — global settings (timezone, etc.)\nproviders — reusable list of service providers\nvehicles — keyed by short slug (e.g., f350, rv, crf450)\nlast_service_review — date of last full review\n\nPer-vehicle fields:\n\nlabel — human-readable vehicle name\nschedule_file — path to the service schedule JSON\ncheck_in_frequency — how often to ask for mileage (weekly/biweekly/monthly/quarterly)\ncurrent_miles / current_hours — latest known readings\nlast_updated / last_check_in — date tracking\nvin — Vehicle Identification Number (for recalls, VIN decode, and emergency info)\nvin_data — decoded VIN data from NHTSA VPIC API (specs, engine, transmission, etc.)\nbusiness_use — whether vehicle is used for business (boolean)\nbusiness_use_percent — percentage of business use (0-100)\nmileage_history — chronological array of mileage/hours entries\nservice_history — chronological array of completed services (with optional actual_cost and provider)\nfuel_history — chronological array of fuel fill-ups\nwarranties — array of warranty records\nrecalls — recall monitoring state (last checked, open/completed)\nemergency_info — quick-reference vehicle specs and emergency contacts"
      },
      {
        "title": "Reading State",
        "body": "On skill load, read:\n\n<workspace>/data/mechanic/state.json — current state for all vehicles\nThe relevant <key>-schedule.json file(s) depending on what's being discussed"
      },
      {
        "title": "Adding a New Vehicle",
        "body": "When the user wants to track a new vehicle:"
      },
      {
        "title": "1. Gather Vehicle Info",
        "body": "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.\n\nAsk for:\n\nVIN (strongly recommended — auto-populates specs, enables recall monitoring, emergency info)\nYear, make, model (only ask if no VIN provided)\nEngine/trim (only ask if no VIN or VIN decode was incomplete)\nUsage pattern — daily driver, towing, off-road, weekend toy, etc.\nCurrent mileage/hours\nBusiness use? — if yes, what percentage? (enables tax deduction tracking)\nWarranty info — any active factory or extended warranties? Expiration date/mileage?\nEmergency info — insurance provider, roadside assistance number, tire sizes (can be filled in later)\n\nIf 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."
      },
      {
        "title": "2. Determine Duty Level",
        "body": "Ask about usage to classify the maintenance schedule:\n\nUsageDuty 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\n\nMost manufacturers publish both \"normal\" and \"severe/special conditions\" schedules. Use the one that matches."
      },
      {
        "title": "3. Choose Check-In Frequency",
        "body": "Ask how often they want to be asked about this vehicle's mileage/hours:\n\nFrequencyBest 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\n\nSuggest a frequency based on the vehicle type and usage pattern, but let the user override."
      },
      {
        "title": "4. Research the Service Schedule",
        "body": "Look up manufacturer-recommended maintenance intervals for that specific year/make/model/engine:\n\nUse web search to find the official maintenance schedule\nCheck the owner's manual intervals\nCross-reference with enthusiast forums for real-world advice\nFactor in the duty level from step 2"
      },
      {
        "title": "5. Build the Schedule File",
        "body": "Create <workspace>/data/mechanic/<key>-schedule.json:\n\n{\n  \"vehicle\": {\n    \"year\": 2021,\n    \"make\": \"Ford\",\n    \"model\": \"F-350\",\n    \"type\": \"truck\",\n    \"engine\": \"6.7L Power Stroke V8 Turbo Diesel\",\n    \"transmission\": \"10R140 10-Speed Automatic\",\n    \"duty\": \"severe\",\n    \"notes\": \"Tows fifth wheel RV\"\n  },\n  \"services\": [\n    {\n      \"id\": \"oil_filter\",\n      \"name\": \"Engine Oil & Filter Change\",\n      \"interval_miles\": 7500,\n      \"interval_months\": 6,\n      \"details\": \"Specific oil type, filter part number, capacity, and any special instructions.\",\n      \"priority\": \"critical\",\n      \"cost_diy\": \"$XX-XX\",\n      \"cost_shop\": \"$XX-XX\",\n      \"cost_dealer\": \"$XX-XX\",\n      \"cost_note\": \"Optional note about related expensive repairs\"\n    }\n  ]\n}\n\nRequired for every service item:\n\nid — unique snake_case identifier\nname — human-readable name\nAt least one interval: interval_miles, interval_months, interval_hours, or interval_rides\ndetails — specific parts, fluids, capacities, and any warnings\npriority — critical, high, medium, or low\ncost_diy, cost_shop, cost_dealer — estimated cost ranges\n\nResearch costs:\n\nSearch for typical costs for each service on that specific vehicle\nDIY = parts cost only\nShop = independent mechanic\nDealer = manufacturer dealership\nAdd cost_note for items where failure/repair is significantly more expensive than maintenance"
      },
      {
        "title": "6. Add to State",
        "body": "Add the vehicle to state.json under the vehicles object:\n\n{\n  \"<key>\": {\n    \"label\": \"2021 Ford F-350 6.7L Power Stroke\",\n    \"schedule_file\": \"<key>-schedule.json\",\n    \"check_in_frequency\": \"monthly\",\n    \"current_miles\": 61450,\n    \"current_hours\": null,\n    \"last_updated\": \"2026-01-26\",\n    \"last_check_in\": \"2026-01-26\",\n    \"vin\": null,\n    \"vin_data\": {\n      \"decoded\": false\n    },\n    \"business_use\": false,\n    \"business_use_percent\": 0,\n    \"mileage_history\": [\n      {\"date\": \"2026-01-26\", \"miles\": 61450, \"source\": \"user_reported\"}\n    ],\n    \"service_history\": [],\n    \"fuel_history\": [],\n    \"warranties\": [],\n    \"recalls\": {\n      \"last_checked\": null,\n      \"open_recalls\": [],\n      \"completed_recalls\": []\n    },\n    \"emergency_info\": {\n      \"vin\": null,\n      \"insurance_provider\": null,\n      \"policy_number\": null,\n      \"roadside_assistance_phone\": null,\n      \"tire_size_front\": null,\n      \"tire_size_rear\": null,\n      \"tire_pressure_front_psi\": null,\n      \"tire_pressure_rear_psi\": null,\n      \"oil_type\": null,\n      \"oil_capacity\": null,\n      \"coolant_type\": null,\n      \"tow_rating_lbs\": null,\n      \"gvwr_lbs\": null,\n      \"key_fob_battery\": null,\n      \"fuel_type\": null,\n      \"fuel_tank_gallons\": null,\n      \"notes\": \"\"\n    }\n  }\n}\n\nKey naming: Use a short, memorable slug — f350, civic, r1, rv, crf450, harley, bass_boat, etc."
      },
      {
        "title": "7. Update Cron Job",
        "body": "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."
      },
      {
        "title": "8. VIN Decode & Auto-Populate",
        "body": "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."
      },
      {
        "title": "9. Run Initial Recall Check",
        "body": "If a VIN was provided, immediately check for open recalls (see NHTSA Recall Monitoring). If no VIN, check by make/model/year."
      },
      {
        "title": "Vehicle Types and Special Considerations",
        "body": "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"
      },
      {
        "title": "Interval Types",
        "body": "Services can use any combination of:\n\ninterval_miles — odometer-based\ninterval_hours — engine/usage hours (generators, dirt bikes, boats)\ninterval_months — time-based (everything degrades with age)\ninterval_rides — per-use (e.g., dirt bike air filter = every ride)\n\nWhichever interval is reached first triggers the service."
      },
      {
        "title": "VIN Decode & Auto-Population",
        "body": "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."
      },
      {
        "title": "NHTSA VPIC API (VIN Decoder)",
        "body": "Endpoint: https://vpic.nhtsa.dot.gov/api/vehicles/DecodeVinValues/{VIN}?format=json\n\nNo API key required. Free and unlimited.\n\nExample:\n\nGET https://vpic.nhtsa.dot.gov/api/vehicles/DecodeVinValues/1FT8W3BT0MED12345?format=json"
      },
      {
        "title": "Key Fields to Extract",
        "body": "The API returns a Results array with one object containing ~140+ fields. Extract and map these:\n\nVPIC 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\n\nNote: Many fields return empty strings \"\" if not applicable. Only store non-empty values."
      },
      {
        "title": "VIN Data Storage",
        "body": "Store decoded data in the vehicle's vin_data object in state.json:\n\n{\n  \"vin_data\": {\n    \"decoded\": true,\n    \"decoded_date\": \"2026-01-27\",\n    \"year\": 2021,\n    \"make\": \"Ford\",\n    \"model\": \"F-350\",\n    \"trim\": \"Lariat\",\n    \"body_class\": \"Pickup\",\n    \"drive_type\": \"4WD\",\n    \"engine\": \"6.7L Power Stroke V8 Turbo Diesel\",\n    \"displacement_l\": 6.7,\n    \"cylinders\": 8,\n    \"fuel_type\": \"Diesel\",\n    \"transmission\": \"10-Speed Automatic\",\n    \"doors\": 4,\n    \"gvwr_class\": \"Class 3\",\n    \"bed_length\": \"8 ft\",\n    \"wheel_base\": \"176 in\",\n    \"plant_country\": \"United States\",\n    \"plant_city\": \"Louisville\",\n    \"raw_response\": {}\n  }\n}\n\nStore 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.).\n\nIf vin_data.decoded is false or missing, the VIN hasn't been decoded yet."
      },
      {
        "title": "Auto-Population Workflow",
        "body": "When a VIN is decoded:\n\nUpdate vin_data — store all decoded fields\nUpdate label — build from decoded year/make/model/engine (e.g., \"2021 Ford F-350 6.7L Power Stroke\")\nUpdate emergency_info — auto-fill fields that can be derived:\n\nfuel_type from FuelTypePrimary\ngvwr_lbs from GVWR (parse weight class to approximate lbs)\n\n\nUpdate schedule file — populate the vehicle section with decoded specs\nPresent to user — show what was decoded, confirm accuracy, ask about anything the VIN couldn't tell us (usage pattern, duty level, insurance, etc.)"
      },
      {
        "title": "When to Decode",
        "body": "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"
      },
      {
        "title": "Adding VIN Later",
        "body": "If a vehicle was added without a VIN and the user provides one later:\n\nDecode the VIN\nStore in vin_data\nUpdate vin field\nBackfill any empty emergency_info fields\nUpdate label if the decoded info is more specific\nRun an immediate recall check with the new VIN\nConfirm what was updated"
      },
      {
        "title": "VIN Decode Presentation Format",
        "body": "When presenting decoded VIN data to the user:\n\n🔍 VIN Decoded — [VIN]\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\n📋 Vehicle\nYear: [year] | Make: [make] | Model: [model]\nTrim: [trim] | Body: [body_class]\nDrive: [drive_type] | Doors: [doors]\n\n🔧 Powertrain\nEngine: [engine] ([displacement]L, [cylinders] cyl)\nFuel: [fuel_type]\nTransmission: [transmission]\n\n📏 Specs\nGVWR: [gvwr_class]\nWheel Base: [wheel_base]\nBed Length: [bed_length] (if truck)\n\n🏭 Built in [plant_city], [plant_country]\n━━━━━━━━━━━━━━━━━━━━━━━━━━━"
      },
      {
        "title": "Limitations",
        "body": "VPIC is NHTSA data — best for US-market vehicles. Import/foreign-market VINs may have incomplete data.\nTrailers 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.\nMotorcycles and powersports — coverage varies. Japanese brands (Honda, Yamaha, Kawasaki, Suzuki) generally decode well. Smaller manufacturers may not.\nPre-1981 vehicles — VINs weren't standardized until 1981. Older VINs won't decode.\nIf decode returns sparse data, fall back to manual entry and web search for specs."
      },
      {
        "title": "NHTSA Recall Monitoring",
        "body": "Monitor for open recalls on all tracked vehicles using the free NHTSA API (no API key required)."
      },
      {
        "title": "API Endpoints",
        "body": "By make/model/year: https://api.nhtsa.dot.gov/recalls/recallsByVehicle?make=Ford&model=F-350&modelYear=2021\nBy VIN (more precise): https://api.nhtsa.dot.gov/recalls/recallsByVin?vin=XXXXX\n\nIf a VIN is stored, prefer the VIN-based lookup. Otherwise fall back to make/model/year."
      },
      {
        "title": "Recall Data Storage",
        "body": "Per vehicle in state.json:\n\n{\n  \"recalls\": {\n    \"last_checked\": \"2026-01-26\",\n    \"open_recalls\": [\n      {\n        \"nhtsa_id\": \"26V-123\",\n        \"component\": \"FUEL SYSTEM\",\n        \"summary\": \"Fuel line may crack under pressure\",\n        \"consequence\": \"Fuel leak, fire risk\",\n        \"remedy\": \"Dealer will replace fuel line at no cost\",\n        \"date_reported\": \"2025-12-01\",\n        \"status\": \"open\"\n      }\n    ],\n    \"completed_recalls\": [\n      {\n        \"nhtsa_id\": \"24V-456\",\n        \"component\": \"ELECTRICAL\",\n        \"summary\": \"Battery cable may corrode\",\n        \"date_completed\": \"2025-06-15\",\n        \"notes\": \"Done at dealer\"\n      }\n    ]\n  }\n}"
      },
      {
        "title": "When to Check",
        "body": "Monthly cron: Include recall checks in the mileage check cron. Check recalls for all vehicles monthly regardless of their check-in frequency.\nOn vehicle add: Check immediately when a new vehicle is added.\nOn demand: User asks \"any recalls on my truck?\""
      },
      {
        "title": "Recall Report Format",
        "body": "Include in service review output:\n\n⚠️ OPEN RECALLS\n- [NHTSA ID] — [Component]: [Summary]\n  Remedy: [What the dealer will do]\n  ⚡ Contact your dealer to schedule this recall service (free)\n\nWhen a user reports completing a recall, move it from open_recalls to completed_recalls with the completion date."
      },
      {
        "title": "Fuel / MPG Tracking",
        "body": "Track fuel fill-ups to monitor fuel economy, detect mechanical issues early, and track fuel spending."
      },
      {
        "title": "Logging a Fill-Up",
        "body": "When user says \"filled up\", \"got gas/diesel\", or reports a fill-up:\n\nCapture: date, gallons, cost (total or price per gallon), odometer reading\nCalculate MPG: (current_odometer - previous_odometer) / gallons\nAppend to the vehicle's fuel_history array\nCheck for MPG anomalies"
      },
      {
        "title": "Fuel History Entry",
        "body": "{\n  \"date\": \"2026-01-20\",\n  \"gallons\": 32.5,\n  \"cost\": 108.55,\n  \"price_per_gallon\": 3.34,\n  \"odometer\": 61300,\n  \"mpg\": 14.2,\n  \"partial_fill\": false,\n  \"notes\": \"\"\n}"
      },
      {
        "title": "MPG Calculations",
        "body": "Per fill-up MPG: (current_odometer - previous_fill_odometer) / gallons (skip if previous fill was partial)\nRolling average: Average of last 10 fill-ups (or all if fewer than 10)\nTrend: Compare last 3 fill-ups to rolling average"
      },
      {
        "title": "Anomaly Detection",
        "body": "If a fill-up MPG is more than 15% below the rolling average, flag it:\n\n⚠️ MPG Alert — [Vehicle]\nLast fill-up: 10.5 MPG (your average is 14.2 MPG)\n26% below your rolling average — this could indicate:\n- Tire pressure issues\n- Air filter needs replacement\n- Fuel system issue\n- Change in driving conditions (heavy towing, headwinds)\n- Mechanical problem developing\n\nCheck tire pressures first, then review recent driving conditions."
      },
      {
        "title": "Fuel Report Format",
        "body": "When asked \"how's my fuel economy?\" or \"MPG report\":\n\n⛽ Fuel Report — [Vehicle]\nLast fill-up: [X] MPG on [date]\nRolling average: [X] MPG (last 10 fills)\nTrend: [improving/stable/declining]\nTotal fuel cost (YTD): $[X]\nTotal gallons (YTD): [X]\nAverage cost per gallon: $[X]"
      },
      {
        "title": "Partial Fills",
        "body": "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."
      },
      {
        "title": "Actual Cost Tracking",
        "body": "Track what the user actually pays for maintenance to build accurate spending records."
      },
      {
        "title": "Capturing Costs",
        "body": "When a user logs a completed service:\n\nAfter confirming the service details, ask: \"What did you end up paying?\" (or accept if they volunteered it)\nStore as actual_cost in the service_history entry\nIf they don't know or don't want to share, leave it null — don't block the log"
      },
      {
        "title": "Service History Entry (with cost)",
        "body": "{\n  \"service_id\": \"oil_filter\",\n  \"date\": \"2025-11-15\",\n  \"miles\": 58000,\n  \"hours\": null,\n  \"notes\": \"Full synthetic, Motorcraft filter\",\n  \"actual_cost\": 125.00,\n  \"cost_type\": \"shop\",\n  \"provider\": {\n    \"id\": \"jims_diesel\",\n    \"name\": \"Jim's Diesel Repair\"\n  }\n}\n\ncost_type values: diy, shop, dealer, warranty, recall (free)"
      },
      {
        "title": "Spending Analysis",
        "body": "Track and report on request:\n\nPer vehicle, per year: \"You've spent $X on the F-350 this year\"\nActual vs estimated: Compare actual_cost to the schedule's cost estimates\nCategory breakdown: Group by service type (oil changes, filters, tires, etc.)\nAll-time total: Total maintenance spending per vehicle"
      },
      {
        "title": "Annual Summary",
        "body": "When asked or at year-end:\n\n💰 [Year] Maintenance Summary — [Vehicle]\nTotal spent: $[X]\nServices performed: [count]\nBiggest expense: [service] — $[X]\nAverage cost per service: $[X]\nvs. Estimated: $[X] ([over/under] by [X]%)"
      },
      {
        "title": "Warranty Tracking",
        "body": "Track warranties to know what's covered and get alerts before they expire."
      },
      {
        "title": "Warranty Entry Structure",
        "body": "{\n  \"type\": \"factory_powertrain\",\n  \"provider\": \"Ford\",\n  \"start_date\": \"2021-03-15\",\n  \"end_date\": \"2026-03-15\",\n  \"start_miles\": 0,\n  \"end_miles\": 60000,\n  \"coverage_details\": \"Engine, transmission, transfer case, driveshaft, axle assemblies\",\n  \"status\": \"active\",\n  \"contact_phone\": \"1-800-392-3673\",\n  \"claim_number\": null,\n  \"notes\": \"\"\n}"
      },
      {
        "title": "Warranty Types",
        "body": "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"
      },
      {
        "title": "Expiration Alerts",
        "body": "Check warranties during every service review. Alert when:\n\nWithin 3 months of end_date, OR\nWithin 3,000 miles of end_miles (whichever comes first)\n\nAlert format:\n\n⚠️ WARRANTY EXPIRING SOON\n[Vehicle] — [Warranty type] from [Provider]\nExpires: [date] or [miles] miles (whichever first)\nRemaining: ~[X] months / ~[X] miles\nCoverage: [details]\n💡 Schedule any warranty-covered concerns before expiration!"
      },
      {
        "title": "Warranty Coverage Check",
        "body": "When user asks \"is this covered under warranty?\" or when flagging a due service:\n\nCheck all active warranties for the vehicle\nMatch the service type to warranty coverage\nIf potentially covered: \"This may be covered under your [warranty type] from [provider] (expires [date]). Contact them before paying out of pocket.\""
      },
      {
        "title": "Status Values",
        "body": "active — currently in effect\nexpiring_soon — within alert threshold\nexpired — past end date or end miles\nclaimed — warranty claim was filed"
      },
      {
        "title": "Pre-Trip / Seasonal Checklists",
        "body": "Generate vehicle-specific checklists when a trip or seasonal change is mentioned."
      },
      {
        "title": "Trigger Phrases",
        "body": "Activate when user says things like:\n\n\"I'm heading on a trip\" / \"road trip\" / \"going to [location]\"\n\"towing this weekend\" / \"pulling the RV to [place]\"\n\"getting ready for winter\" / \"time to winterize\"\n\"spring is coming\" / \"time to de-winterize\"\n\"going off-road this weekend\" / \"trail ride\""
      },
      {
        "title": "Checklist Generation",
        "body": "Build the checklist by combining:\n\nOverdue/due-soon services — Pull from service review for this vehicle\nWeather at destination — Check forecast if location given (hot, cold, rain, snow, altitude)\nTrip-type items — Based on what they're doing\nSeasonal items — Based on current date and location"
      },
      {
        "title": "Towing Checklist (Truck + Trailer/RV)",
        "body": "🚛 Pre-Tow Checklist — [Truck] + [Trailer/RV]\n\nTRUCK:\n□ Engine oil level\n□ Coolant level\n□ DEF level (diesel)\n□ Tire pressures (loaded spec: front [X] psi, rear [X] psi)\n□ Brake controller connected and tested\n□ Transmission temp gauge working\n□ All lights working\n□ Mirrors adjusted for towing\n\nHITCH/CONNECTION:\n□ Fifth wheel / gooseneck / ball mount secured\n□ Pin box / kingpin locked (verify with tug test)\n□ Safety chains crossed under tongue\n□ Breakaway cable attached\n□ 7-pin connector — test all lights (brake, turn, running, reverse)\n□ Breakaway battery charged\n\nTRAILER/RV:\n□ Tire pressures (spec: [X] psi) — check age on sidewall\n□ Wheel lug torque (spec: [X] ft-lbs)\n□ Slides fully retracted and locked\n□ Awning secured\n□ Fridge set to travel mode (or propane off)\n□ All compartments latched\n□ Stabilizer jacks fully up\n□ Roof vents closed\n□ TV antenna down\n□ Water heater bypass (if applicable)\n□ LP gas tank valve position (check local laws for travel)\n□ Cargo secured inside (open fridge, cabinets after arrival)\n\nOVERDUE/DUE SERVICES:\n[List any from service review]"
      },
      {
        "title": "Seasonal Checklists",
        "body": "Pre-Winter / Winterization:\n\nAntifreeze protection level (test with hydrometer)\nBattery load test (cold reduces capacity 30-50%)\nWiper blades and washer fluid (cold-rated)\nTire condition (all-season or winter tires?)\nBlock heater working (diesel trucks)\nRV: Full winterization procedure (blow out lines, RV antifreeze, water heater drain, bypass)\nBoat: Winterize engine, fog cylinders, stabilize fuel, drain water systems\n\nPre-Summer / De-Winterization:\n\nAC system check (run it before you need it)\nCoolant level and condition\nRV: De-winterize water system, sanitize tanks, check AC units\nCheck tire pressures (heat increases pressure)\nInspect belts and hoses (heat accelerates wear)\n\nPre-Trip (General):\n\nAll fluid levels\nTire pressures and condition\nLights and signals\nBrakes (visual or recent service)\nWiper blades\nEmergency kit (jumper cables, flashlight, first aid)\nRegistration and insurance current"
      },
      {
        "title": "Mileage Projection",
        "body": "Calculate driving pace and project when future services will come due."
      },
      {
        "title": "Calculation",
        "body": "Requires 2+ data points in mileage_history at least 14 days apart.\n\naverage_miles_per_month = (latest_miles - earliest_miles) / months_between_readings\n\nUse the full history for a stable average, but weight recent data more heavily if there's a significant change in driving pattern."
      },
      {
        "title": "Service Date Projection",
        "body": "For each service:\n\nCalculate miles remaining: next_due_miles - current_miles\nProject months: miles_remaining / average_miles_per_month\nProject date: today + projected_months\nAlso check time-based interval independently\n\nInclude in service review:\n\n📅 Projected Service Dates\n- Oil Change: ~[Month Year] (at ~[X] miles)\n- Fuel Filters: ~[Month Year] (at ~[X] miles)\n- Trans Fluid: ~[Month Year] (at ~[X] miles)"
      },
      {
        "title": "Budget Projection",
        "body": "When asked or included in reviews:\n\n💰 Next 6-Month Budget Forecast — [Vehicle]\nAt [X] miles/month, expect:\n- Oil change (~[Month]): $[X]\n- Fuel filters (~[Month]): $[X]\n- Cabin air filter (~[Month]): $[X]\nTotal estimated: $[X]"
      },
      {
        "title": "Insufficient Data",
        "body": "If fewer than 2 data points or readings are too close together:\n\nNote: \"Need more mileage history to project dates — will be available after next check-in\"\nStill show mile-based estimates without dates"
      },
      {
        "title": "Service Provider Tracking",
        "body": "Track where services are performed for easy reference and provider management."
      },
      {
        "title": "Capturing Provider Info",
        "body": "When logging a completed service, optionally ask:\n\nShop name (or \"same as last time\" / \"DIY\")\nLocation (city/address)\nPhone number\nSatisfaction rating (1-5)\nParts warranty (months)\nLabor warranty (months)\n\nDon'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."
      },
      {
        "title": "Provider Storage",
        "body": "Providers are stored in two places:\n\nGlobal providers array in state.json root — reusable across vehicles:\n\n{\n  \"id\": \"jims_diesel\",\n  \"name\": \"Jim's Diesel Repair\",\n  \"location\": \"123 Main St, Mesa, AZ\",\n  \"phone\": \"480-555-1234\",\n  \"specialties\": [\"diesel\", \"trucks\"],\n  \"rating\": 5,\n  \"notes\": \"Great with Power Stroke engines\"\n}\n\nPer service_history entry — reference by id plus any service-specific warranty:\n\n{\n  \"provider\": {\n    \"id\": \"jims_diesel\",\n    \"name\": \"Jim's Diesel Repair\",\n    \"parts_warranty_months\": 12,\n    \"labor_warranty_months\": 6\n  }\n}"
      },
      {
        "title": "Provider Queries",
        "body": "Handle questions like:\n\n\"Where did I get my last oil change?\" → Search service_history for most recent oil_filter entry, return provider\n\"What shop did I use for the transmission service?\" → Search by service_id\n\"Show me all services at Jim's\" → Filter service_history by provider.id\n\"What's Jim's phone number?\" → Look up in providers array\n\"Same shop as last time\" → Use the provider from the most recent service_history entry"
      },
      {
        "title": "Tax Deduction Integration",
        "body": "For vehicles flagged as business-use, help track deductible maintenance expenses."
      },
      {
        "title": "Configuration",
        "body": "Per vehicle in state.json:\n\n{\n  \"business_use\": true,\n  \"business_use_percent\": 50\n}\n\nIf business_use is true and no percentage is set, assume 100%."
      },
      {
        "title": "Deduction Tracking",
        "body": "When a service is completed with an actual_cost on a business-use vehicle:\n\nCalculate deductible portion: actual_cost × (business_use_percent / 100)\nNote it to the user:\n💼 Tax Note: This $450 trans fluid service is 50% business use.\nDeductible amount: $225.00 (vehicle maintenance expense)\n\n\nSuggest logging to the tax-professional skill:\nWant me to log this to your tax deductions? \n→ $225.00 as vehicle maintenance expense"
      },
      {
        "title": "Integration with Tax-Professional Skill",
        "body": "If the user confirms, reference skills/tax-professional/SKILL.md and log to data/tax-professional/YYYY-expenses.json:\n\n{\n  \"date\": \"2026-01-15\",\n  \"category\": \"vehicle_maintenance\",\n  \"description\": \"Trans fluid service — F-350 (50% business use)\",\n  \"amount\": 225.00,\n  \"vehicle\": \"f350\",\n  \"full_cost\": 450.00,\n  \"business_percent\": 50,\n  \"receipt\": false\n}"
      },
      {
        "title": "Annual Tax Summary",
        "body": "On request or at tax time:\n\n💼 [Year] Business Vehicle Deductions — [Vehicle]\nTotal maintenance costs: $[X]\nBusiness use: [X]%\nDeductible amount: $[X]\nServices included: [count] services"
      },
      {
        "title": "Emergency Info Card",
        "body": "Store and quickly retrieve critical vehicle information for roadside emergencies, parts lookup, or quick reference."
      },
      {
        "title": "Emergency Info Structure",
        "body": "Per vehicle in state.json:\n\n{\n  \"emergency_info\": {\n    \"vin\": \"1FT8W3BT0MED12345\",\n    \"insurance_provider\": \"State Farm\",\n    \"policy_number\": \"SF-123456789\",\n    \"roadside_assistance_phone\": \"1-800-555-1234\",\n    \"tire_size_front\": \"275/70R18\",\n    \"tire_size_rear\": \"275/70R18\",\n    \"tire_pressure_front_psi\": 65,\n    \"tire_pressure_rear_psi\": 80,\n    \"oil_type\": \"15W-40 CK-4 Full Synthetic\",\n    \"oil_capacity\": \"15 quarts\",\n    \"coolant_type\": \"Motorcraft Orange VC-3DIL-B\",\n    \"def_type\": \"API certified DEF\",\n    \"trans_fluid\": \"Motorcraft Mercon ULV\",\n    \"tow_rating_lbs\": 20000,\n    \"gvwr_lbs\": 14000,\n    \"gcwr_lbs\": 37000,\n    \"payload_lbs\": 4300,\n    \"key_fob_battery\": \"CR2450\",\n    \"fuel_type\": \"Diesel (Ultra Low Sulfur)\",\n    \"fuel_tank_gallons\": 48,\n    \"lug_nut_torque_ft_lbs\": 165,\n    \"jack_points\": \"Frame rails, front and rear\",\n    \"notes\": \"\"\n  }\n}"
      },
      {
        "title": "Quick Access Queries",
        "body": "Respond instantly to:\n\n\"What's my VIN?\" → Return VIN\n\"What are my truck's tire specs?\" → Tire sizes and pressures\n\"What oil does my truck take?\" → Oil type and capacity\n\"Insurance info?\" → Provider, policy number, phone\n\"Roadside assistance number?\" → Phone number\n\"What's my tow rating?\" → Tow rating, GVWR, GCWR\n\"Key fob battery?\" → Battery type\n\"Lug nut torque?\" → Torque spec"
      },
      {
        "title": "Emergency Card Format",
        "body": "When asked for \"emergency info\" or \"vehicle card\":\n\n🚨 Emergency Info — [Vehicle Label]\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\nVIN: [vin]\nInsurance: [provider] — Policy #[number]\nRoadside: [phone]\n\n🔧 Specs\nTires: F:[size] R:[size]\nPressure: F:[X]psi R:[X]psi\nOil: [type] ([capacity])\nCoolant: [type]\nFuel: [type] ([tank] gal)\nKey fob battery: [type]\n\n📏 Ratings\nTow: [X] lbs | GVWR: [X] lbs\nGCWR: [X] lbs | Payload: [X] lbs\nLug torque: [X] ft-lbs\n━━━━━━━━━━━━━━━━━━━━━━━━━━━"
      },
      {
        "title": "Population",
        "body": "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."
      },
      {
        "title": "Cost Per Mile Analysis",
        "body": "Calculate total cost of vehicle ownership on a per-mile basis."
      },
      {
        "title": "Calculations",
        "body": "Requires mileage history with at least 2 data points.\n\ntotal_miles_driven = latest_miles - earliest_miles (from mileage_history)\n\nMaintenance cost per mile = total_actual_costs / total_miles_driven\nFuel cost per mile = total_fuel_cost / total_miles_driven\nTotal operating cost per mile = (total_actual_costs + total_fuel_cost) / total_miles_driven"
      },
      {
        "title": "Report Format",
        "body": "When asked \"cost per mile\" or \"operating cost\":\n\n📊 Cost Per Mile — [Vehicle]\nPeriod: [earliest date] to [latest date] ([X] miles driven)\n\nMaintenance only: $[X.XX]/mile\nFuel only: $[X.XX]/mile (if fuel tracking active)\nTotal operating: $[X.XX]/mile\n\n💡 National averages (approximate):\nCars: ~$0.10/mi maintenance, ~$0.12/mi fuel\nTrucks: ~$0.14/mi maintenance, ~$0.20/mi fuel (diesel)\nHeavy-duty diesel (towing): ~$0.18/mi maintenance, ~$0.25/mi fuel"
      },
      {
        "title": "Fleet Overview",
        "body": "If tracking multiple vehicles, show a comparison:\n\n📊 Fleet Cost Per Mile\n[Vehicle 1]: $[X.XX]/mi (maintenance) | $[X.XX]/mi (total)\n[Vehicle 2]: $[X.XX]/mi (maintenance) | $[X.XX]/mi (total)\nFleet average: $[X.XX]/mi"
      },
      {
        "title": "Notes",
        "body": "Only include services with actual_cost recorded (skip nulls)\nIf no fuel data, show maintenance-only\nWarn if data period is short (<3 months or <1,000 miles): \"Limited data — will become more accurate over time\"\nCost per mile naturally decreases as expensive one-time services are amortized over more miles"
      },
      {
        "title": "Mileage Check (Cron-Triggered)",
        "body": "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.\n\nPrompt: \"Mechanic skill: mileage check\"\n\nWhen this fires:\n\nRead <workspace>/data/mechanic/state.json\nFor each vehicle, check if it's due for a check-in:\n\nCompare last_check_in date against check_in_frequency\nWeekly: due if 7+ days since last check-in\nBiweekly: due if 14+ days\nMonthly: due if 30+ days\nQuarterly: due if 90+ days\n\n\nMonthly recall check: If 30+ days since any vehicle's recalls.last_checked, fetch latest recalls from NHTSA API and update state\nIf no vehicles are due for check-in AND no new recalls found, reply with HEARTBEAT_OK (skip silently)\nIf vehicles are due, ask for current readings on only the due vehicles\nIf new recalls found, include them in the message even if no vehicles are due for mileage check-in\nUpdate state and last_check_in when they respond\nRun a Service Review for the updated vehicles (includes warranty alerts, projections, recalls)"
      },
      {
        "title": "Mileage Check Setup",
        "body": "Create a single cron job that runs weekly. It will internally filter which vehicles are due. Check <workspace>/USER.md for timezone.\n\nCron expression: 0 17 * * 0 (every Sunday at 5pm in user's timezone)\n\nCron job config:\n\nSession: isolated with delivery to their chat channel\nPrompt: 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."
      },
      {
        "title": "Changing Frequency",
        "body": "The user can change frequency per vehicle at any time:\n\n\"Check my dirt bike weekly\" → update that vehicle's check_in_frequency\n\"Ask about the truck less often\" → switch to quarterly\n\"Change all vehicles to monthly\" → update all\n\nUpdate the vehicle's check_in_frequency in state.json and confirm the change."
      },
      {
        "title": "Mileage/Hours Update",
        "body": "When the user reports mileage or hours (in any context, not just monthly):\n\nUpdate the vehicle's current_miles and/or current_hours\nSet last_updated to today\nAppend to mileage_history:\n\n{\"date\": \"YYYY-MM-DD\", \"miles\": <value>, \"source\": \"user_reported\"}\n\nRun a Service Review"
      },
      {
        "title": "Service Review",
        "body": "After any mileage/hours update, analyze all services from the vehicle's schedule file."
      },
      {
        "title": "For each service item:",
        "body": "Find the last time this service was done from service_history (match by service_id)\nIf never done, assume done at mile 0 / hour 0 (vehicle acquisition)\nCalculate against all applicable intervals:\n\nmiles_since_service vs interval_miles\nmonths_since_service vs interval_months\nhours_since_service vs interval_hours\n\n\nCategorize:\n\n🔴 OVERDUE: Exceeded ANY interval\n🟡 DUE SOON: Within 15% of ANY interval\n🟢 OK: Not yet due"
      },
      {
        "title": "Report Format",
        "body": "Full report (when issues found):\n\n🔧 Vehicle Service Report\n\n━━━ [Vehicle Label] @ [miles] mi ━━━\n\n⚠️ OPEN RECALLS\n- [NHTSA ID] — [Component]: [Summary]\n  Remedy: [description] (FREE at dealer)\n\n⚠️ WARRANTY ALERTS\n- [Warranty type] from [Provider] — expires [date] or [miles] mi\n  [X] months / [X] miles remaining\n\n🔴 OVERDUE\n- [service] — [X] miles/months overdue\n  💰 DIY: $X | Shop: $X | Dealer: $X\n  [💼 [X]% deductible] (if business use)\n\n🟡 DUE SOON\n- [service] — due in ~[X] miles/months\n  💰 DIY: $X | Shop: $X | Dealer: $X\n\n📅 PROJECTED SCHEDULE (next 6 months)\n- [service] — ~[Month Year] at ~[X] mi ($[X] est.)\n- [service] — ~[Month Year] at ~[X] mi ($[X] est.)\nTotal upcoming (6mo): ~$[X]\n\n⛽ FUEL ECONOMY\nCurrent: [X] MPG | Average: [X] MPG | Trend: [stable/improving/declining]\n[⚠️ MPG Alert if applicable]\n\n💰 SPENDING (YTD)\nMaintenance: $[X] | Fuel: $[X] | Total: $[X]\nCost per mile: $[X.XX]\n\n[Repeat for each vehicle]\n\n🟢 [count] services current across all vehicles\n\nAll clear (brief):\n\n🔧 All vehicles current ✅\n[Vehicle] @ [mi] — next: [soonest service] at ~[miles] (~[Month])\nNo open recalls | Warranties current\n\nWhen multiple services are due at once, provide a bundled total estimate and suggest combining them in one shop visit."
      },
      {
        "title": "Conditional Sections",
        "body": "Only include sections that have relevant data:\n\nSkip recalls section if no open recalls\nSkip warranty alerts if none expiring soon\nSkip fuel economy if no fuel_history data\nSkip projections if insufficient mileage data\nSkip spending if no actual_cost data\nSkip tax note if vehicle isn't business-use"
      },
      {
        "title": "Logging Completed Services",
        "body": "When the user says they've done a service (e.g., \"just got my oil changed\", \"did the fuel filters at 65k\"):\n\nIdentify which vehicle and which service\nAsk what they paid (casually — \"What'd that run you?\" / \"How much was it?\")\nOptionally capture provider (\"Where'd you take it?\" / \"Same shop as last time?\")\nAdd to that vehicle's service_history:\n\n{\n  \"service_id\": \"<matching id>\",\n  \"date\": \"YYYY-MM-DD\",\n  \"miles\": <mileage_at_service>,\n  \"hours\": <hours_if_applicable>,\n  \"notes\": \"<any details the user mentions>\",\n  \"actual_cost\": <amount_or_null>,\n  \"cost_type\": \"shop\",\n  \"provider\": {\n    \"id\": \"<provider_id>\",\n    \"name\": \"<provider_name>\",\n    \"parts_warranty_months\": null,\n    \"labor_warranty_months\": null\n  }\n}\n\nIf business-use vehicle, note the deductible portion\nOffer to log to tax-professional if applicable\nConfirm what was logged\nRecalculate next due date for that service"
      },
      {
        "title": "Ad-Hoc Queries",
        "body": "Handle questions about any tracked vehicle. If ambiguous, ask which vehicle.\n\nExamples:\n\n\"When's my next oil change?\" → Check the relevant vehicle(s)\n\"What oil does my truck take?\" → Reference schedule details or emergency_info\n\"What maintenance do I need?\" → Full review, all vehicles\n\"I just hit 70,000 miles\" → Update mileage, run review\n\"Got new tires at 61k\" → Log service, track rotation from there\n\"I just got a new [vehicle]\" → Walk through adding it\n\"How much would an oil change cost?\" → Reference cost estimates\n\"What's the most urgent thing?\" → Prioritize across all vehicles\n\"Any recalls on my truck?\" → Check NHTSA API\n\"How's my fuel economy?\" → MPG report\n\"How much have I spent this year?\" → Spending summary\n\"Is my warranty still good?\" → Check warranty status\n\"Is this covered under warranty?\" → Match service to active warranties\n\"I'm heading on a road trip\" → Pre-trip checklist\n\"When will my trans fluid be due?\" → Mileage projection\n\"Where did I get my last oil change?\" → Provider lookup\n\"What's my VIN?\" → Emergency info\n\"Look up my VIN\" / \"Decode my VIN\" → Run VIN decode, show specs\n\"Here's my VIN: [VIN]\" → Decode, store, auto-populate, run recall check\n\"What are my tire specs?\" → Emergency info\n\"Cost per mile?\" → Operating cost analysis\n\"How much will I spend on maintenance in the next 6 months?\" → Budget projection"
      },
      {
        "title": "Environmental Awareness",
        "body": "Check <workspace>/USER.md for the user's location and use it to tailor advice:\n\nHot climates (desert, southern states):\n\nBattery life shortened significantly by heat\nTire UV damage — recommend tire covers for parked vehicles\nCoolant system more stressed\nRubber components (belts, hoses, seals) degrade faster\nMud daubers/wasps in vents and exhaust (RVs especially)\n\nCold climates (northern states, mountains):\n\nWinterization critical for RVs and boats\nBattery capacity reduced in cold\nCheck antifreeze protection level\nFurnace/heating system inspection before cold season\n\nDusty/off-road environments:\n\nEngine and cabin air filters need more frequent inspection\nGenerator air filters (RVs)\nCheck CV boots (ATVs/UTVs)\n\nCoastal/marine environments:\n\nCorrosion concerns\nMore frequent undercarriage wash\nCheck electrical connections"
      },
      {
        "title": "Cost Estimates",
        "body": "Always include cost estimates when flagging overdue or due-soon services:\n\nDIY — parts cost only\nShop — independent mechanic / specialty shop\nDealer — manufacturer dealership\n\nInclude any cost_note warnings about expensive failure scenarios.\n\nWhen presenting a batch of services, provide a total estimate for bundling them in one shop visit."
      },
      {
        "title": "Important General Notes",
        "body": "Transmission flushes — Many modern transmissions (especially Ford 10R series, CVTs) should ONLY be drain-and-fill, never flushed. Always check manufacturer recommendation.\nRV roofs — Water intrusion is the #1 RV killer. Always emphasize sealant and roof inspections.\nTire age — Tires should be replaced at 5-6 years regardless of tread depth, especially RV/trailer tires.\nSevere 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.\nPart numbers — Include OEM part numbers in schedule details. Users can then find equivalent aftermarket parts.\nSeasonal items — Flag winterization, de-winterization, and seasonal prep based on the user's location and time of year.\nGenerator hours — Track separately from vehicle miles. Generators have their own service intervals.\nBreakaway batteries (trailers) — Often forgotten. Include in trailer/RV inspections.\nRecall completions — Always free at the dealer. Never pay for a recall repair.\nWarranty work — Document everything. Keep receipts. Note warranty claim numbers in service history.\nFuel tracking consistency — Always fill to the same level (full) for accurate MPG calculations. Mark partial fills."
      }
    ],
    "body": "Mechanic — Vehicle Maintenance Tracker\n\nTrack 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.\n\nData Storage\n\nAll user data lives in <workspace>/data/mechanic/:\n\nFile\tPurpose\nstate.json\tAll vehicles: current mileage/hours, history, service records, fuel logs, warranties, providers, emergency info\n<key>-schedule.json\tPer-vehicle service schedule with intervals and cost estimates\n\nConvention: Skill logic lives in <skill>/, user data lives in <workspace>/data/mechanic/. This keeps data safe when the skill is updated or reinstalled.\n\nFirst-Time Setup\n\nIf <workspace>/data/mechanic/state.json doesn't exist:\n\nCreate <workspace>/data/mechanic/ directory\nAsk the user what vehicles they want to track\nFor each vehicle, run the Adding a New Vehicle workflow (includes choosing check-in frequency per vehicle)\nCreate state.json with the vehicle entries\nSet up the cron job (see Mileage Check Setup)\nState File Structure\n{\n  \"settings\": {\n    \"check_in_tz\": \"America/Phoenix\"\n  },\n  \"providers\": [\n    {\n      \"id\": \"jims_diesel\",\n      \"name\": \"Jim's Diesel Repair\",\n      \"location\": \"123 Main St, Mesa, AZ\",\n      \"phone\": \"480-555-1234\",\n      \"specialties\": [\"diesel\", \"trucks\"],\n      \"rating\": 5,\n      \"notes\": \"Great with Power Stroke engines\"\n    }\n  ],\n  \"vehicles\": {\n    \"f350\": {\n      \"label\": \"2021 Ford F-350 6.7L Power Stroke\",\n      \"schedule_file\": \"f350-schedule.json\",\n      \"check_in_frequency\": \"monthly\",\n      \"current_miles\": 61450,\n      \"last_updated\": \"2026-01-26\",\n      \"last_check_in\": \"2026-01-26\",\n      \"vin\": \"1FT8W3BT0MED12345\",\n      \"vin_data\": {\n        \"decoded\": true,\n        \"decoded_date\": \"2026-01-26\",\n        \"year\": 2021,\n        \"make\": \"Ford\",\n        \"model\": \"F-350\",\n        \"trim\": \"Lariat\",\n        \"body_class\": \"Pickup\",\n        \"drive_type\": \"4WD\",\n        \"engine\": \"6.7L Power Stroke V8 Turbo Diesel\",\n        \"displacement_l\": 6.7,\n        \"cylinders\": 8,\n        \"fuel_type\": \"Diesel\",\n        \"transmission\": \"10-Speed Automatic\",\n        \"doors\": 4,\n        \"gvwr_class\": \"Class 3\",\n        \"bed_length\": \"8 ft\",\n        \"wheel_base\": \"176 in\",\n        \"plant_country\": \"United States\",\n        \"plant_city\": \"Louisville\",\n        \"raw_response\": {}\n      },\n      \"business_use\": false,\n      \"business_use_percent\": 0,\n      \"mileage_history\": [\n        {\"date\": \"2026-01-26\", \"miles\": 61450, \"source\": \"user_reported\"}\n      ],\n      \"service_history\": [\n        {\n          \"service_id\": \"oil_filter\",\n          \"date\": \"2025-11-15\",\n          \"miles\": 58000,\n          \"hours\": null,\n          \"notes\": \"Full synthetic Motorcraft FL-2051S\",\n          \"actual_cost\": 125.00,\n          \"provider\": {\n            \"id\": \"jims_diesel\",\n            \"name\": \"Jim's Diesel Repair\",\n            \"parts_warranty_months\": 12,\n            \"labor_warranty_months\": 6\n          }\n        }\n      ],\n      \"fuel_history\": [\n        {\n          \"date\": \"2026-01-20\",\n          \"gallons\": 32.5,\n          \"cost\": 108.55,\n          \"odometer\": 61300,\n          \"mpg\": 14.2,\n          \"notes\": \"Regular fill-up\"\n        }\n      ],\n      \"warranties\": [\n        {\n          \"type\": \"factory_powertrain\",\n          \"provider\": \"Ford\",\n          \"start_date\": \"2021-03-15\",\n          \"end_date\": \"2026-03-15\",\n          \"start_miles\": 0,\n          \"end_miles\": 60000,\n          \"coverage_details\": \"Engine, transmission, drivetrain components\",\n          \"status\": \"active\"\n        }\n      ],\n      \"recalls\": {\n        \"last_checked\": \"2026-01-26\",\n        \"open_recalls\": [],\n        \"completed_recalls\": []\n      },\n      \"emergency_info\": {\n        \"vin\": \"1FT8W3BT0MED12345\",\n        \"insurance_provider\": \"State Farm\",\n        \"policy_number\": \"SF-123456789\",\n        \"roadside_assistance_phone\": \"1-800-555-1234\",\n        \"tire_size_front\": \"275/70R18\",\n        \"tire_size_rear\": \"275/70R18\",\n        \"tire_pressure_front_psi\": 65,\n        \"tire_pressure_rear_psi\": 80,\n        \"oil_type\": \"15W-40 CK-4 Full Synthetic\",\n        \"oil_capacity\": \"15 quarts\",\n        \"coolant_type\": \"Motorcraft Orange VC-3DIL-B\",\n        \"def_type\": \"API certified DEF\",\n        \"tow_rating_lbs\": 20000,\n        \"gvwr_lbs\": 14000,\n        \"gcwr_lbs\": 37000,\n        \"key_fob_battery\": \"CR2450\",\n        \"fuel_type\": \"Diesel (Ultra Low Sulfur)\",\n        \"fuel_tank_gallons\": 48,\n        \"notes\": \"\"\n      }\n    }\n  },\n  \"last_service_review\": \"2026-01-26\"\n}\n\n\nTop-level fields:\n\nsettings — global settings (timezone, etc.)\nproviders — reusable list of service providers\nvehicles — keyed by short slug (e.g., f350, rv, crf450)\nlast_service_review — date of last full review\n\nPer-vehicle fields:\n\nlabel — human-readable vehicle name\nschedule_file — path to the service schedule JSON\ncheck_in_frequency — how often to ask for mileage (weekly/biweekly/monthly/quarterly)\ncurrent_miles / current_hours — latest known readings\nlast_updated / last_check_in — date tracking\nvin — Vehicle Identification Number (for recalls, VIN decode, and emergency info)\nvin_data — decoded VIN data from NHTSA VPIC API (specs, engine, transmission, etc.)\nbusiness_use — whether vehicle is used for business (boolean)\nbusiness_use_percent — percentage of business use (0-100)\nmileage_history — chronological array of mileage/hours entries\nservice_history — chronological array of completed services (with optional actual_cost and provider)\nfuel_history — chronological array of fuel fill-ups\nwarranties — array of warranty records\nrecalls — recall monitoring state (last checked, open/completed)\nemergency_info — quick-reference vehicle specs and emergency contacts\nReading State\n\nOn skill load, read:\n\n<workspace>/data/mechanic/state.json — current state for all vehicles\nThe relevant <key>-schedule.json file(s) depending on what's being discussed\nAdding a New Vehicle\n\nWhen the user wants to track a new vehicle:\n\n1. Gather Vehicle Info\n\nAsk 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.\n\nAsk for:\n\nVIN (strongly recommended — auto-populates specs, enables recall monitoring, emergency info)\nYear, make, model (only ask if no VIN provided)\nEngine/trim (only ask if no VIN or VIN decode was incomplete)\nUsage pattern — daily driver, towing, off-road, weekend toy, etc.\nCurrent mileage/hours\nBusiness use? — if yes, what percentage? (enables tax deduction tracking)\nWarranty info — any active factory or extended warranties? Expiration date/mileage?\nEmergency info — insurance provider, roadside assistance number, tire sizes (can be filled in later)\n\nIf 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.\n\n2. Determine Duty Level\n\nAsk about usage to classify the maintenance schedule:\n\nUsage\tDuty Level\tEffect\nNormal commuting\tNormal\tStandard intervals\nTowing, hauling\tSevere\tShorter intervals (typically 50-75% of normal)\nOff-road, dusty conditions\tSevere\tShorter intervals, more frequent filter changes\nExtreme temps (hot desert, harsh cold)\tSevere\tShorter intervals, fluid/battery concerns\nTrack/racing\tSevere+\tAggressive intervals, specialized fluids\nLight use, garage kept\tNormal\tStandard intervals, but watch time-based items\n\nMost manufacturers publish both \"normal\" and \"severe/special conditions\" schedules. Use the one that matches.\n\n3. Choose Check-In Frequency\n\nAsk how often they want to be asked about this vehicle's mileage/hours:\n\nFrequency\tBest for\nWeekly\tDirt bikes, race vehicles, commercial/fleet, high-mileage daily drivers\nEvery 2 weeks\tActive riders/drivers, vehicles with short service intervals\nMonthly\tMost cars and trucks (recommended default)\nQuarterly\tSeasonal vehicles, low-mileage, garage queens, stored boats\n\nSuggest a frequency based on the vehicle type and usage pattern, but let the user override.\n\n4. Research the Service Schedule\n\nLook up manufacturer-recommended maintenance intervals for that specific year/make/model/engine:\n\nUse web search to find the official maintenance schedule\nCheck the owner's manual intervals\nCross-reference with enthusiast forums for real-world advice\nFactor in the duty level from step 2\n5. Build the Schedule File\n\nCreate <workspace>/data/mechanic/<key>-schedule.json:\n\n{\n  \"vehicle\": {\n    \"year\": 2021,\n    \"make\": \"Ford\",\n    \"model\": \"F-350\",\n    \"type\": \"truck\",\n    \"engine\": \"6.7L Power Stroke V8 Turbo Diesel\",\n    \"transmission\": \"10R140 10-Speed Automatic\",\n    \"duty\": \"severe\",\n    \"notes\": \"Tows fifth wheel RV\"\n  },\n  \"services\": [\n    {\n      \"id\": \"oil_filter\",\n      \"name\": \"Engine Oil & Filter Change\",\n      \"interval_miles\": 7500,\n      \"interval_months\": 6,\n      \"details\": \"Specific oil type, filter part number, capacity, and any special instructions.\",\n      \"priority\": \"critical\",\n      \"cost_diy\": \"$XX-XX\",\n      \"cost_shop\": \"$XX-XX\",\n      \"cost_dealer\": \"$XX-XX\",\n      \"cost_note\": \"Optional note about related expensive repairs\"\n    }\n  ]\n}\n\n\nRequired for every service item:\n\nid — unique snake_case identifier\nname — human-readable name\nAt least one interval: interval_miles, interval_months, interval_hours, or interval_rides\ndetails — specific parts, fluids, capacities, and any warnings\npriority — critical, high, medium, or low\ncost_diy, cost_shop, cost_dealer — estimated cost ranges\n\nResearch costs:\n\nSearch for typical costs for each service on that specific vehicle\nDIY = parts cost only\nShop = independent mechanic\nDealer = manufacturer dealership\nAdd cost_note for items where failure/repair is significantly more expensive than maintenance\n6. Add to State\n\nAdd the vehicle to state.json under the vehicles object:\n\n{\n  \"<key>\": {\n    \"label\": \"2021 Ford F-350 6.7L Power Stroke\",\n    \"schedule_file\": \"<key>-schedule.json\",\n    \"check_in_frequency\": \"monthly\",\n    \"current_miles\": 61450,\n    \"current_hours\": null,\n    \"last_updated\": \"2026-01-26\",\n    \"last_check_in\": \"2026-01-26\",\n    \"vin\": null,\n    \"vin_data\": {\n      \"decoded\": false\n    },\n    \"business_use\": false,\n    \"business_use_percent\": 0,\n    \"mileage_history\": [\n      {\"date\": \"2026-01-26\", \"miles\": 61450, \"source\": \"user_reported\"}\n    ],\n    \"service_history\": [],\n    \"fuel_history\": [],\n    \"warranties\": [],\n    \"recalls\": {\n      \"last_checked\": null,\n      \"open_recalls\": [],\n      \"completed_recalls\": []\n    },\n    \"emergency_info\": {\n      \"vin\": null,\n      \"insurance_provider\": null,\n      \"policy_number\": null,\n      \"roadside_assistance_phone\": null,\n      \"tire_size_front\": null,\n      \"tire_size_rear\": null,\n      \"tire_pressure_front_psi\": null,\n      \"tire_pressure_rear_psi\": null,\n      \"oil_type\": null,\n      \"oil_capacity\": null,\n      \"coolant_type\": null,\n      \"tow_rating_lbs\": null,\n      \"gvwr_lbs\": null,\n      \"key_fob_battery\": null,\n      \"fuel_type\": null,\n      \"fuel_tank_gallons\": null,\n      \"notes\": \"\"\n    }\n  }\n}\n\n\nKey naming: Use a short, memorable slug — f350, civic, r1, rv, crf450, harley, bass_boat, etc.\n\n7. Update Cron Job\n\nUpdate 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.\n\n8. VIN Decode & Auto-Populate\n\nIf 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.\n\n9. Run Initial Recall Check\n\nIf a VIN was provided, immediately check for open recalls (see NHTSA Recall Monitoring). If no VIN, check by make/model/year.\n\nVehicle Types and Special Considerations\nType\tTrack\tKey Maintenance Items\nCar\tMiles\tOil, filters, brakes, tires, transmission, coolant\nTruck\tMiles\tSame as car + diff fluids, transfer case (4WD), heavier brake wear if towing\nMotorcycle\tMiles\tOil, chain/sprockets, valve clearance, fork oil, brake fluid, coolant (liquid-cooled), tires (wear faster)\nDirt Bike\tHours + rides\tAir filter (every ride!), oil (very frequent), valve clearance, suspension service, chain, coolant\nATV/UTV\tHours + miles\tSimilar to dirt bike + CV boots, belt (CVT), winch maintenance\nRV/Trailer\tMiles + months\tRoof/sealant inspection, slide-outs, wheel bearings, electric brakes, tires (age-based), water system, generator, winterization\nBoat\tHours\tOil, impeller, lower unit fluid, zincs/anodes, winterization, trailer bearings\nFifth Wheel/Trailer\tMiles + months\tNo engine, but: bearings, brakes, tires, roof, seals, slides, plumbing, LP gas, seasonal prep\nInterval Types\n\nServices can use any combination of:\n\ninterval_miles — odometer-based\ninterval_hours — engine/usage hours (generators, dirt bikes, boats)\ninterval_months — time-based (everything degrades with age)\ninterval_rides — per-use (e.g., dirt bike air filter = every ride)\n\nWhichever interval is reached first triggers the service.\n\nVIN Decode & Auto-Population\n\nWhen 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.\n\nNHTSA VPIC API (VIN Decoder)\n\nEndpoint: https://vpic.nhtsa.dot.gov/api/vehicles/DecodeVinValues/{VIN}?format=json\n\nNo API key required. Free and unlimited.\n\nExample:\n\nGET https://vpic.nhtsa.dot.gov/api/vehicles/DecodeVinValues/1FT8W3BT0MED12345?format=json\n\nKey Fields to Extract\n\nThe API returns a Results array with one object containing ~140+ fields. Extract and map these:\n\nVPIC Field\tMaps To\tNotes\nModelYear\tvin_data.year\tVehicle year\nMake\tvin_data.make\tManufacturer\nModel\tvin_data.model\tModel name\nTrim\tvin_data.trim\tTrim level (Lariat, XLT, etc.)\nBodyClass\tvin_data.body_class\tPickup, SUV, Motorcycle, etc.\nDriveType\tvin_data.drive_type\t4WD, AWD, RWD, FWD\nDisplacementL\tvin_data.displacement_l\tEngine displacement in liters\nEngineCylinders\tvin_data.cylinders\tNumber of cylinders\nFuelTypePrimary\tvin_data.fuel_type\tGasoline, Diesel, Electric, etc.\nEngineModel\tvin_data.engine\tCombine with displacement for label\nTransmissionStyle\tvin_data.transmission\tAutomatic, Manual, CVT\nTransmissionSpeeds\t(append to transmission)\t\"10-Speed Automatic\"\nDoors\tvin_data.doors\tNumber of doors\nGVWR\tvin_data.gvwr_class\tGross Vehicle Weight Rating class\nWheelBaseShort\tvin_data.wheel_base\tWheelbase in inches\nBedLengthIN\tvin_data.bed_length\tTruck bed length (if applicable)\nPlantCountry\tvin_data.plant_country\tAssembly country\nPlantCity\tvin_data.plant_city\tAssembly city\n\nNote: Many fields return empty strings \"\" if not applicable. Only store non-empty values.\n\nVIN Data Storage\n\nStore decoded data in the vehicle's vin_data object in state.json:\n\n{\n  \"vin_data\": {\n    \"decoded\": true,\n    \"decoded_date\": \"2026-01-27\",\n    \"year\": 2021,\n    \"make\": \"Ford\",\n    \"model\": \"F-350\",\n    \"trim\": \"Lariat\",\n    \"body_class\": \"Pickup\",\n    \"drive_type\": \"4WD\",\n    \"engine\": \"6.7L Power Stroke V8 Turbo Diesel\",\n    \"displacement_l\": 6.7,\n    \"cylinders\": 8,\n    \"fuel_type\": \"Diesel\",\n    \"transmission\": \"10-Speed Automatic\",\n    \"doors\": 4,\n    \"gvwr_class\": \"Class 3\",\n    \"bed_length\": \"8 ft\",\n    \"wheel_base\": \"176 in\",\n    \"plant_country\": \"United States\",\n    \"plant_city\": \"Louisville\",\n    \"raw_response\": {}\n  }\n}\n\n\nStore 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.).\n\nIf vin_data.decoded is false or missing, the VIN hasn't been decoded yet.\n\nAuto-Population Workflow\n\nWhen a VIN is decoded:\n\nUpdate vin_data — store all decoded fields\nUpdate label — build from decoded year/make/model/engine (e.g., \"2021 Ford F-350 6.7L Power Stroke\")\nUpdate emergency_info — auto-fill fields that can be derived:\nfuel_type from FuelTypePrimary\ngvwr_lbs from GVWR (parse weight class to approximate lbs)\nUpdate schedule file — populate the vehicle section with decoded specs\nPresent to user — show what was decoded, confirm accuracy, ask about anything the VIN couldn't tell us (usage pattern, duty level, insurance, etc.)\nWhen to Decode\nTrigger\tAction\nNew vehicle added with VIN\tDecode immediately, auto-populate\nUser provides VIN for existing vehicle\tDecode, backfill vin_data and any empty fields\nUser says \"look up my VIN\"\tDecode and display specs\nUser changes/corrects VIN\tRe-decode and update\nAdding VIN Later\n\nIf a vehicle was added without a VIN and the user provides one later:\n\nDecode the VIN\nStore in vin_data\nUpdate vin field\nBackfill any empty emergency_info fields\nUpdate label if the decoded info is more specific\nRun an immediate recall check with the new VIN\nConfirm what was updated\nVIN Decode Presentation Format\n\nWhen presenting decoded VIN data to the user:\n\n🔍 VIN Decoded — [VIN]\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\n📋 Vehicle\nYear: [year] | Make: [make] | Model: [model]\nTrim: [trim] | Body: [body_class]\nDrive: [drive_type] | Doors: [doors]\n\n🔧 Powertrain\nEngine: [engine] ([displacement]L, [cylinders] cyl)\nFuel: [fuel_type]\nTransmission: [transmission]\n\n📏 Specs\nGVWR: [gvwr_class]\nWheel Base: [wheel_base]\nBed Length: [bed_length] (if truck)\n\n🏭 Built in [plant_city], [plant_country]\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nLimitations\nVPIC is NHTSA data — best for US-market vehicles. Import/foreign-market VINs may have incomplete data.\nTrailers 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.\nMotorcycles and powersports — coverage varies. Japanese brands (Honda, Yamaha, Kawasaki, Suzuki) generally decode well. Smaller manufacturers may not.\nPre-1981 vehicles — VINs weren't standardized until 1981. Older VINs won't decode.\nIf decode returns sparse data, fall back to manual entry and web search for specs.\nNHTSA Recall Monitoring\n\nMonitor for open recalls on all tracked vehicles using the free NHTSA API (no API key required).\n\nAPI Endpoints\nBy make/model/year: https://api.nhtsa.dot.gov/recalls/recallsByVehicle?make=Ford&model=F-350&modelYear=2021\nBy VIN (more precise): https://api.nhtsa.dot.gov/recalls/recallsByVin?vin=XXXXX\n\nIf a VIN is stored, prefer the VIN-based lookup. Otherwise fall back to make/model/year.\n\nRecall Data Storage\n\nPer vehicle in state.json:\n\n{\n  \"recalls\": {\n    \"last_checked\": \"2026-01-26\",\n    \"open_recalls\": [\n      {\n        \"nhtsa_id\": \"26V-123\",\n        \"component\": \"FUEL SYSTEM\",\n        \"summary\": \"Fuel line may crack under pressure\",\n        \"consequence\": \"Fuel leak, fire risk\",\n        \"remedy\": \"Dealer will replace fuel line at no cost\",\n        \"date_reported\": \"2025-12-01\",\n        \"status\": \"open\"\n      }\n    ],\n    \"completed_recalls\": [\n      {\n        \"nhtsa_id\": \"24V-456\",\n        \"component\": \"ELECTRICAL\",\n        \"summary\": \"Battery cable may corrode\",\n        \"date_completed\": \"2025-06-15\",\n        \"notes\": \"Done at dealer\"\n      }\n    ]\n  }\n}\n\nWhen to Check\nMonthly cron: Include recall checks in the mileage check cron. Check recalls for all vehicles monthly regardless of their check-in frequency.\nOn vehicle add: Check immediately when a new vehicle is added.\nOn demand: User asks \"any recalls on my truck?\"\nRecall Report Format\n\nInclude in service review output:\n\n⚠️ OPEN RECALLS\n- [NHTSA ID] — [Component]: [Summary]\n  Remedy: [What the dealer will do]\n  ⚡ Contact your dealer to schedule this recall service (free)\n\n\nWhen a user reports completing a recall, move it from open_recalls to completed_recalls with the completion date.\n\nFuel / MPG Tracking\n\nTrack fuel fill-ups to monitor fuel economy, detect mechanical issues early, and track fuel spending.\n\nLogging a Fill-Up\n\nWhen user says \"filled up\", \"got gas/diesel\", or reports a fill-up:\n\nCapture: date, gallons, cost (total or price per gallon), odometer reading\nCalculate MPG: (current_odometer - previous_odometer) / gallons\nAppend to the vehicle's fuel_history array\nCheck for MPG anomalies\nFuel History Entry\n{\n  \"date\": \"2026-01-20\",\n  \"gallons\": 32.5,\n  \"cost\": 108.55,\n  \"price_per_gallon\": 3.34,\n  \"odometer\": 61300,\n  \"mpg\": 14.2,\n  \"partial_fill\": false,\n  \"notes\": \"\"\n}\n\nMPG Calculations\nPer fill-up MPG: (current_odometer - previous_fill_odometer) / gallons (skip if previous fill was partial)\nRolling average: Average of last 10 fill-ups (or all if fewer than 10)\nTrend: Compare last 3 fill-ups to rolling average\nAnomaly Detection\n\nIf a fill-up MPG is more than 15% below the rolling average, flag it:\n\n⚠️ MPG Alert — [Vehicle]\nLast fill-up: 10.5 MPG (your average is 14.2 MPG)\n26% below your rolling average — this could indicate:\n- Tire pressure issues\n- Air filter needs replacement\n- Fuel system issue\n- Change in driving conditions (heavy towing, headwinds)\n- Mechanical problem developing\n\nCheck tire pressures first, then review recent driving conditions.\n\nFuel Report Format\n\nWhen asked \"how's my fuel economy?\" or \"MPG report\":\n\n⛽ Fuel Report — [Vehicle]\nLast fill-up: [X] MPG on [date]\nRolling average: [X] MPG (last 10 fills)\nTrend: [improving/stable/declining]\nTotal fuel cost (YTD): $[X]\nTotal gallons (YTD): [X]\nAverage cost per gallon: $[X]\n\nPartial Fills\n\nIf 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.\n\nActual Cost Tracking\n\nTrack what the user actually pays for maintenance to build accurate spending records.\n\nCapturing Costs\n\nWhen a user logs a completed service:\n\nAfter confirming the service details, ask: \"What did you end up paying?\" (or accept if they volunteered it)\nStore as actual_cost in the service_history entry\nIf they don't know or don't want to share, leave it null — don't block the log\nService History Entry (with cost)\n{\n  \"service_id\": \"oil_filter\",\n  \"date\": \"2025-11-15\",\n  \"miles\": 58000,\n  \"hours\": null,\n  \"notes\": \"Full synthetic, Motorcraft filter\",\n  \"actual_cost\": 125.00,\n  \"cost_type\": \"shop\",\n  \"provider\": {\n    \"id\": \"jims_diesel\",\n    \"name\": \"Jim's Diesel Repair\"\n  }\n}\n\n\ncost_type values: diy, shop, dealer, warranty, recall (free)\n\nSpending Analysis\n\nTrack and report on request:\n\nPer vehicle, per year: \"You've spent $X on the F-350 this year\"\nActual vs estimated: Compare actual_cost to the schedule's cost estimates\nCategory breakdown: Group by service type (oil changes, filters, tires, etc.)\nAll-time total: Total maintenance spending per vehicle\nAnnual Summary\n\nWhen asked or at year-end:\n\n💰 [Year] Maintenance Summary — [Vehicle]\nTotal spent: $[X]\nServices performed: [count]\nBiggest expense: [service] — $[X]\nAverage cost per service: $[X]\nvs. Estimated: $[X] ([over/under] by [X]%)\n\nWarranty Tracking\n\nTrack warranties to know what's covered and get alerts before they expire.\n\nWarranty Entry Structure\n{\n  \"type\": \"factory_powertrain\",\n  \"provider\": \"Ford\",\n  \"start_date\": \"2021-03-15\",\n  \"end_date\": \"2026-03-15\",\n  \"start_miles\": 0,\n  \"end_miles\": 60000,\n  \"coverage_details\": \"Engine, transmission, transfer case, driveshaft, axle assemblies\",\n  \"status\": \"active\",\n  \"contact_phone\": \"1-800-392-3673\",\n  \"claim_number\": null,\n  \"notes\": \"\"\n}\n\nWarranty Types\nType\tTypical Coverage\nfactory_bumper_to_bumper\tEverything except wear items, shortest duration\nfactory_powertrain\tEngine, transmission, drivetrain — longer duration\nfactory_corrosion\tBody rust-through — usually 5+ years\nfactory_emissions\tEmissions components — federally mandated 8yr/80k for major components\nextended\tThird-party or manufacturer extended warranty\nparts_warranty\tSpecific parts from a shop/dealer (e.g., \"new alternator, 2yr warranty\")\nlabor_warranty\tShop's labor guarantee on a specific repair\nExpiration Alerts\n\nCheck warranties during every service review. Alert when:\n\nWithin 3 months of end_date, OR\nWithin 3,000 miles of end_miles (whichever comes first)\n\nAlert format:\n\n⚠️ WARRANTY EXPIRING SOON\n[Vehicle] — [Warranty type] from [Provider]\nExpires: [date] or [miles] miles (whichever first)\nRemaining: ~[X] months / ~[X] miles\nCoverage: [details]\n💡 Schedule any warranty-covered concerns before expiration!\n\nWarranty Coverage Check\n\nWhen user asks \"is this covered under warranty?\" or when flagging a due service:\n\nCheck all active warranties for the vehicle\nMatch the service type to warranty coverage\nIf potentially covered: \"This may be covered under your [warranty type] from [provider] (expires [date]). Contact them before paying out of pocket.\"\nStatus Values\nactive — currently in effect\nexpiring_soon — within alert threshold\nexpired — past end date or end miles\nclaimed — warranty claim was filed\nPre-Trip / Seasonal Checklists\n\nGenerate vehicle-specific checklists when a trip or seasonal change is mentioned.\n\nTrigger Phrases\n\nActivate when user says things like:\n\n\"I'm heading on a trip\" / \"road trip\" / \"going to [location]\"\n\"towing this weekend\" / \"pulling the RV to [place]\"\n\"getting ready for winter\" / \"time to winterize\"\n\"spring is coming\" / \"time to de-winterize\"\n\"going off-road this weekend\" / \"trail ride\"\nChecklist Generation\n\nBuild the checklist by combining:\n\nOverdue/due-soon services — Pull from service review for this vehicle\nWeather at destination — Check forecast if location given (hot, cold, rain, snow, altitude)\nTrip-type items — Based on what they're doing\nSeasonal items — Based on current date and location\nTowing Checklist (Truck + Trailer/RV)\n🚛 Pre-Tow Checklist — [Truck] + [Trailer/RV]\n\nTRUCK:\n□ Engine oil level\n□ Coolant level\n□ DEF level (diesel)\n□ Tire pressures (loaded spec: front [X] psi, rear [X] psi)\n□ Brake controller connected and tested\n□ Transmission temp gauge working\n□ All lights working\n□ Mirrors adjusted for towing\n\nHITCH/CONNECTION:\n□ Fifth wheel / gooseneck / ball mount secured\n□ Pin box / kingpin locked (verify with tug test)\n□ Safety chains crossed under tongue\n□ Breakaway cable attached\n□ 7-pin connector — test all lights (brake, turn, running, reverse)\n□ Breakaway battery charged\n\nTRAILER/RV:\n□ Tire pressures (spec: [X] psi) — check age on sidewall\n□ Wheel lug torque (spec: [X] ft-lbs)\n□ Slides fully retracted and locked\n□ Awning secured\n□ Fridge set to travel mode (or propane off)\n□ All compartments latched\n□ Stabilizer jacks fully up\n□ Roof vents closed\n□ TV antenna down\n□ Water heater bypass (if applicable)\n□ LP gas tank valve position (check local laws for travel)\n□ Cargo secured inside (open fridge, cabinets after arrival)\n\nOVERDUE/DUE SERVICES:\n[List any from service review]\n\nSeasonal Checklists\n\nPre-Winter / Winterization:\n\nAntifreeze protection level (test with hydrometer)\nBattery load test (cold reduces capacity 30-50%)\nWiper blades and washer fluid (cold-rated)\nTire condition (all-season or winter tires?)\nBlock heater working (diesel trucks)\nRV: Full winterization procedure (blow out lines, RV antifreeze, water heater drain, bypass)\nBoat: Winterize engine, fog cylinders, stabilize fuel, drain water systems\n\nPre-Summer / De-Winterization:\n\nAC system check (run it before you need it)\nCoolant level and condition\nRV: De-winterize water system, sanitize tanks, check AC units\nCheck tire pressures (heat increases pressure)\nInspect belts and hoses (heat accelerates wear)\n\nPre-Trip (General):\n\nAll fluid levels\nTire pressures and condition\nLights and signals\nBrakes (visual or recent service)\nWiper blades\nEmergency kit (jumper cables, flashlight, first aid)\nRegistration and insurance current\nMileage Projection\n\nCalculate driving pace and project when future services will come due.\n\nCalculation\n\nRequires 2+ data points in mileage_history at least 14 days apart.\n\naverage_miles_per_month = (latest_miles - earliest_miles) / months_between_readings\n\n\nUse the full history for a stable average, but weight recent data more heavily if there's a significant change in driving pattern.\n\nService Date Projection\n\nFor each service:\n\nCalculate miles remaining: next_due_miles - current_miles\nProject months: miles_remaining / average_miles_per_month\nProject date: today + projected_months\nAlso check time-based interval independently\n\nInclude in service review:\n\n📅 Projected Service Dates\n- Oil Change: ~[Month Year] (at ~[X] miles)\n- Fuel Filters: ~[Month Year] (at ~[X] miles)\n- Trans Fluid: ~[Month Year] (at ~[X] miles)\n\nBudget Projection\n\nWhen asked or included in reviews:\n\n💰 Next 6-Month Budget Forecast — [Vehicle]\nAt [X] miles/month, expect:\n- Oil change (~[Month]): $[X]\n- Fuel filters (~[Month]): $[X]\n- Cabin air filter (~[Month]): $[X]\nTotal estimated: $[X]\n\nInsufficient Data\n\nIf fewer than 2 data points or readings are too close together:\n\nNote: \"Need more mileage history to project dates — will be available after next check-in\"\nStill show mile-based estimates without dates\nService Provider Tracking\n\nTrack where services are performed for easy reference and provider management.\n\nCapturing Provider Info\n\nWhen logging a completed service, optionally ask:\n\nShop name (or \"same as last time\" / \"DIY\")\nLocation (city/address)\nPhone number\nSatisfaction rating (1-5)\nParts warranty (months)\nLabor warranty (months)\n\nDon'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.\n\nProvider Storage\n\nProviders are stored in two places:\n\nGlobal providers array in state.json root — reusable across vehicles:\n{\n  \"id\": \"jims_diesel\",\n  \"name\": \"Jim's Diesel Repair\",\n  \"location\": \"123 Main St, Mesa, AZ\",\n  \"phone\": \"480-555-1234\",\n  \"specialties\": [\"diesel\", \"trucks\"],\n  \"rating\": 5,\n  \"notes\": \"Great with Power Stroke engines\"\n}\n\nPer service_history entry — reference by id plus any service-specific warranty:\n{\n  \"provider\": {\n    \"id\": \"jims_diesel\",\n    \"name\": \"Jim's Diesel Repair\",\n    \"parts_warranty_months\": 12,\n    \"labor_warranty_months\": 6\n  }\n}\n\nProvider Queries\n\nHandle questions like:\n\n\"Where did I get my last oil change?\" → Search service_history for most recent oil_filter entry, return provider\n\"What shop did I use for the transmission service?\" → Search by service_id\n\"Show me all services at Jim's\" → Filter service_history by provider.id\n\"What's Jim's phone number?\" → Look up in providers array\n\"Same shop as last time\" → Use the provider from the most recent service_history entry\nTax Deduction Integration\n\nFor vehicles flagged as business-use, help track deductible maintenance expenses.\n\nConfiguration\n\nPer vehicle in state.json:\n\n{\n  \"business_use\": true,\n  \"business_use_percent\": 50\n}\n\n\nIf business_use is true and no percentage is set, assume 100%.\n\nDeduction Tracking\n\nWhen a service is completed with an actual_cost on a business-use vehicle:\n\nCalculate deductible portion: actual_cost × (business_use_percent / 100)\nNote it to the user:\n💼 Tax Note: This $450 trans fluid service is 50% business use.\nDeductible amount: $225.00 (vehicle maintenance expense)\n\nSuggest logging to the tax-professional skill:\nWant me to log this to your tax deductions? \n→ $225.00 as vehicle maintenance expense\n\nIntegration with Tax-Professional Skill\n\nIf the user confirms, reference skills/tax-professional/SKILL.md and log to data/tax-professional/YYYY-expenses.json:\n\n{\n  \"date\": \"2026-01-15\",\n  \"category\": \"vehicle_maintenance\",\n  \"description\": \"Trans fluid service — F-350 (50% business use)\",\n  \"amount\": 225.00,\n  \"vehicle\": \"f350\",\n  \"full_cost\": 450.00,\n  \"business_percent\": 50,\n  \"receipt\": false\n}\n\nAnnual Tax Summary\n\nOn request or at tax time:\n\n💼 [Year] Business Vehicle Deductions — [Vehicle]\nTotal maintenance costs: $[X]\nBusiness use: [X]%\nDeductible amount: $[X]\nServices included: [count] services\n\nEmergency Info Card\n\nStore and quickly retrieve critical vehicle information for roadside emergencies, parts lookup, or quick reference.\n\nEmergency Info Structure\n\nPer vehicle in state.json:\n\n{\n  \"emergency_info\": {\n    \"vin\": \"1FT8W3BT0MED12345\",\n    \"insurance_provider\": \"State Farm\",\n    \"policy_number\": \"SF-123456789\",\n    \"roadside_assistance_phone\": \"1-800-555-1234\",\n    \"tire_size_front\": \"275/70R18\",\n    \"tire_size_rear\": \"275/70R18\",\n    \"tire_pressure_front_psi\": 65,\n    \"tire_pressure_rear_psi\": 80,\n    \"oil_type\": \"15W-40 CK-4 Full Synthetic\",\n    \"oil_capacity\": \"15 quarts\",\n    \"coolant_type\": \"Motorcraft Orange VC-3DIL-B\",\n    \"def_type\": \"API certified DEF\",\n    \"trans_fluid\": \"Motorcraft Mercon ULV\",\n    \"tow_rating_lbs\": 20000,\n    \"gvwr_lbs\": 14000,\n    \"gcwr_lbs\": 37000,\n    \"payload_lbs\": 4300,\n    \"key_fob_battery\": \"CR2450\",\n    \"fuel_type\": \"Diesel (Ultra Low Sulfur)\",\n    \"fuel_tank_gallons\": 48,\n    \"lug_nut_torque_ft_lbs\": 165,\n    \"jack_points\": \"Frame rails, front and rear\",\n    \"notes\": \"\"\n  }\n}\n\nQuick Access Queries\n\nRespond instantly to:\n\n\"What's my VIN?\" → Return VIN\n\"What are my truck's tire specs?\" → Tire sizes and pressures\n\"What oil does my truck take?\" → Oil type and capacity\n\"Insurance info?\" → Provider, policy number, phone\n\"Roadside assistance number?\" → Phone number\n\"What's my tow rating?\" → Tow rating, GVWR, GCWR\n\"Key fob battery?\" → Battery type\n\"Lug nut torque?\" → Torque spec\nEmergency Card Format\n\nWhen asked for \"emergency info\" or \"vehicle card\":\n\n🚨 Emergency Info — [Vehicle Label]\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\nVIN: [vin]\nInsurance: [provider] — Policy #[number]\nRoadside: [phone]\n\n🔧 Specs\nTires: F:[size] R:[size]\nPressure: F:[X]psi R:[X]psi\nOil: [type] ([capacity])\nCoolant: [type]\nFuel: [type] ([tank] gal)\nKey fob battery: [type]\n\n📏 Ratings\nTow: [X] lbs | GVWR: [X] lbs\nGCWR: [X] lbs | Payload: [X] lbs\nLug torque: [X] ft-lbs\n━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nPopulation\n\nWhen 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.\n\nCost Per Mile Analysis\n\nCalculate total cost of vehicle ownership on a per-mile basis.\n\nCalculations\n\nRequires mileage history with at least 2 data points.\n\ntotal_miles_driven = latest_miles - earliest_miles (from mileage_history)\n\nMaintenance cost per mile = total_actual_costs / total_miles_driven\nFuel cost per mile = total_fuel_cost / total_miles_driven\nTotal operating cost per mile = (total_actual_costs + total_fuel_cost) / total_miles_driven\n\nReport Format\n\nWhen asked \"cost per mile\" or \"operating cost\":\n\n📊 Cost Per Mile — [Vehicle]\nPeriod: [earliest date] to [latest date] ([X] miles driven)\n\nMaintenance only: $[X.XX]/mile\nFuel only: $[X.XX]/mile (if fuel tracking active)\nTotal operating: $[X.XX]/mile\n\n💡 National averages (approximate):\nCars: ~$0.10/mi maintenance, ~$0.12/mi fuel\nTrucks: ~$0.14/mi maintenance, ~$0.20/mi fuel (diesel)\nHeavy-duty diesel (towing): ~$0.18/mi maintenance, ~$0.25/mi fuel\n\nFleet Overview\n\nIf tracking multiple vehicles, show a comparison:\n\n📊 Fleet Cost Per Mile\n[Vehicle 1]: $[X.XX]/mi (maintenance) | $[X.XX]/mi (total)\n[Vehicle 2]: $[X.XX]/mi (maintenance) | $[X.XX]/mi (total)\nFleet average: $[X.XX]/mi\n\nNotes\nOnly include services with actual_cost recorded (skip nulls)\nIf no fuel data, show maintenance-only\nWarn if data period is short (<3 months or <1,000 miles): \"Limited data — will become more accurate over time\"\nCost per mile naturally decreases as expensive one-time services are amortized over more miles\nMileage Check (Cron-Triggered)\n\nA 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.\n\nPrompt: \"Mechanic skill: mileage check\"\n\nWhen this fires:\n\nRead <workspace>/data/mechanic/state.json\nFor each vehicle, check if it's due for a check-in:\nCompare last_check_in date against check_in_frequency\nWeekly: due if 7+ days since last check-in\nBiweekly: due if 14+ days\nMonthly: due if 30+ days\nQuarterly: due if 90+ days\nMonthly recall check: If 30+ days since any vehicle's recalls.last_checked, fetch latest recalls from NHTSA API and update state\nIf no vehicles are due for check-in AND no new recalls found, reply with HEARTBEAT_OK (skip silently)\nIf vehicles are due, ask for current readings on only the due vehicles\nIf new recalls found, include them in the message even if no vehicles are due for mileage check-in\nUpdate state and last_check_in when they respond\nRun a Service Review for the updated vehicles (includes warranty alerts, projections, recalls)\nMileage Check Setup\n\nCreate a single cron job that runs weekly. It will internally filter which vehicles are due. Check <workspace>/USER.md for timezone.\n\nCron expression: 0 17 * * 0 (every Sunday at 5pm in user's timezone)\n\nCron job config:\n\nSession: isolated with delivery to their chat channel\nPrompt: 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.\nChanging Frequency\n\nThe user can change frequency per vehicle at any time:\n\n\"Check my dirt bike weekly\" → update that vehicle's check_in_frequency\n\"Ask about the truck less often\" → switch to quarterly\n\"Change all vehicles to monthly\" → update all\n\nUpdate the vehicle's check_in_frequency in state.json and confirm the change.\n\nMileage/Hours Update\n\nWhen the user reports mileage or hours (in any context, not just monthly):\n\nUpdate the vehicle's current_miles and/or current_hours\nSet last_updated to today\nAppend to mileage_history:\n{\"date\": \"YYYY-MM-DD\", \"miles\": <value>, \"source\": \"user_reported\"}\n\nRun a Service Review\nService Review\n\nAfter any mileage/hours update, analyze all services from the vehicle's schedule file.\n\nFor each service item:\nFind the last time this service was done from service_history (match by service_id)\nIf never done, assume done at mile 0 / hour 0 (vehicle acquisition)\nCalculate against all applicable intervals:\nmiles_since_service vs interval_miles\nmonths_since_service vs interval_months\nhours_since_service vs interval_hours\nCategorize:\n🔴 OVERDUE: Exceeded ANY interval\n🟡 DUE SOON: Within 15% of ANY interval\n🟢 OK: Not yet due\nReport Format\n\nFull report (when issues found):\n\n🔧 Vehicle Service Report\n\n━━━ [Vehicle Label] @ [miles] mi ━━━\n\n⚠️ OPEN RECALLS\n- [NHTSA ID] — [Component]: [Summary]\n  Remedy: [description] (FREE at dealer)\n\n⚠️ WARRANTY ALERTS\n- [Warranty type] from [Provider] — expires [date] or [miles] mi\n  [X] months / [X] miles remaining\n\n🔴 OVERDUE\n- [service] — [X] miles/months overdue\n  💰 DIY: $X | Shop: $X | Dealer: $X\n  [💼 [X]% deductible] (if business use)\n\n🟡 DUE SOON\n- [service] — due in ~[X] miles/months\n  💰 DIY: $X | Shop: $X | Dealer: $X\n\n📅 PROJECTED SCHEDULE (next 6 months)\n- [service] — ~[Month Year] at ~[X] mi ($[X] est.)\n- [service] — ~[Month Year] at ~[X] mi ($[X] est.)\nTotal upcoming (6mo): ~$[X]\n\n⛽ FUEL ECONOMY\nCurrent: [X] MPG | Average: [X] MPG | Trend: [stable/improving/declining]\n[⚠️ MPG Alert if applicable]\n\n💰 SPENDING (YTD)\nMaintenance: $[X] | Fuel: $[X] | Total: $[X]\nCost per mile: $[X.XX]\n\n[Repeat for each vehicle]\n\n🟢 [count] services current across all vehicles\n\n\nAll clear (brief):\n\n🔧 All vehicles current ✅\n[Vehicle] @ [mi] — next: [soonest service] at ~[miles] (~[Month])\nNo open recalls | Warranties current\n\n\nWhen multiple services are due at once, provide a bundled total estimate and suggest combining them in one shop visit.\n\nConditional Sections\n\nOnly include sections that have relevant data:\n\nSkip recalls section if no open recalls\nSkip warranty alerts if none expiring soon\nSkip fuel economy if no fuel_history data\nSkip projections if insufficient mileage data\nSkip spending if no actual_cost data\nSkip tax note if vehicle isn't business-use\nLogging Completed Services\n\nWhen the user says they've done a service (e.g., \"just got my oil changed\", \"did the fuel filters at 65k\"):\n\nIdentify which vehicle and which service\nAsk what they paid (casually — \"What'd that run you?\" / \"How much was it?\")\nOptionally capture provider (\"Where'd you take it?\" / \"Same shop as last time?\")\nAdd to that vehicle's service_history:\n{\n  \"service_id\": \"<matching id>\",\n  \"date\": \"YYYY-MM-DD\",\n  \"miles\": <mileage_at_service>,\n  \"hours\": <hours_if_applicable>,\n  \"notes\": \"<any details the user mentions>\",\n  \"actual_cost\": <amount_or_null>,\n  \"cost_type\": \"shop\",\n  \"provider\": {\n    \"id\": \"<provider_id>\",\n    \"name\": \"<provider_name>\",\n    \"parts_warranty_months\": null,\n    \"labor_warranty_months\": null\n  }\n}\n\nIf business-use vehicle, note the deductible portion\nOffer to log to tax-professional if applicable\nConfirm what was logged\nRecalculate next due date for that service\nAd-Hoc Queries\n\nHandle questions about any tracked vehicle. If ambiguous, ask which vehicle.\n\nExamples:\n\n\"When's my next oil change?\" → Check the relevant vehicle(s)\n\"What oil does my truck take?\" → Reference schedule details or emergency_info\n\"What maintenance do I need?\" → Full review, all vehicles\n\"I just hit 70,000 miles\" → Update mileage, run review\n\"Got new tires at 61k\" → Log service, track rotation from there\n\"I just got a new [vehicle]\" → Walk through adding it\n\"How much would an oil change cost?\" → Reference cost estimates\n\"What's the most urgent thing?\" → Prioritize across all vehicles\n\"Any recalls on my truck?\" → Check NHTSA API\n\"How's my fuel economy?\" → MPG report\n\"How much have I spent this year?\" → Spending summary\n\"Is my warranty still good?\" → Check warranty status\n\"Is this covered under warranty?\" → Match service to active warranties\n\"I'm heading on a road trip\" → Pre-trip checklist\n\"When will my trans fluid be due?\" → Mileage projection\n\"Where did I get my last oil change?\" → Provider lookup\n\"What's my VIN?\" → Emergency info\n\"Look up my VIN\" / \"Decode my VIN\" → Run VIN decode, show specs\n\"Here's my VIN: [VIN]\" → Decode, store, auto-populate, run recall check\n\"What are my tire specs?\" → Emergency info\n\"Cost per mile?\" → Operating cost analysis\n\"How much will I spend on maintenance in the next 6 months?\" → Budget projection\nEnvironmental Awareness\n\nCheck <workspace>/USER.md for the user's location and use it to tailor advice:\n\nHot climates (desert, southern states):\n\nBattery life shortened significantly by heat\nTire UV damage — recommend tire covers for parked vehicles\nCoolant system more stressed\nRubber components (belts, hoses, seals) degrade faster\nMud daubers/wasps in vents and exhaust (RVs especially)\n\nCold climates (northern states, mountains):\n\nWinterization critical for RVs and boats\nBattery capacity reduced in cold\nCheck antifreeze protection level\nFurnace/heating system inspection before cold season\n\nDusty/off-road environments:\n\nEngine and cabin air filters need more frequent inspection\nGenerator air filters (RVs)\nCheck CV boots (ATVs/UTVs)\n\nCoastal/marine environments:\n\nCorrosion concerns\nMore frequent undercarriage wash\nCheck electrical connections\nCost Estimates\n\nAlways include cost estimates when flagging overdue or due-soon services:\n\nDIY — parts cost only\nShop — independent mechanic / specialty shop\nDealer — manufacturer dealership\n\nInclude any cost_note warnings about expensive failure scenarios.\n\nWhen presenting a batch of services, provide a total estimate for bundling them in one shop visit.\n\nImportant General Notes\nTransmission flushes — Many modern transmissions (especially Ford 10R series, CVTs) should ONLY be drain-and-fill, never flushed. Always check manufacturer recommendation.\nRV roofs — Water intrusion is the #1 RV killer. Always emphasize sealant and roof inspections.\nTire age — Tires should be replaced at 5-6 years regardless of tread depth, especially RV/trailer tires.\nSevere 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.\nPart numbers — Include OEM part numbers in schedule details. Users can then find equivalent aftermarket parts.\nSeasonal items — Flag winterization, de-winterization, and seasonal prep based on the user's location and time of year.\nGenerator hours — Track separately from vehicle miles. Generators have their own service intervals.\nBreakaway batteries (trailers) — Often forgotten. Include in trailer/RV inspections.\nRecall completions — Always free at the dealer. Never pay for a recall repair.\nWarranty work — Document everything. Keep receipts. Note warranty claim numbers in service history.\nFuel tracking consistency — Always fill to the same level (full) for accurate MPG calculations. Mark partial fills."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ScotTFO/mechanic",
    "publisherUrl": "https://clawhub.ai/ScotTFO/mechanic",
    "owner": "ScotTFO",
    "version": "1.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/mechanic",
    "downloadUrl": "https://openagent3.xyz/downloads/mechanic",
    "agentUrl": "https://openagent3.xyz/skills/mechanic/agent",
    "manifestUrl": "https://openagent3.xyz/skills/mechanic/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/mechanic/agent.md"
  }
}