From consulting-ops
Generate invoices from logged time. Billing is per project — each engagement gets its own invoice. Use when the owner says "do this month's billing", "bill <project>", "invoice <client/project>", or "generate an invoice".
How this skill is triggered — by the user, by Claude, or both
Slash command
/consulting-ops:billing-runThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use this in a consulting vault (one created from the consulting-vault-template).
Use this in a consulting vault (one created from the consulting-vault-template). Billing is per project — one invoice per engagement.
Identify the project to bill (a projects/<name>.md). If the owner names a
project, use it. If they name a client, find that client's active projects
(Project notes whose related_to is that client); if there's more than one,
bill each as its own invoice, or ask which they mean.
Generate one invoice per project from the vault root:
python3 scripts/billing/generate_invoice.py <project>
Each session in the project's ## Time table becomes a line item, priced at
the project rate; client billing details (name, email, currency) come from
the client the project is related_to.
Posting the invoice on to a billing platform (Xero, QuickBooks, Stripe —
anything with an API) is an optional integration that is NOT built in — it's
developer work. If the owner wants it and it isn't built yet, use the
request-dev skill; don't improvise it. If your developer has already
connected one, run their posting step through Doppler so the credentials are
available (they live in Doppler, never in files) — e.g.:
doppler run -- python3 scripts/billing/<provider>_post.py <project>
Make a sendable PDF of each invoice:
uv run scripts/to_pdf.py invoices/<project>-<date>.md
→ invoices/<project>-<date>.pdf (branded with the firm letterhead).
Show the owner each invoice total and the PDF path — that PDF is what they send the client.
Billing is idempotent — re-running only bills work not yet invoiced, so
"bill X" is always safe to repeat. Each model marks what it billed in the project
note: hourly stamps each ## Time row's billed cell, milestone flips a row's
status done → billed, fixed/outcome set billed: in frontmatter, and
retainer records the period in billed_periods. A re-run picks up only new time,
newly-completed milestones, or the next period.
npx claudepluginhub hudgeon/business-vault-plugins --plugin consulting-opsProvides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.