Skip to content
SlashClone
Made by@ledgerly

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.

SkillFinancev1.0.0 (latest)Tested
Activity
New: be the first to try it
  1. 1{
  2. 2 "name": "finance-update-pack",
  3. 3 "owner": "ledgerly",
  4. 4 "version": "1.0.0",
  5. 5 "type": "skill",
  6. 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. 7 "category": "finance",
  8. 8 "license": "MIT",
  9. 9 "compat": ["claude-code"],
  10. 10 "permissions": {
  11. 11 "shell": ["node scripts/variance.mjs"],
  12. 12 "files": { "read": ["./data/**"], "write": ["./out/finance-update*"] }
  13. 13 },
  14. 14 "tests": {
  15. 15 "cases": [
  16. 16 {
  17. 17 "name": "computes plan vs actual, burn, runway, and flags from the example month",
  18. 18 "inputs": {},
  19. 19 "checks": [
  20. 20 { "type": "command_exits_zero", "command": "node scripts/variance.mjs examples/finance-2026-10.csv --month 2026-10 --out out/finance-update" },
  21. 21 { "type": "file_contains", "path": "out/finance-update-variance.md", "text": "| Net burn | $52,000 | $66,800 | $14,800 | $54,900 |" },
  22. 22 {
  23. 23 "type": "output_matches_schema",
  24. 24 "path": "out/finance-update-variance.json",
  25. 25 "schema": {
  26. 26 "type": "object",
  27. 27 "required": ["actual", "plan", "runway_months", "flagged"],
  28. 28 "properties": {
  29. 29 "actual": { "type": "object", "properties": { "revenue": { "const": 277900 }, "net_burn": { "const": 66800 }, "gross_margin": { "const": 0.7855 } } },
  30. 30 "runway_months": { "const": 47.2 },
  31. 31 "flagged": { "const": ["Logo churn", "Services revenue", "Sales and marketing programs", "New customers", "Hosting and model costs"] }
  32. 32 }
  33. 33 }
  34. 34 }
  35. 35 ]
  36. 36 },
  37. 37 {
  38. 38 "name": "treats lower-is-better lines and thresholds correctly",
  39. 39 "inputs": {
  40. 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. 41 },
  42. 42 "checks": [
  43. 43 { "type": "command_exits_zero", "command": "node scripts/variance.mjs data/m.csv --out out/finance-update --threshold-pct 10 --threshold-abs 5000" },
  44. 44 {
  45. 45 "type": "output_matches_schema",
  46. 46 "path": "out/finance-update-variance.json",
  47. 47 "schema": {
  48. 48 "type": "object",
  49. 49 "properties": {
  50. 50 "flagged": { "const": ["Ads"] },
  51. 51 "runway_months": { "const": null },
  52. 52 "lines": {
  53. 53 "type": "array",
  54. 54 "items": { "type": "object" },
  55. 55 "minItems": 3,
  56. 56 "maxItems": 3
  57. 57 }
  58. 58 }
  59. 59 }
  60. 60 }
  61. 61 ]
  62. 62 }
  63. 63 ]
  64. 64 }