small-business/skills/month-end-prep/SKILL.md
Walks an SMB owner through month-end close: reconciles QuickBooks against PayPal (and Square/Stripe) settlements, flags uncategorized transactions, suspicious duplicates, and missing receipts, then writes a plain-English P&L narrative and exports a close packet (xlsx + one-page PDF). Use when the user says "close the month," "month-end," "reconcile," "what's missing," "P&L," or asks why revenue or margin changed this month.
npx skillsauth add anthropics/knowledge-work-plugins month-end-prepInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Connect QuickBooks and at least one payment processor (PayPal, Square, or Stripe), then say "let's close the month." Claude walks you through each step of the checklist, pausing for your input at each gate before moving forward.
If a connector is missing, Claude falls back to asking for a CSV export — it won't silently skip a step.
Work through these steps in order. Each step has a completion state; don't advance until the current step is settled.
Ask the user which month to close. Default to the prior calendar month if they don't specify. Confirm before pulling any data.
Fetch:
Flag immediately:
Present the count ("14 transactions need a category") and list them for the user to classify before proceeding. Don't advance with open uncategorized items unless the user explicitly says "skip for now."
See reference/quickbooks-reconcile.md for field mappings and API notes.
Fetch settlement reports from PayPal, Square, or Stripe — whichever are connected — for the same calendar month.
Match each settlement deposit against the QuickBooks bank deposit line:
See reference/paypal-settlements.md for settlement report field mappings (PayPal, Square, Stripe).
Scan the transaction register for likely duplicate charges or deposits. Flag a transaction as a suspicious duplicate when all three match:
Present flagged pairs to the user. They decide whether each is legitimate (e.g., a recurring weekly subscription) or a real duplicate to void.
See reference/gotchas.md for common false-positive patterns and how to distinguish them.
If the Desktop connector is available, scan the receipts folder (ask the user for the
path; default ~/Documents/Receipts) for the target month.
For each expense transaction in QuickBooks above $25 with no attached document:
List missing receipts. The user can supply the file or mark as "receipt not required" (e.g., a recurring auto-pay with no receipt).
If Desktop connector is not available, ask the user to confirm which expenses they have receipts for — don't silently skip this step.
Present a summary before going further:
Uncategorized transactions: X of X resolved
Settlement discrepancies: X flagged, X resolved
Suspicious duplicates: X flagged, X cleared
Missing receipts: X outstanding
Ask: "Ready to write the P&L summary and export the close packet?"
Do not proceed to Steps 7–8 without explicit confirmation.
Write a plain-English summary of the month — the kind an owner would share with their spouse or accountant, not a CFO memo. Aim for 150–250 words.
Structure:
Avoid jargon; define anything that isn't plain English ("MoM" = month over month).
See reference/examples/pl-narrative.md for a worked example.
Produce two files:
close-packet-[YYYY-MM].xlsx — three sheets:
P&L — the QuickBooks P&L data, formattedReconciliation — matched and flagged transactions side by sideAction Items — any outstanding flags (uncategorized, missing receipts, etc.)close-packet-[YYYY-MM]-summary.pdf — one page:
Save both to the Desktop (or a path the user specifies). Confirm the file locations.
See reference/close-packet-format.md for column specs and PDF layout details.
| Missing connector | Fallback | |---|---| | QuickBooks | Ask for a QB export CSV (P&L + transaction detail) | | Payment processor | Ask for a settlement CSV from the processor's website | | Desktop (receipts) | Ask the user to confirm receipt status for each flagged expense |
testing
Reads a forwarded customer email or ticket, pulls order/refund status from PayPal and account history from HubSpot, drafts a tone-matched reply in the owner's writing voice, and can issue a PayPal refund with explicit owner approval. Use when the user says "draft a response," "answer this customer," "where's my order," or "I want a refund."
development
Prepares tax-season materials for small business owners — framed as deliverables for their accountant, not tax advice. Two modes: (1) quarterly estimated tax calculation — pulls YTD net income from QuickBooks and calculates the federal income tax + self-employment tax liability and quarterly payment due; (2) year-end 1099 prep — scans QuickBooks, PayPal, and Stripe for contractors paid over $600, builds a 1099-NEC candidate list with missing W-9 flags, and produces a plain-English summary a CPA can work from directly. Trigger this skill whenever the user mentions: quarterly taxes, estimated tax payment, how much to set aside for taxes, 1099s, 1099-NEC, year-end tax prep, contractor payments, W-9s, or any phrase suggesting they are preparing for a tax deadline or handing materials to an accountant. Also trigger proactively when a user asks about net profit or YTD income in a context that suggests they are worried about their tax bill.
tools
Prepares tax-season materials — quarterly estimated tax calculation or year-end 1099 prep — and produces an accountant handoff packet. Accepts optional mode and year arguments.
tools
The front door to the Small Business plugin. Listens to what the owner needs right now — vague or specific — and routes them to the best skill or slash command for the moment. Also serves as a guide: explains what's available, suggests what to try next, and adapts recommendations based on stored business context. Trigger whenever the owner asks "what can you do," "help me with my business," "what should I focus on," "I don't know where to start," or any open-ended business request that doesn't clearly match a single skill.