clients-accounts – Other skill for AI agents
Client and account register: contacts, billing address, tax ID and basis, payment terms, invoice totals, amounts paid and outstanding balance. Use for account tracking.
Install the clients-accounts skill with one command
Pick the tool you use, copy the command and paste it in your terminal. The skill lands in that tool's skills folder and is ready in your next session.
Claude Code
mkdir -p ~/.claude/skills && curl -fsSL https://skill.dn1nguoi.com/z/clients-accounts-bfca1.tgz | tar xz -C ~/.claude/skills
Call it in Claude Code: /clients-accounts – then describe the task you want done.
Codex
mkdir -p ~/.codex/skills && curl -fsSL https://skill.dn1nguoi.com/z/clients-accounts-bfca1.tgz | tar xz -C ~/.codex/skills
Call it in Codex: $clients-accounts – then describe the task you want done.
Hermes Agent
mkdir -p ~/.hermes/skills && curl -fsSL https://skill.dn1nguoi.com/z/clients-accounts-bfca1.tgz | tar xz -C ~/.hermes/skills
Call it in Hermes Agent: /clients-accounts – then describe the task you want done.
DeepSeek
mkdir -p ~/.deepcode/skills && curl -fsSL https://skill.dn1nguoi.com/z/clients-accounts-bfca1.tgz | tar xz -C ~/.deepcode/skills
Call it in DeepSeek: /clients-accounts – then describe the task you want done.
SKILL.md content
Clients & Accounts
What it is: Every client with contacts, terms and what they owe.
Overview
Works out the smallest useful Clients & Accounts setup for the business in front of it, then
builds it only when asked. The default output is a short recommendation, not a
spreadsheet. Artifacts - CSV, SQL DDL, JSON Schema, Notion mapping - are produced on
request, from one field list, then verify their mappings agree.
Layer: Layer 8: Operate. Fits: Starter stage. Table code: n/a.
When to Use This Skill
- client database
- customer records
- client account tracker
- accounts receivable list
Also use it when the user says "every client with contacts, terms and what they owe", or describes the same process happening in a
spreadsheet, a document or someone inboxes.
Do not use it for: payroll calculation, tax filing, or legal advice. This skill produces
empty templates only - it never holds or processes real employee or customer data.
How It Works
The upstream shared execution contract is not bundled; use this file's stated
intent, placeholder-only, output and external-write rules without inventing a read. The module-specific rules below define only domain fields, decisions, calculations, and safety constraints.
Step 1 - Identify intent
Read the request and pick the intent before asking anything.
- "set up" or "build" or "create" -> the user wants artifacts; go to Step 2.
- "our process is ..." or "it is in a sheet" -> the user wants to move an existing process; capture it, then Step 2.
- "is this right" or "review" or "audit" -> the user wants a check, not a build; answer from what they share.
- "how do I ..." -> advice question; answer directly and offer the build only if it helps.
Ask only if this is the highest-value missing fact; otherwise proceed without an opener:
> Q: How many active clients do you have?
Step 2 - Ask only what is missing
Skip anything the user already answered, in any earlier message. Ask the rest one at a
time, and stop as soon as the remaining answers would not change the output.
- Clients - How many active? / Who owns each relationship? / Any churn risk?
- Details - Billing details needed? / Contacts per client? / Contract linked?
- Activity - How often do you speak? / Meetings logged? / Any health score?
- Current process - Where are clients recorded? / CRM or spreadsheet? / What is missing?
- Outcome - What do you need? / A client register, a pipeline or reporting?
Never invent an answer. If the user does not know, record it as unknown and carry on.
Step 3 - Hold the internal context
Hold the answers in this shape. It stays internal - it is not shown to the user unless
they ask, and it never carries a value the user did not give.
module: clients-accounts
intent: null # setup | advice | review | fix | build | convert | export
scale: null # Starter | Growth | Scale, only if the answer changes it
areas:
"Clients": null
"Details": null
"Activity": null
"Current process": null
"Outcome": null
requested_outputs: [] # csv | sql | json | notion | xlsx - requested formats only
confirmed_facts: [] # only what the user actually said
open_questions: [] # the unanswered ones, in the order worth askingStep 4 - Recommend the smallest workflow
If an artifact was requested, build it after resolving essential missing facts. Otherwise give a short recommendation and offer the relevant artifact.
Recommended approach: One record per client with a named owner and next action, and keep activity notes on that record rather than in a separate log.
Why this one: Client records go stale when contact details change. A named owner and a next-action date keep the register usable.
Workflow: Client recorded → Owner assigned → Activity logged → Next action → Review
Money basis: this module does not assume that an amount is tax-inclusive or tax-exclusive. Record the
basis in Tax Basis before the money columns mean anything, and if the user has not said, it stays
Not confirmed - do not deduce it from the currency, the country, or the size of the number. A registration
number says a business is registered; it never says which tax rate applies or whether the amount includes tax,
so do not add tax rate or tax amount fields to the schema unless the user asks for tax tracking.
Derived values - calculate, never accept as typed:
Outstanding = Total Invoiced - Total PaidFor this two-decimal example, round once at the end; confirm currency precision before adapting, and use the rounded figure everywhere. When credits, write-offs
or a part payment mean the two totals do not explain the difference, record why in Notes and leave
Outstanding as the arithmetic result - do not adjust Total Paid to force a tie-out. If the user has
not supplied either total, leave Outstanding empty rather than defaulting it to 0.
Step 5 - Build only on request
Once the user asks for it, derive the fields from the confirmed context and emit the
requested artifacts. For machine-readable text, keep prose outside the data; for files,
provide a usable link. Report material validation failures or limitations separately.
**A selected Notion output is rendered by notion-manual-import, so route the
Notion step there.** When the user selects Notion, hand that step to
@notion-manual-import: it holds the CSV, the property
mapping, the import steps and the verification checklist, and it renders the Field
Reference below instead of defining a table of its own. Do not restate the mapping
here and do not improvise the import steps. Manual CSV and mapping outputs need no
connection. For requested workspace changes, follow the shared contract: verify actual
tool access and the target before writing. A user saying "connected" is not tool evidence.
Never ask for a Notion password or token.
For an Excel-compatible CSV, use UTF-8 with a byte order mark so Excel opens the
text correctly. A CSV is not an .xlsx workbook; create .xlsx only when the user
requests a workbook.
A CSV carries no types, so after it, name the columns
that need a number, date or currency format applied.
Client Name,Client Type,Industry,Contact Person,Email,Phone,Billing Address,Tax ID,Currency,Tax Basis,Payment Terms (Days),Account Manager,Projects,Invoices,Total Invoiced,Total Paid,Outstanding,Client Portal Access,Status,Notes,Client ID
Example Customer,Retainer,Professional services,Example Contact,[email protected],+91 98xxxxxx21,"Example Address, Example City 000000",PAN-EXAMPLE-001,INR,Not confirmed,30,Example Account Manager,"Website Redesign, Data Migration","INV-EXAMPLE-001, INV-EXAMPLE-002",100000.00,90000.00,10000.00,"Read-only portal, expires 2026-03-31",Active,Account review set for March once the quarterly numbers are signed off.,CLIENT-EXAMPLE-001CREATE TABLE clients_accounts (
client_name VARCHAR(255),
client_type VARCHAR(100) NOT NULL,
industry VARCHAR(255),
contact_person VARCHAR(255),
email VARCHAR(255),
phone VARCHAR(255),
billing_address VARCHAR(255),
tax_id VARCHAR(255),
currency VARCHAR(255),
tax_basis VARCHAR(100) NOT NULL,
payment_terms_days NUMERIC,
account_manager VARCHAR(255),
projects VARCHAR(255),
invoices VARCHAR(255),
total_invoiced NUMERIC(14,2),
total_paid NUMERIC(14,2),
outstanding NUMERIC(14,2) GENERATED ALWAYS AS (total_invoiced - total_paid) STORED,
client_portal_access VARCHAR(255),
status VARCHAR(100) NOT NULL,
notes TEXT,
client_id VARCHAR(100) PRIMARY KEY,
created_at TIMESTAMP DEFAULT NOW(),
updated_at TIMESTAMP DEFAULT NOW(),
CHECK (tax_basis IN ('Not confirmed', 'Tax-inclusive', 'Tax-exclusive')),
-- Non-negative money. Outstanding is derived, so it is never typed and never NOT NULL.
CHECK (total_invoiced >= 0 AND total_paid >= 0)
);
CREATE INDEX idx_clients_accounts_status ON clients_accounts (status);{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Clients and Accounts",
"type": "object",
"additionalProperties": false,
"properties": {
"Client Name": { "type": "string" },
"Client Type": { "type": "string" },
"Industry": { "type": "string" },
"Contact Person": { "type": "string" },
"Email": { "type": "string", "format": "email" },
"Phone": { "type": "string" },
"Billing Address": { "type": "string" },
"Tax ID": { "type": "string" },
"Currency": { "type": "string" },
"Tax Basis": { "type": "string" },
"Payment Terms (Days)": { "type": "number" },
"Account Manager": { "type": "string" },
"Projects": { "type": "string" },
"Invoices": { "type": "string" },
"Total Invoiced": { "type": "number" },
"Total Paid": { "type": "number" },
"Outstanding": { "type": "number" },
"Client Portal Access": { "type": "string" },
"Status": { "type": "string" },
"Notes": { … (full content is in the download package)
Related skills
- cloudflare-r2 – Manage Cloudflare R2 buckets, lifecycle, and signed URLs. Use for low-egress object…
- intl-expansion – International market expansion strategy. Market selection, entry modes, localization…
- cloudflare-workers-expert – Expert in Cloudflare Workers and the Edge Computing ecosystem. Covers Wrangler, KV, D1…
- pixel-art – Pixel art w/ era palettes (NES, Game Boy, PICO-8).
- pokemon-player – Play Pokemon via headless emulator + RAM reads.
- polymarket – Query Polymarket: markets, prices, orderbooks, history.
- knowledge-ops – Use when a Head of Ops, Knowledge Manager, or TPM-Internal needs to author, validate, or…
- comment-to-dm-cta – Plan the \"Comment KEYWORD\" CTA of an Instagram Reel (keyword, overlay, caption, DM…