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