Skip to main content

build-my-chart-of-accounts

Draft a startup-optimized chart of accounts shaped for your entity, accounting method, and revenue model — with R&D / Sales & Marketing / General & Admin operating expenses breakouts, deferred revenue and accrued PTO lines, SAFE-note and convertible equity lines, and one cash sub-line per registered bank account. Supports in-place revisions that preserve every unchanged code so historical categorizations don't silently reroute. I never push the chart of accounts to QuickBooks or Xero — you or your accountant mirror it in.

설치로 이동

소스 정보

저장소
gethouston/houston
최근 소스 활동
2026년 9월 16일 16:49
감지된 SKILL.md 언어
영어
스타
112
포크
66

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
build-my-chart-of-accounts
description
Draft a startup-optimized chart of accounts shaped for your entity, accounting method, and revenue model — with R&D / Sales & Marketing / General & Admin operating expenses breakouts, deferred revenue and accrued PTO lines, SAFE-note and convertible equity lines, and one cash sub-line per registered bank account. Supports in-place revisions that preserve every unchanged code so historical categorizations don't silently reroute. I never push the chart of accounts to QuickBooks or Xero — you or your accountant mirror it in.
version
1
category
Bookkeeping
featured
no
image
ledger
integrations
["hubspot","stripe","quickbooks","xero","notion","slack"]
x_houston
{"created_by":"houston","skill_schema":1}
# Build My Chart of Accounts The chart of accounts is the shape of every financial statement I produce. I draft yours opinionated for early-stage startups: R&D visibility for the credit, Sales & Marketing / General & Admin split for gross-margin framing, accrual-ready liability lines even if you're on cash, and one cash sub-line per registered bank account so reconciliations map cleanly. Revisions land here only and preserve every unchanged code. I never push the chart of accounts to QuickBooks or Xero. You or your accountant mirror it into the accounting system. ## When to use - "draft our chart of accounts" / "we need one" / "we don't have one yet". - "revise the chart of accounts to break out R&D" / "add a deferred-revenue line" / "split hosting out of cost of goods sold". - Called implicitly by `import-my-prior-books` when prior export includes a chart of accounts and ours is missing. - Called implicitly by `process-my-statements` Step 1 if chart of accounts absent - but only after confirming inline. ## Connections I need I run external work through Composio. Before this skill runs I check that the categories below are linked. Missing → I name the category, ask you to connect it from the Integrations tab, stop. - **QuickBooks Online or Xero** (accounting) — optional, lets me read your existing chart of accounts from your accounting system as a starting point. - **Stripe** (billing) — optional, helps me confirm how revenue and processor fees flow if you bill through Stripe. This skill works fully offline against what you tell me. No connection blocks the run; connections just make the first draft more accurate. ## Information I need I read your bookkeeping context first. For every required field that's missing I ask ONE plain-language question (best modality: connected app > file drop > URL > paste) and wait. - **Your entity type** — Required. Why: drives the equity section (C-corp gets common / preferred / APIC; LLC gets member capital). If missing I ask: "What's the entity type, C-corp, S-corp, LLC, or something else?" - **Cash vs. accrual accounting** — Required. Why: shapes whether I include deferred revenue and accrued PTO lines by default. If missing I ask: "Are we keeping the books on cash or on accrual?" - **Your bank accounts and cards** — Required. Why: I make one cash sub-line per bank account so reconciliations map cleanly. If missing I ask: "What bank accounts and credit cards does the business use? Connecting QuickBooks or your bank feed is the easiest way." - **Your revenue model** — Required. Why: SaaS subscription, usage, services, or mix changes which revenue lines I include. If missing I ask: "How does the business make money, recurring subscriptions, usage-based, services, or a mix?" - **Your stock-comp posture** — Optional. Why: ISO / NSO / RSU triggers a stock-based compensation expense line and APIC-SBC equity line. If missing I ask: "Do you grant equity to employees yet? If you don't have it I keep going without stock-comp lines and we add them later." ## Steps <!-- houston-workflow:v1 --> 1. **Read config.** Load `config/context-ledger.json`. Required fields for good first-pass chart of accounts: - `universal.company.entityType` (drives equity section - c-corp gets common + preferred + APIC; LLC gets member capital). - `universal.accountingMethod` (cash-only can omit deferred-rev, accrued-PTO lines on request - default include so switch to accrual frictionless). - `domains.banks.accounts[]` (one Cash sub-line per bank account, named with last4 so reconciliations map 1:1). - `domains.revenue.model` (usage model gets Usage Revenue sub-line; services gets Services Revenue separate from recurring). - `domains.payroll.stockCompPosture` (non-"none" posture gets stock-based compensation expense + APIC-SBC equity lines). Any missing required field: ask ONE targeted question (modality hint: connected app > file > URL > paste), write atomically, continue. 2. **Read existing chart of accounts if present.** If `config/chart-of-accounts.json` exists, load it. This run = revision, not rewrite. **Preserve every code unchanged.** Propose diffs (adds / renames / reparents) and confirm with user before writing. Never reassign code from one name to different concept - silently reroutes every historical transaction that matched old code. 3. **Assemble startup-optimized chart of accounts.** Use structure below. Codes are strings; keep numeric ordering within each type so reports sort naturally. **Assets (10000-19999)** - Cash - one sub-line per bank account from `domains.banks.accounts[]`, named `Cash - {bank} {last4}`. Account code format: `1{nnnn}`. Add `Cash - Stripe` line if Stripe connected as payment processor. - Accounts receivable. - Prepaid Rent, Prepaid SaaS, Prepaid Insurance (separate lines - amortize on different schedules). - Fixed Assets (plus paired Accumulated Depreciation - negative asset, shown as contra line). **Liabilities (20000-29999)** - Accounts payable. - Accrued Payroll, Accrued PTO (separate from payroll - PTO hits expense line over time, not at cutover). - Accrued Expenses (generic). - Deferred Revenue - short-term (<12mo) + long-term (>12mo) as separate lines for balance sheet split. - SAFE Notes, Convertible Notes (separate lines - different accounting posture on conversion). - Income Tax Payable. **Equity (30000-39999)** - C-corp: Common Stock, Preferred Stock, APIC, APIC-SBC (if stock-comp posture ≠ none), Retained Earnings. - LLC: Member Capital, Member Draws, Retained Earnings. - S-corp: Common Stock, APIC, Distributions, Retained Earnings. **Revenue (40000-49999)** - Recurring Revenue (subscription monthly revenue / annual revenue). - One-Time Revenue. - Usage Revenue (only if `revenue.model ∈ {usage, mix}`). - Services Revenue (only if `revenue.model ∈ {services, mix}`). - Contra-revenue: Refunds & Credits (negative). **Cost of goods sold (50000-59999)** - Hosting / Infrastructure (AWS, GCP, Vercel). - Third-Party API Fees (usage-billed APIs part of cost of goods sold, not R&D tools). - Payment Processing (Stripe, card fees). - Customer Support (if team size ≥ 10 and support function exists). **Operating expenses (60000-79999)** - opinionated breakout makes chart of accounts startup-useful. Statement section prefixes keep P&L grouped: - **R&D** (60000-64999) - R&D Wages, R&D Contractors, R&D Software, R&D Cloud (dev/staging, separate from cost of goods sold hosting), R&D Other. `statementSection: "operating-expenses.rd"`. - **Sales & Marketing** (65000-69999) - Sales & Marketing Wages, Advertising, Events & Sponsorships, Sales & Marketing Tools (HubSpot, Apollo, etc.), Sales & Marketing Other. `statementSection: "operating-expenses.sm"`. - **General & Admin** (70000-79999) - General & Admin Wages, Legal, Accounting, Rent, Insurance, General & Admin SaaS (Slack, Notion, 1Password, etc.), Office Supplies, Travel & Meals, General & Admin Other. `statementSection: "operating-expenses.ga"`. **Other (80000-89999)** - below-the-line. - Interest Income, Interest Expense. - FX Gain / Loss. - Gain / Loss on Disposal of Fixed Assets. **Suspense (99999)** - `statementSection: "operating-expenses.ga"` so visible on P&L. Matches ledger's `universal.suspenseCode`. 4. **Schema.** Every row: ```ts { code: string; // ALWAYS a string, never a number name: string; type: "asset" | "liability" | "equity" | "revenue" | "cogs" | "expense"; parent?: string; // code of the parent row for grouped display statementSection: string; // e.g. "operating-expenses.rd", "assets.current" description?: string; // one-line disambiguation for categorizers } ``` 5. **Validate before writing.** - Every `code` is string and unique across whole chart of accounts. - Codes sort numerically within each `type` (no 60500 between 65000 and 65500 - keep ranges clean). - Every `type` has at least one row (no empty sections). - Every `parent` (if set) resolves to row in chart of accounts. - Every `statementSection` one of allowed sections: `assets.current`, `assets.noncurrent`, `liabilities.current`, `liabilities.noncurrent`, `equity`, `revenue`, `contra-revenue`, `cogs`, `operating-expenses.rd`, `operating-expenses.sm`, `operating-expenses.ga`, `other`. 6. **Write atomically.** Write `config/chart-of-accounts.json.tmp`, then rename. Update `config/context-ledger.json → universal.coa` with `{present: true, path: "config/chart-of-accounts.json", framework, lastUpdatedAt}` (read-merge-write). 7. **Revision safeguard.** If revision: - Compare against prior chart of accounts. For any **removed** code, check `config/prior-categorizations.json` and warn if any vendor still maps to that code - user must remap vendors or keep code. - For any **renamed** code (same code, different name), update `name` in place - categorizations keyed on `code` safe. - For any **newly added** code, log in user-facing summary so founder knows it exists for next run. 8. **DO NOT append to `outputs.json`.** Chart of accounts is config, not deliverable. 9. **Summarize to user.** Counts per type, any adds / renames / warnings, next move ("drop statements into `statements/_inbox/` and I'll categorize against this chart of accounts"). ## Outputs - `config/chart-of-accounts.json` - authoritative chart of accounts, schema per Step 4. - `config/context-ledger.json` - `universal.coa` refreshed (read-merge-write). No entry in `outputs.json`.
GitHub에서 보기