$npx -y skills add AlpacaLabsLLC/skills-for-architects --skill epd-compareCompare 2+ products side-by-side on environmental impact metrics — normalizes declared units, checks system boundary alignment, and flags LEED MRc2 compliance. Use when the user asks to "compare EPDs", weigh embodied carbon between products, or check which option has lower GWP.
| 1 | # /epd-compare — EPD Comparator |
| 2 | |
| 3 | Compare 2 or more products side-by-side on environmental impact metrics. Validates comparability (declared units, system boundaries, PCR alignment), generates comparison tables with percentage deltas, and checks LEED v4.1 MRc2 eligibility. |
| 4 | |
| 5 | This skill **reads** from the EPD Google Sheet but does **not write** to it. Output is a markdown comparison report. |
| 6 | |
| 7 | ## Input |
| 8 | |
| 9 | The user provides EPD data in one of these ways: |
| 10 | |
| 11 | 1. **Sheet row references** — "compare rows 5, 8, and 12" from the EPD Google Sheet |
| 12 | 2. **Inline data** — pasted product names with GWP values |
| 13 | 3. **File path** — a CSV or markdown file with EPD data |
| 14 | 4. **From prior skills** — "compare the EPDs I just parsed/found" (uses data from the current conversation) |
| 15 | 5. **Mixed** — "compare this PDF I just parsed against what's in the sheet" |
| 16 | |
| 17 | If the user doesn't specify a source, ask: **"Where is the EPD data? Sheet rows, pasted values, or from earlier in this conversation?"** |
| 18 | |
| 19 | ## Workflow |
| 20 | |
| 21 | ### Step 1: Collect data |
| 22 | |
| 23 | Gather EPD data from the specified source. For each product, you need at minimum: |
| 24 | |
| 25 | - Product name and manufacturer |
| 26 | - GWP (A1-A3) value |
| 27 | - Declared unit |
| 28 | |
| 29 | Additional fields improve the comparison: ODP, AP, EP, POCP, energy use, water use, system boundary, PCR, validity dates, LEED eligibility. |
| 30 | |
| 31 | ### Step 2: Validate comparability |
| 32 | |
| 33 | Before comparing, run these checks and report findings: |
| 34 | |
| 35 | **Declared unit alignment:** |
| 36 | - Are all products using the same declared unit (e.g., all per m3, all per kg)? |
| 37 | - If units differ, attempt normalization where possible: |
| 38 | - kg ↔ ton (multiply/divide by 1000) |
| 39 | - m2 at different thicknesses (if thickness is known, normalize to same thickness) |
| 40 | - If normalization is impossible, warn: "Product A reports per m2, Product B reports per kg. Direct comparison requires density or thickness data. Provide conversion factors, or I'll compare only within matching units." |
| 41 | - **Never silently compare products with different declared units.** |
| 42 | |
| 43 | **System boundary alignment:** |
| 44 | - Flag if some are cradle-to-gate (A1-A3) and others cradle-to-grave (A1-A3 + C1-C4 + D). |
| 45 | - Note: "A1-A3 comparison is still valid across both types. Full life cycle comparison is only valid for cradle-to-grave EPDs." |
| 46 | |
| 47 | **PCR alignment:** |
| 48 | - Flag if products use different PCRs. Products under the same PCR are most directly comparable. |
| 49 | - Note the PCR names if they differ. |
| 50 | |
| 51 | **EN 15804 version:** |
| 52 | - Flag if some use +A1 and others +A2. Impact indicator units may differ (AP in kg SO2e vs. mol H+ eq). |
| 53 | - GWP in kg CO2e is comparable across versions. |
| 54 | |
| 55 | **Validity:** |
| 56 | - Flag any expired EPDs with their expiration date. |
| 57 | |
| 58 | **EPD type:** |
| 59 | - Flag mix of product-specific and industry-average EPDs. Note that industry-average EPDs are less precise. |
| 60 | |
| 61 | Report all findings before proceeding: |
| 62 | |
| 63 | ``` |
| 64 | ## Comparability Check |
| 65 | |
| 66 | ✓ Declared unit: All products use 1 m3 |
| 67 | ✓ System boundary: All cradle-to-gate (A1-A3) |
| 68 | ⚠ PCR: Products 1-2 use NRMCA PCR, Product 3 uses NSF PCR — results are comparable but not identical methodology |
| 69 | ⚠ Validity: Product 2 expired 2025-12-01 |
| 70 | ✓ EPD type: All product-specific |
| 71 | ``` |
| 72 | |
| 73 | ### Step 3: Generate comparison |
| 74 | |
| 75 | Produce three outputs: |
| 76 | |
| 77 | #### a. Side-by-side impact table |
| 78 | |
| 79 | ``` |
| 80 | ## Environmental Impact Comparison |
| 81 | |
| 82 | | Metric | ECOPact (Holcim) | ProPaving (CEMEX) | ReadyMix (Buzzi) | Unit | |
| 83 | |--------|-----------------|-------------------|------------------|------| |
| 84 | | **GWP-total (A1-A3)** | **242** | 298 | 385 | kg CO2e/m3 | |
| 85 | | GWP-fossil (A1-A3) | 238 | 291 | — | kg CO2e/m3 | |
| 86 | | GWP-biogenic (A1-A3) | 4 | 7 | — | kg CO2e/m3 | |
| 87 | | ODP (A1-A3) | 1.2e-6 | 1.5e-6 | 1.8e-6 | kg CFC-11e/m3 | |
| 88 | | AP (A1-A3) | 0.45 | 0.52 | 0.61 | kg SO2e/m3 | |
| 89 | | EP (A1-A3) | 0.08 | 0.11 | 0.14 | kg PO4e/m3 | |
| 90 | | PERE (A1-A3) | 180 | 95 | 72 | MJ/m3 | |
| 91 | | PENRE (A1-A3) | 1,450 | 1,890 | 2,340 | MJ/m3 | |
| 92 | | FW (A1-A3) | 0.32 | 0.41 | 0.55 | m3/m3 | |
| 93 | | Recycled Content | 35% | 22% | 12% | % | |
| 94 | ``` |
| 95 | |
| 96 | Bold the **best value** in each row (lowest for impacts, highest for recycled content/renewable energy). |
| 97 | |
| 98 | Use `—` for missing data. Never fill in missing values. |
| 99 | |
| 100 | #### b. Percentage comparison (relative to lowest) |
| 101 | |
| 102 | ``` |
| 103 | ## GWP Comparison (relative to lowest) |
| 104 | |
| 105 | | Product | GWP (A1-A3) | vs. Lowest | vs. Industry Avg | |
| 106 | |---------|-------------|------------|-------------------| |
| 107 | | ECOPact (Holcim) | 242 kg CO2e/m3 | — baseline — | -40% | |
| 108 | | ProPaving (CEMEX) | 298 kg CO2e/m3 | +23% | -26% | |
| 109 | | ReadyMix (Buzzi) | 385 kg CO2e/m3 | +59% | -4% | |
| 110 | | *Industry average (NRMCA Industry-Wide Member EPD v3.2, 2022)* | *~400 kg CO2e/m3* | — | — | |
| 111 | ``` |