본문으로 건너뛰기
cccskills
무료GitHub에 공개

kelly-audit

Personal finance anomaly review desk (Busabase App-in-Skill) that imports the three business tables — orders, invoices, payments/receipts (回款) — from CSV/JSON exports, flags anomalies with deterministic rules, and runs a human review queue with auditable decisions. Use when the user invokes $kelly-audit or /kelly-audit, mentions finance audit, order invoice payment reconciliation, 对账, 应收, 回款, 发票异常, receivables aging, overdue receivables, duplicate payments, missing invoices, amount mismatches, or anomaly review.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

실행 점수 미검증

설치 방법 보기

포함된 파일(71)

  • SKILL.md13.6 KB
  • agents/openai.yaml224 B
  • assets/screenshots/anomalies-zh-CN.webp130 B
  • assets/screenshots/anomalies.webp130 B
  • assets/screenshots/invoices-zh-CN.webp130 B
  • assets/screenshots/invoices.webp130 B
  • assets/screenshots/orders-zh-CN.webp130 B
  • assets/screenshots/orders.webp130 B
  • assets/screenshots/overview-zh-CN.webp130 B
  • assets/screenshots/overview.webp130 B
  • assets/screenshots/thumbs/anomalies-zh-CN.webp130 B
  • assets/screenshots/thumbs/anomalies.webp130 B
  • assets/screenshots/thumbs/invoices-zh-CN.webp130 B
  • assets/screenshots/thumbs/invoices.webp130 B
  • assets/screenshots/thumbs/orders-zh-CN.webp130 B
  • assets/screenshots/thumbs/orders.webp130 B
  • assets/screenshots/thumbs/overview-zh-CN.webp130 B
  • assets/screenshots/thumbs/overview.webp130 B
  • busabase.json879 B
  • content/_folder.json166 B
  • content/anomalies/base.json4.1 KB
  • content/anomalies/records.ndjson4.3 KB
  • content/import-log/base.json1.1 KB
  • content/invoices/base.json1.8 KB
  • content/kelly-audit-app/_node.json186 B
  • content/kelly-audit-app/.busabaseignore194 B
  • content/kelly-audit-app/app/accent-theme.css8.0 KB
  • content/kelly-audit-app/app/accent-theme.js7.7 KB
  • content/kelly-audit-app/app/app.js22.9 KB
  • content/kelly-audit-app/app/base-ui.css21.7 KB
  • content/kelly-audit-app/app/demo-visuals.css1.5 KB
  • content/kelly-audit-app/app/demo-visuals.js3.3 KB
  • content/kelly-audit-app/app/i18n/messages.js9.0 KB
  • content/kelly-audit-app/app/index.html4.6 KB
  • content/kelly-audit-app/app/js/audit-model.js35.7 KB
  • content/kelly-audit-app/app/js/audit-views.js21.6 KB
  • content/kelly-audit-app/app/js/busabase-client.js226 B
  • content/kelly-audit-app/app/js/config.js8.0 KB
  • content/kelly-audit-app/app/js/connect-gate.js1.6 KB
  • content/kelly-audit-app/app/js/demo-visuals-data.js4.3 KB
  • content/kelly-audit-app/app/js/providers/busabase-provider.js9.6 KB
  • content/kelly-audit-app/app/js/providers/demo-provider.js35.6 KB
  • content/kelly-audit-app/app/js/providers/index.js270 B
  • content/kelly-audit-app/app/js/runtime.js3.4 KB
  • content/kelly-audit-app/app/styles.css24.4 KB
  • content/kelly-audit-app/app/styles/editorial.css30.7 KB
  • content/kelly-audit-app/app/vendor/busabase-airapp-gate.css6.1 KB
  • content/kelly-audit-app/app/vendor/busabase-airapp-gate.js11.2 KB
  • content/kelly-audit-app/app/vendor/busabase-airapp.js556.0 KB
  • content/kelly-audit-app/app/vendor/busabase-sdk.js849.5 KB
  • content/kelly-audit-app/package.json1.0 KB
  • content/kelly-audit-app/pnpm-lock.yaml5.2 KB
  • content/kelly-audit-app/pnpm-workspace.yaml50 B
  • content/kelly-audit-app/scripts/check-editorial.mjs6.1 KB
  • content/kelly-audit-app/scripts/check.mjs4.2 KB
  • content/kelly-audit-app/server.js3.1 KB
  • content/kelly-audit-app/test/audit-model.test.mjs12.2 KB
  • content/orders/base.json1.2 KB
  • content/payments/base.json1.7 KB
  • content/settings/base.json2.2 KB
  • package.json509 B
  • pnpm-lock.yaml4.3 KB
  • pnpm-workspace.yaml50 B
  • README.md5.0 KB
  • references/audit-schema.md9.1 KB
  • scripts/execute_decisions.mjs7.5 KB
  • scripts/import_tables.mjs16.6 KB
  • scripts/publish_airapp.mjs3.1 KB
  • scripts/run_checks.mjs11.1 KB
  • scripts/setup.mjs6.4 KB
  • scripts/sync-content.mjs2.5 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Kelly Audit

Overview

Use this skill as Kelly's finance anomaly review desk for a finance lead, small-business owner, or bookkeeping team. It imports the three business tables — orders, invoices, and payments/receipts (回款) — from local CSV/JSON exports, cross-checks them with deterministic rules plus agent judgment, and surfaces anomalies in a Busabase-backed App-in-Skill review queue. Reading local export files is a genuine external operation a browser cannot perform: scripts/import_tables.mjs is the only place a document enters the system, scripts/run_checks.mjs re-derives statuses and runs the anomaly rules, and scripts/execute_decisions.mjs prints the plan for approved anomalies. The AirApp itself only reads Busabase and writes review decisions; approved items become concrete follow-up actions (chase a receivable, reissue an invoice, flag to the accountant) executed by the agent outside the app.

This is different from kelly-money, which watches Kelly's own provider accounts: kelly-audit audits imported business documents against each other.

Default behavior is AirApp-first. Unless the user explicitly asks only for explanation, import/check what's due and give the user the clickable AirApp URL (or the local preview URL when local preview is explicitly requested). Use chat-only mode only when the user says "纯聊天", "chat only", "不要打开 UI", or similar; then present numbered anomaly cards (Anomaly #1) and take verdicts in chat.

App UI Screenshots

<table> <tr> <td width="50%"><img src="assets/screenshots/overview.webp" alt="Kelly Audit overview"></td> <td width="50%"><img src="assets/screenshots/anomalies.webp" alt="Kelly Audit anomaly queue"></td> </tr> <tr> <td><strong>Overview</strong><br>Finance audit desk with amount at risk, receivable aging bar, anomaly queue preview, and import history.</td> <td><strong>Anomaly queue</strong><br>Rule-flagged anomalies with the order-invoice-payment evidence chain and a drafted chasing email for approval.</td> </tr> <tr> <td width="50%"><img src="assets/screenshots/invoices.webp" alt="Kelly Audit invoices"></td> <td width="50%"><img src="assets/screenshots/orders.webp" alt="Kelly Audit orders"></td> </tr> <tr> <td><strong>Invoices</strong><br>Invoice ledger with due dates, paid amounts, days overdue, and match status.</td> <td><strong>Orders</strong><br>Normalized orders with invoice and payment status badges and linked anomaly indicators.</td> </tr> </table>

Mandatory Dependencies

  1. Read and follow $kelly-app-skill-creator for product behavior, visual quality, responsive layout, and the complete canonical content/kelly-audit-app/ artifact.
  2. Read and follow $busabase for connection, target Space, node discovery, ChangeRequests, review, and merge behavior.
  3. Read and follow $busabase-app-creator for resource modeling, AirApp runtime limits, security, validation, and deployment.

If a dependency is unavailable, preserve this skill's local artifact and product contracts, stop before the unavailable Busabase operation, and report the exact missing dependency. Do not invent a second data backend.

Boundary

  • Imports are local files only: scripts/import_tables.mjs reads CSV/JSON exports the user provides, normalizes them, and writes them to Busabase. It never fetches business documents from remote systems on its own.
  • The AirApp reads and writes Busabase records only. It must not send emails, change ERP/bookkeeping records, move money, or mutate remote systems.
  • Any outbound follow-up (a receivable-chasing email, a message to the accountant, a billing task) is approval-required through the anomaly queue and executed by the agent OUTSIDE the app via other skills (e.g. kelly-email), with the real result recorded back onto the anomaly. scripts/execute_decisions.mjs never performs these operations itself — it only writes an execution marker.
  • Treat all order/invoice/payment data as sensitive business data. Never commit local export files, env files, or generated reports.

Busabase Resources

Six Bases under one application Folder (kelly-audit), declared in content/kelly-audit-app/app/js/config.js and the generated template sidecars under content/:

  • orders: normalized sales orders imported from CSV/JSON exports.
  • invoices: normalized invoices and credit notes.
  • payments: normalized payments / receipts (回款).
  • anomalies: the review queue — rule-flagged anomalies with severity, evidence, a drafted follow-up, and the human decision + execution marker on the same row.
  • import-log: append-only history of import runs (files, added/updated counts, row warnings).
  • settings: one row (record-id: "config") with company profile, tolerance rules, and import column mappings.

Resources provision lazily through an idempotent Busabase ChangeRequest the first time the app runs in a Space; see references/audit-schema.md for exact field shapes. Links (order → invoice → payment), statuses, receivable aging, and metrics are recomputed client-side from the stored rows on every read (content/kelly-audit-app/app/js/audit-model.js's deriveSnapshot/buildSnapshot), so the desk is always fresh regardless of when a browser session loads it relative to the last import/checks run.

First Run And Onboarding

On invocation, check the orders/invoices/payments Bases. If all three are empty, guide setup before importing real tables: ask, turn by turn, company profile (name, contact email, base currency, optional fx_rates for mixed-currency books), which export files to import and their column headers, and tolerance rules (days_to_invoice, amount_tolerance_pct, aging_buckets default 30/60/90, duplicate_window_days). Write the answers onto the Settings row, then import:

node skills/kelly-audit/scripts/import_tables.mjs \
  --orders /path/orders.csv --invoices /path/invoices.csv --payments /path/payments.csv --apply
node skills/kelly-audit/scripts/run_checks.mjs --apply

Local App

Default behavior is AirApp-first — give the user the clickable AirApp URL. Start pnpm --dir content/kelly-audit-app dev only when local preview/debugging is explicitly requested.

Required app views (hash routes):

  • #/overview: audit command desk. Human-attention panel (anomalies needing a decision, high-risk amount at stake, overdue receivables total), KPI cards (orders/invoices/payments imported, matched %, open anomalies, receivable outstanding), a receivable aging buckets bar (inline SVG), and the recent import log.
  • #/orders and #/orders/<id>: normalized orders table — order no, customer, date, amount, currency, invoice status badge, payment status badge, linked anomaly. Detail shows the linked invoice(s) + payment(s) chain with per-link status.
  • #/invoices and #/invoices/<id>: invoices table — invoice no, order ref, customer, issue/due dates, amount, paid amount, days overdue, status. Detail shows matched payments, amount deltas, and notes.
  • #/anomalies (and #/anomalies/<id> deep links): the review queue with workflow states needs_review, changes_requested, approved, done, blocked. Each anomaly card shows the rule badge, severity, evidence (the exact rows plus the computed delta), the agent-drafted follow-up action (e.g. a receivable-chasing email draft or an internal request), an editable draft plus a Review note textarea, decision buttons (approve / request changes / block / dismiss = done), and a stable reference such as Anomaly #1. Decisions write directly onto the anomaly record through busabase-sdk.
  • #/settings: sanitized config summary — company profile, tolerance rules, and import column mappings, read live off the Settings Base.

Demo mode:

  • ?demo=1 opens a deterministic mock audit desk for documentation and screenshots.
  • ?demo=overview, ?demo=orders, ?demo=invoices, ?demo=anomalies, and ?demo=detail (an amount-mismatch anomaly with its evidence chain) select named mock scenes.
  • lang=en or lang=zh forces UI chrome language; with lang=zh the demo content itself (customer names such as 明华贸易, anomaly titles, reasons, drafted emails) is meaningfully localized for Chinese screenshots.
  • Demo mode never reads or writes Busabase. Decision buttons still work but act on in-memory state only.

UI language: support English and Chinese chrome with Auto default (following the browser language) plus an explicit selector persisted locally. Keep imported document numbers and real business data untranslated.

Import Workflow

  1. Detect mode. Default to AirApp-first.
  2. Check the orders/invoices/payments Bases. If all three are empty, enter onboarding.
  3. Ask which export files to import (orders, invoices, payments — any subset) and confirm the column mapping if the headers changed (stored on the Settings row's import_*_columns fields).
  4. Run the write path:
node skills/kelly-audit/scripts/import_tables.mjs \
  --orders /path/orders.csv --invoices /path/invoices.csv --payments /path/payments.csv --apply

The script parses CSV (quoted fields included) or JSON arrays, applies the column mapping from Settings, normalizes dates/amounts/currencies, and upserts each row into Busabase by natural key (order_no / invoice_no / payment_ref) so re-imports are idempotent. It appends an entry to the import-log Base with per-file added/updated counts and row warnings. Without --apply it is a dry run.

  1. Surface import warnings (skipped rows, payments referencing unknown invoices) to the user instead of silently dropping them.

Check Workflow

  1. After every import (or on request), run the deterministic rule set:
node skills/kelly-audit/scripts/run_checks.mjs --apply

Rules, driven by the Settings row's tolerances: missing_invoice (order without invoice after days_to_invoice days), amount_mismatch (invoice total vs order amount beyond amount_tolerance_pct), overdue_receivable (unpaid past due date, with 30/60/90+ aging buckets), duplicate (duplicate payment within duplicate_window_days, duplicate invoice number), unmatched_payment (payment matching no invoice), irregular_entry (credit note without an original, negative payments).

  1. Anomaly ids are stable (anom-<rule>-<key>), so re-runs upsert instead of duplicating; existing statuses, refs, decisions, and executions are preserved; anomalies whose condition cleared are auto-resolved to done.
  2. The agent may then improve on the deterministic output: sharpen titles/reasons, localize, and refine the drafted follow-up (chasing email, billing request, accountant note) by editing the anomaly's draft field directly — keeping ids and evidence intact.
  3. Give the user the AirApp URL and send them to #/anomalies.

Decisions And Execution Workflow

  1. The user reviews at #/anomalies: approve, request changes (with a note), save an edited draft (revise), block, or dismiss. Decisions write directly onto the anomaly record. From a standalone local preview the write merges immediately (trusted operator); from the deployed AirApp it creates a pending ChangeRequest for the trusted process to merge.
  2. On explicit user request to execute, run scripts/execute_decisions.mjs (dry-run by default; --apply writes execution_status: "ready_for_agent" onto each approved anomaly with the concrete operation — chase_receivable (with the drafted email handoff), reissue_invoice, flag_to_accountant — and target document id). No external side effects either way.
  3. The agent then performs the approved follow-ups outside the app (send the chasing email via the email skill, open the billing/accountant task) and records the real result on the anomaly (execution_status: "executed", execution_detail). Executed anomalies still require the app or a follow-up decision to move to done — this script never flips the workflow status itself.

Safety Defaults

  • Treat every outbound message, ERP/bookkeeping mutation, refund, and credit-note change as approval-required via the anomaly queue.
  • Use stable ids and natural-key upserts so repeated imports, checks, and executions are idempotent.
  • Never expose secrets or full customer datasets through the settings view or logs; it shows column mappings and tolerance rules only.
  • If the tables disagree in a way no rule covers, ask the user — do not invent corrections to make the books balance.

Useful Commands

node skills/kelly-audit/scripts/import_tables.mjs --orders orders.csv --invoices invoices.csv --payments payments.csv --apply
node skills/kelly-audit/scripts/run_checks.mjs --apply
node skills/kelly-audit/scripts/execute_decisions.mjs
node skills/kelly-audit/scripts/execute_decisions.mjs --apply
pnpm --dir skills/kelly-audit/content/kelly-audit-app dev

In normal use, invoke /kelly-audit, let the skill import/check what's due, and open the AirApp.

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Align all AI coding agents to a single source of truth. AGENTS.md for rules, .agents/skills/ for skills, symlinks for everything else. Use when setting up a repo for multiple agents, or when links are missing, broken, or out of date.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

mr-kelly/skills52026년 10월 22일 업데이트

Read, answer and post on the Buda community forum at community.buda.im through its /api/v1/community REST API. Lists categories and posts, reads a thread with its replies, searches, and publishes posts and replies behind an explicit confirmation. Use when the user invokes $buda-community or /buda-community, asks what is happening in the Buda community, wants an unanswered question triaged or answered, or wants something posted or announced there.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

mr-kelly/skills52026년 10월 22일 업데이트

Read, answer and post on the Busabase community forum at community.busabase.com through its /api/v1/community REST API. Lists categories and posts, reads a thread with its replies, searches, and publishes posts and replies behind an explicit confirmation. Use when the user invokes $busabase-community or /busabase-community, asks what is happening in the Busabase community, wants an unanswered question triaged or answered, or wants something posted or announced there.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

mr-kelly/skills52026년 10월 22일 업데이트

kelly-ads

무료

Ad-campaign command desk (投放指挥台, Busabase App-in-Skill) for a cross-border e-commerce seller running Amazon Ads, Meta (FB/IG), TikTok Ads, and Google Ads. Use when the user invokes $kelly-ads or /kelly-ads, or asks about 投放, ad campaigns, ad spend, ACOS, ROAS, Amazon Ads, TikTok ads, Meta ads, Google Ads, search terms, negative keywords, bid adjustment, budget pacing, CPC spikes, rejected ads, ad anomaly detection, 广告优化, or reviewing agent-proposed adjustment cards (negative keyword, bid down/up, pause target, budget shift, creative refresh).

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

mr-kelly/skills52026년 10월 22일 업데이트

Busabase-backed App-in-Skill low-code agent configuration and governance console for a platform team. Use when the user invokes $kelly-agent-builder or /kelly-agent-builder, wants to review or edit a catalog of mock LLM agent configs, check quota usage, find configs that need attention, move a draft to live, pause a live agent, or archive an agent. Mock config/governance console only — it never provisions or calls any real agent.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

mr-kelly/skills52026년 10월 22일 업데이트

Review board (Busabase App-in-Skill) that runs a fixed suite of mock test cases against a baseline vs candidate agent version and surfaces rubric-scored regressions before a release. Use when the user invokes $kelly-agent-eval or /kelly-agent-eval, wants to review agent-version regressions, compare baseline vs candidate quality, triage a release, or record a release approve/block decision. Deterministic mock rubric scores only — not a real LLM-judge call, and it never deploys anything.

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

mr-kelly/skills52026년 10월 22일 업데이트

mr-kelly의 스킬 모두 보기

이 스킬의 문제 신고