Generates estimation input package (pricing library, LOE, project parameters, BOE) via two-phase run with PHASE=SCAFFOLD|BOE modes and a human gate between invocations.
Generate the complete input package consumed by ESTIMATING agents: pricing libraries, effort matrices, project parameter assumptions, and the Basis of Estimate (BOE).
This skill runs in two phases, invoked separately with a human gate between:
BASIS_OF_ESTIMATE.md with tier sequencing, cost ownership rules, and aggregation strategy.Each invocation runs exactly ONE phase, selected by the PHASE brief parameter. The human gate is external: a human reviews SCAFFOLD output, then re-invokes the skill with PHASE=BOE.
Non-goal: this skill MUST NOT compute or publish project totals, bid prices, or line-item estimates. It prepares inputs; ESTIMATING produces estimates.
TASK (generic shell mode, no profile)The PHASE parameter determines which pipeline executes. A single invocation runs exactly one phase:
| PHASE | Input expectation | Primary output |
|---|---|---|
SCAFFOLD | Decomposition + source documents + project context (+ optional HUMAN_PRICING if MODE=ENRICH) | Pricing library CSVs + PriceSources/INDEX.md + Scaffold/BOE_Scaffold.md |
BOE | Approved SCAFFOLD_PATH + dependency evidence | Full BASIS_OF_ESTIMATE.md + Tier_Analysis.md |
Critical invariant: a single run MUST NOT span both phases — the human gate between them is a non-negotiable decision point. If a brief requests both phases in one run, halt with FAILED_INPUTS.
Required:
EXECUTION_ROOT — root of the current execution/workspacePHASE — SCAFFOLD | BOE (validated enum; invalid = FAILED_INPUTS)DECOMPOSITION_PATH — path to the latest decomposition markdown (PROJECT_DECOMP or SOFTWARE_DECOMP)SOURCE_DOCUMENTS — path(s) to source documents (RFP, addenda, specs, reference reports)CURRENCY — ISO-like code (e.g., USD, CAD)PROJECT_CONTEXT — structured block (Location, BaseYear, ProjectType, ProcurementModel; EstimatedValue optional; AdditionalContext optional)Optional:
OUTPUT_LABEL — short label for snapshot naming (default AUTO)SECONDARY_SOURCES — path(s) to secondary reference documentsCANONICAL_PRICESOURCES_ROOT — path to canonical pricing library (e.g., {EXECUTION_ROOT}/_PriceSources/) used for schema discovery and/or as ENRICH inputSCHEMA_MODE — AUTO_FROM_CANONICAL (default) | DEFAULT_COMPATEXPORT_BUNDLE — MANIFEST_ONLY (default) | MANIFEST_AND_PACKAGEMODE — BOOTSTRAP (default) | ENRICHPRIOR_SNAPSHOT — required if MODE=ENRICH (or use CANONICAL_PRICESOURCES_ROOT)HUMAN_PRICING — path(s) to human-provided pricing (quotes, rate tables, historical data, vendor proposals)RATE_SCOPE — PRODUCTION_ONLY (default) | PRODUCTION_AND_CONSTRUCTIONDISCIPLINE_HINTS — override/supplement discipline detection from decompositionRequired:
SCAFFOLD_PATH — path to approved SCAFFOLD snapshot (may have been modified by human after Phase SCAFFOLD)Optional:
DEPENDENCY_SOURCES — AUTO (default; reads per-deliverable Dependencies.csv) or explicit path(s) to dependency registersEVALUATION_CRITERIA — path to or structured block of evaluation criteria with point allocationsAGGREGATION_HINTS — human-specified aggregation preferencesAll resolved defaults and chosen paths MUST be recorded in the snapshot Run_Context.md.
| Key | Meaning | Default | Allowed values |
|---|---|---|---|
PHASE | Which pipeline to run | Required | SCAFFOLD, BOE |
MODE | SCAFFOLD only: baseline vs enrichment | BOOTSTRAP | BOOTSTRAP, ENRICH |
RATE_SCOPE | SCAFFOLD only: which rate files to generate | PRODUCTION_ONLY | PRODUCTION_ONLY, PRODUCTION_AND_CONSTRUCTION |
SCHEMA_MODE | Whether to auto-match canonical file headers | AUTO_FROM_CANONICAL | AUTO_FROM_CANONICAL, DEFAULT_COMPAT |
EXPORT_BUNDLE | Manifest-only vs manifest + copy-ready package | MANIFEST_ONLY | MANIFEST_ONLY, MANIFEST_AND_PACKAGE |
DEPENDENCY_SOURCES | BOE only: dependency source policy | AUTO | AUTO or explicit path(s) |
OUTPUT_LABEL | Label for snapshot folder naming | AUTO | free-form short token |
allowed-tools frontmatter field is intentionally omitted. The skill dispatches several utility scripts under tools/ (enum validation, snapshot scaffolding, INDEX generation) but their invocation is guided operationally, not enforced through the TASK-consumed allowed-tools contract.tools/validation/validate_enum.py — validates PHASE input.tools/scaffolding/scaffold_tool_root.sh — creates _EstimatePrep/ tool root.tools/scaffolding/create_snapshot_folder.sh — creates immutable snapshot folder.tools/reporting/generate_index_md.sh — generates file inventory portion of INDEX.md.Disallowed behavior:
{EXECUTION_ROOT}/_EstimatePrep/._PriceSources/, _Estimates/, deliverable folders, decomposition outputs, or dependency registers._EstimatePrep/ outputs unless explicitly provided as PRIOR_SNAPSHOT / SCAFFOLD_PATH.PHASE enum; bootstrap _EstimatePrep/; create EPREP_SCAFFOLD_{LABEL}_{DATE}_{TIME}/.TBD for items not found.SCHEMA_MODE=AUTO_FROM_CANONICAL and CANONICAL_PRICESOURCES_ROOT has a matching file, use its header exactly; otherwise use the Schema Annex (see SCHEMA_ANNEX.md for the 9 schema families).Professional_Staff_Rates.csv (Family 4). Default Confidence=MEDIUM, Basis=PARAMETRIC. ENRICH mode overlays human rates and logs each override.Level_of_Effort.csv (Family 9). Default Basis=PARAMETRIC. No Confidence column — provenance is Basis alone.Assumed_Project_Parameters.csv (Family 8). Uses Source column (not Basis); canonical enum: ASSUMPTION, DESIGN_BASIS, CONFIRMED, DERIVED, PARAMETRIC.RATE_SCOPE=PRODUCTION_AND_CONSTRUCTION, generate all applicable Family 1-7 files matching exact canonical schemas.PriceSources/INDEX.md with the 7 required sections: header block, data quality statement (HIGH/MEDIUM/LOW definitions), file inventory, PS-ID to file mapping, ESTIMATING run configuration (DEL-to-PKG mapping + per-package PRICE_SOURCES list + usage guidance), open issues, gaps. Full section contract: see INDEX_MD_CONTRACT.md.Scaffold/BOE_Scaffold.md. Per-deliverable table (DEL-ID, name, package, default basis, fallback policy, mixed-method flag, substance, cost drivers, roles), package cost ownership hints, SOW multi-mapping warnings. Marked DRAFT — requires human review.Confidence_Summary.md, QA_Report.md with , , , , (ENRICH only), (when needed), (always).EPREP_BOE_{LABEL}_{DATE}_{TIME}/.SCAFFOLD_PATH; diff against original scaffold if identifiable; log human modifications in Decision_Log.md.DEPENDENCY_SOURCES (or AUTO for per-deliverable Dependencies.csv); build dependency DAG; detect cycles.Tier_Analysis.md.EVALUATION_CRITERIA provided.BASIS_OF_ESTIMATE.md. Follow canonical BOE structure if one exists; otherwise use the 10-section set: Purpose, Project Context, Estimation Scope, Estimation Strategy, Per-Deliverable Plan, Dependency-Informed Run Sequence, Missing/Weak PRICE_SOURCES, Aggregation Strategy, Assumptions Log, Document Control. Full section contract + handoff artifact contracts: see BOE_STRUCTURE.md.QA_Report.md with RUN_STATUS, Decision_Log.md, Assumptions_Log.md, Source_Index.md, Conflicts.csv (if cycles or contradictions), Publish_Manifest.md (always).{EXECUTION_ROOT}/_EstimatePrep/EPREP_SCAFFOLD_{LABEL}_{DATE}_{TIME}/
Run_Context.md
PriceSources/
[pricing library CSVs per RATE_SCOPE]
INDEX.md
Scaffold/
BOE_Scaffold.md
Package_Analysis.md
Confidence_Summary.md
QA_Report.md
Decision_Log.md
Assumptions_Log.md
Source_Index.md
Override_Log.csv (ENRICH mode only)
Conflicts.csv (when needed)
Publish_Manifest.md
Publish_Package/ (optional; if EXPORT_BUNDLE=MANIFEST_AND_PACKAGE)
{EXECUTION_ROOT}/_EstimatePrep/EPREP_BOE_{LABEL}_{DATE}_{TIME}/
Run_Context.md
BASIS_OF_ESTIMATE.md
Tier_Analysis.md
QA_Report.md
Decision_Log.md
Assumptions_Log.md
Source_Index.md
Conflicts.csv (when needed)
Publish_Manifest.md
Publish_Package/ (optional)
{EXECUTION_ROOT}/_EstimatePrep/. Never modify _PriceSources/, _Estimates/, deliverable folders, decomposition outputs, or dependency registers. Publishing to canonical locations is a separate, human-approved step handled by the invoker.Basis + Confidence for Families 1-7; Source + Confidence for Family 8; Basis alone (no Confidence) for Family 9. Do not add columns that do not exist in the canonical schema for a given file.PARAMETRIC with MEDIUM or LOW confidence, never HIGH. Only human-confirmed, vendor-quoted, or directly source-document-derived values earn HIGH.Override_Log.csv (what changed, from what, to what, confidence change).Conflicts.csv; do not silently pick a winner._EstimatePrep/ outputs as "market evidence" unless explicitly provided as PRIOR_SNAPSHOT / SCAFFOLD_PATH.AUTO_FROM_CANONICAL). No invented columns.This skill may propose, but MUST NOT decide:
HIGH-confidence value._PriceSources/).Human rulings SHOULD be recorded in the scaffold/BOE artifacts (or in a separate decision log maintained by the invoker).
See QA_CHECKS.md for the full invariant + quality gate set. Summary:
RUN_STATUS declared in QA_Report.md (OK | WARNINGS | FAILED_INPUTS)._EstimatePrep/.Publish_Manifest.md exists and references the run outputs.QA_CHECKS.md).This skill's detailed contracts live in adjacent companion files. Consult these when implementing:
SCHEMA_ANNEX.md — 9 canonical CSV schema families covering 18 files in _PriceSources/; Basis/Source/Confidence enum references; Override_Log.csv and Conflicts.csv schemas. Hardened against the on-disk canonical library as of 2026-02-18.BOE_STRUCTURE.md — BOE_Scaffold.md contract (Phase SCAFFOLD), BASIS_OF_ESTIMATE.md 10-section contract (Phase BOE), Run_Context.md minimum fields, Publish_Manifest.md handoff contract.INDEX_MD_CONTRACT.md — 7-section PriceSources/INDEX.md contract including the ESTIMATING run configuration block.RUN_STATUSDecision_Log.mdAssumptions_Log.mdSource_Index.mdOverride_Log.csvConflicts.csvPublish_Manifest.md