{"skill":{"slug":"qbo-mileage","displayName":"QuickBooks Mileage CSV","summary":"Generate QuickBooks Online mileage CSV files from Airtable, Outlook, or Google Calendar records using the local qbo-mileage CLI and user-owned credentials.","description":"---\nname: qbo-mileage\ndescription: Generate QuickBooks Online mileage CSV files from Airtable, Outlook, or Google Calendar records using the local qbo-mileage CLI and user-owned credentials.\nmetadata: {\"openclaw\":{\"requires\":{\"bins\":[\"python\"]}}}\n---\n\n# QuickBooks Mileage CSV\n\nUse this skill when the user wants to generate, review, or schedule a\nQuickBooks Online mileage CSV from calendar or inspection data.\n\nDo not infer or hand-edit mileage rows in the prompt. Run the deterministic CLI\nfrom the plugin root so trip pairing, distance caching, CSV formatting, and run\nreports are produced by code.\n\n## Common commands\n\nDry run:\n\n```bash\npython -m qbo_mileage generate --config config.json --month YYYY-MM --dry-run\n```\n\nGenerate files:\n\n```bash\npython -m qbo_mileage generate --config config.json --month YYYY-MM\n```\n\nIf `python` is not on PATH (common on macOS/Linux), use `python3`. If the\n`qbo_mileage` package is not installed, run the bundled entry point instead,\nwhich adds the plugin's `src/` folder to the path automatically:\n\n```bash\npython3 skills/qbo-mileage/scripts/run.py generate --config config.json --month YYYY-MM\n```\n\nOutputs are written under the configured output directory, normally\n`quickbooks_mileage/YYYY-MM/`.\n\n## Review checklist\n\n- Confirm the requested month is correct.\n- Confirm the configured home base and vehicle.\n- Read `run_report.md` before telling the user the CSV is ready.\n- Surface skipped events, missing addresses, and distance API failures.\n- Confirm PERSONAL legs show a 0.00 deduction in the report.\n- Remind the user that GitHub Actions or cloud/email output is not local-only.\n\n## Setup guidance\n\nFor first-time setup, point the user to:\n\n- `config.example.json`\n- `docs/setup-airtable.md`\n- `docs/setup-maps.md`\n- `docs/setup-scheduling.md`\n","topics":["CSV","Calendar"],"tags":{"latest":"1.0.1","quickbooks":"1.0.0"},"stats":{"comments":0,"downloads":402,"installsAllTime":15,"installsCurrent":1,"stars":0,"versions":3},"createdAt":1778284047267,"updatedAt":1781124307747},"latestVersion":{"version":"1.0.1","createdAt":1781124307747,"changelog":"Changelog\n1.0.1 — 2026-06-10\nFixed (tax correctness)\n\nChain legs now belong to the destination event. Intermediate legs in a\ntrip chain previously inherited the date, purpose, vehicle, and\nBUSINESS/PERSONAL type of the event being left, not the event being\ndriven to. A personal stop between two business stops inverted the\nclassification of both surrounding legs: the drive to the personal stop was\nexported as BUSINESS (overstating the deduction) and the drive from the\npersonal stop to the next job site was exported as PERSONAL (losing a\nlegitimate deduction). (trip_builder.py)\nPERSONAL legs now export a 0.00 deduction instead of miles × IRS rate,\nso the CSV and run report never overstate the deductible total.\n(pipeline.py)\n\nFixed (reliability)\n\nA corrupt or half-written distance cache no longer crashes every run; the\ncache is rebuilt with a warning. Cache writes are now atomic\n(temp file + rename). (cache.py)\nMonthly cron script no longer computes the wrong month when run on the\n29th–31st (GNU date \"last month\" normalization bug); also falls back to\npython3 when python is not on PATH. (scripts/run_monthly.sh)\nThe skill entry point now adds the plugin's src/ folder to sys.path,\nso it runs from a freshly installed plugin without pip install.\n(skills/qbo-mileage/scripts/run.py)\nMissing IRS rate for the requested year now fails fast before any source\nAPI calls are spent. (pipeline.py)\n\nSecurity\n\nSMTP STARTTLS now uses an explicit ssl.create_default_context() so the\nserver certificate is always verified regardless of Python version\ndefaults. (senders/email.py)\n\nDocs\n\nSKILL.md documents the python3 fallback and the no-install entry point,\nand adds a PERSONAL-deduction check to the review checklist.\n\nTests\n\nRegression tests for chain-leg attribution (mixed business/personal chains)\nand zero deduction on personal legs.","license":"MIT-0"},"metadata":{"setup":[],"os":null,"systems":null},"owner":{"handle":"oasiseng","userId":"s17cnytngezw9fmhens6qh4ah9858mwv","displayName":"Oasis Engineering","image":"https://avatars.githubusercontent.com/u/221696722?v=4"},"moderation":null}