SKILL.md
Raise vs Jump Skill
"Job hoppers earn more" is true on salary and incomplete on everything else: equity that vests on a cliff you keep resetting, the promotion you were two quarters from, the months of search time, the reputation cost of a short-stint résumé. This skill runs the salary math properly — trajectories, not single offers — and then insists on the checklist of what the salary math can't see, because that checklist decides more of these choices than the compounding does.
What This Skill Produces
- The trajectory table — year-by-year salary and cumulative earnings for both paths
- The crossover year — when cumulative jump-earnings pass cumulative stay-earnings
- The gap at horizon — final salary gap and cumulative gap, on stated assumptions
- The not-in-the-model checklist — scored for this user's actual situation
Required Inputs
Ask for these if not provided:
- Current salary and realistic stay-raise % — their employer's actual recent raises, not the poster in the break room (default 3%, labeled)
- Jump assumptions — bump per jump (default 15%), years between jumps (default 3), raises between jumps (default 2% — jumpers often land at the top of a band and stall)
- The invisible items — unvested equity and its schedule, pension/tenure benefits, promotion proximity, how they'd handle a search
Programmatic Helper
python3 scripts/raise_vs_jump.py --salary 120000
python3 scripts/raise_vs_jump.py --salary 120000 --stay-raise 3.5 --jump-bump 18 --jump-every 3 --json
Deterministic. Models salary only — the script prints its own not-modeled list, and the skill's job is to make that list concrete for the user.
Framework: What the Salary Math Hides
- Vesting resets are the jump tax — walking away from unvested equity and restarting a cliff is often worth more than the bump; compute it in dollars, not vibes
- The stay path has step functions too — a promotion is a 10–20% event; if one is genuinely close (named role, named timeline — not a vague "soon"), model it as a stay-side jump
