Install
openclaw skills install workflow-chainChain multiple pipeline scripts into a single sequential or parallel workflow. Acts as a "playlist" for PrecisionLedger pipeline scripts. Use when a task requires multiple pipelines in sequence (e.g., "full close + analysis package for Paulson") or when building reusable workflow templates for recurring multi-step client work. Reads the pipeline manifest and client SOPs to auto-detect which pipelines apply. Can run ad-hoc chains or saved templates. NOT for: single-pipeline tasks (use the specific skill), non-pipeline work (email, web search, content creation), or tasks that don't involve QBO data or pipeline scripts.
openclaw skills install workflow-chainChain multiple PrecisionLedger pipeline scripts into a single coordinated workflow. Think of it as a "playlist" for pipeline scripts — run them in sequence or parallel, with data flowing between steps.
Use this skill when:
Do NOT use for:
All available pipelines live in scripts/pipelines/ with a manifest at scripts/pipelines/manifest.json.
Current production pipelines (19 scripts, all have argparse):
| Pipeline | Script | Typical Order |
|---|---|---|
| pl-quick-compare | pl-quick-compare.py | 1 (income statement first) |
| pl-deep-analysis | pl-deep-analysis.py | 2 (after quick compare flags) |
| bs-quick-compare | bs-quick-compare.py | 3 (balance sheet) |
| bs-deep-analysis | bs-deep-analysis.py | 4 (after BS flags) |
| scf-quick-compare | scf-quick-compare.py | 5 (cash flow) |
| scf-deep-analysis | scf-deep-analysis.py | 6 (after SCF flags) |
| financial-ratios | financial-ratios.py | 7 (cross-statement ratios) |
| bank-reconciliation | bank-reconciliation.py | parallel with above |
| payroll-reconciliation | payroll-reconciliation.py | parallel with above |
| ar-collections | ar-collections.py | parallel (if client has AR) |
| budget-builder | budget-builder.py | ad-hoc |
| cash-flow-forecast | cash-flow-forecast.py | after close |
| client-dashboard | client-dashboard.py | final (needs all data) |
| doc-ingestion | doc-ingestion.py | pre-close |
| document-ingestion | document-ingestion.py | pre-close |
| financial-package | financial-package.py | standalone TTM package |
| month-end-close | month-end-close.py | orchestrates close checklist |
| tax-package-prep | tax-package-prep.py | year-end only |
| vendor-compliance-1099 | vendor-compliance-1099.py | year-end only |
--slug <client-slug> QBO company identifier (required)
--start YYYY-MM-DD Period start
--end YYYY-MM-DD Period end
--out <directory> Output directory (default: ~/Desktop)
--sandbox Use QBO sandbox
Parse the user's request to determine:
clients/*/sop.mdRead the client's SOP to determine which pipelines apply:
Pipelines have natural dependencies:
Layer 0 (Pre-Close — parallel):
doc-ingestion
bank-reconciliation
payroll-reconciliation
Layer 1 (Close):
month-end-close (reads outputs from Layer 0)
Layer 2 (Analysis — parallel):
pl-quick-compare
bs-quick-compare
scf-quick-compare
Layer 3 (Deep Analysis — parallel, depends on Layer 2 flags):
pl-deep-analysis (only if PL flags > 0)
bs-deep-analysis (only if BS flags > 0)
scf-deep-analysis (only if SCF flags > 0)
Layer 4 (Cross-Statement):
financial-ratios
cash-flow-forecast
Layer 5 (Delivery):
client-dashboard
financial-package
For each layer:
After all layers complete, produce a summary:
Layers: 0 → 1 → 2 → 3 → 4 → 5
Pipelines: bank-rec → close → PL/BS/SCF quick → deep (if flagged) → ratios → dashboard
Trigger: "full close for [client]", "complete close [month]"
Layers: 2 → 4 → 5
Pipelines: PL/BS/SCF quick compare → ratios → dashboard
Trigger: "quick analysis for [client]", "variance package [month]"
Layers: 0 → 1 → 2 → tax-specific
Pipelines: bank-rec → close → PL → tax-package-prep → vendor-1099
Trigger: "tax package for [client]", "year-end prep [year]"
Layers: quick → deep
Pipelines: [statement]-quick-compare → [statement]-deep-analysis
Trigger: "deep dive P&L", "analyze balance sheet in detail"
Layers: single
Pipelines: financial-package.py (self-contained TTM generator)
Trigger: "financial package", "TTM statements"
# Common pattern for all pipelines
SCRIPTS=~/.openclaw/workspace/scripts/pipelines
SLUG="my-client"
MONTH_START="2026-03-01"
MONTH_END="2026-03-31"
OUT=~/Desktop/close-$SLUG-$(date +%Y%m)
# Layer 0 (parallel)
python3 $SCRIPTS/bank-reconciliation.py --slug $SLUG --start $MONTH_START --end $MONTH_END --out $OUT &
python3 $SCRIPTS/payroll-reconciliation.py --slug $SLUG --start $MONTH_START --end $MONTH_END --out $OUT &
wait
# Layer 1
python3 $SCRIPTS/month-end-close.py --slug $SLUG --month ${MONTH_START:0:7} --out $OUT
# Layer 2 (parallel)
python3 $SCRIPTS/pl-quick-compare.py --slug $SLUG --start $MONTH_START --end $MONTH_END --out $OUT &
python3 $SCRIPTS/bs-quick-compare.py --slug $SLUG --start $MONTH_START --end $MONTH_END --out $OUT &
python3 $SCRIPTS/scf-quick-compare.py --slug $SLUG --start $MONTH_START --end $MONTH_END --out $OUT &
wait
# Layer 3 (conditional)
# Only run deep analysis if quick compare flagged material items
python3 $SCRIPTS/pl-deep-analysis.py --slug $SLUG --start $MONTH_START --end $MONTH_END --out $OUT
python3 $SCRIPTS/bs-deep-analysis.py --slug $SLUG --start $MONTH_START --end $MONTH_END --out $OUT
python3 $SCRIPTS/scf-deep-analysis.py --slug $SLUG --start $MONTH_START --end $MONTH_END --out $OUT
# Layer 4
python3 $SCRIPTS/financial-ratios.py --slug $SLUG --start $MONTH_START --end $MONTH_END --out $OUT
python3 $SCRIPTS/cash-flow-forecast.py --slug $SLUG --out $OUT
# Layer 5
python3 $SCRIPTS/client-dashboard.py --slug $SLUG --start $MONTH_START --end $MONTH_END --out $OUT
Before running any chain, read clients/{slug}/sop.md to check:
The SOP is the authority. If the SOP says "no AR aging" (like SB Paulson — POS collection), skip ar-collections even in a full close chain.
node integrations/qbo-client/bin/qbo connect <slug> to refresh. Auto-detected by 401 response.All chain outputs go to a single directory:
~/Desktop/close-{slug}-{YYYYMM}/
├── PLCompare_{slug}_*.xlsx
├── BSCompare_{slug}_*.xlsx
├── SCFCompare_{slug}_*.xlsx
├── PLDeep_{slug}_*.xlsx
├── BSDeep_{slug}_*.xlsx
├── SCFDeep_{slug}_*.xlsx
├── FinancialRatios_{slug}_*.xlsx
├── BankRec_{slug}_*.xlsx
├── PayrollRec_{slug}_*.xlsx
├── ClientDashboard_{slug}_*.xlsx
├── CashFlow_{slug}_*.xlsx
├── chain-summary.json ← workflow metadata
└── chain-log.txt ← execution log