| name | retrofit-advisor |
| description | Rigorous, register-backed measure ideation for building decarbonization/retrofit planning. Reads and writes the Retrofit MCP measure register (retrofit__propose_candidates, screen_measures, evaluate_measure, get_measure_state, update_measure_state) and walks a completeness cross-walk against the full measure universe plus a source-audit cross-walk against any available audit/PCA documents — never fabricating a measure or its provenance. Use standalone when asked to "ideate measures", for "measure ideation", "retrofit recommendations", "what should we do to this building", building retrofits, capex planning, energy upgrades, decarbonization investments, equipment replacement, or carbon abatement — and use when invoked by decarb-plan's P3 phase (decarb-plan delegates measure ideation here by name). |
Retrofit Advisor: Rigorous Measure Ideation
This skill runs identically whether invoked standalone (a user asks for retrofit
recommendations directly) or by decarb-plan P3 (which delegates measure ideation here by
name). Equal rigor in both cases means identical method and identical provenance discipline —
the method never degrades because the caller is a skill instead of a user, and it never degrades
because the available data is sparse. Sparse data changes the confidence label on a measure, not
the process used to produce it.
Never fabricate. Every measure on the register either cites a source line (register / audit /
PCA / Audette candidate) or is explicitly labeled extrapolated — feasibility study required.
Step 0 — Read the register first
Before proposing anything, call retrofit__get_measure_state({asset_id}). If measures already
exist on the register, refine/extend them rather than regenerating from scratch — preserve
prior source citations, confidence labels, and register ids; add or correct, don't overwrite
blindly.
Step 1 — Gather grounding (best-effort)
Collect whatever grounding is available, in priority order, and record what was actually found
(don't silently skip a tier):
- Audette model/baseline, if present, for this asset — equipment inventory, modeled
consumption, available-measures candidates.
- Audit / PCA documents — when invoked by decarb-plan, read
state.documents; when
standalone, search_files on the asset for audit/PCA/capital-needs-assessment documents.
- OM / web sources as a labeled fallback only (e.g., published equipment specs, vendor
literature) — never presented as audit-backed.
Sparse or missing grounding does not block ideation — it lowers the confidence label (Step 7) on
whatever is proposed without a hard source, and it is stated plainly in the output, not hidden.
Step 2 — Propose
Call retrofit__propose_candidates with the best available asset attributes (real attributes —
never placeholder/default values). Treat the result as a starting set, not the whole
opportunity space — the optimizer returns what it returns; completeness is verified next.
Step 3 — Completeness cross-walk (screen DOWN from the universe, not UP from the optimizer)
Read references/measure-universe.md and confirm every applicable category was considered
for this building's actual systems:
- Envelope
- HVAC plant + distribution
- Controls / retro-commissioning
- DHW
- Lighting + lighting controls
- Plug / appliance
- Common-area / amenity loads (elevators, garage ventilation, spa/pool, common laundry)
- On-site generation / storage
- EV charging
- Procurement / market
For each category, record a disposition: evaluated (measure(s) on the register),
screened-out-with-reason (considered, rejected — state why: economics, feasibility, already
present, out of scope), or not-applicable (building has no such system). A roster that's thin
only because the optimizer returned few candidates is a red flag — walk the full universe before
accepting a short list.
Step 4 — Source-audit cross-walk
Before the roster is presented or persisted, walk it against every source gathered in Step 1:
- Nothing documented is dropped. Every measure an audit/PCA recommends appears on the
register or is explicitly screened out with a reason — never silently omitted.
- Every roster measure cites its source line — the audit/PCA line, the register, or the
Audette candidate it came from.
- A measure in no source is labeled
extrapolated — feasibility study required and is never
presented as audit-backed.
- Sizing traces to documents — solar kW / usable roof area, fixture counts, unit counts,
equipment tons come from the audit/PCA/ALTA, never a generic per-SF assumption.
A measure without a source line or an explicit extrapolation label is not ready for the register.
Do this cross-walk before persisting, not after.
Step 5 — Screen + evaluate
retrofit__screen_measures to apply feasibility/economic screens to the candidate set.
retrofit__evaluate_measure for every screened-in candidate, to compute economics
(CapEx, annual savings, payback, $/tCO₂e) and carbon impact. Every economic field must be
provenanced to a real source — never fabricate a number to satisfy the tool.
Step 6 — Persist
Write the resulting measures to the register via retrofit__update_measure_state. The register
is the system of record — never persist measures by editing local/session state alone. Anything
not written back through update_measure_state does not count as done.
Step 7 — Confidence label
Every measure on the register carries exactly one grounding-confidence label:
audit-backed — cited directly to an audit/PCA line.
modeled — derived from Audette modeled physics/baseline, not a raw audit line.
extrapolated — not in any source; feasibility study required before it's actionable.
Step 8 — Output
Produce a concise in-chat markdown table:
| Measure | Tier | CapEx | Annual saving | $/tCO₂e | Payback | Confidence | Source |
|---|
Analytics standards apply: energy figures in kWh and kWh/m² (≤2 significant figures displayed);
benchmark against BPD peers, never a national median.
No artifact, no fill_report, no PDF/deck export. Standalone output is the register (written
via retrofit__update_measure_state) plus this in-chat table — nothing more.
Guardrail: when invoked by decarb-plan
When this skill is invoked from decarb-plan's P3 phase, its job ends at a populated register plus
the table above. It does not build the Gate-2 roster, the roadmap/phasing sequence, or the
economics rollup (NPV/IRR, capture, exit value) — those stay in decarb-plan, which consumes this
skill's register output as its input.