close-month
Closes the books and turns them into a decision as a three-link chain — month-end-prep reconciles the ledger against every connected payment processor and writes the P&L narrative, cash-flow-snapshot then refreshes the 30/60/90-day forecast off the newly closed numbers rather than raw ones, and report-builder publishes and distributes the close packet. Requires a ledger (MYOB, NetSuite, QuickBooks, Xero, or Zoho Books) and uses Gusto, PayPal, Ramp, Shopify, Square, and Stripe when connected, falling back to statement or CSV uploads. Trigger on "close the month," "month-end," "close the books," "reconcile," "send the close packet to my accountant," or when the owner asks why revenue or margin moved last month. An owner who wants only the reconciliation and its flags, with no forecast refresh and no packet distribution, routes to month-end-prep directly.
- License 许可
- Apache-2.0
- 最近更新
- 2026-11-11
- Stars
- ★ 3.5w
- Forks
- 3.9k
01 前言 Front Matter
- name
- close-month
- description
- Closes the books and turns them into a decision as a three-link chain — month-end-prep reconciles the ledger against every connected payment processor and writes the P&L narrative, cash-flow-snapshot then refreshes the 30/60/90-day forecast off the newly closed numbers rather than raw ones, and report-builder publishes and distributes the close packet. Requires a ledger (MYOB, NetSuite, QuickBooks, Xero, or Zoho Books) and uses Gusto, PayPal, Ramp, Shopify, Square, and Stripe when connected, falling back to statement or CSV uploads. Trigger on "close the month," "month-end," "close the books," "reconcile," "send the close packet to my accountant," or when the owner asks why revenue or margin moved last month. An owner who wants only the reconciliation and its flags, with no forecast refresh and no packet distribution, routes to month-end-prep directly.
- allowed-tools
- Read, WebFetch
03 SKILL.md 正文
Run the month-end chain. Close, then forecast off the closed books, then publish. The ordering is the product.
Parse arguments:
--month(default: previous calendar month) —YYYY-MM--save-to(defaultfiles) —files(Drive / OneDrive),desktop, orboth
A ledger is required — MYOB, NetSuite, QuickBooks, Xero, or Zoho Books, whichever is connected; they are peers (../../shared/connector-neutrality.md). If none is reachable, stop and say so. Reconciliation without a ledger is not a close. Offer the CSV path from month-end-prep rather than producing a partial packet. If two ledgers are connected, ask which holds the books being closed and name it in the packet.
Step 1 — Close and reconcile (month-end-prep)
Run month-end-prep for the target month, start to finish.
- In: the target month.
- Out: the reconciliation table, the flagged items (uncategorized, suspicious duplicates, missing receipts), the P&L narrative, and the close packet XLSX plus one-page PDF.
- Gate:
month-end-prep's own Step 6 sign-off holds. The owner triages every flagged item — or explicitly skips it — before anything downstream runs.
This step owns the numbers. Nothing later in the chain recategorizes a transaction or restates revenue.
The hard gate before Step 2
Do not start the forecast until the owner has signed off on the close. Say plainly what is waiting:
"Books are closed for April — USD 3,200 in variances resolved, two receipts still missing. Ready to refresh your cash forecast off these closed numbers?"
If flagged items are still open, name them and ask whether to forecast anyway. A forecast built on eleven uncategorized transactions is a forecast built on a guess, and the owner deserves to know which they are getting.
Step 2 — Forecast off the closed books (cash-flow-snapshot)
Run cash-flow-snapshot using the reconciled month as its historical base.
- In: the closed-month figures from Step 1 — actual AR collection timing, actual fixed costs as coded, actual settlement lag.
- Out: the 30/60/90-day forecast with confidence bands and named risks.
- Gate: none. The forecast is read-only.
Say why this ordering matters, in the output. A forecast run on raw books inherits every miscoded expense and every unmatched settlement. Running it after the close means the payment-timing history is real and the fixed-cost floor is right. One line is enough:
"This forecast is built on April's closed books, so the collection timing and cost floor reflect reconciled numbers — not the raw register."
If the close surfaced something that moves the forecast — a duplicate vendor charge removed, a settlement finally matched — call out the delta against last month's forecast.
Step 3 — Publish and distribute (report-builder)
Run report-builder to package and deliver the close.
- In: the P&L narrative and packet from Step 1, the forecast from Step 2.
- Out: the merged close packet — chat summary first, then the workbook. Save the definition so next month's close publishes the same pack without being described again.
- Gate: saving to the owner's own drive is automatic. Sending to an accountant or anyone else is not — draft the message, show it, and wait.
Merge, do not staple. The packet reads: what the month was, what the books say, what the next 90 days look like off those books, and what is still open.
Example, Okonkwo Mechanical: "April closed at USD 84,200, up 6% on March. Margin held at 38%. Two receipts outstanding. The 30-day forecast is USD 11,400 net at the midpoint — Rosewood's USD 12,400 is the swing."
What not to do
- Do not forecast before the close is signed off. The ordering is the entire reason this is a chain.
- Do not auto-fix a flagged item. Show the gap, recommend the action, wait.
- Do not delete a suspected duplicate without explicit confirmation. Show both records side by side.
- Do not restate a number downstream. Step 1 owns the books; later steps cite them.
- Do not send the packet to an accountant without approval.
- Do not proceed without a ledger. Say what is missing, by category, and offer the CSV path.
Output
End with a one-paragraph recap: revenue and margin, gaps still open, the 30-day forecast midpoint and its top risk, and the file paths. If anything was skipped rather than resolved, list it so the owner can come back to it.
Also render the merged close as one HTML artifact using the house artifact style (../../shared/artifact-style.md) — additive to the chat recap and the packet files, never instead of them. Revenue, margin percent, and the 30-day forecast midpoint are stat tiles with their comparison as context lines; the reconciliation and flagged items are a table with tabular-nums amounts and a status pill per row (good reconciled, warn skipped, critical unresolved); the 30/60/90 forecast gets its own panel; the open-items checklist closes the page.
After the run
One line: the month is closed, forecast refreshed, packet published. Then the single most relevant next step, with at most two others nearby:
- If the forecast flagged a payroll risk: "can I make payroll" runs
/plan-payroll. - "Who owes me money?" runs
invoice-chaseon the AR the close just confirmed. - "The weekly pack, on schedule" runs
/report-packso these numbers recur.
Max three offers. Never repeat an offer the owner declined this session.
Using a tool that isn't listed
The connectors named in this skill are the tested paths, not a wall. If the owner wants this flow to use a tool that isn't connected or listed, offer build-connector — it checks the connector directory first and connects through Zapier otherwise, never hand-building against a raw API. Once the connection exists, the tool joins this skill like any other optional connector, under the same approval gates.
04 同仓库更多 Skills
ticket-deflector
Reads a forwarded customer email or ticket, pulls order and refund status from a payments connector (PayPal, Square, or Stripe) or Shopify, account history from the CRM, and open tickets from a support desk (Zoho Desk), drafts a tone-matched reply in the owner's writing voice, and can issue a refund through the payments connector with explicit owner approval. With Shopify connected it also runs a proactive order-triage mode that surfaces orders needing attention — unfulfilled past the promised window, payment problems, pending refunds, stuck shipments — and drafts the next action for each before the customer has to ask. Use when the user says "draft a response," "answer this customer," "where's my order," "I want a refund," "check my orders," or "anything about to blow up."
tax-season-organizer
Prepares tax-season materials for the owner's accountant, not tax advice. US federal tax; a non-US business gets its closed-books packet instead. Two modes: (1) quarterly estimated tax from YTD net income in the ledger (MYOB, NetSuite, QuickBooks, Xero, or Zoho Books); (2) year-end 1099 prep, scanning the ledger, PayPal, and Stripe for contractors paid over USD 600 into a 1099-NEC list with missing W-9 flags. Any tax request routes first to /tax-prep, which confirms the books are closed and reconciled before running this skill. Use this skill directly only when the owner says the period's books are already closed: "books are closed, now do the 1099s," "run the quarterly estimate off the closed numbers," or "just the contractor W-9 list."
tax-prep
Prepares tax materials as a two-link chain — month-end-prep confirms the books are closed and reconciled first, then tax-season-organizer calculates the quarterly estimated payment or builds the year-end 1099-NEC list and accountant packet from those closed numbers. Requires a ledger (MYOB, NetSuite, QuickBooks, Xero, or Zoho Books); uses Gusto, PayPal, and Stripe when connected, else CSV upload. US federal tax math; a non-US business gets the closed-books packet. Prep material for a CPA, never tax advice, nothing filed. Trigger on "quarterly taxes," "estimated tax payment," "how much should I set aside," "1099s," "1099-NEC," "W-9s," "year-end tax prep," "get my books ready for my accountant," any phrasing that suggests a tax deadline is coming, or a question about net profit or YTD income that sounds like worry about a tax bill. An owner who says the period's books are already closed routes to tax-season-organizer directly.
speed-to-lead
Makes sure no inbound lead goes unanswered. Watches web forms, the shared inbox, and the CRM for new inquiries, qualifies each one against the owner's criteria, drafts a reply in the owner's voice with real meeting times for the owner to approve and send, routes anything hot to a human right away, and logs the whole thing to the CRM. Never sends on its own. Built to run on a schedule so overnight inquiries are drafted and sorted by morning, and works from forwarded or pasted inquiries when no connector is available. Use this whenever the owner is worried about inbound leads or response time — including phrasings like "leads are going cold," "did anyone answer that inquiry," "I keep missing form submissions," "nothing falls through the cracks," "handle my inbound," "respond to this lead," or "we lose people because nobody gets back fast enough." Reach for it for a single unanswered inquiry as readily as for a standing setup.
social-content-engine
Runs the owner's content operation as a standing thing rather than a one-off: keeps a rolling posting calendar, learns the owner's voice, generates on-brand Canva graphics, writes captions that sound like them, repurposes one asset into every channel format, and stages posts for approval instead of publishing on its own. Pulls product photos and prices from Shopify when connected; with no connectors, drafts the calendar and asset briefs for manual posting. Use this whenever the owner talks about posting, content, or social — including "I need to post more," "we've gone quiet on Instagram," "what should we post this month," "make the content," "give me a month of posts," "write this in my voice," "repurpose this," or "set up our content calendar." Reach for it for a single post as readily as for a full quarter. One handoff: a finished, approved campaign brief goes to canva-creator; this skill owns the standing operation.
smb-router
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.