skills/invoice/SKILL.md
Generate professional PDF invoices from client billing data. Supports fixed-fee and hourly billing with auto-incrementing invoice IDs. Pass client name and line items as args, or invoke interactively.
npx skillsauth add skinnyandbald/fish-skills invoiceInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
/invoice <client> [description] [amount] [options]
# Full inline — generates immediately
/invoice validcodes "AI Training Pack" 7500 --net 15
# Just client — prompts for line items and terms
/invoice validcodes
# With notes
/invoice validcodes "Sprint Phase 1" 40000 --net 1 --notes "50% upfront per SOW"
# Hourly — interactive mode for multiple line items
/invoice acme --hourly
# Custom quantity
/invoice validcodes "Advisory Call" 300 --quantity 4 --net 15
| Arg | Required | Default | Description |
|-----|----------|---------|-------------|
| client | Yes | — | Client slug or alias (matched against client YAML files) |
| description | No | prompted | Line item description |
| amount | No | prompted | Total amount in USD |
| --net N | No | client default or 15 | Payment terms (NET-N days) |
| --quantity N | No | 1 | Line item quantity |
| --notes "..." | No | none | Notes to display below the total |
| --hourly | No | false | Interactive mode for multiple line items with rates |
</usage>
The skill needs these directories configured for your environment:
| Path | Purpose | Example |
|------|---------|---------|
| Clients dir | YAML files with billing info | 02_Areas/consulting/templates/invoicing/clients/ |
| Output dir | Where generated PDFs are saved | 02_Areas/consulting/invoices/ |
| Logo override | Optional custom logo | 02_Areas/consulting/templates/invoicing/logo.png |
The generator script, HTML template, and default logo are bundled with this skill.
Create one YAML file per client in your clients directory:
# clients/acme.yaml
name: "Acme Corporation"
aliases: [acme, acme-corp]
default_net: 30
| Field | Required | Description |
|-------|----------|-------------|
| name | Yes | Full legal name for invoice |
| aliases | No | Alternative names for matching (case-insensitive) |
| default_net | No | Default payment terms for this client (fallback: 15) |
Create a sender.yaml file in the same directory as your client YAML files:
# clients/sender.yaml
name: "Your Name"
address_1: "123 Main St"
address_2: "City, ST 12345"
The generator reads sender from the temp config to populate the "Pay to" block on invoices.
The generator requires Python packages installed via uv:
uv run --with weasyprint --with pyyaml --with jinja2 python3 generate-invoice.py <config.yaml>
</configuration>
<process>
## Step 1: Resolve Client
.yaml) matches the arg (case-insensitive)aliases array contains the arg (case-insensitive)For any fields not provided as arguments, prompt the user:
--net arg, or client's default_net, or fall back to 15--notes arg or ask if user wants to add anyFor --hourly mode, interactively collect multiple line items:
invoice-#*.pdfsender.yaml from the clients directory)--logo flag; otherwise use the bundled defaultuv run --with weasyprint --with pyyaml --with jinja2 python3 \
<skill-dir>/generate-invoice.py <temp-config.yaml> \
--output-dir <output-dir> \
[--logo <custom-logo>]
feat: Generate <client> invoice #N ($X,XXX)
<reference_files>
generate-invoice.py — PDF generator script (bundled with this skill)invoice-template.html — Jinja2 HTML template (bundled with this skill)logo.png — Default logo (bundled with this skill)INVOICE-TEMPLATE-SPEC.md — Full design spec for the template layout
</reference_files>development
Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", "review UX", or "check my site against best practices".
tools
Verify worktree plugin patches are intact after plugin updates. Checks compound-engineering and superpowers skills for Claude Code launch instructions.
development
React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.
development
Reviews the feature you just built and adds missing test coverage. Focuses on behavior that matters — not coverage metrics. Use after completing a feature to identify untested code paths, edge cases, and risk areas.