Agent
Agent friendly invoice generator with human in the loop, or human as the driver. Light weight, keep it simple.
npx -y skills add ChialiT/Simple-Invoice --skill AgentAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Manage invoices using the local Simple Invoice app (FastAPI + SQLite). Use this skill whenever the user asks to create invoices, check status, find unpaid invoices, mark invoices as paid, or reconcile payment references against open invoices. Always use API endpoints and avoid direct database edits.
SKILL.md
3.3 KB, 803 tokens by cl100k_base, as published. Nobody here has run it
Simple Invoice Skill Template
This file is intentionally sanitized for open-source use.
Before using in production, update all REQUIRED_UPDATE values.
Required Setup
REQUIRED_UPDATE::APP_BASE_URL(example:http://127.0.0.1:8080)REQUIRED_UPDATE::PROJECT_ROOT(example:/path/to/Simple-Invoice)REQUIRED_UPDATE::PRIMARY_OPERATOR_NAME(example:Finance Admin)REQUIRED_UPDATE::NOTIFICATION_CHANNEL(example:Slack #financeorTelegram)
If these are unknown at runtime, agents should ask the user once and cache locally.
App Context
- Entry point:
app.py - Business logic:
invoice_service.py - Templates:
templates/ - Database:
invoices.db(SQLite) - PDFs:
pdfs/INV-XXXX.pdf - Assets:
Asset/full-logo.png,Asset/wise-quick-pay-qr-code.png(or env-configured paths)
API Reference
Base URL: REQUIRED_UPDATE::APP_BASE_URL
List invoices
GET /api/invoices
GET /api/invoices?status=Sent
Get a single invoice (with totals/tax breakdown)
GET /api/invoices/{id}
Mark invoice as paid
PATCH /api/invoices/{id}/paid
Content-Type: application/json
{"wise_ref": "TRANSFER-XXXX"} # optional
List contacts
GET /api/contacts
Status summary
GET /api/summary
Tax Types
| Key | Label |
|---|---|
zero_rated | Zero-rated (0%) |
gst | GST (5%) |
exempt | Exempt (0%) |
out_of_scope | Out of Scope (0%) |
gst_qst_qc | GST/QST QC - 9.975 (14.975%) |
qst_qc | QST QC - 9.975 (9.975%) |
Standard Agent Tasks
Check unpaid invoices
- Call
GET /api/invoices?status=Sent - Call
GET /api/invoices?status=Overdue - Report: invoice id, client, due date, total, currency
Reconcile payment reference
- Fetch open invoices (
Sent) - Compare incoming payment amount/reference with invoice
total - If matched, call
PATCH /api/invoices/{id}/paidwithwise_ref - Send summary to
REQUIRED_UPDATE::NOTIFICATION_CHANNEL
Verify app health
curl REQUIRED_UPDATE::APP_BASE_URL/api/summary
If unavailable, notify REQUIRED_UPDATE::PRIMARY_OPERATOR_NAME and suggest:
cd REQUIRED_UPDATE::PROJECT_ROOT
source venv/bin/activate
python app.py
Compute outstanding total
- Fetch
GET /api/invoices?status=Sent - Sum
totalby currency (do not mix currencies) - Return grouped totals (e.g., USD, CAD, EUR)
Rules
- Never write directly to
invoices.dbfor normal operations. - Use API endpoints for all invoice state changes.
- Treat cross-currency or partial-payment matches as manual review.
- Keep secrets/payment/account details in
.env, not in this file. - Do not hardcode private client names, bank numbers, or personal paths.
Optional Local Extensions
You can add organization-specific sections below, but keep them private:
- Known clients mapping
- Auto-match tolerance policy
- Notification templates
- Bookkeeping/export hooks
If you publish this repo, remove private sections before commit.
Gives 0 of the 12 instructions most databases sql skills give in 803 tokens
Counted across 589 of the 662 authors here whose files we hold, read 2026-08-06
- use parameterized queriesin 36 of 589, across 32 files
- use timestamptz for timestampsin 30 of 589, across 12 files
- create indexes concurrentlyin 29 of 589, across 23 files
- index foreign keysin 28 of 589, across 17 files
- use numeric type for moneyin 25 of 589, across 8 files
- select only required columnsin 24 of 589, across 19 files
- use cursor pagination instead of OFFSETin 23 of 589, across 15 files
- add indexes manually on foreign key columnsin 22 of 589, across 11 files
- read individual rule files for detailed explanationsin 18 of 589, across 4 files
- configure connection poolingin 18 of 589, across 16 files
- put equality columns before range columns in indexesin 17 of 589, across 9 files
- normalize to third normal formin 17 of 589, across 8 files
Said here and by no other author read
- use API endpoints for invoice state changes
- fetch sent and overdue invoices to check unpaid
- fetch open invoices before reconciling payments
- mark matched invoices as paid via API
- send reconciliation summaries to the notification channel
- group outstanding totals by currency
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.