| name | annual-budget-workbook |
| description | Family office: Produce an annual budget workbook for the family. Captures income sources, fixed expenses, variable expenses, savings targets, and charitable giving. |
Family Office · Annual Budget Workbook
For Claude: How to Use This Skill
Skill instructions are preloaded in context when this skill is active. Do not
perform filesystem searches or tool-driven exploration to rediscover them; use
the guidance below directly.
When to Use
Invoke when the advisor asks about:
- annual budget
- family budget
- create budget
- budget workbook
Customer Pain (VOC)
Synthesized from family-office operator interviews (see references/voc-evidence.md for full provenance). Evidence on this skill is currently thin (1 quote); treat as a directional signal, not validated demand:
- Operators reach for Sage Intacct planning module to run family budgeting — [_URp9ryeUlQ @ 45:37]
- Budgeting lives inside the GL/planning stack, not as a standalone spreadsheet — [_URp9ryeUlQ @ 45:37]
Artifact Specification
This skill produces a single named deliverable:
- Artifact:
Annual Budget Workbook
- Format at this iteration: markdown (
artifact.md) plus a structured
interview.json capturing every advisor input. PDF / DOCX / XLSX companion
renders and DMS / Snowflake push land in the execution-pipeline PR tracked
under issue #427.
The artifact is written to a skill-local path, not a global directory:
<invocation-cwd>/artifacts/family-office/annual-budget-workbook/<YYYYMMDD-HHMMSS>/
artifact.md
interview.json
manifest.json
Interview Inputs
Minimum-viable interview — the skill asks only what is needed to personalize
the deliverable. Pre-fill rules against family memory land in the execution-
pipeline PR.
budget_year — Budget year?
expected_income — Expected income (range)?
fixed_expenses — Major fixed expense categories and amounts?
variable_expenses — Major variable expense categories?
savings_target — Savings target?
charitable_giving_target — Charitable giving target?
Workflow
- Run
python scripts/agent.py --config config.json (or invoke via Claude
Code with a config blob).
- The agent validates config, runs the interview (TTY or fixture-driven),
and produces the artifact under the canonical local path.
- The agent writes
manifest.json with artifact metadata (name, version,
content hash, pillar, skill_name, created_at).
- The agent optionally writes memory entries to the knowledge skill's
memory_objects table via psycopg if config.memory_dsn is provided.
Without a DSN, memory writes are skipped cleanly.
Memory Conventions
Memories written by this skill are tagged with:
subject = the artifact name
source = "annual-budget-workbook"
memory_type ∈ {decision, assumption, commitment, open_question}
Security & Confidentiality
- Never log interview answers or artifact contents at INFO level.
- Never include SSN, EIN, account numbers, or full financial amounts in
log lines. If a WHERE-clause field carries such data, log only a sha256
hash.
- The artifact directory is local-only at this iteration. DMS push (with
confidentiality-label routing) is handled by the execution-pipeline PR.
Reference