Skip to content
SlashClone
Made by@ledgerly

Cash runway model

@ledgerly/cash-runway-model

Model cash runway from cash on hand, monthly burn by category, revenue growth, and planned hires. Produces runway months, cash-zero and raise-by dates, and an 18-month table for base, lean, and upside scenarios.

SkillFinancev1.0.0 (latest)Tested
Activity
New: be the first to try it
  1. 1{
  2. 2 "name": "cash-runway-model",
  3. 3 "owner": "ledgerly",
  4. 4 "version": "1.0.0",
  5. 5 "type": "skill",
  6. 6 "description": "Model cash runway from cash on hand, monthly burn by category, revenue growth, and planned hires. Produces runway months, cash-zero and raise-by dates, and an 18-month table for base, lean, and upside scenarios.",
  7. 7 "category": "finance",
  8. 8 "license": "MIT",
  9. 9 "compat": ["claude-code"],
  10. 10 "permissions": {
  11. 11 "shell": ["node scripts/runway.mjs"],
  12. 12 "files": { "read": ["./data/**"], "write": ["./data/runway.json", "./out/runway*"] }
  13. 13 },
  14. 14 "tests": {
  15. 15 "cases": [
  16. 16 {
  17. 17 "name": "projects three scenarios from the example inputs",
  18. 18 "inputs": {},
  19. 19 "checks": [
  20. 20 { "type": "command_exits_zero", "command": "node scripts/runway.mjs examples/runway.json --out out/runway" },
  21. 21 { "type": "file_exists", "path": "out/runway.csv" },
  22. 22 { "type": "file_contains", "path": "out/runway.md", "text": "## base: 18-month table" },
  23. 23 {
  24. 24 "type": "output_matches_schema",
  25. 25 "path": "out/runway.json",
  26. 26 "schema": {
  27. 27 "type": "object",
  28. 28 "required": ["scenarios"],
  29. 29 "properties": {
  30. 30 "scenarios": {
  31. 31 "type": "object",
  32. 32 "required": ["base", "lean", "upside"],
  33. 33 "properties": {
  34. 34 "base": { "type": "object", "properties": { "runway_months": { "const": 14 }, "cash_zero_month": { "const": "2028-01" }, "raise_by_month": { "const": "2027-07" } } },
  35. 35 "lean": { "type": "object", "properties": { "runway_months": { "const": 16.4 } } },
  36. 36 "upside": { "type": "object", "properties": { "runway_months": { "const": null }, "breakeven_month": { "const": "2028-06" } } }
  37. 37 }
  38. 38 }
  39. 39 }
  40. 40 }
  41. 41 }
  42. 42 ]
  43. 43 },
  44. 44 {
  45. 45 "name": "simple burn with no revenue gives exact runway",
  46. 46 "inputs": {
  47. 47 "data/runway.json": "{\"as_of\":\"2026-01\",\"cash\":100000,\"expenses\":[{\"category\":\"Everything\",\"monthly\":10000}]}"
  48. 48 },
  49. 49 "checks": [
  50. 50 { "type": "command_exits_zero", "command": "node scripts/runway.mjs data/runway.json --out out/runway" },
  51. 51 {
  52. 52 "type": "output_matches_schema",
  53. 53 "path": "out/runway.json",
  54. 54 "schema": {
  55. 55 "type": "object",
  56. 56 "properties": {
  57. 57 "scenarios": {
  58. 58 "type": "object",
  59. 59 "properties": {
  60. 60 "base": { "type": "object", "properties": { "runway_months": { "const": 10 }, "cash_zero_month": { "const": "2026-12" }, "raise_by_month": { "const": "2026-06" } } }
  61. 61 }
  62. 62 }
  63. 63 }
  64. 64 }
  65. 65 }
  66. 66 ]
  67. 67 }
  68. 68 ]
  69. 69 }