Update to Kedeka
Snapshot Nov 3, 2026 · 00:13 UTC · version 2.0.0
Collection source: downloaded plugin package.
Instructions updated for collect-receivables
Skill instructions — Now says: `get_report` with `report: receivables`. - For one client, find the client with `search_records` (`entity: client`) first and pass `params:...
Observed in instructions or declared skills. Runtime behavior has not been tested.
Up to 10 plugins free · no card required.
All fields and original values.
Skill instructions
Oct 31, 2026 · 06:10 UTC
`get_receivables`. - For one client, find the client with `search_clients` first and pass `customer_id`. - For "overdue" or "telat", pass `overdue_only: true`. - The tool is for workspace owners and admins. If it is refused, say...
Nov 3, 2026 · 00:13 UTC
`get_report` with `report: receivables`. - For one client, find the client with `search_records` (`entity: client`) first and pass `params: {"customer_id": "<id>"}`. - For "overdue" or "telat", pass `params: {"overdue_only": true}`...
Compare saved observations
Download comparison JSONSKILL.md text changes
− removed · + added
--- before +++ after @@ -11,16 +11,16 @@ ## Steps -1. **Read receivables.** Call `get_receivables`. - - For one client, find the client with `search_clients` first and pass `customer_id`. - - For "overdue" or "telat", pass `overdue_only: true`. - - The tool is for workspace owners and admins. If it is refused, say so plainly. +1. **Read receivables.** Call `get_report` with `report: receivables`. + - For one client, find the client with `search_records` (`entity: client`) first and pass `params: {"customer_id": "<id>"}`. + - For "overdue" or "telat", pass `params: {"overdue_only": true}`. + - The report is for workspace owners and admins. If it is refused, say so plainly. 2. **Summarize.** Show: - Total outstanding and the totals per age bucket (not yet due, 0–30, 31–60, 61–90, over 90 days). - - A short table of the oldest unpaid invoices: number, client, due date, days overdue, balance. + - A short table of the oldest unpaid invoices: number, client, due date, days overdue, balance. Keep the invoice number and client name as plain text; put any link in its own column. Use the currency returned by the tool, formatted for the user's locale. 3. **Prioritize.** Suggest an order to follow up: longest overdue first, then the largest balances. Keep it to the top five unless the user asks for more. -4. **Draft reminders (on request).** For each invoice the user picks, call `get_document` if you need its details, then write a short reminder: +4. **Draft reminders (on request).** For each invoice the user picks, call `get_record` (`entity: document`, `id`, `options: {"document_type": "invoice"}`) if you need its details, then write a short reminder: - Polite and specific: invoice number, amount due, original due date. - Firmer tone only for invoices more than 30 days overdue, and never threatening. - Use the client's name from the data. Do not add bank details, penalties, or deadlines that are not in the data.
Full technical diff · 1 changed fields
changed /skill_md_contents
"---\nname: collect-receivables\ndescription: Review unpaid and overdue Kedeka invoices, decide who to follow up first, and draft payment reminder messages for the user to send. Use when the user asks who has not paid, how much is outstanding, or for help chasing payments (e.g. \"siapa yang belum bayar?\", \"bantu tagih klien yang telat\", \"draft a WhatsApp reminder for overdue invoices\").\n---\n\n# Collect receivables\n\nThis workflow reads data and writes message drafts. It never sends anything: the user sends the reminders themselves.\n\nExplicit user instructions take priority over this skill. Reply in the user's language.\n\n## Steps\n\n1. **Read receivables.** Call `get_receivables`.\n - For one client, find the client with `search_clients` first and pass `customer_id`.\n - For \"overdue\" or \"telat\", pass `overdue_only: true`.\n - The tool is for workspace owners and admins. If it is refused, say so plainly.\n2. **Summarize.** Show:\n - Total outstanding and the totals per age bucket (not yet due, 0–30, 31–60, 61–90, over 90 days).\n - A short table of the oldest unpaid invoices: number, client, due date, days overdue, balance.\n Use the currency returned by the tool, formatted for the user's locale.\n3. **Prioritize.** Suggest an order to follow up: longest overdue first, then the largest balances. Keep it to the top five unless the user asks for more.\n4. **Draft reminders (on request).** For each invoice the user picks, call `get_document` if you need its details, then write a short reminder:\n - Polite and specific: invoice number, amount due, original due date.\n - Firmer tone only for invoices more than 30 days overdue, and never threatening.\n - Use the client's name from the data. Do not add bank details, penalties, or deadlines that are not in the data.\n - Format for the channel the user names (WhatsApp: short, no subject line; email: subject plus body).\n - Include the document's public link only if the tool result provides one.\n\n## Do not\n\n- Do not claim a reminder was sent. The user sends WhatsApp and email reminders themselves.\n- If the user wants to email the invoice itself to the client, call `create_secure_link` with `action: send_document_email` and the invoice ID, with your reminder as `prefill.message`. The email goes out only after the user presses Send in Kedeka.\n- Do not record payments or change invoices in this workflow. If the user says a client already paid, switch to recording the payment and confirm it first.\n"
"---\nname: collect-receivables\ndescription: Review unpaid and overdue Kedeka invoices, decide who to follow up first, and draft payment reminder messages for the user to send. Use when the user asks who has not paid, how much is outstanding, or for help chasing payments (e.g. \"siapa yang belum bayar?\", \"bantu tagih klien yang telat\", \"draft a WhatsApp reminder for overdue invoices\").\n---\n\n# Collect receivables\n\nThis workflow reads data and writes message drafts. It never sends anything: the user sends the reminders themselves.\n\nExplicit user instructions take priority over this skill. Reply in the user's language.\n\n## Steps\n\n1. **Read receivables.** Call `get_report` with `report: receivables`.\n - For one client, find the client with `search_records` (`entity: client`) first and pass `params: {\"customer_id\": \"<id>\"}`.\n - For \"overdue\" or \"telat\", pass `params: {\"overdue_only\": true}`.\n - The report is for workspace owners and admins. If it is refused, say so plainly.\n2. **Summarize.** Show:\n - Total outstanding and the totals per age bucket (not yet due, 0–30, 31–60, 61–90, over 90 days).\n - A short table of the oldest unpaid invoices: number, client, due date, days overdue, balance. Keep the invoice number and client name as plain text; put any link in its own column.\n Use the currency returned by the tool, formatted for the user's locale.\n3. **Prioritize.** Suggest an order to follow up: longest overdue first, then the largest balances. Keep it to the top five unless the user asks for more.\n4. **Draft reminders (on request).** For each invoice the user picks, call `get_record` (`entity: document`, `id`, `options: {\"document_type\": \"invoice\"}`) if you need its details, then write a short reminder:\n - Polite and specific: invoice number, amount due, original due date.\n - Firmer tone only for invoices more than 30 days overdue, and never threatening.\n - Use the client's name from the data. Do not add bank details, penalties, or deadlines that are not in the data.\n - Format for the channel the user names (WhatsApp: short, no subject line; email: subject plus body).\n - Include the document's public link only if the tool result provides one.\n\n## Do not\n\n- Do not claim a reminder was sent. The user sends WhatsApp and email reminders themselves.\n- If the user wants to email the invoice itself to the client, call `create_secure_link` with `action: send_document_email` and the invoice ID, with your reminder as `prefill.message`. The email goes out only after the user presses Send in Kedeka.\n- Do not record payments or change invoices in this workflow. If the user says a client already paid, switch to recording the payment and confirm it first.\n"Full snapshot data
{
"description": "Review unpaid and overdue Kedeka invoices, decide who to follow up first, and draft payment reminder messages for the user to send. Use when the user asks who has not paid, how much is outstanding, or for help chasing payments (e.g. \"siapa yang belum bayar?\", \"bantu tagih klien yang telat\", \"draft a WhatsApp reminder for overdue invoices\").",
"included_files": [],
"name": "collect-receivables",
"skill_md_contents": "---\nname: collect-receivables\ndescription: Review unpaid and overdue Kedeka invoices, decide who to follow up first, and draft payment reminder messages for the user to send. Use when the user asks who has not paid, how much is outstanding, or for help chasing payments (e.g. \"siapa yang belum bayar?\", \"bantu tagih klien yang telat\", \"draft a WhatsApp reminder for overdue invoices\").\n---\n\n# Collect receivables\n\nThis workflow reads data and writes message drafts. It never sends anything: the user sends the reminders themselves.\n\nExplicit user instructions take priority over this skill. Reply in the user's language.\n\n## Steps\n\n1. **Read receivables.** Call `get_report` with `report: receivables`.\n - For one client, find the client with `search_records` (`entity: client`) first and pass `params: {\"customer_id\": \"<id>\"}`.\n - For \"overdue\" or \"telat\", pass `params: {\"overdue_only\": true}`.\n - The report is for workspace owners and admins. If it is refused, say so plainly.\n2. **Summarize.** Show:\n - Total outstanding and the totals per age bucket (not yet due, 0–30, 31–60, 61–90, over 90 days).\n - A short table of the oldest unpaid invoices: number, client, due date, days overdue, balance. Keep the invoice number and client name as plain text; put any link in its own column.\n Use the currency returned by the tool, formatted for the user's locale.\n3. **Prioritize.** Suggest an order to follow up: longest overdue first, then the largest balances. Keep it to the top five unless the user asks for more.\n4. **Draft reminders (on request).** For each invoice the user picks, call `get_record` (`entity: document`, `id`, `options: {\"document_type\": \"invoice\"}`) if you need its details, then write a short reminder:\n - Polite and specific: invoice number, amount due, original due date.\n - Firmer tone only for invoices more than 30 days overdue, and never threatening.\n - Use the client's name from the data. Do not add bank details, penalties, or deadlines that are not in the data.\n - Format for the channel the user names (WhatsApp: short, no subject line; email: subject plus body).\n - Include the document's public link only if the tool result provides one.\n\n## Do not\n\n- Do not claim a reminder was sent. The user sends WhatsApp and email reminders themselves.\n- If the user wants to email the invoice itself to the client, call `create_secure_link` with `action: send_document_email` and the invoice ID, with your reminder as `prefill.message`. The email goes out only after the user presses Send in Kedeka.\n- Do not record payments or change invoices in this workflow. If the user says a client already paid, switch to recording the payment and confirm it first.\n"
}SHA-256 of public snapshot: 149e5b609240e882ab2d068cbf8e2c47ff58fe1db0ee0afe936ceb2220754cf1