Unified scope-schedule-cost performance measurement using Earned Value Management (EVM) methodology. Calculates SPI, CPI, SV, CV, EAC, ETC, VAC, and TCPI. Generates three-line S-curves (BCWS/BCWP/ACWP), variance analysis, and project forecasting. Extends cost-tracking with schedule integration for complete project health assessment. Triggers: "earned value", "EVM", "S-curve", "SPI", "CPI", "cost performance index", "schedule performance index", "estimate at completion", "EAC", "ETC", "variance analysis", "BCWS", "BCWP", "ACWP", "planned value", "earned value report", "project performance", "cost variance", "schedule variance".
From foremanos-costnpx claudepluginhub mgoodman60/foreman-os-plugin --plugin foremanos-costThis skill uses the workspace's default tool permissions.
references/skill-detail.mdFetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
Retrieves current documentation, API references, and code examples for libraries, frameworks, SDKs, CLIs, and services via Context7 CLI. Ideal for API syntax, configs, migrations, and setup queries.
Uses ctx7 CLI to fetch current library docs, manage AI coding skills (install/search/generate), and configure Context7 MCP for AI editors.
Earned Value Management is the gold standard for integrated project performance measurement, combining scope, schedule, and cost into a unified analytical framework. EVM answers the three critical questions every project manager must ask:
Unlike traditional cost-tracking (which shows only spending vs. budget) or schedule-tracking (which shows only timeline progress), EVM integrates both dimensions. It reveals whether cost overruns are due to inefficiency, scope growth, schedule delays, or a combination of factors. The methodology is endorsed by the Project Management Institute (PMI), the Association for the Advancement of Cost Engineering (AACE), and the U.S. Department of Defense as the standard for project performance measurement.
In construction, EVM is particularly valuable because:
Foreman OS EVM skill extends the cost-tracking foundation by adding schedule integration, providing the unified three-dimensional view necessary for proactive project management.
All EVM analysis rests on four foundational variables, each representing a different perspective on project progress:
Definition: The total approved project budget at the time of baseline establishment or latest authorized re-baseline.
Context:
Example: A $2,805,000 senior care facility project has BAC = $2,805,000. A $250,000 approved change order re-baselines BAC to $3,055,000.
Definition: The cumulative budgeted cost of all work that should have been completed by a given reporting date, according to the baseline plan.
Calculation: Sum the budget values of all baseline activities scheduled to be complete (or partially complete) by the measurement date.
Context:
Example:
Definition: The cumulative budgeted cost of all work that has actually been completed by a given reporting date.
Calculation:
Context:
Example:
Definition: The cumulative actual cost incurred for work performed, regardless of when it was budgeted or scheduled.
Calculation:
Context:
Example:
The following six core metrics and three forecasting metrics are calculated from the four fundamentals above:
| Metric | Formula | Interpretation | Green / Yellow / Red |
|---|---|---|---|
| Schedule Variance (SV) | SV = EV - PV | Positive = ahead of schedule; Negative = behind schedule; Dollar amount of schedule variance | SV > 0 / SV near 0 / SV < 0 |
| Schedule Performance Index (SPI) | SPI = EV / PV | Ratio of earned to planned. SPI = 1.0 is perfect, >1.0 ahead, <1.0 behind. Interpreted as "earning $X for every $1 of planned work" | 0.95–1.10 / 0.85–0.94 / <0.85 |
| Scenario | PV | EV | SV | SPI | Interpretation |
|---|---|---|---|---|---|
| On schedule | $100k | $100k | $0 | 1.00 | Earning at planned rate |
| Ahead of schedule | $100k | $110k | +$10k | 1.10 | Earning 10% faster than plan |
| Behind schedule (severe) | $100k | $80k | -$20k | 0.80 | Earning only 80 cents per dollar planned; 20% behind |
Construction Context: In weather-heavy projects, SPI <0.90 indicates schedule compression risk. Recovery requires either extended working hours, additional crews, or scope deferral. An SPI of 0.88 at 8% project completion (as in the MOSC example) suggests 10-14 day slip in a 151-day baseline.
| Metric | Formula | Interpretation | Green / Yellow / Red |
|---|---|---|---|
| Cost Variance (CV) | CV = EV - AC | Positive = under budget; Negative = over budget; Dollar amount of cost variance | CV > 0 / CV near 0 / CV < 0 |
| Cost Performance Index (CPI) | CPI = EV / AC | Ratio of earned to actual cost. CPI = 1.0 is perfect, >1.0 under budget, <1.0 over budget. Interpreted as "earning $X for every $1 spent" | 0.95–1.10 / 0.85–0.94 / <0.85 |
| Scenario | EV | AC | CV | CPI | Interpretation |
|---|---|---|---|---|---|
| On budget | $100k | $100k | $0 | 1.00 | Spending at planned rate |
| Under budget | $100k | $95k | +$5k | 1.053 | Earning 5.3% more per dollar spent; efficient |
| Over budget (severe) | $100k | $120k | -$20k | 0.833 | Earning only 83 cents per dollar spent; 20% overrun |
Construction Context: CPI <0.95 in early foundation phase often indicates:
| Metric | Formula | Interpretation | Notes |
|---|---|---|---|
| Estimate at Completion (EAC) | See three methods below | Project cost at completion based on current trends and assumptions | Primary decision metric |
| Estimate to Complete (ETC) | ETC = EAC - AC | Remaining budget needed to finish the project | ETC = BAC only if on budget |
| Variance at Completion (VAC) | VAC = BAC - EAC | Final budget variance (positive = under budget) | Used to flag if project will overrun |
| To-Complete Performance Index (TCPI) | TCPI = (BAC - EV) / (BAC - AC) | Required cost performance for remaining work to stay within BAC | If TCPI > 1.15, recovery is difficult |
Formula: EAC = BAC / CPI
Logic: If current cost efficiency continues unchanged for all remaining work, multiply the remaining budget by the inverse of CPI.
When to use:
Example:
Weakness: Ignores schedule performance and assumes cost inefficiency persists.
Formula: EAC = AC + (BAC - EV)
Logic: Assume remaining work will be completed at the original budgeted rate (CPI = 1.0).
When to use:
Example:
Weakness: Unrealistic if cost overrun root causes are not addressed (e.g., persistent labor inefficiency).
Formula: EAC = AC + [(BAC - EV) / (CPI × SPI)]
Logic: Remaining work will be completed at a rate influenced by both cost and schedule performance.
When to use:
Example:
Interpretation: The composite method reveals that if both cost overruns and schedule delays persist, the project completion cost will be nearly $3.36M — a $553k overrun. This scenario typically triggers:
The S-curve is the signature EVM visualization. It plots three cumulative cost curves over the project timeline, revealing performance at a glance:
A healthy S-curve has:
Warning signs:
The following JSON structure captures all monthly EVM data needed for reporting, forecasting, and dashboarding:
{
"evm_data": {
"project_id": "825021",
"project_name": "Morehead One Senior Care",
"bac": 2805000,
"currency": "USD",
"baseline_start_date": "2026-01-21",
"baseline_end_date": "2026-07-29",
"baseline_duration_days": 151,
"reporting_periods": [
{
"period": "2026-01",
"period_end_date": "2026-01-31",
"pv_cumulative": 140250,
"ev_cumulative": 140250,
"ac_cumulative": 142000,
"sv": 0,
"cv": -1750,
"spi": 1.00,
"cpi": 0.988,
"eac_cpi": 2838675,
"eac_remaining": 2808000,
"eac_composite": 2823456,
"etc": 2681000,
"vac": -33675,
"tcpi": 1.003,
"percent_complete_planned": 5.0,
"percent_complete_earned": 5.0,
"percent_complete_actual_cost": 5.1,
"notes": "Mobilization on schedule. Minor material procurement delays."
},
{
"period": "2026-02",
"period_end_date": "2026-02-28",
"pv_cumulative": 336600,
"ev_cumulative": 320000,
"ac_cumulative": 345000,
"sv": -16600,
"cv": -25000,
"spi": 0.951,
"cpi": 0.928,
"eac_cpi": 3021258,
"eac_remaining": 2808000,
"eac_composite": 3145623,
"etc": 2800258,
"vac": -216258,
"tcpi": 1.021,
"percent_complete_planned": 12.0,
"percent_complete_earned": 11.4,
"percent_complete_actual_cost": 12.3,
"notes": "Foundation delayed 3 days due to weather/ground conditions. Concrete costs escalated 2.5% due to admixture changes."
},
{
"period": "2026-03",
"period_end_date": "2026-03-31",
"pv_cumulative": 785400,
"ev_cumulative": 710000,
"ac_cumulative": 768000,
"sv": -75400,
"cv": -58000,
"spi": 0.904,
"cpi": 0.925,
"eac_cpi": 3034054,
"eac_remaining": 2808000,
"eac_composite": 3289456,
"etc": 2521054,
"vac": -229054,
"tcpi": 1.041,
"percent_complete_planned": 28.0,
"percent_complete_earned": 25.3,
"percent_complete_actual_cost": 27.4,
"notes": "PEMB delayed to 3/8 due to foundation schedule slip. Excavation overrun 8%. Alexander Construction (PEMB) crew added on 3/15 to compress erection schedule."
},
{
"period": "2026-04",
"period_end_date": "2026-04-30",
"pv_cumulative": 1542750,
"ev_cumulative": 1485000,
"ac_cumulative": 1603000,
"sv": -57750,
"cv": -118000,
"spi": 0.963,
"cpi": 0.926,
"eac_cpi": 3032326,
"eac_remaining": 2808000,
"eac_composite": 3156234,
"etc": 1429326,
"vac": -227326,
"tcpi": 1.031,
"percent_complete_planned": 55.0,
"percent_complete_earned": 52.9,
"percent_complete_actual_cost": 57.1,
"notes": "PEMB erection 95% complete. CFS framing and MEP rough-in commenced. Labor productivity improving; SPI trending toward 0.97. CPI stable at 0.925–0.928 (cost overrun root causes: rework 2%, inflation 1%, front-loaded long-lead delivery 1%)."
}
]
}
}
Each EVM data point is pulled from source systems:
When project intelligence is loaded, auto-populate EVM baseline data, actual costs, and earned value from project data files instead of requiring manual entry for every reporting period.
Pull baseline budget from cost tracking data:
cost-data.json → budget_by_division[] → sum all division budgets for BACchange-order-log.json → filter by status = "approved" → sum cost_approved amounts → add to original BAC for re-baselined BACBuild the planned value curve from schedule data:
schedule.json → milestones[] + critical_path[] → map planned work percentage over timecost-data.json → budget_by_division[] → distribute budget across scheduled activities for cost-loaded baselineschedule.json → percent_complete (baseline) → calculate cumulative PV at each reporting periodAggregate actual expenditures from multiple sources:
labor-tracking.json → crew_summaries[] → sum labor costs per reporting periodprocurement-log.json → total_cost for delivered items → sum material costs per periodcost-data.json → actual costs by division → validate against labor + material totalsCalculate earned value from progress and baseline:
cost-data.json → budget_by_division[].percent_complete → multiply each division's budget × percent completeschedule.json → percent_complete → validate overall earned value aligns with schedule progressdaily-report-data.json → work completed entries → ground-truth percent complete against field observationsAdjust baseline for approved scope changes:
change-order-log.json → filter status = "approved" → for each approved CO, add cost_approved to BACchange-order-log.json → schedule_impact_days → adjust planned value curve for approved time extensionscost_estimate > $10,000 as potential BAC adjustment risksCross-check EAC forecasts against bottom-up estimates:
cost-data.json → forecast_to_complete[] → compare bottom-up ETC against CPI-based ETCdelay-log.json → active delays → factor delay cost impact into composite EAC (Method 3: CPI x SPI)Extended reference: Detailed examples, templates, scoring rubrics, and best practices are in
references/skill-detail.md.