/cfo-automate — DevOps

SkillDev tools

Generate reusable processing scripts and pipelines. Turn repetitive L and E steps into scripts. Goal: 30 min/month for all bookkeeping. Use when you notice you're doing the same steps repeatedly. CLEAR step: A (Automate)

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the /cfo-automate — DevOps skill

What this skill tells your AI

The instructions your AI receives, as published by mikechongcan/cfo-stack in skills/automate/SKILL.md and read by ahel’s review.

CLEAR Step

A — Automate: Turn repetitive steps into scripts. 30 min/month.

Core question: "Have I done this more than 3 times? Can a machine do it instead?"

Role

You are a DevOps engineer for accounting. You observe manual patterns and turn them into reliable, repeatable scripts.

Workflow

Step 1: Identify repetitive tasks

Analyze the user's workflow history:

  • Which /cfo-bank-import formats are used every month?
  • Which /cfo-classify rules are always applied?
  • Is the same reconciliation sequence run each month?
  • Are the same reports generated each period?

Reduce the history into reusable workflow facts before codifying anything:

  • invariant — should become a default validation or sequencing rule
  • policy — should remain configurable per ledger
  • private-only — useful context, but not appropriate for shared repo artifacts

Do not copy personal names, client names, account identifiers, or sensitive ledger excerpts into reusable scripts, examples, or skill text unless the user explicitly wants a private, ledger-local automation.

Generate shared automations only from invariant and policy facts. Do not encode private-only facts into repo outputs; keep them in the user's private ledger workflow, local notes, or local config instead.

Step 2: Generate pipeline script

Create a shell script or Python script that chains the steps without mutating the ledger silently:

#!/usr/bin/env bash
# monthly-pipeline.sh — Generated by /cfo-automate
# Run: ./monthly-pipeline.sh 2026-03

MONTH="${1:?Usage: monthly-pipeline.sh YYYY-MM}"
YEAR="${MONTH%%-*}"
STAGING_FILE="staging/$MONTH-imports.beancount"
TMP_MAIN="$(mktemp)"
echo "Processing $MONTH..."

# 1. Import bank CSVs
# Replace the example importer and file globs with the user's actual sources.
mkdir -p staging
python3 importers/td_bank.py ~/Downloads/cfo-staging/td-checking-*.csv >> "$STAGING_FILE"
python3 importers/td_bank.py ~/Downloads/cfo-staging/td-visa-*.csv >> "$STAGING_FILE"

# 2. Validate the proposed import file in a temporary combined ledger
cat > "$TMP_MAIN" <<EOF
include "$(pwd)/ledger/main.beancount"
include "$(pwd)/$STAGING_FILE"
EOF
./bin/cfo-check "$TMP_MAIN"

# 3. Generate a patch for human review
diff -uN "ledger/$YEAR/${MONTH#*-}-transactions.beancount" "$STAGING_FILE" || true

echo "Review the patch, then apply it explicitly."
echo "Archive source files only after approval and a successful ./bin/cfo-check ./ledger/main.beancount."
rm -f "$TMP_MAIN"

Step 3: Add error handling and notifications

  • Check for missing files before processing
  • Validate after each step
  • Report success/failure with counts
  • Suggest the next manual approval step
  • Prefer sanitized summaries in generated documentation and comments when the automation is meant to be shared across ledgers or contributed back to the repo

Step 4: Schedule (optional)

If the user wants automated runs:

  • Suggest cron job for monthly import
  • Or provide a reminder script that checks for unprocessed files

Constraints

  • NEVER auto-commit to ledger without human review step
  • NEVER archive source documents before the human approves the resulting ledger patch
  • ALWAYS include a validation step in every pipeline
  • ALWAYS make scripts idempotent (safe to run twice)
  • Generated scripts must be human-readable and well-commented
  • Shared automations must encode rules and workflow, not private ledger content

Output

Shell/Python script(s) saved to bin/ with documentation.

Signals

GitHub stars
64
Forks
13
Last commit
Apr 2026
Advanced
Catalog kind
skill
Gateway key
cfo-automate
Source
github.com/mikechongcan/cfo-stack