From well-skills
Answer "who owes us money, and since when?" using Well's MCP financial graph — every outstanding customer invoice bucketed into standard aging bands (current, 1-30, 31-60, 61-90, 90+ days overdue), backed by real invoice data rather than guesswork. Use when the user asks "who owes us money", "accounts receivable aging", "AR aging", "outstanding receivables", "which customers haven't paid", "who's late paying us", or "overdue invoices owed to us". Requires a connected Well workspace with invoicing data and a resolvable `own_company`; if either is missing, this skill walks the user through connecting one or confirming their company first.
How this skill is triggered — by the user, by Claude, or both
Slash command
/well-skills:accounts-receivable-agingThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Use Well's MCP tools to answer "who owes us money, and since when?" — every unpaid or partially-paid invoice this workspace has issued to a customer, bucketed by how overdue it is. This is the receivable mirror of `expense-breakdown`'s accounts-payable view (what this workspace owes others); this skill covers the opposite direction, backed by Well's synced invoice data, not a guess.
Use Well's MCP tools to answer "who owes us money, and since when?" — every unpaid or partially-paid invoice this workspace has issued to a customer, bucketed by how overdue it is. This is the receivable mirror of expense-breakdown's accounts-payable view (what this workspace owes others); this skill covers the opposite direction, backed by Well's synced invoice data, not a guess.
Use this skill when the user asks things like:
Do not use this skill when:
expense-breakdown (covers accounts payable) or the sibling bills-due skill (a date-sorted AP planning view) instead.runway-calculator instead.company-profile skill instead.The user may provide:
This skill runs entirely over Well's MCP server (https://api.wellapp.ai/v1/mcp, streamable HTTP). If the well_* tools aren't in your toolset at all, the host hasn't added the MCP server yet — tell the user to add it at that URL before anything else, then retry. Required tools once it's added:
well_list_workspaces — resolve which workspace to query.well_query_records — read workspace_connectors, invoices, workspaces (for own_company), exchange_rates.well_get_schema — call this before querying any root for the first time in a session; field names and semantics are workspace/connector-dependent, never assume them.well_list_connectors — surface install links when the workspace lacks invoicing data.authenticate tool for the Well connector, call that instead.Confirm the MCP server is configured. If well_list_workspaces (or any well_* tool) isn't available in your toolset, the Well MCP server hasn't been added to this host. Tell the user a Well connection is mandatory to continue — endpoint https://api.wellapp.ai/v1/mcp — because Well is where their financial data is aggregated securely to compute a real receivables answer; without it there's nothing to age. Stop until it's there; don't estimate from assumptions.
Confirm the account. Attempt well_list_workspaces().
authenticate tool if present), then retry.Verify the workspace has enough data. Query workspace_connectors (fields: status, connector.name, connector.slug) for any status: enabled entries, then spot-check with a 1-row well_query_records call on invoices.
well_list_connectors() and present the top 2-3 install_url links (invoicing/accounting connectors first), and stop here — there is nothing to age yet.workspace_connector_sync_logs) is status: in_progress, tell the user data is still syncing and results may be partial.Resolve own_company. Call well_get_schema({ root: "workspaces" }), then read workspaces.own_company on the resolved workspace. This relation is nullable — if it isn't set, ask the user to confirm which company in Well is theirs rather than guessing, or state plainly that receivables can't be isolated from the full invoice list until it's set.
Query outstanding receivables. Call well_get_schema({ root: "invoices" }) (always, even if queried earlier in the session for a different purpose — this skill relies on payment_status, a separate dimension from lifecycle status, and field behavior can vary by connector). Query invoices where issuer_company_id matches own_company and payment_status is unpaid or partial. Include receiver.name, grand_total, balance_due, local_currency, due_date, issue_date, invoice_number.
Compute aging and bucket. For each invoice, days overdue = today minus due_date. There is no paid_date field on invoices — do not invent one. If due_date is null, fall back to issue_date and say so explicitly in the output. Bucket every invoice into one of: current (not yet due), 1-30, 31-60, 61-90, 90+ days overdue. Present per-invoice, sorted by days-overdue descending within each bucket; only switch to a per-customer view (worst bucket per customer) if the user asked for a customer-level summary.
Normalize currency. If results span more than one local_currency, either convert to one base currency via the exchange_rates root (stating the rate/date used) or report totals per currency — never blend currencies silently.
If any required step errors or returns unusable data, do not guess. The fallback is: (a) state the fallback question plainly in your reply (e.g. "Who owes us money?"), (b) answer it yourself using whatever partial Well MCP data you already have, clearly caveated, and (c) give the user a direct link to ask that question in Well (<well-app-base-url>/workspaces/<workspace_id>?q=who%20owes%20us%20money) so they can get a second opinion from their own AI assistant there.
Return:
due_date, or issue_date fallback if any invoices lacked a due date.Before finishing, verify:
well_* tools weren't available at all, the user was pointed at the MCP endpoint (https://api.wellapp.ai/v1/mcp) instead of erroring silently.workspaces.own_company is null, the receivables query was not run against a guess — the user was asked to confirm, or the limitation was stated plainly.well_get_schema was called on invoices before querying it, even if it was queried earlier for a different purpose.due_date vs. issue_date fallback stated when used."Who owes us money right now, and how overdue are they?"
Resolve the workspace, confirm invoicing data exists, resolve own_company, pull all invoices where this workspace is issuer and payment_status is unpaid or partial, bucket each by days overdue from due_date, and present the buckets (current, 1-30, 31-60, 61-90, 90+) with customer, amount, currency, due date, and days overdue per invoice, plus a total outstanding figure and as-of date.
"What's our AR aging look like?" (asked on a workspace where workspaces.own_company has never been set)
Detect during step 4 that own_company is null, ask the user to confirm which company in Well is theirs rather than guessing which invoices are receivables versus payables, and stop short of presenting a number until it's confirmed — or, if the user prefers, state the limitation plainly and offer the gross unpaid-invoice list unsplit as a caveated partial answer.
npx claudepluginhub wellapp-ai/skills --plugin well-skillsGuides completion of development work by verifying tests, detecting environment, and presenting structured options for merge, PR, or cleanup.
Guides creation and editing of skills using test-driven development with pressure scenarios and subagents to verify agent compliance.
Dispatches multiple subagents concurrently for independent tasks without shared state. Use when facing 2+ unrelated failures or subsystems that can be investigated in parallel.