agentleFS
HybridAIOneHybridAIOne/hybridclaw/skills/fastbill/SKILL.md

fastbill

Skill159 starsChanged 6 months agoMITView on GitHub

Work with FastBill invoices, customers, payments, reminders, and e-invoice exports through the FastBill XML API.

We split this skill into the rules it gives an agent

6 rules. About 0 are common, 2 are distinctive, and 4 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈2

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Use this skill for FastBill invoices, customers, payments, reminders, and document metadata.

    line 34
  2. Very specific:

    Use the helper plus built-in http_request for live API calls.

    line 40
  3. Distinctive:

    Prefer invoice IDs for writes.

    line 48
  4. Very specific:

    If unsure about a service or field, check https://apidocs.fastbill.com.

    line 50
  5. Very specific:

    Use one targeted invoice.get.

    line 95
  6. Very specific:

    Do not set INVOICE_NUMBER when creating or editing a draft title.

    line 116

≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

FastBill

Use this skill for FastBill invoices, customers, payments, reminders, and document metadata. The helper wraps concrete FastBill API services: it serializes JSON-shaped inputs to XML and parses XML responses.

Core Rules

  • Use the helper plus built-in http_request for live API calls. Do not use curl, ad hoc node -e, grep, or shell parsing for FastBill.
  • FastBill API URL: https://my.fastbill.com/api/1.0/api.php. The /api/1.0/ prefix is only for secret-route matching.
  • Basic auth is injected by the gateway from FASTBILL_BASIC_AUTH. Never print, build, or ask for the FastBill API key.
  • Writes require explicit operator intent and --operator-grant. Prefer --dry-run when converting free text, CSV, or time tracking into invoice data.
  • Prefer invoice IDs for writes. If multiple invoices/customers match, ask for the exact ID before writing.
  • If unsure about a service or field, check https://apidocs.fastbill.com.

Commands

Show commands:

node skills/fastbill/fastbill.cjs --help

Build an http_request payload for the built-in http_request tool:

node skills/fastbill/fastbill.cjs http-request invoice.get --filter-json '{"INVOICE_ID":"123"}'
node skills/fastbill/fastbill.cjs http-request customer.create --data-json '{"CUSTOMER_TYPE":"business","ORGANIZATION":"Acme GmbH","COUNTRY_CODE":"DE"}' --operator-grant

Parse a saved http_request response wrapper/body:

node skills/fastbill/fastbill.cjs parse-response --body-file /tmp/fastbill-response.json

Direct helper network calls are only for operator-controlled shell tests with a valid gateway token already exported:

node skills/fastbill/fastbill.cjs request invoice.get --filter-json '{"INVOICE_ID":"123"}'

Common invoice payloads:

node skills/fastbill/fastbill.cjs http-request invoice.get --filter-json '{"END_DUE_DATE":"2026-04-08"}' --limit 100
node skills/fastbill/fastbill.cjs http-request invoice.create --data-json '{"CUSTOMER_ID":"123","INVOICE_TITLE":"Consulting Januar - Juni 2026","ITEMS":{"ITEM":[{"DESCRIPTION":"Consulting","QUANTITY":"8","UNIT_PRICE":"120.00","VAT_PERCENT":"19"}]}}' --operator-grant
node skills/fastbill/fastbill.cjs http-request invoice.update --data-json '{"INVOICE_ID":"456","INVOICE_TITLE":"YouGov SVOD Januar - Juni 2026"}' --operator-grant
node skills/fastbill/fastbill.cjs http-request invoice.setpaid --data-json '{"INVOICE_ID":"456","PAID_DATE":"2026-05-07","PAYMENT_METHOD":"bank transfer"}' --operator-grant
node skills/fastbill/fastbill.cjs http-request invoice.sendbyemail --data-json '{"INVOICE_ID":"456","RECIPIENT":{"TO":"billing@example.com"},"SUBJECT":"Payment reminder","MESSAGE":"Please review the outstanding invoice and payment status."}' --operator-grant

Clone / Copy Invoice

FastBill's API does not expose a dedicated invoice clone/copy service, even though the UI has one. Implement clone as invoice.get then invoice.create.

  1. Use one targeted invoice.get; prefer date, customer/project text, title, and service-period terms over broad account-wide searches.
  2. Select one source invoice. If ambiguous, ask for the invoice ID.
  3. Copy relevant source fields: CUSTOMER_ID, CUSTOMER_COSTCENTER_ID, CONTACT_ID, CURRENCY_CODE, TEMPLATE_ID/TEMPLATE_HASH, INTROTEXT, INVOICE_TITLE, references, discounts, VAT settings, and ITEMS.
  4. Omit lifecycle/source fields: INVOICE_ID, INVOICE_NUMBER, STATE, PAID_DATE, PAYMENTS, DOCUMENT_URL, DETAILS_URL, totals, and cancellation flags.
  5. Apply requested changes, then create the draft with invoice.create --operator-grant. Extra reads need a concrete missing field.

Invoice Title Fields

  • Invoice title field: INVOICE_TITLE in invoice.create and invoice.update. Do not use TITLE, NAME, or SUBJECT.
  • Existing draft title edit: invoice.update with INVOICE_ID and INVOICE_TITLE.
  • INTROTEXT is intro/body text before line items.
  • ITEMS.ITEM[].DESCRIPTION is line-item text.
  • SUBJECT is only for email actions such as invoice.sendbyemail.
  • Do not set INVOICE_NUMBER when creating or editing a draft title.

Write Services

These require --operator-grant: customer.create/update/delete, contact.create/update/delete, invoice.create/update/delete/complete/cancel/lock/sendbyemail/sendbypost/setpaid, estimate.create/delete/sendbyemail/createinvoice, article.create/update/delete, recurring.create/update/delete, revenue.create/setpaid/delete, expense.create, project.create/update/delete, time.create/update/delete, and document.create, webhook.create/delete.

Errors

  • Gateway 401 mentioning WEB_API_TOKEN or GATEWAY_API_TOKEN: the request did not reach FastBill; use built-in http_request in normal runtime.
  • Missing/forbidden secret route: fix FASTBILL_BASIC_AUTH or its route.
  • FastBill 401 with Wrong API KEY / credentials: the route worked, but FastBill rejected the stored Basic credential.

References

  • Operator setup and API notes: references/operator-setup.md

Validation

Run:

python3 skills/skill-creator/scripts/quick_validate.py skills/fastbill
node skills/fastbill/fastbill.cjs --help
node skills/fastbill/fastbill.cjs http-request invoice.get --filter-json '{"INVOICE_ID":"123"}'
node skills/fastbill/fastbill.cjs request invoice.get --filter-json '{"INVOICE_ID":"123"}' --dry-run

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

Reviews can't be read right now.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.