Review and verify submittal compliance against project specifications. Trigger phrases include "review submittal", "check submittal", "submittal compliance", "does this meet spec", "compare to spec", "submittal review", "product data review", "shop drawing review".
From foremanos-doccontrolnpx claudepluginhub mgoodman60/foreman-os-plugin --plugin foremanos-doccontrolThis skill uses the workspace's default tool permissions.
references/compliance-checking.mdreferences/spec-requirement-extraction.mdGuides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Details PluginEval's skill quality evaluation: 3 layers (static, LLM judge), 10 dimensions, rubrics, formulas, anti-patterns, badges. Use to interpret scores, improve triggering, calibrate thresholds.
The submittal-intelligence skill performs comprehensive compliance reviews of submitted product data, shop drawings, and samples against specification requirements from project intelligence. It automates the verification process by:
The skill produces deliverables suitable for direct inclusion in RFI responses, meeting minutes, and project correspondence.
submittal_required (boolean) — indicates if spec section requires submittal reviewkey_req (array) — critical requirements in natural languagetolerances (object) — dimensional and performance tolerancestesting (array) — ASTM, ASHRAE, or other standards for verificationenvironmental (object) — VOC, lead-free, sustainability requirementsdivisions (CSI division codes) — Division 03, 05, 07, 08, 09, etc.When /process-docs processes a submittal package, the compliance matrix should be auto-populated before the user runs /submittal-review:
specs-quality.json, load the relevant spec section requirements for the material type| Spec Requirement | Required Value | Submitted Value | Compliance | Source |
|---|---|---|---|---|
| Compressive strength | ≥4,000 PSI | 4,500 PSI | ✅ PASS | Mix design report p.2 |
| w/c ratio | ≤0.45 | 0.42 | ✅ PASS | Mix design report p.3 |
| Air content | 5-7% | Not provided | ❓ MISSING | — |
This auto-population happens during /process-docs extraction. The /submittal-review command then presents the pre-filled matrix for the superintendent to confirm, override, or supplement with field observations.
When reviewing concrete mix design submittals, refer to the concrete-mix-design-extraction template in the foremanos-intel plugin's document-intelligence skill for detailed extraction guidance (if installed). Key compliance checks:
Synthesize compliance matrix into recommendation:
The submitted [product/material] meets all applicable specification requirements and is approved for [procurement/installation].
The submitted [product/material] meets specification requirements subject to the following conditions/clarifications:
- [Condition 1]: [explanation, deadline, or required action]
- Approval granted pending completion of noted items.
The submitted [product/material] does not meet specification in the following respects:
- [Reference code] [Requirement]: Specification requires [required value]. Submittal provides [submitted value]. [Specific corrective action required].
- [Reference code] [Requirement]: ... Please resubmit with corrections or request formal waiver if waiver is intended.
The submitted [product/material] is not acceptable due to non-compliance with fundamental specification requirements:
- [Critical deficiency 1]
- [Critical deficiency 2] Resubmit with alternative product meeting all spec requirements, or submit formal waiver request for architect/engineer consideration.
The submittal-intelligence skill tracks submittal timelines and flags items at risk of missing critical path deadlines. This system prevents procurement delays, schedule impacts, and last-minute rush approvals.
Working backwards from each submittal's critical path impact:
Timeline Logic:
schedule.json → activities linked to this submittal)Example Calculation:
Activity start date (PEMB erection): 03/23/2026
Minus: PEMB lead time: 30 days
Minus: Fabrication time: Already in PEMB lead time, covered
Minus: Approval cycle (engineered): 4 weeks
Minus: Preparation (drawings ready): 1 week
───────────────────────────────────
Must-submit-by date: 02/02/2026
Three escalating alert levels based on days remaining until must-submit-by date:
| Tier | Days Remaining | Status | Action |
|---|---|---|---|
| CRITICAL | Past due (negative) | Red flag | Submittal missed deadline. Escalate to PM/engineer immediately. Assess schedule impact. May require expedited review or change order. |
| WARNING | 0-7 days | Yellow flag | Due within one week. Verify submittal ready for submission. Confirm with architect review slot reserved. Prepare expedited review package if needed. |
| WATCH | 8-21 days | Blue flag | Due within 3 weeks. Monitor preparation progress. Confirm no blockers (missing data, approvals, samples). Schedule architect review. |
| NORMAL | >21 days | Green | On track. No action needed. Continue normal schedule. |
The /morning-brief command automatically scans submittal-log.json and generates an alert summary:
Query logic:
status != "approved"must-submit-by date working backwards from linked schedule activitiesMorning Brief Output Example:
SUBMITTAL STATUS — ALERTS ONLY (3 items at risk)
🔴 CRITICAL — Past Due
• Nucor PEMB Reaction Drawing (SUB-008)
Status: "under_review" (submitted 02/09, 9 days ago)
Needed by: 02/02 (7 DAYS PAST DUE)
Impact: PEMB erection critical path blocked
Action: Call Nucor today; escalate to CMW architect
🟡 WARNING — Due in 3 Days
• Schiller Door Hardware (SUB-012)
Status: "revision_submitted" (resubmit 02/15)
Needed by: 02/18 (3 days)
Impact: Door procurement dependent
Action: Confirm with architect; hold time slot for review
🔵 WATCH — Due in 18 Days
• Davis & Plomin HVAC Equipment (SUB-015)
Status: "under_review" (submitted 02/10)
Needed by: 03/05 (18 days)
Impact: HVAC procurement, MEP rough-in scheduled 04/27
Action: No urgent action; normal tracking
When reviewing submittals or generating alerts, automatically enrich with data from the project intelligence store. These cross-references improve review accuracy and catch procurement/schedule risks early.
Read procurement-log.json → For each submittal, look up the corresponding procurement entry by submittal_id. Pull expected_delivery, lead_time_weeks, and delivery_status → auto-populate fabrication_days and material_lead_time_days in the submittal record. If procurement entry shows delivery_status = "delayed", escalate the submittal alert tier accordingly.
Read directory.json → subcontractors[] → When a submittal is overdue or needs follow-up, resolve the responsible sub's foreman name, phone, and email from the directory. Auto-fill contact information in alert action items: "Contact {foreman} at {phone} ({sub_name}) to expedite SUB-{id}."
Read specs-quality.json → hold_points[] → For each submittal's spec_section, check if any hold points require submittal approval before the inspection can proceed. Flag linked hold points: "SUB-{id} approval is a prerequisite for hold point HP-{hp_id} ({inspection_name}). Inspection cannot proceed until this submittal is approved."
Read cost-data.json → For submittals linked to critical path activities or high-value budget line items, show the budget amount at risk if approval is delayed. Include in alert output: "Budget line item {division} — {description}: ${amount} at risk if SUB-{id} delays procurement by {N} days."
Read quality-data.json → After a submittal is approved (status = "approved"), link subsequent material test results back to the approved submittal. For example, an approved concrete mix design (SUB-XXX) should be cross-referenced when 7-day and 28-day break results arrive: "Break test results for {mix_id} — 28-day f'c = {value} PSI vs. approved design f'c = {design_value} PSI. Status: {pass/fail}."
Read daily-report-data.json → Flag if materials from a submittal are documented as installed in a daily report before the submittal status = "approved": "WARNING: {material} from SUB-{id} appears installed per daily report #{report_number} on {date}, but submittal status is still '{status}'. Verify approval before installation proceeds."
For lead-time tracking, each submittal in submittal-log.json must include:
{
"id": "SUB-008",
"item": "PEMB Reaction Drawing",
"spec_section": "05 42 00",
"submitting_sub": "Alexander Construction / Nucor",
"status": "under_review",
"submitted_date": "2026-02-09",
"must_submit_by_date": "2026-02-02",
"approval_cycle_days": 4,
"material_lead_time_days": 30,
"fabrication_days": 0,
"preparation_days": 7,
"linked_schedule_activity_id": "A45-PEMB-Erection",
"linked_activity_start_date": "2026-03-23",
"critical_path_blocked": true,
"days_past_due": 7,
"alert_tier": "CRITICAL",
"notes": "Nucor sent initial, needs revisions for anchor bolt details"
}
When a submittal is rejected or returned for revisions, auto-calculate new timeline impact:
Trigger: Submittal status changes from "under_review" to "revise_and_resubmit" or "rejected"
Auto-Calculation:
revision_number (increment from previous)must_submit_by_daterejection_reason from architect's commentsexpected_resubmit_datemust_submit_by_date (if 2nd revision, time is even tighter)Example Rejection Timeline:
SUB-008 PEMB Reaction Drawing (Nucor)
Original submission: 02/09
Original must-submit-by: 02/02 (MISSED by 7 days)
Rejection date: 02/12
Rejection reason: "Anchor bolt embedment depth needs verification per geotechnical report"
Estimated resubmission: 02/15 (3 days for revisions)
New approval cycle: 4 days (expedited given past-due status)
New must-submit-by: 02/19 (16 days past original deadline!)
Action: Flag to PM; assess schedule impact; consider change order if erection delayed
Track each revision with separate entries to maintain history:
In submittal-log.json:
{
"id": "SUB-008",
"item": "PEMB Reaction Drawing",
"revision_history": [
{
"revision_number": 1,
"submitted_date": "2026-02-09",
"status": "revise_and_resubmit",
"rejection_reason": "Anchor bolt embedment depth needs verification per geotechnical report",
"rejection_date": "2026-02-12",
"approval_cycle_days": 4,
"must_submit_by_date": "2026-02-02",
"days_late": 7
},
{
"revision_number": 2,
"submitted_date": "2026-02-15",
"expected_approval_date": "2026-02-19",
"status": "under_review",
"approval_cycle_days": 4,
"must_submit_by_date": "2026-02-19",
"days_late": 17,
"turnaround_time_days": 3,
"notes": "Expedited review requested; geotechnical verification confirmed"
}
],
"current_revision_number": 2,
"total_revisions": 2
}
Cross-reference each submittal with schedule.json critical path to flag items that will block the schedule if delayed:
Linking logic:
spec_section maps to schedule.json material requirementfloat = 0 or < 5 dayscritical_path_blocked = trueExample:
SUB-008 PEMB Reaction Drawing
Linked activity: A45-PEMB-Erection (critical path)
Float: 0 days
Flag: CRITICAL_PATH_BLOCKED = true
Alert priority: Highest — any delay impacts substantial completion
SUB-015 HVAC Equipment Data
Linked activity: A72-MEP-Rough-In (near-critical, float = 5)
Float: 5 days
Flag: CRITICAL_PATH_BLOCKED = false (but near-critical)
Alert priority: Medium — some schedule cushion but tight
Morning Brief (/morning-brief):
status != "approved"Daily Report (/daily-report):