Awesome-openclaw-skills invoice-generator
Generate professional PDF invoices from JSON data. Use when the user needs to create an invoice, billing document, or payment request with company/client details and line items.
install
source · Clone the upstream repo
git clone https://github.com/sundial-org/awesome-openclaw-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/sundial-org/awesome-openclaw-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/invoice-generator" ~/.claude/skills/sundial-org-awesome-openclaw-skills-invoice-generator && rm -rf "$T"
OpenClaw · Install into ~/.openclaw/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/sundial-org/awesome-openclaw-skills "$T" && mkdir -p ~/.openclaw/skills && cp -r "$T/skills/invoice-generator" ~/.openclaw/skills/sundial-org-awesome-openclaw-skills-invoice-generator && rm -rf "$T"
manifest:
skills/invoice-generator/SKILL.mdsource content
Invoice Generator
Generate PDF invoices from structured JSON data.
Setup
- Install Node.js dependencies:
cd invoice-generator && npm install
- Set
environment variable (or inINVOICE_DIR
):skills.entries.invoice-generator.env
export INVOICE_DIR="/path/to/your/invoices"
This creates the directory structure:
$INVOICE_DIR/ ├── configs/ # Optional: saved invoice configs └── invoices/ # Generated PDF output
Usage
# From stdin (on-the-fly) cat invoice-data.json | {baseDir}/scripts/generate.sh # From a full file path {baseDir}/scripts/generate.sh /path/to/invoice-data.json # From a saved config (looks in $INVOICE_DIR/configs/) {baseDir}/scripts/generate.sh client-template # Loads: $INVOICE_DIR/configs/client-template.json # Output goes to: $INVOICE_DIR/invoices/invoice-{number}.pdf (auto-versions if exists)
Input Data Format
The JSON input must contain these fields:
{ "company": { "name": "Your Company", "address": "123 Main St", "cityStateZip": "City, State, 12345", "country": "Country" }, "client": { "name": "Client Name", "address": "456 Client Ave", "cityStateZip": "City, State, 67890", "country": "Country", "taxId": "TAX123" }, "invoice": { "number": "INV-2025.01", "date": "Jan 15 2025", "dueDate": "Jan 30 2025" }, "items": [ { "description": "Service description", "rate": "1000.00", "currency": "USD" } ], "totals": { "currency": "USD", "total": "1,000.00" } }
See references/data-schema.md for complete field documentation.
Output
The script outputs the path to the generated PDF file on success:
$INVOICE_DIR/invoices/invoice-INV-2025.01.pdf # If that filename already exists, the script will write: # $INVOICE_DIR/invoices/invoice-INV-2025.01-2.pdf (then -3, etc.)
Error Handling
- Exits with code 1 if JSON is invalid or missing required fields
- Exits with code 2 if weasyprint fails to generate PDF
- Error messages are written to stderr