accounts
Skill0 starsChanged 23 days agoMITView on GitHub
Get an Australian builder's or trade's job money into Xero, MYOB or QuickBooks, and summarise it for tax. Keeps the job ledger of invoices, progress claims, bills, credit notes and payments, maps it to the user's chart of accounts, exports import files (Xero CSV, MYOB AccountRight, QuickBooks Online), pushes drafts through the user's own Xero, MYOB or QuickBooks connector, works out BAS GST labels (G1, 1A, 1B) and the TPAR contractor payments report, and builds CSV extracts and a project dashboard (P&L, receipts, costs against budget, margin, time on site, job length against the average). Use when someone mentions Xero, MYOB, QuickBooks, their bookkeeper or accountant, getting invoices or bills into the books, coding to jobs, GST, BAS, a quarterly activity statement, TPAR, reporting subbie payments to the ATO, or cash vs accrual, or wants a dashboard, graphs or a CSV extract of how their jobs are going.
- Installs packages
5 other projects use a version of this.
Adopted by
Most recently taken up by
- notque/vexjoy-agenttheir own version, first seen Nov 7, 2026
- harshsinghmp/muse-skillstheir own version, first seen Oct 15, 2026
- notque/claude-code-toolkittheir own version, first seen Oct 8, 2026
- qbeka/jev-job-searchtheir own version, first seen Oct 4, 2026
- MGrin/bb-plugin-accountstheir own version, first seen Sep 13, 2026
Used with
Projects with it also use content and research.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
Rayan55050Skillcontent
Создание контента: посты, статьи, тексты
Also in 3 projects that use this
NVIDIASkillresearch
Before designing a feature, research how comparable libraries solve the problem, check best practices, known pitfalls, and upstream changes. Use when starting a new feature, investigating an unfamiliar area, or the user asks to research something.
Also in 3 projects that use this
Other versions5 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 5
- notque/claude-code-toolkit★ 448same name
- notque/vexjoy-agent★ 448same name
- qbeka/jev-job-search★ 5same name
- MGrin/bb-plugin-accounts★ 4same name
- harshsinghmp/muse-skills★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository15 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- claimsSkill
- contractsSkill
- estimatingSkill
- financialsSkill
- handoverSkill
- materialsSkill
- nccSkill
- noticesSkill
- projectsSkill
- safetySkill
- siteSkill
- startSkill
- variationsSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
13 rules. 0 are common, 10 are distinctive, and 3 are very specific to this project.
0
Common
Most of the 5 edited versions we read keep these.
10
Distinctive
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 21
Run commands from the user's own project folder (the current working directory), so ledger.yaml, accounts.yaml and out/ are theirs.
- Distinctive: line 39
Before anything else, know who you're helping and where:
- Distinctive: line 45
Ask for the trade and state if the project file doesn't have them.
- Distinctive: line 52
GST basis: Ask whether they report GST on a cash or accrual basis.
- Very specific: line 53
Retention: If they hold or pay retention, ask which method their accountant uses (brain/contracts/accounts_and_tax.md, "Retention").
- Distinctive: line 60
Every document the other skills produce that moves money becomes a ledger entry: progress claims and tax invoices (invoice), credit notes, …
- Distinctive: line 98
Ask which transactions to send (usually only the new ones).
- Distinctive: line 99
Look each number up in the software first.
- Distinctive: line 101
Create each one as a draft with the connector's tools, using the payload's account codes, tax codes, tracking and ISO dates.
- Distinctive: line 104
Don't record payments through the connector unless asked: they usually come in from the bank feed.
- Distinctive: line 151
If they want to share the dashboard, offer to publish it.
- Distinctive: line 152
Read the headline back in a few lines: profit and margin against target, cash received and outstanding, the cost categories over budget, …
- Very specific: line 166
If the user can't run Python (for example in Claude.ai), keep the ledger as a table in the conversation, work out GST with the rules in …
“Common” is measured: kept by at least 6 in 10 of the 5 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Accounts
You get the job's money out of the brain's documents and into the user's accounting software, correctly coded, and give them the GST and TPAR figures for the job. You never lodge anything and never give tax advice.
Where things are
The brain (this repository) is at ${CLAUDE_PLUGIN_ROOT}. If that shows
literally as ${CLAUDE_PLUGIN_ROOT}, you are working in a clone instead: the
brain is the repository root, two levels up from this skill's folder. $ABB
below means the brain's folder: write it out as the real path in every
command. Paths starting brain/, templates/, tools/ and examples/ are
inside it.
Run commands from the user's own project folder (the current working
directory), so ledger.yaml, accounts.yaml and out/ are theirs. Never
write into the brain's folder: an installed plugin's folder is replaced on
every update.
- Knowledge:
brain/contracts/accounts_and_tax.md(read it first),brain/contracts/progress_payments.md,brain/contracts/security_of_payment.md - Maths:
brain/computations/bas_summary.md,tpar_summary.md,gst.md,ex_gst.md - Tool:
tools/finance.py(check, export, payload, bas, tpar); import formats intools/finance_formats.yaml - Dashboard:
tools/dashboard.py(CSV extracts and a dashboard page), maths inbrain/computations/job_dashboard.md - Examples:
examples/ledger_example.yaml,examples/accounts_example.yaml,examples/projects_example.yaml,examples/timesheets_example.csv
For python3, use ${CLAUDE_PLUGIN_DATA}/venv/bin/python if it exists (the
plugin's setup hook creates it). Otherwise, if
python3 -c "import docx, openpyxl, yaml" fails, run
python3 -m pip install -r $ABB/requirements.txt first.
Profile: trade and location
Before anything else, know who you're helping and where:
python3 $ABB/tools/profile.py show --project my_project.yaml # or: --trade <trade> --state <STATE>Ask for the trade and state if the project file doesn't have them. GST and the TPAR are national; the state matters for security of payment wording on invoices.
Set up once
- Software and mapping. Ask which software they use (Xero, MYOB AccountRight, MYOB Business, QuickBooks Online). Copy
$ABB/examples/accounts_example.yamltoaccounts.yaml, setsoftware, and fill the account codes from their chart of accounts (ask them, or read it through their connector if one is connected). Mark the mapping unchecked and suggest their bookkeeper or accountant checks it once. - GST basis. Ask whether they report GST on a cash or accrual basis. Don't guess: it changes the BAS.
- Retention. If they hold or pay retention, ask which method their accountant uses (
brain/contracts/accounts_and_tax.md, "Retention"). - Ledger. Copy
$ABB/examples/ledger_example.yamltoledger.yamland setjobto the job number.
Add transactions
Invoices, bills and payment screenshots that arrive as files go through the projects skill's inbox, which reads, checks and files them. Add entries by hand here only for documents the brain generated or figures the user gives you.
Every document the other skills produce that moves money becomes a ledger entry: progress claims and tax invoices (invoice), credit notes, subbie bills and payment schedules (bill, at the scheduled amount), back charges (a supplier_credit to that subbie, or an invoice to them, as the user does it), supplier invoices (bill) and refunds (supplier_credit).
- Amounts are ex GST, from the computation receipt the document used. Never retype or round.
- Code each line with a role from the mapping and a tax code. Most building work is
gst. Retention lines arebas_excluded. Tools and vehicles over the user's capital threshold arecapital. Ask when unsure. - Record payments as they arrive (date and amount inc GST); the BAS on a cash basis and the TPAR need them.
- For a bill from a contractor that is supply only (materials, no labour), set
tpar: false.
Then check it:
python3 $ABB/tools/finance.py check ledger.yaml --accounts accounts.yamlFix every error. Raise every warning with the user (a bad ABN checksum means check ABN Lookup before paying).
Into the software
Import file (works with no connection):
python3 $ABB/tools/finance.py export ledger.yaml --accounts accounts.yaml --out out/financeGive the user the files and the how_to_import line from the report. Say
which transactions were skipped and why (QuickBooks can't import credit
notes; MYOB Business has no import at all).
Connector (if the user has connected Xero, MYOB or QuickBooks to Claude):
python3 $ABB/tools/finance.py payload ledger.yaml --accounts accounts.yaml- Ask which transactions to send (usually only the new ones).
- Look each number up in the software first. Skip any that already exist, and say so.
- Show the user a table of what you'll create (number, contact, date, total inc GST, account, tax) and wait for a clear yes. This writes to their books, so the yes must be for these transactions.
- Create each one as a draft with the connector's tools, using the payload's account codes, tax codes, tracking and ISO dates. Never approve, email or pay anything.
- Report what was created, with links if the connector gives them, and remind them to approve the drafts.
Don't record payments through the connector unless asked: they usually come in from the bank feed.
BAS
mkdir -p out/finance
python3 $ABB/tools/finance.py bas ledger.yaml --accounts accounts.yaml --from 01/07/2026 --to 30/09/2026 --basis accrual > out/finance/bas_receipt.json
python3 $ABB/brain/references/attesters/check_receipt.py out/finance/bas_receipt.jsonGive the labels (G1, G10, G11, 1A, 1B, and G2 to G4 if not zero) in whole dollars, the net GST payable or refundable, and any warnings (on a cash basis, unpaid invoices aren't counted). Say plainly:
- this is the job's ledger, not the whole business: the BAS comes from their accounting software, and this is a check on the job's part of it
- W and T labels (PAYG) don't come from the job ledger
- their accountant or BAS agent should review it; nothing is lodged
TPAR
python3 $ABB/tools/finance.py tpar ledger.yaml --accounts accounts.yaml --year 2027 > out/finance/tpar_receipt.jsonThe year is the financial year ending 30 June. Give each contractor's ABN, name, address, gross paid inc GST, GST and tax withheld, the total and the due date (28 August). Pass on every warning (no ABN, no address). Remind the user the TPAR applies when building and construction is 50% or more of their business, and that it covers all jobs: combine every job's ledger, or use their software's TPAR report, which is usually easier.
Dashboard and extracts
When the user wants to see how a job (or all their jobs) is going. The projects skill keeps the register (projects.yaml) and each job's folder, and files invoices and payments from the inbox into the ledgers; a project made with it only needs folder: in the register.
- Keep a portfolio file,
projects.yaml, in their folder (pattern:$ABB/examples/projects_example.yaml): the account mapping (accounts:), and for each job its project file, ledger, timesheets (a CSV, or the Timesheet and Docket workbook), the folder its documents are written to (documents:, usually that job folder'sout/), status, start, contract end and practical completion dates, target margin, and the cost budget by role from the estimate. Completed jobs belong there too: they give the averages. If their job folders live in Dropbox, Google Drive or SharePoint, adddocuments_url:(the same folder's web link) so the dashboard's document links open there. Build it:
python3 $ABB/tools/dashboard.py projects.yaml --out out/dashboard --as-at <DD/MM/YYYY> [--since <DD/MM/YYYY>] [--software xero,myob] python3 $ABB/brain/references/attesters/check_receipt.py out/dashboard/receipt.json- Give the user
out/dashboard/dashboard.html(opens in any browser, no internet needed; it links to every document generated for the job and to every extract) and point them to:- To model work:
transactions.csv(every invoice and bill with paid, outstanding, days to settle, days overdue, financial year and quarter),transaction_lines.csv(every line and timesheet cost with role and account code: the table for pivots),costs.csv(actual, budget, forecast final and % of revenue),cost_mix.csv(average cost per category as % of revenue by project type: use it to sanity-check a new estimate) andjobs.csv(forecast profit at completion). - To send to the books by hand:
imports/<software>/, one import file set for all jobs, tracked by job. Use--sincewith the date of the last send so only new transactions go in; Xero, MYOB and QuickBooks reject numbers that already exist, but don't rely on it. If they want to share the dashboard, offer to publish it.
- To model work:
- Read the headline back in a few lines: profit and margin against target, cash received and outstanding, the cost categories over budget, days on site, and job length against the contract and the average. Pass on every warning.
Margin here is profit on revenue to date, so an early job that has claimed ahead of its costs shows a high margin: say so, and compare costs to budget for the real picture. Own labour counts only if timesheets are in the portfolio.
Tax questions
Answer from brain/contracts/accounts_and_tax.md and the ATO pages it
cites. For anything deeper (deductions, PAYG, company tax, chart of
accounts design), say it's a question for their accountant, and mention
that the OpenAccountants AI skills cover Australian tax in detail as a
separate plugin. Never present a tax position as advice.
Your own format
If the user can't run Python (for example in Claude.ai), keep the ledger
as a table in the conversation, work out GST with the rules in
brain/computations/gst.md and the BAS labels with the table in
brain/computations/bas_summary.md, and say the figures weren't produced
by the attested computation. Use the column lists in
tools/finance_formats.yaml to write an import file by hand.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

