Pattern
Codify the specific skill into a reusable template with five named seams, then scope the next instance from it — without faking a second working skill.
The skill on the Build page is one instance of a repeatable shape: take one already-flagged item, reconcile it against an authoritative reference dataset, classify it, cite the dataset, and gate anything irreversible. Five seams change from one instance to the next. Everything else — the output contract, the citation validator, the escalation logic — is fixed.
ExceptionSchema — the bill record: id, utility, urdb_rate_id, service_class, payment_status, billing_period, usage, line_items[], billed_total. Numeric/enum only.
The fields of one flagged item, plus a status field that gates escalation.
RFP intake record: buyer_unit, category_code, requirement_lines[], submission_status. Requirement text arrives pre-extracted, not as prose.
NREL URDB tariff JSON, dated and provenanced, with a citable_components allowlist (energyratestructure.period[i], flatdemandstructure.period[i], startdate/enddate, …).
The authoritative dataset with provenance and a citable-components allowlist.
A category taxonomy + standard-clause library. Open question: which system of record is authoritative, and can it be dated the way URDB tariffs are.
Six classes — rate-mismatch, tariff-superseded, seasonal-schedule-error, demand-charge-anomaly, data-quality (ambiguous), true-anomaly — worked top-down.
The domain taxonomy, including an explicit "inputs insufficient / more than one reference applies" class.
complete, missing-mandatory-field, ambiguous-category, out-of-scope-category, duplicate-of-existing-rfp, genuine-nonstandard-requirement.
{ classification, candidate_rate_ids?, evidence[] {statement, citation}, confidence, recommended_action, escalate, escalation_reason? }.
Fixed. The JSON shape never changes; only the classification enum comes from the rubric.
Unchanged from the template — same JSON; the enum comes from Seam 3.
Escalate when confidence is not high, when more than one tariff applies, or when the fix touches a paid invoice / payment / record of account.
Rules 1–2 fixed. Rule 3 is the domain reading of "already committed".
Rules 1–2 unchanged. Rule 3: escalate when the RFP is already issued to suppliers, or the fix changes what suppliers were asked to bid on.
procurement-rfp-intake
Scoped, not built — next candidate per the adoption-risk rankingUser — the procurement advisory analyst reviewing RFP intake before it reaches a sourcing decision. Internal staff work, the same shape as bill ops: one flagged item, one reference set, cited evidence, a human gate.
The stub above is a scoping document, not a runnable skill — no code, no recorded runs. It exists to show that the second instance is a seam-fill, not a rebuild: the intake schema and rubric are new, the reference-data seam has an open question (an authoritative, dateable source), and the output contract and citation validator carry over unchanged. Proving the operating model on the safer workflow first is what earns the right to fill these seams for real.
This is the whole argument: swap the payload — finance close, proposal QA, systems provisioning — and stations 01, 03, 04, and 05 do not change. Only station 02 does. The engine is the deliverable; the bill skill is what it happened to be pointed at first.