Finance update pack
@ledgerly/finance-update-pack
Write the monthly finance update for leadership or investors from a few inputs: revenue, costs, cash, and plan. A script computes plan vs actual, flags the variances that matter, and works out burn and runway; Claude drafts the narrative and asks you for the why behind each big variance.
- Activity
- New: be the first to try it
- Installs
- 0 installs
- Likes
- 0 likes
- Clones
- 0 clones
- 1{
- 2 "name": "finance-update-pack",
- 3 "owner": "ledgerly",
- 4 "version": "1.0.0",
- 5 "type": "skill",
- 6 "description": "Write the monthly finance update for leadership or investors from a few inputs: revenue, costs, cash, and plan. A script computes plan vs actual, flags the variances that matter, and works out burn and runway; Claude drafts the narrative and asks you for the why behind each big variance.",
- 7 "category": "finance",
- 8 "license": "MIT",
- 9 "compat": ["claude-code"],
- 10 "permissions": {
- 11 "shell": ["node scripts/variance.mjs"],
- 12 "files": { "read": ["./data/**"], "write": ["./out/finance-update*"] }
- 13 },
- 14 "tests": {
- 15 "cases": [
- 16 {
- 17 "name": "computes plan vs actual, burn, runway, and flags from the example month",
- 18 "inputs": {},
- 19 "checks": [
- 20 { "type": "command_exits_zero", "command": "node scripts/variance.mjs examples/finance-2026-10.csv --month 2026-10 --out out/finance-update" },
- 21 { "type": "file_contains", "path": "out/finance-update-variance.md", "text": "| Net burn | $52,000 | $66,800 | $14,800 | $54,900 |" },
- 22 {
- 23 "type": "output_matches_schema",
- 24 "path": "out/finance-update-variance.json",
- 25 "schema": {
- 26 "type": "object",
- 27 "required": ["actual", "plan", "runway_months", "flagged"],
- 28 "properties": {
- 29 "actual": { "type": "object", "properties": { "revenue": { "const": 277900 }, "net_burn": { "const": 66800 }, "gross_margin": { "const": 0.7855 } } },
- 30 "runway_months": { "const": 47.2 },
- 31 "flagged": { "const": ["Logo churn", "Services revenue", "Sales and marketing programs", "New customers", "Hosting and model costs"] }
- 32 }
- 33 }
- 34 }
- 35 ]
- 36 },
- 37 {
- 38 "name": "treats lower-is-better lines and thresholds correctly",
- 39 "inputs": {
- 40 "data/m.csv": "line,type,plan,actual\nRevenue,revenue,100000,100000\nTools,opex,10000,8000\nAds,opex,20000,30000\nCash,cash,,500000\n"
- 41 },
- 42 "checks": [
- 43 { "type": "command_exits_zero", "command": "node scripts/variance.mjs data/m.csv --out out/finance-update --threshold-pct 10 --threshold-abs 5000" },
- 44 {
- 45 "type": "output_matches_schema",
- 46 "path": "out/finance-update-variance.json",
- 47 "schema": {
- 48 "type": "object",
- 49 "properties": {
- 50 "flagged": { "const": ["Ads"] },
- 51 "runway_months": { "const": null },
- 52 "lines": {
- 53 "type": "array",
- 54 "items": { "type": "object" },
- 55 "minItems": 3,
- 56 "maxItems": 3
- 57 }
- 58 }
- 59 }
- 60 }
- 61 ]
- 62 }
- 63 ]
- 64 }
- 65}
