| name | builder-docs-generator |
| description | Produces the three builder-facing documents that make the plugin output immediately usable for site procurement and construction: budget-estimate.md, lumber-purchase-list.md, and assembly-guide.md. Invoke as Step 13 of design-orchestrator after blueprints are validated. |
Builder Document Consistency Rule
Builder documents describe the deterministic model. They must not become independent design sources.
When revising any of outputs/pergola_plan.md, outputs/assembly-guide.md, outputs/lumber-purchase-list.md, or outputs/budget-estimate.md, cross-check all wording against:
context/staging/structure.json
outputs/shop-blueprint/SB01-cut-list.json
Dimension language must specify what the dimension means: post cut length, beam soffit height, total height, point-to-point diameter, flat-to-flat width, side length, or radius/circumradius. For a regular hexagon, do not conflate radius, point-to-point diameter, flat-to-flat width, and side length — they are different values.
If a dimension is uncertain, write Dimension pending deterministic verification. rather than inventing a value from an image.
Execution Command
Run the deterministic builder docs compiler:
python3 plugins/garden-structure-designer/scripts/builder_docs_compiler.py
This reads context/staging/structure.json and outputs/shop-blueprint/SB01-cut-list.json to generate all 3 builder documents deterministically.
Outputs
1. outputs/lumber-purchase-list.md
Organize by member type with:
- Nominal dimension, quantity, standard order length (not cut length — add waste).
- Hardware schedule (post bases, lags, ties, concrete).
- BF subtotals from
structure.json (members section).
- Consolidation notes for minimum delivery orders.
2. outputs/budget-estimate.md
Regional market rates (default: Vancouver Island, BC). Include:
- Lumber cost by member type ($ per BF at current market).
- Hardware subtotal.
- Roofing subtotal.
- Foundation subtotal.
- Labor exclusion note with estimated range.
- Tax exclusion note.
- Recommended suppliers for the jurisdiction.
3. outputs/assembly-guide.md
Phase-by-phase site construction sequence:
- Phase 1: Site layout & footing (hexagon string layout, caisson excavation, concrete pour, J-bolt wet-set).
- Phase 2: Post & beam ring (standoff bases, erect/plumb/brace posts, fly ring beams).
- Phase 3: Hub & rafter assembly (tripod-first hoisting strategy recommended for hexagonal hubs).
- Phase 4: Roof decking & shingles.
- QC checkpoint per phase (plumb, pitch, clearance verification steps).
Use the compound cut values from structure.json (geometry section) in any assembly note that references saw settings.
MANDATORY CONSTRAINT — HEXAGONAL HUB ASSEMBLY
For any structure with planShape = hexagon and a central hub:
The assembly guide MUST include a section titled exactly:
"Phase 4.3 — Tripod-First Hub and Rafter Hoisting"
The required sequence is:
- Install three alternating rafters into the hub on the ground.
- Hoist this tripod assembly onto three alternating beam seats.
- Temporarily brace the tripod to the beam ring.
- Install the remaining three rafters one at a time.
- Confirm hub is centred over the layout stake.
- Peg only after all six rafters are seated and verified.
This MUST be presented as the PRIMARY method.
Scaffolding and ground pre-assembly may be mentioned as ALTERNATIVES ONLY.
Gotchas
- Order length ≠ cut length. Add a minimum 1ft per piece as waste allowance; add more when multiple cuts come from a single board (e.g. rafters require one cut per piece at the bird's-mouth). Using cut length as order length results in a shortage on-site.
- Regional pricing defaults to Vancouver Island, BC. If
structure.json jurisdiction indicates a different region, override the regional pricing header and note the mismatch explicitly. Never silently apply Vancouver Island rates to an Ontario or Alberta build.
- SB01-cut-list.json must exist before this skill runs. Board-foot totals for the budget estimate come from this file. If it is missing, halt and return an error directing the orchestrator to re-run shop-blueprint-generator.
- Assembly-guide saw settings must reference structure.json values. Any assembly step that mentions saw settings (miter, bevel) must quote the values verbatim from
structure.json (geometry section) — not from memory, not approximated.
- Labor and tax exclusions are mandatory disclosures. Both must appear as explicit line items in budget-estimate.md. Omitting either makes the estimate appear lower than reality and misleads the client.
Smoke Test
- Prerequisite check: Given a run with no
outputs/shop-blueprint/SB01-cut-list.json: skill halts immediately with a diagnostic message rather than producing an incomplete estimate. ✓
- Order-length inflation: Given a hex-6 with rafter cut length = 7.5ft: lumber-purchase-list specifies order length ≥ 9ft (standard stock) per piece, not 7.5ft. ✓
- Assembly-guide angle accuracy: Assembly-guide.md saw settings section reads miter and bevel from
structure.json (geometry section), matching the blueprint values exactly. ✓
Completion: HANDOFF_BLOCK
On successful completion emit this block so the design-orchestrator can gate Stage 7 (compilation):
{
"stage": "builder-docs-generator",
"status": "COMPLETE",
"outputs": [
"outputs/lumber-purchase-list.md",
"outputs/budget-estimate.md",
"outputs/assembly-guide.md"
],
"regional_pricing": "<jurisdiction from structure.json>",
"next_stage": "document-compiler"
}
If SB01-cut-list.json was missing or any output file was not written, set "status": "FAIL" and specify the blocking reason.