From david-skills
Generates professional PDF invoices using maaslalani/invoice CLI. Store commands in Obsidian or notes for on-demand creation, regeneration, and management without saving files.
How this skill is triggered — by the user, by Claude, or both
Slash command
/david-skills:cli-invoiceThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> Tool: [maaslalani/invoice](https://github.com/maaslalani/invoice) — Command line invoice generator
Tool: maaslalani/invoice — Command line invoice generator
Check that invoice is available:
command -v invoice >/dev/null 2>&1 || { echo "ERROR: invoice CLI not installed"; exit 1; }
| Method | Command | Requires |
|---|---|---|
| Homebrew (recommended on macOS) | brew install invoice | Homebrew |
| Go install | go install github.com/maaslalani/invoice@main | Go 1.19+ |
| Binary download | Download from GitHub Releases | — |
Note: The Go install path uses
@main, not@latest. This is per the upstream README.
invoice --help
invoice generate \
--from "Sender Name" \
--to "Recipient Name/Company" \
--item "Description" --quantity <N> --rate <PRICE> \
[--item "Another item" --quantity <N> --rate <PRICE>] \
[--tax <DECIMAL>] \
[--discount <DECIMAL>] \
[--note "Additional notes"] \
[--output <path.pdf>]
| Flag | Required | Description |
|---|---|---|
--from | Yes | Sender name or business |
--to | Yes | Recipient name or business |
--item | Yes (1+) | Line item description. Repeat with --quantity and --rate for each item |
--quantity | Yes | Quantity for the preceding --item |
--rate | Yes | Unit price for the preceding --item |
--tax | No | Tax rate as decimal (e.g., 0.13 for 13%) |
--discount | No | Discount rate as decimal (e.g., 0.15 for 15%) |
--note | No | Footer note (e.g., payment terms) |
--output | No | Output path (default: invoice.pdf in current directory) |
--import | No | Import data from a JSON or YAML file (see Import from file) |
invoice generate \
--from "Jane Smith" \
--to "Acme Corp" \
--item "Web Development" --quantity 40 --rate 75 \
--item "Design Consultation" --quantity 8 --rate 100 \
--tax 0.05 \
--note "Payment due within 30 days. E-transfer preferred."
For complex invoices, use --import with a JSON or YAML config:
invoice generate --import data.json --output my-invoice.pdf
Example data.json:
{
"from": "Jane Smith",
"to": "Acme Corp",
"tax": 0.05,
"items": ["Web Development", "Design Consultation"],
"quantities": [40, 8],
"rates": [75, 100]
}
invoice generate commandopen invoice.pdf (macOS)Just re-run the stored command. The PDF is recreated identically.
The user stores invoice commands in their note-taking app. Example Obsidian note:
## Invoices
### 2026-04 — Acme Corp
```bash
invoice generate \
--from "Jane Smith" \
--to "Acme Corp" \
--item "Web Development" --quantity 40 --rate 75 \
--item "Design Consultation" --quantity 8 --rate 100 \
--tax 0.05 \
--note "Payment due within 30 days."
```
### 2026-03 — Beta LLC
```bash
invoice generate \
--from "Jane Smith" \
--to "Beta LLC" \
--item "Monthly Retainer" --quantity 1 --rate 2000 \
--tax 0.12 \
--note "March 2026 retainer."
```
Each code block is a complete, self-contained invoice. Copy-paste and run.
invoice.pdf in the current working directory--output to specify a different path or filenameThe invoice CLI supports environment variables for repeated sender info:
| Variable | Description |
|---|---|
INVOICE_FROM | Default sender name |
INVOICE_TO | Default recipient name |
INVOICE_LOGO | Path to logo image (PNG) to include on invoice |
INVOICE_TAX | Default tax rate (decimal) |
INVOICE_RATE | Default unit rate |
export INVOICE_FROM="Jane Smith"
export INVOICE_LOGO=/path/to/logo.png
export INVOICE_TAX=0.05
export INVOICE_RATE=75
When set, these become defaults that can be omitted from individual commands.
Do NOT forget --quantity and --rate after each --item — they are required per item
Do NOT use percentage for --tax — use decimal (0.13, not 13)
Do NOT use percentage for --discount — use decimal (0.15, not 15)
Do NOT omit --from or --to — both are required
npx claudepluginhub thedavidweng/skillsGenerates professional invoices with line items, tax calculations, payment terms, due dates, and payment instructions, outputting structured markdown ready for PDF conversion.
Create and optionally send invoices to clients via Norman Finance. Handles client lookup/creation, line items with quantity/price/VAT (19% default), invoice/due dates, review summary, and email delivery.
Manages QuickBooks Online invoices for MSPs: create, send, void, track recurring monthly services, project billing, line items, payment terms, and status lifecycle.