AI asszisztensek
Az AI kódoló asszisztensek a Számlázz.hu integrációt gyakran a saját, elavult emlékeikből írják. Ilyenkor maguk számolják az áfát, ciklusban küldik újra a sikertelen számlát, vagy UTC dátumot adnak át. A kassza csomagban ezért van egy agents/ mappa, amely az asszisztensnek szól. Pontosan a telepített verzió API-ját írja le, és felsorolja a buktatókat is.
Mi van a csomagban?#
Az npm csomag az agents/ mappát és az llms.txt fájlt is tartalmazza, így telepítés után a projektedben is ott vannak. A fájlok angol nyelvűek.
| Fájl | Tartalom |
|---|---|
node_modules/kassza/agents/README.md | Áttekintés, olvasási sorrend, az öt legfontosabb szabály, egy minimális példa és egy magyar–angol szótár (számla → invoice, díjbekérő → proforma, rendelésszám → orderNumber). |
node_modules/kassza/agents/pitfalls.md | Kötelező szabályok, a gyakori helyzetek hibakódokkal és teendőkkel, a hibakategóriák. |
node_modules/kassza/agents/api.md | Minden metódus bemenete és kimenete, az alcsomagokkal együtt. |
node_modules/kassza/agents/recipes.md | Tíz kész minta: megosztott kliens, idempotens számlázás webhookból, díjbekérő és számla, IPN, nyugta, PDF mentése S3-ba vagy R2-be, serverless munkamenet, tesztek mock klienssel, vevő adatai adószámból, devizás számla EU-s vevőnek. |
node_modules/kassza/agents/skills/kassza/SKILL.md | Kész Claude Code skill a szabályokkal és egy ellenőrzőlistával. |
node_modules/kassza/llms.txt | Tartalomjegyzék llms.txt formátumban, linkekkel a fenti fájlokra. |
Az agents/README.md öt szabálya, amit a generált kódban érdemes ellenőrizni:
- A kliens egyszer jön létre, csak szerveren:
createKassza(), a kulcs aSZAMLAZZ_AGENT_KEYváltozóból. - Minden számlán van
orderNumber, minden nyugtáncallId, a rendelés azonosítójából képezve. - Az árak
netUnitPricevagygrossUnitPricemezőben vannak avatmellett, a nettó, áfa és bruttó értéket nem a kód számolja. - A
createsoha nem fut ciklusban.network,timeout,partial_successvagyduplicatehiba utáninvoices.find({ orderNumber })következik. - A tesztek a
kassza/testingcreateMockKassza()függvényét használják.
Claude Code#
A csomagban lévő skillt másold a projekted .claude/skills/ mappájába:
A skill leírása alapján a Claude Code magától betölti, ha a kód számlát, díjbekérőt vagy nyugtát állít ki, sztornóz, lekérdez vagy e-mailben kiküld, Számlázz.hu IPN webhookot kezel, adószámot kérdez le, vagy szóba kerül a szamlazz.hu, a Számla Agent vagy a SZAMLAZZ_AGENT_KEY. A skill előírja, hogy kódírás előtt olvassa el a node_modules/kassza/agents/ fájljait, és a végén ellenőrzőlistán menjen végig.
Skill nélkül is elég egy mondat a feladat elején:
Cursor#
Cursorban egy projektszabály mondja meg az asszisztensnek, hol találja a leírást:
A szabály törzsébe a SKILL.md szabályait és ellenőrzőlistáját is bemásolhatod. Ha az asszisztensed nem olvas a node_modules mappából, a pitfalls.md tartalmát másold be a szabályba.
GitHub Copilot#
Copilotnál a tároló szintű utasításokat a .github/copilot-instructions.md fájlba írod:
Az llms.txt#
A repó gyökerében lévő llms.txt rövid leírás a csomagról, és linkeket tartalmaz az agents/ fájljaira, a README-re és a hivatalos Számlázz.hu dokumentációra. Az agents/ fájlokra és a README-re mutató linkek relatívak, így mindig a fájl melletti példányra mutatnak, akár a telepített csomagban, akár a GitHubon.
Ha az asszisztens nem látja a projektedet, például egy böngészős chatben, add meg neki a fájl címét:
Ennél a címnél a relatív linkek is a GitHubon lévő fájlokra mutatnak. A GitHub main ágán a fejlesztés alatti állapot van, a telepített csomagban pedig a nálad futó verzió dokumentációja.
Ha egy konkrét dokumentációs oldalt adnál át, használd az oldalon lévő Oldal másolása Markdownként gombot, és illeszd be a chatbe.
A dokumentáció gépi változatai#
Ez a weboldal a teljes dokumentációt AI számára könnyen olvasható formában is kiszolgálja:
| Cím | Tartalom |
|---|---|
/llms.txt | Az összes dokumentációs oldal listája rövid leírással. |
/llms-full.txt | Az összes oldal teljes szövege egyetlen Markdown fájlban. |
/docs/<oldal>.md | Egy oldal Markdownként, például /docs/alapok/hibakezeles.md. |
Az /llms-full.txt akkor jó, ha az asszisztens egyszerre lássa a teljes dokumentációt. Egy konkrét kérdéshez elég a vonatkozó oldal .md változata.
Ellenőrzőlista a generált kódhoz#
A SKILL.md és a pitfalls.md alapján ezeket nézd át, mielőtt elfogadod az AI kódját:
- A számlát kiállító webhook vagy háttérfeladat idempotens: előbb
find-dal keres, vagy aduplicatehibát kezeli. - Nincs saját újrapróbáló ciklus az
invoices.createvagy areceipts.createkörül. - A dátumok nem
new Date().toISOString().slice(0, 10)alakban készülnek, mert éjfél és hajnali 2 óra között ez a budapesti tegnapot adja. - A PDF a
kassza/storagemodullal tárhelyre kerül, vagy azinvoices.getPdf()hívással újra lekérhető, és nincs base64-ként az adatbázisban. - Az IPN végpont
ipnOkResponse()-szal, HTTP 200-zal válaszol, és a feldolgozás idempotens. - Serverless vagy edge környezetben közös
cookieStorevan beállítva akassza/cookie-storesmodulból. - Van unit teszt a
createMockKassza()klienssel, és egyik teszt sem használ valódi Agent kulcsot. - A
createKassza()csak szerveroldali kódban szerepel, a kulcs nem kerül a böngészőbe.
Ha a kassza kódján dolgozol#
A repó gyökerében lévő AGENTS.md nem a csomag felhasználóinak szól, hanem azoknak az asszisztenseknek, amelyek magán a kassza forráskódján dolgoznak. Leírja a parancsokat, a mappaszerkezetet és a konvenciókat, például hogy a kódban nincs komment, a hibaüzenetek magyarok, nincs futásidejű függőség, és a kérés XML elemeinek sorrendje az XSD-t követi. Ez a fájl nem része az npm csomagnak.