Source profileQuality 88/100

gethouston/houston/store/agents/bookkeeping/.agents/skills/import-my-prior-books/SKILL.md

import-my-prior-books

Backfill memory from your prior system: a QuickBooks Online or Xero export, a CSV, or a spreadsheet from your prior accountant. I seed your chart of accounts (only if you don't have one), build an opening trial balance from the prior period's closing balances, and learn vendor-to-account-code rules from transaction history with an 80%-confidence majority threshold so noisy parties don't poison future categorization. Strictly one-way read — I never push back to QuickBooks Online or Xero, never re

Source repository stars
91
Declared platforms
0
Static risk flags
0
Last source update
2026-08-04
Source checked
2026-08-04

Decision brief

What it does—and where it fits

Pulls your prior year's bookkeeping into memory so this year doesn't start cold. I read a QuickBooks Online export, a Xero export, or a generic CSV / xlsx; seed your chart of accounts if you don't have one; build the opening trial balance from prior closing balances; and learn v…

Best for

  • "load the prior year's books" / "import from QuickBooks" / "backfill from this spreadsheet" / "pull in our Xero history".
  • "seed vendor memory from last year's transaction list".
  • Called implicitly by set-up-my-books mode=opening-balances when you drop a full prior-period export instead of a trial balance-only file.

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/gethouston/houston --skill "store/agents/bookkeeping/.agents/skills/import-my-prior-books"
Safe inspection promptEditorial

Inspect the Agent Skill "import-my-prior-books" from https://github.com/gethouston/houston/blob/10d9551da3a639803421a9004117f9e5633ce3a1/store/agents/bookkeeping/.agents/skills/import-my-prior-books/SKILL.md at commit 10d9551da3a639803421a9004117f9e5633ce3a1. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    When to use

    "load the prior year's books" / "import from QuickBooks" / "backfill from this spreadsheet" / "pull in our Xero history".

    "load the prior year's books" / "import from QuickBooks" / "backfill from this spreadsheet" / "pull in our Xero history"."seed vendor memory from last year's transaction list".Called implicitly by set-up-my-books mode=opening-balances when you drop a full prior-period export instead of a trial balance-only file.
  2. 02

    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, only used if you want me to pull the general ledger or Transaction List directly instead of dropping a file. File drop is the preferred path.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, only used if you want me to pull the general ledger or Transaction List directly instead of dropping a file. File drop is the preferred path.
  3. 03

    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 fiscal year end — Required. Why: defines the boundary between prior closing balances and our opening balances. If missing I ask: "What's the company's fiscal year end, e.g. December 31 or some other date?"Cash vs. accrual accounting — Required. Why: changes how I interpret balances on accrued and deferred lines. If missing I ask: "Are we keeping the books on cash or on accrual?"The prior-period transaction history — Required. Why: I can't seed vendor memory or opening balances without it. If missing I ask: "Can you export the prior year's general ledger or Transaction List from QuickBooks Onli…
  4. 04

    Steps

    1. Read config. Load config/context-ledger.json - required: universal.company.fiscalYearEnd (determines import period boundary), universal.accountingMethod (cash vs. accrual affects opening balance interpretation). If missing, ask ONE targeted question (modality hint: connected…

    Read config. Load config/context-ledger.json - required: universal.company.fiscalYearEnd (determines import period boundary), universal.accountingMethod (cash vs. accrual affects opening balance interpretation). If miss…Identify source format. User drops one of:QuickBooks Online General Ledger export - xlsx/csv, columns roughly {Date, Transaction Type, Num, Name, Memo/Description, Account, Split, Amount, Balance}.
  5. 05

    Outputs

    No entry in outputs.json.

    config/chart-of-accounts.json - only if we didn't have one.config/opening-trial-balance.json - prior period closing trial balance, now opening trial balance of our books.config/prior-categorizations.json - seeded vendor memory (read-merge-write).

Permission review

Static risk signals and limitations

No configured static risk pattern was detected

This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score88/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars91SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
gethouston/houston
Skill path
store/agents/bookkeeping/.agents/skills/import-my-prior-books/SKILL.md
Commit
10d9551da3a639803421a9004117f9e5633ce3a1
License
MIT
Collected
2026-08-04
Default branch
main
View the original SKILL.md

Import My Prior Books

Pulls your prior year's bookkeeping into memory so this year doesn't start cold. I read a QuickBooks Online export, a Xero export, or a generic CSV / xlsx; seed your chart of accounts if you don't have one; build the opening trial balance from prior closing balances; and learn vendor-to-account-code rules from transaction history. Every downstream skill — process-my-statements, categorize-my-transactions, close-my-month — starts with vendor knowledge already loaded.

Read-only: I never connect back to push, never rewrite your prior books. I learn from them.

When to use

  • "load the prior year's books" / "import from QuickBooks" / "backfill from this spreadsheet" / "pull in our Xero history".
  • "seed vendor memory from last year's transaction list".
  • Called implicitly by set-up-my-books mode=opening-balances when you drop a full prior-period export instead of a trial balance-only file.

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, only used if you want me to pull the general ledger or Transaction List directly instead of dropping a file. File drop is the preferred path.

This skill works fully from a dropped file (xlsx or CSV export). No connection blocks the run.

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 fiscal year end — Required. Why: defines the boundary between prior closing balances and our opening balances. If missing I ask: "What's the company's fiscal year end, e.g. December 31 or some other date?"
  • Cash vs. accrual accounting — Required. Why: changes how I interpret balances on accrued and deferred lines. If missing I ask: "Are we keeping the books on cash or on accrual?"
  • The prior-period transaction history — Required. Why: I can't seed vendor memory or opening balances without it. If missing I ask: "Can you export the prior year's general ledger or Transaction List from QuickBooks Online or Xero, or share the prior accountant's spreadsheet? Drop it as xlsx or CSV."
  • Confirmation on which closing balances to use as opening — Optional. Why: if your import covers multiple periods I need to know which period-end becomes our opening trial balance. If you don't have a specific cut-off in mind I default to your fiscal year end and confirm before writing.

Steps

  1. Read config. Load config/context-ledger.json - required: universal.company.fiscalYearEnd (determines import period boundary), universal.accountingMethod (cash vs. accrual affects opening balance interpretation). If missing, ask ONE targeted question (modality hint: connected app > file > URL > paste) and continue.

  2. Identify source format. User drops one of:

    • QuickBooks Online General Ledger export - xlsx/csv, columns roughly {Date, Transaction Type, Num, Name, Memo/Description, Account, Split, Amount, Balance}.
    • QuickBooks Online Transaction List - xlsx/csv with {Date, Transaction Type, Num, Posting, Name, Memo/Description, Account, Split, Amount}.
    • Xero export (General Ledger Detail or Account Transactions) - csv with {Date, Source, Description, Reference, Debit, Credit, Running Balance, Account Code, Account Name}.
    • Generic CSV / xlsx - user must specify column map, or ask: {date, party|vendor, amount|debit+credit, gl_code, gl_name, memo?}.

    Detect format by column headers. If ambiguous, confirm inline with one question. For xlsx use openpyxl; for CSV use stdlib csv module.

  3. Discover Composio connection only if needed. If user asks pull direct from QuickBooks Online / Xero instead of file drop, discover slug at runtime:

    composio search accounting
    

    Never hardcode tool names. If no connection exists, print link command and stop - no invent data. File drop always preferred path; connected-app pull is option, not default.

  4. Parse into normalized row stream. Every source row lands as:

    {
      date: string;          // YYYY-MM-DD
      party: string;         // raw vendor/customer name from the source
      amount: number;        // signed: money out of the business = negative
      glCode: string;        // text, validated later against chart of accounts
      glName: string;
      memo?: string;
      docType?: string;      // "Bill", "Check", "Invoice", etc.
    }
    

    QuickBooks Online debits/credits: Amount column already signed in General Ledger export. In Transaction List, Amount reflects account's natural balance - check Account column to normalize to agent-wide sign convention (money out of business = negative).

    Xero: compute amount = debit - credit, then apply same sign convention per account type (asset/expense debits = positive = money out ⇒ flip to negative; revenue/liability credits = money in ⇒ leave positive).

  5. Seed chart of accounts (only if ours missing). If config/chart-of-accounts.json does NOT exist AND export includes a chart of accounts (QuickBooks Online and Xero exports both do - unique set of {gl_code, gl_name, account_type} tuples), build initial chart of accounts from export. Normalize:

    • Coerce every code to string.
    • Map source's account-type vocabulary to our enum: Bank / Accounts Receivable / Other Current Asset / Fixed Assetasset; Accounts Payable / Credit Card / Other Current Liability / Long Term Liabilityliability; Equityequity; Income / Other Incomerevenue; Cost of Goods Soldcogs; Expense / Other Expenseexpense.
    • Assign statementSection per build-my-chart-of-accounts Step 5 validation rules - default operating expense lines to operating-expenses.ga and flag in summary so user can reclassify to .rd / .sm.
    • Write via build-my-chart-of-accounts schema and validators. Do NOT overwrite existing chart of accounts - if exists, leave alone and report any new codes in export as candidates for follow-up revision.
  6. Build opening trial balance. From prior period's CLOSING balances (last row per account code in General Ledger export, or Running Balance column at period end in Xero):

    • Group by glCode; take final balance.
    • Positive balances for asset + expense + cogs types go to debit; negative go to credit. Positive for liability + equity + revenue types go to credit; negative to debit.
    • Sum debits and credits across whole trial balance. If not balanced within 1 cent, surface diff and stop - no plug.
    • Write config/opening-trial-balance.json atomically as [{glCode, debit, credit}].
    • Update config/context-ledger.json → universal.openingBalances with {asOf, source: "qbo-import" | "xero-import" | "prior-books", trialBalancePath: "config/opening-trial-balance.json", capturedAt} (read-merge-write).
  7. Seed prior categorizations. From transaction history:

    • Canonicalize each party using same rules as process-my-statements Stage 4 (strip noise prefixes, trailing reference numbers, city/state suffixes; Title Case).
    • Group transactions by canonical_party. For each party, count occurrences per glCode.
    • Take majority glCode ONLY if accounts for ≥ 80% of party's transactions AND party has ≥ 3 transactions. Otherwise skip (ambiguous parties poison next run - same rule as Step 7 in process-my-statements).
    • Validate winning glCode against chart of accounts. Drop any not resolving.
    • Write config/prior-categorizations.json atomically as {canonical_party: gl_code}. If file exists, read-merge-write - preserve existing entries unless import majority disagrees with confidence ≥ 0.95, in which case log conflict and keep existing entry (agent been learning from real runs; import is historical).
  8. Mark period as imported in run-index.json. Read existing run-index.json (create empty array if absent), append:

    {
      "id": "{uuid4}",
      "period": "2023",
      "periodStart": "2023-01-01",
      "periodEnd": "2023-12-31",
      "status": "imported",
      "source": "qbo-import" | "xero-import" | "csv-import",
      "accountsIncluded": ["..."],
      "transactionCount": 0,
      "createdAt": "{now}",
      "updatedAt": "{now}"
    }
    

    Write atomically (read-merge-write - never overwrite).

  9. DO NOT write detailed transactions. This skill no produce runs/{period}/run.json - imported period not run we own, it's prior system's ledger. If user want reviewed workbook for imported period, drop statements into statements/_inbox/ and invoke process-my-statements, which benefit from seeded prior-categorizations.

  10. DO NOT append to outputs.json. Chart of accounts, opening trial balance, prior-categorizations all config. run-index.json row is single index entry, there.

  11. Summarize to user. Counts: transactions parsed, unique parties canonicalized, prior-categorizations seeded (with ≥ 80% / ≥ 3-txn threshold explained), chart of accounts rows adopted (or skipped because ours exists), opening trial balance balance-check result. Flag ambiguous parties that missed threshold - founder can promote manually via categorize-my-transactions mode=rule-add. Next move: "process this year's statements and categorization will hit most rows from prior memory".

Outputs

  • config/chart-of-accounts.json - only if we didn't have one.
  • config/opening-trial-balance.json - prior period closing trial balance, now opening trial balance of our books.
  • config/prior-categorizations.json - seeded vendor memory (read-merge-write).
  • config/context-ledger.json - universal.openingBalances refreshed (read-merge-write).
  • run-index.json - one new row with status: "imported" (read-merge-write).

No entry in outputs.json.

Alternatives

Compare before choosing

Computed 100165

JasonColapietro/suede-creator-skills

suede-ab-testing

Suede-owned experimentation discipline for hypotheses, sample sizing, test duration, significance, and repeatable experiment programs. Use when comparing variants, deciding whether a result is reliable, or building an experiment backlog and cadence. NOT FOR: analytics instrumentation (use suede-analytics), post-click conversion diagnosis (use suede-site-alchemy), or writing the variant copy itself (use suede-copy).

Computed 1007

narrative-io/narrative-skills-marketplace

design-analysis

Translate a fuzzy analytical question into a rigorous investigation plan. Interrogates the ask, grounds the plan in the available data dictionary, applies analytical best practices, and produces a structured brief of query specifications for a downstream query-writing skill. Plans, does not write SQL. Use when: "why did X drop", "is there a relationship between A and B", "who are our highest-value customers", "what's driving the change in Y", "investigate this trend", "design an analysis for", "

Computed 9832,606

K-Dense-AI/scientific-agent-skills

dask

Distributed computing for larger-than-RAM pandas/NumPy workflows. Use when you need to scale existing pandas/NumPy code beyond memory or across clusters. Best for parallel file processing, distributed ML, integration with existing pandas code. For out-of-core analytics on single machine use vaex; for in-memory speed use polars.

Computed 9632,606

K-Dense-AI/scientific-agent-skills

scanpy

Standard single-cell RNA-seq analysis pipeline. Use for QC, normalization, dimensionality reduction (PCA/UMAP/t-SNE), clustering, differential expression, visualization, and converting R-friendly single-cell formats such as Seurat or SingleCellExperiment RDS files into h5ad for Scanpy. Best for exploratory scRNA-seq analysis with established workflows. For deep learning models use scvi-tools; for data format questions use anndata.