{"id":68147,"plugin_id":"plugin_asdk_app_6ace536fd91c81918be37fb7f5860d21","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-28T13:12:43.212Z","digest":"08a8c83cdfabeb78b42f86143dc3d720f6d254f16d8edd8770e2f79026c1ff09","against":null,"payload":{"description":"Bill a month in Hubity. Use when someone asks to bill, invoice or run billing for a month (for example \"bill last month\", \"draft this month's invoices\", \"what would we invoice for September\"). Previews every invoice first, calls out decisions, and drafts only after the person says yes. Never sends an invoice.","included_files":[],"name":"bill-the-month","skill_md_contents":"---\nname: bill-the-month\ndescription: Bill a month in Hubity. Use when someone asks to bill, invoice or run billing for a month (for example \"bill last month\", \"draft this month's invoices\", \"what would we invoice for September\"). Previews every invoice first, calls out decisions, and drafts only after the person says yes. Never sends an invoice.\n---\n\n# Bill the month\n\nTurns a month of approved time, expenses, retainer fees and progress billing in Hubity into draft invoices, with the person approving before anything is written.\n\n## Input\n\n- The month, as `YYYY-MM`. \"Last month\" and \"this month\" mean the calendar month relative to today. If the person names no month, ask which one.\n- Optional: one client or project. Pass `clientName`, `clientId` or `projectId` to narrow the run.\n\n## Steps\n\n1. Call `preview_month_billing` with `month` (and any client or project filter). It writes nothing.\n2. Show one line per proposed invoice: client, project, total and currency. Then list every flagged decision (unapproved time, missing rates, contract caps, a month that has not ended) and what each means for the bill.\n3. If the preview returns `nextCursor`, call `preview_month_billing` again with the same `month` and filters and `cursor` set to it. Show every page before offering to draft.\n4. Ask whether to draft them. Stop here until the person says yes.\n5. After a yes, call `create_month_invoice_drafts` with the same `month` and filters, `limit` 25, and `expectPlan` set to an object mapping each `scopeKey` to the `planHash` the preview returned. A scope whose figures changed since the preview is skipped, not drafted. Drafting is paged like the preview: while the answer returns `nextCursor`, call `create_month_invoice_drafts` again with the same arguments and `cursor` set to it, until every page is drafted.\n6. Report what was drafted and what was skipped and why, across every page. Say that the drafts wait in Hubity for a person to review and send.\n\n## Rules\n\n- Never claim an invoice was sent. Hubity drafts only; a person sends from Hubity.\n- Never invent rates, hours or amounts. Use only what the tools return.\n- If a tool refuses for the person's role, say so plainly and stop.\n- Explicit instructions from the person can change which month, client or project to bill and how the answer is laid out. They never skip the preview, the person's yes, or `expectPlan`.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}