This skill should be used when the user asks to "create a daily report", "generate a daily report", "write today's report", "fill out the daily", "do the daily", or needs guidance on construction daily report formatting, section content, or professional construction language standards. Also handles report amendments — trigger phrases: "fix yesterday's report", "amend report", "I need to correct something on a report", "update report #5", "change something on a previous report", "amend the daily".
Generate professional construction daily reports as .docx (Word) files matching the W Principles DailyReport_v5_Fillable.docx template. Apply AI-powered language standardization, automatic photo captioning, and smart photo placement. Optional PDF export via LibreOffice conversion.
Four-row, four-column table at the top of every report. Fields: Project name, Date, Project No, Report No, Client, Superintendent, Architect, Project Manager. Pull from saved project config if available (see Project Config below).
Section header bar with blue accent (#2E5EAA left edge, #EDF2F9 background). Three-column table: Time | Temperature | Conditions. Standard rows: 7:00 AM, 12:00 PM, 4:00 PM. Below the table, include a narrative paragraph about site conditions (ground conditions, wind, precipitation impact on work).
Below the weather table, include a narrative paragraph about site conditions:
Narrative rules:
Table: Subcontractor | Headcount | Work Performed. Include a TOTAL row summing headcount. Leave empty rows for additional subs (template has 10 rows total). Standardize "Work Performed" into professional construction language.
Table: Material | Supplier | Quantity | PO # | Condition. Use "Good" as default condition unless noted otherwise. If no materials received, write "No material deliveries today."
Table: Equipment | Owner/Sub | Hours | Status. Status options: Active, Idle, Down. If equipment is down, note reason in parentheses.
Fields: Current Phase, Percent Complete (estimate), Upcoming Milestones (next 2 weeks), Delays/Impacts (with cause and duration). Use professional language: "schedule impact" not "we're behind."
Table: Name | Organization | Purpose | Time In | Time Out | Result. Result column for inspections: Pass, Fail, Conditional, N/A. If no visitors, write "No visitors or inspections today."
Embed photos with AI-generated captions. Smart placement rules in references/photo-guidelines.md. Each photo gets: a descriptive caption, location reference (grid line, building area, floor level), and compass direction if determinable.
Open narrative section for anything not covered above: conversations with subs, owner directives, RFI status updates, upcoming coordination needs, site condition observations.
If delay events were logged via /log or identified during report collection, include them in the Schedule Updates section with structured documentation:
Format: "[Description of impact]. Delay type: [type]. Duration: [estimated]. See DELAY-[NNN]."
Example: "Concrete placement at east wing foundation delayed due to ambient temperature of 32°F, below the 40°F cold weather threshold per Section 03 30 00. Delay type: Weather. Estimated duration: 2 days. See DELAY-003."
Integration: Delay events documented here are automatically linked to delay-log.json entries for delay-tracker consumption. If a matching DELAY-NNN entry already exists, reference it. If this is a new delay event, the daily report command will create a new entry.
Claims mode enhancement: When claims mode is active, include additional detail: specific start/stop times of work stoppage, workers and equipment affected by name/unit number, activities impacted with schedule IDs, and critical path impact assessment.
Rewrite all user input into professional construction daily report language. See references/language-standards.md for patterns. Key principles:
When project-config.json has claims_mode: true, apply claims-grade documentation standards on top of standard professional language:
Standard mode remains the default. Claims mode enhances but does not replace the standard report format.
When the user uploads photos, analyze content to determine subject, location clues, condition, and visible work. Generate professional captions and place in the most relevant report section. See references/photo-guidelines.md for the full captioning rules, smart placement logic, tiebreaker rules, and sizing specifications.
Report Numbering: Format {PROJECT_CODE}-{NNN}. Auto-increments with duplicate prevention and immediate write-back to prevent collisions. See the /daily-report command (Step 1, Report Number Assignment) for the full assignment and locking procedure.
Match the W Principles DailyReport_v5_Fillable.docx template exactly. Detailed specs in references/template-spec.md.
docx npm library (docx-js)WidthType.DXA — never WidthType.PERCENTAGE (breaks in Google Docs)columnWidths on each table AND width on each cellShadingType.CLEAR — never SOLIDParagraph elements — never \nLevelFormat.BULLET for lists — never unicode bulletsImageRun requires type parameter (png, jpg, etc.)Check for AI - Project Brain/company_logo.png first; if not found, extract from the DailyReport template .docx. See references/template-spec.md (Logo Handling section) for the full procedure, fallback behavior, and exact EMU sizing (2085975 × 638175 EMU ≈ 2.29" × 0.70").
Read from multiple data files in the user's working directory:
Auto-fills the report header — project name, code, number, team, report numbering. Located in project-config.json at project_basics.
Deep project knowledge extracted from project documents. Located in multiple files:
project-config.json — Project basics, report tracking, folder mapping, documents loaded, version historyplans-spatial.json — Grid lines, building areas, floor levels, room schedule, site layout, sheet cross-references, quantities, site utilitiesspecs-quality.json — Spec sections, key materials, weather thresholds, hold points, tolerances, contract, safety, SWPPP, geotechnical, mix designsschedule.json — Milestones, critical path, near-critical, weather-sensitive activities, long-lead itemsdirectory.json — Subcontractors, subcontractor assignments, vendor database, owner reportsinspection-log.json — Scheduled/completed inspections, permit status, re-inspection items. Use to: flag inspections required for today's work, note pending permits, include inspection results in the report narrative.rfi-log.json — Open RFIs and their status. Use to: note when today's work is impacted by an open RFI, include RFI closures in the report, flag overdue RFIs (>14 days).submittal-log.json — Submittal status and lead times. Use to: note when work is waiting on submittal approval, flag critical-path submittals approaching deadline.pay-app-log.json — Payment status and schedule of values. Use to: reference percent complete from SOV when reporting progress on major work items.Data is managed by the project-data skill and extracted by the document-intelligence skill.
Use the project-data skill's smart retrieval to pull only relevant intelligence based on the work being documented. Don't load entire files — request data by work type, location, or subcontractor. The project-data skill cross-references related information automatically.
This data powers the smart features:
plans-spatial.json) → Used to add specifics when the user gives general locations. "Poured the east side" becomes "Concrete placed at East Wing, Grid Lines E-G / 1-5."directory.json) → Matches casual sub references to official names. "Walker was here" becomes "Walker Construction (3 workers)."schedule.json) → Adds context to schedule updates. "Foundation work continuing. Foundation Complete milestone: 03/15/2026."specs-quality.json) → Enriches material references. "Poured footings" becomes "Concrete placed per Section 03 30 00, 4000 PSI mix design."plans-spatial.json) → Improves photo captions with direction and area references.specs-quality.json) → Flags required inspections for current work types.plans-spatial.json) → Proper naming for interior work locations.specs-quality.json) → Compares today's weather against spec limits for documented work. Flags cold-weather concrete protocols, wind limits for crane operations, moisture restrictions for roofing, etc.specs-quality.json) → Identifies required inspection stops based on the work being performed. "Concrete placed" triggers a check: was a pre-placement inspection documented?specs-quality.json) → Adds spec-level detail to inspection results and material documentation. Slump ranges, compaction densities, steel erection tolerances.specs-quality.json) → Enriches earthwork documentation with bearing capacity, compaction requirements, and dewatering triggers.specs-quality.json) → Notes when work occurs in fall protection zones, confined spaces, or hot work areas. Adds safety context to crew descriptions.specs-quality.json) → Checks precipitation against inspection triggers. Flags when BMP inspections are required based on rainfall.plans-spatial.json) → When work is reported, include relevant quantities and progress percentages. "Completed VCT in Rooms 007-009: 1,240 SF of 4,800 SF total VCT (26% complete)." "Poured Footings F1-F4: 9.5 CY of 42.3 CY total footings (22% complete)." Source attribution tracks whether quantities came from DXF, visual analysis, takeoff, or text extraction.plans-spatial.json) → When referencing specific plan elements, note which sheets contain the relevant details. "Footing F1 per S2.1, detail on S5.1." This helps the field crew find the right sheet quickly.inspection-log.json) → Cross-checks today's work against required inspections. "Foundation rebar placed — pre-pour inspection scheduled for 2/24." Flags if inspection is overdue or permit not yet obtained.rfi-log.json) → Notes when documented work is affected by pending RFIs. "Framing at corridor partition on hold — RFI-003 (wall type clarification) pending architect response since 2/10." Includes RFI closures received today.submittal-log.json) → Flags when work depends on submittal approvals not yet received. "Door frame installation pending — SUB-001 (HM Doors/Frames) still under review." Notes submittals approved today that unblock upcoming work.If project intelligence exists, ALWAYS use it to enrich the report. If it doesn't exist, generate the report without it — just use whatever details the user provides.
See the project-data skill for the full schema and retrieval patterns. See the document-intelligence skill for how data is extracted from project documents.
After report content is generated but before the .docx is created, the report-qa skill reviews the report against project intelligence. It catches missing inspections, weather threshold conflicts, unrecognized subs, and other gaps. See the report-qa skill for details.
After the .docx is generated, a structured copy of the report data is saved to daily-report-data.json for use by the project-dashboard skill. This enables the Weekly and Project dashboard views. See the project-data skill's report history schema for the data format.
Generate the report as a .docx file using the docx npm library (docx-js). Name format: {M_D_YY}_Daily_Report_{PROJECT_CODE}.docx (e.g., 2_14_26_Daily_Report_MOSC.docx).
After generating the .docx, ask: "Also export as PDF?" If yes, convert using LibreOffice:
python3 {scripts_path}/office/soffice.py --headless --convert-to pdf {docx_path}
Save both the .docx and .pdf to folder_mapping.daily_reports.
When the user asks to amend a previously generated report ("fix yesterday's report", "amend report #5", "I need to correct something"), follow this workflow:
daily-report-data.jsondaily-report-data.json{M_D_YY}_Daily_Report_{PROJECT_CODE}_AMENDED.docxdaily-report-data.json with:
amendments array recording what changed, when, and whyamended_date timestamppre_amendment field for audit trailreferences/template-spec.md — exact dimensions, colors, fonts, and spacingreferences/language-standards.md — professional construction language patterns and examplesreferences/photo-guidelines.md — photo captioning and smart placement rulesreferences/project-intelligence.md — how to extract and use project knowledge from documents