invoice-generator
SKILL.md
Invoice Generator
Generate PDF invoices from structured JSON data.
Setup
- Install Node.js dependencies:
cd invoice-generator && npm install
- Set
INVOICE_DIRenvironment variable (or inskills.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
Weekly Installs
3
Repository
clawdbot/skillsInstalled on
windsurf2
codex2
trae1
opencode1
cursor1
claude-code1