invoice
Invoice Generation Skill
Overview
Generate professional HTML invoices using pre-configured templates for hourly and subscription billing. Track client information, automatically increment invoice numbers, and maintain invoice history across all clients.
When to Use This Skill
Use this skill when:
- Creating a new invoice for an existing client by name
- Adding a new client to the invoice system
- Viewing client information or invoice history
- Generating invoices with work log entries (hourly) or subscription billing
Core Capabilities
1. Generate Invoice for Existing Client
When the user requests an invoice for a client by name:
-
Load client data from
clients.jsonto retrieve:- Client details and billing information
- Invoice type (hourly or subscription)
- Last invoice number for auto-increment
-
For hourly invoices:
- Request work log entries from the user (they will paste as text)
- Parse work log format:
Date - Project - Hours - Description - For Versa Computing, parse:
Date - Project - Hours - Descriptionwith separate Project and Description columns - Calculate total hours and amount (hours × hourly_rate)
-
For subscription invoices:
- No work log needed
- Use subscription_name and subscription_amount from client data
-
Increment invoice number:
- New number = last_invoice_number + 1
- Format:
{invoice_prefix}-2025-{new_number:03d}
-
Calculate dates:
- Invoice date: Use current date (check system date in environment)
- Due date: Invoice date + payment_terms_days
-
Load appropriate template:
- Hourly:
assets/hourly-invoice-template.html - Subscription:
assets/subscription-invoice-template.html
- Hourly:
-
Replace placeholders with client data:
{{INVOICE_NUMBER}},{{INVOICE_DATE}},{{DUE_DATE}}{{CLIENT_NAME}},{{CLIENT_ATTENTION}},{{CLIENT_ADDRESS_LINE1}},{{CLIENT_CITY_STATE_ZIP}}{{PAYMENT_TERMS}}(e.g., "30" for Net 30){{PROJECT_REFERENCE}}or{{PO_NUMBER}}as applicable- For hourly:
{{TOTAL_HOURS}},{{HOURLY_RATE}},{{SUBTOTAL}},{{TOTAL_AMOUNT}} - For subscription:
{{SUBSCRIPTION_NAME}},{{BILLING_MONTH}},{{AMOUNT}} - Work log entries (populate table rows in HTML)
-
Special handling for Versa Computing:
- Use 4-column work log table: DATE | PROJECT | DESCRIPTION | HOURS
- Separate project name from description in work log entries
- Project names go in the PROJECT column, descriptions in DESCRIPTION column
-
Save invoice:
- Filename format:
Invoice-{invoice_number}-{short_name}-{month}-2025.html - Location: User's Desktop (
/Users/arlenagreer/Desktop/)
- Filename format:
-
Update clients.json:
- Set last_invoice_number to new number
- Set last_invoice_date to invoice date
- Save changes to maintain accurate history
2. Add New Client
To add a new client to the system:
-
Request necessary information:
- Company name and contact details (attention, address)
- Invoice type (hourly or subscription)
- Invoice number prefix (3-letter abbreviation)
- Billing rate (for hourly) or subscription amount
- Payment terms in days
- Special requirements (e.g., project column, PO number)
-
Add new client object to
clients.jsonfollowing the existing structure -
Confirm client has been added successfully
3. View Client Information
To view or list clients:
- Read
clients.jsonand display client details - Show invoice history (last invoice number and date)
- List all tracked clients
Client Database Structure
Client information is stored in clients.json in the skill folder. Each client entry includes:
Required fields (all clients):
name: Full client nameshort_name: Abbreviated name for filenamesinvoice_prefix: 3-letter invoice number prefixinvoice_type: "hourly" or "subscription"company_name: Company name for invoiceattention: Contact attention lineaddress_line1: Street addresscity_state_zip: City, state, and ZIPlast_invoice_number: Last invoice number sent (integer)last_invoice_date: Date of last invoice (YYYY-MM-DD)payment_terms_days: Payment terms in days (e.g., 30 for Net 30)
Hourly invoice fields:
hourly_rate: Billing rate per hourproject_reference: Default project namerequires_project_column: (optional) true if work log needs separate project column
Subscription invoice fields:
subscription_name: Name of subscription servicesubscription_amount: Monthly subscription amount
Current Clients
- American Laboratory Trading (INV prefix, hourly billing)
- Empirico (EMP prefix, subscription billing)
- Versa Computing (VER prefix, hourly billing with project column)
Invoice Templates
Hourly Invoice Template
Located at: assets/hourly-invoice-template.html
Features:
- Two-page layout: invoice summary (page 1) and detailed work log (page 2)
- Standard work log table: DATE | HOURS | DESCRIPTION
- For clients requiring project column: DATE | PROJECT | DESCRIPTION | HOURS
- Professional styling with Inter font and blue color scheme (#2563eb)
- Print-optimized CSS
Placeholders to replace:
{{INVOICE_NUMBER}},{{INVOICE_DATE}},{{DUE_DATE}}{{CLIENT_NAME}},{{CLIENT_ATTENTION}},{{CLIENT_ADDRESS_LINE1}},{{CLIENT_CITY_STATE_ZIP}}{{PAYMENT_TERMS}},{{PROJECT_REFERENCE}},{{PO_NUMBER}}{{TOTAL_HOURS}},{{HOURLY_RATE}},{{SUBTOTAL}},{{TOTAL_AMOUNT}}- Work log table rows (HTML tbody content)
Subscription Invoice Template
Located at: assets/subscription-invoice-template.html
Features:
- Single-page layout
- Simplified line items table: Description and Amount only
- Same professional styling as hourly template
Placeholders to replace:
{{INVOICE_NUMBER}},{{INVOICE_DATE}},{{DUE_DATE}}{{CLIENT_NAME}},{{CLIENT_ATTENTION}},{{CLIENT_ADDRESS_LINE1}},{{CLIENT_CITY_STATE_ZIP}}{{PAYMENT_TERMS}},{{SUBSCRIPTION_NAME}},{{PO_NUMBER}}{{BILLING_MONTH}},{{AMOUNT}}
Workflow Example
User: "Generate an invoice for Versa Computing"
Process:
- Read
clients.jsonand locate Versa Computing client data - Determine invoice type: hourly (requires work log)
- Prompt: "Please provide the work log entries for this invoice"
- User pastes work log text
- Parse entries, extracting: date, project, description, hours
- Calculate totals: sum hours × hourly_rate
- Increment invoice number: VER-2025-011 → VER-2025-012
- Calculate dates: invoice_date (today), due_date (today + 30 days)
- Load
assets/hourly-invoice-template.html - For Versa, use 4-column work log table format
- Replace all placeholders with client data and formatted work log entries
- Save to:
/Users/arlenagreer/Desktop/Invoice-VER-2025-012-VersaComputing-Nov-2025.html - Update
clients.json: set last_invoice_number to 12, last_invoice_date to today - Confirm: "Invoice VER-2025-012 generated and saved to Desktop. Ready for review."
Important Notes
- Date handling: Always check the system date in
<env>context (Today's date) - Work log parsing: Accept pasted text format, parse carefully to extract all components
- Decimal hours: Use decimal format (0.5, 1.0, 2.5) not time format
- Invoice numbering: Always auto-increment based on last_invoice_number
- File location: Save all invoices to
/Users/arlenagreer/Desktop/ - No email sending: Skill only generates HTML files; user reviews and sends manually
- Database updates: Always update
clients.jsonafter successful invoice generation - Template format: For Versa, modify table structure to include PROJECT column between DATE and DESCRIPTION