Use this skill when processing conversational field input from a superintendent via /log. Handles natural language classification, section assignment, entity resolution, and enrichment of field observations into structured daily report data. Also handles reviewing and clearing the intake log. Trigger phrases: "log this", "just got back from site", "here's what happened today", or any casual construction field observation. Review triggers: "show my log", "what's logged", "review today's entries", "what have I logged", "show logged entries", "review the log". Clear triggers: "clear the log", "start over", "wipe today's log", "reset the log", "clear my entries".
Transform casual, natural-language field observations from a construction superintendent into structured daily report data. The superintendent talks; the system classifies, enriches, and stores.
Superintendents type like they talk — fast, informal, abbreviation-heavy. They're on a job site, not at a desk. The intake system must:
Every piece of input maps to one or more daily report sections. Use these signals:
Signals: temperature, weather words (rain, snow, wind, sun, hot, cold, muddy, frozen, wet, dry), site condition descriptions, work stoppages due to weather Examples: "rained all morning", "35 degrees at 7am", "site is a mud pit", "wind picked up around 2"
Signals: company names, trade names, headcounts, work descriptions, action verbs (poured, framed, hung, pulled, set, installed, stripped, backfilled, graded, excavated, welded) Examples: "Walker had 6 guys doing backfill", "electricians pulling wire on 2", "poured footings at grid C"
Signals: delivery verbs (delivered, showed up, arrived, received, got), material names (concrete, rebar, steel, lumber, drywall, pipe, duct, roofing), supplier names, quantities, conditions (good, damaged, wrong, short) Examples: "got 12 tons of rebar from Harris", "concrete truck showed up at 9", "wrong pipe delivered"
Signals: equipment names (excavator, crane, loader, bobcat, roller, lift, forklift, generator, pump, compressor), status words (down, broken, idle, mobilized, demobilized), hours Examples: "excavator broke down after lunch", "new crane coming tomorrow", "roller ran all day"
Signals: phase mentions, percent complete, milestone references, delay language (behind, ahead, on track, delayed, pushed back, accelerated, slipped), coordination mentions Examples: "we're at about 20% now", "foundation should be done by Friday", "steel delivery pushed to next week"
Signals: delay language with impact/cause — stopped work, couldn't work, shut down, held up, waiting on, standby, suspended, out of sequence, no-showed, can't proceed, blocked by, on hold Captures: delay_type, description, activities_impacted, estimated_duration, critical_path_impact, linked_delay_id, responsible_party, supporting_references
Classification rule: When input describes work being prevented, stopped, or impacted by an external cause, classify as BOTH the relevant work section (crew, equipment, etc.) AND as a delay_event. The delay event captures the cause, duration, and impact; the work section captures the effect on the crew/schedule.
Delay type classification: Match to one of 8 standard categories:
Signals: visitor language (came by, stopped by, was here, visited), inspector mentions, inspection types (footing, framing, rough-in, final, special, compaction), results (passed, failed, conditional) Examples: "inspector came at 10, passed the footings", "owner walked the site", "fire marshal stopped by"
Signals: image uploads attached to the message Action: Analyze the photo content and classify it into the appropriate section
Signals: anything that doesn't clearly fit another section — conversations, coordination items, upcoming work, RFI mentions, directives, observations Examples: "talked to the architect about the stair detail", "need to get the crane permit sorted", "tomorrow we're doing the pre-pour meeting"
A single user message often contains information for multiple sections. Parse each piece separately:
Input: "Walker had 6 guys backfilling the east side, got a load of structural fill from Martin Marietta, and the compaction tester came out and we passed"
Classification:
When project intelligence is loaded, resolve casual references to official data:
sub_matched: false in the entry, and flag for resolution during report-qa. The report-qa skill will attempt fuzzy matching and auto-correction; the intake step only flags, never auto-corrects unmatched names.When a work type is identified from the intake entry (e.g., "poured footings", "hung drywall", "pulled wire"):
specs-quality.json → spec_sections[] → find the matching CSI section for the work typeWhen an activity is mentioned in an intake entry:
schedule.json → critical_path[] → check if the logged activity matches a critical path itemcritical_path: true flag to the intake entry for emphasis in the daily reportWhen outdoor work is logged AND weather has been reported for today:
specs-quality.json → weather_thresholds[] → match the work typeWhen work with measurable output is logged (concrete poured, flooring installed, outlets wired):
plans-spatial.json → quantities → find the total plan quantity for that element typeWhen the logged work type has a hold point in the specs:
specs-quality.json → hold_points[] → match the work typeWhen the user mentions a sub is absent ("nobody from the plumber", "electricians didn't show", "Walker was a no-show", "[sub] not on site"):
headcount: 0 and work description: "Not on site"expected_subs_missing in the daily summarydelay_event with type: Sub PerformanceIn the report: Absent subs appear in the Crew on Site table with headcount 0 and a note explaining the absence.
When a new intake entry references a sub that already has an entry for today:
Same sub, additional workers or work: Merge into the existing entry. Update headcount (take the higher number unless the user explicitly says "plus", "also", or "more"). Append the new work description.
Same sub, corrected headcount: Replace the old value.
Same sub, different location: Keep as separate line items under the same sub name.
Confirm the merge: "Updated Walker to 8 workers — backfill + grading at east wing. That right?"
Key rule: When in doubt, ask: "Is that 8 total for Walker, or 8 more on top of the 6?"
When project-config.json has claims_mode: true, the intake system captures claims-grade detail on top of standard classification. This enhanced capture supports the claims-documentation skill's evidence requirements.
Crew entries: After logging a sub, prompt: "Claims mode — can you give me names and hours for that crew?"
Equipment entries: After logging equipment, prompt: "Got the [equipment]. Unit number? Any idle or standby time today?"
Material deliveries: After logging a delivery, prompt: "Delivery ticket number? Was it on time?"
Delay events: Always capture the full delay classification when claims mode is active.
Prompting etiquette: Claims-mode prompts follow the same rules as standard prompts — ask one at a time, accept dismissals ("skip", "no", silence), never block the user from continuing to log.
Based on what's been logged so far today, the system can proactively prompt for related information. See references/auto-context.md for the full rule set.
Key principle: suggest, don't require. If the user ignores a prompt, move on.
See references/conversational-flow.md for patterns on handling multi-turn interactions, corrections, and follow-up questions.
See references/edge-cases.md for handling ambiguous input, contradictions, and unusual scenarios.
When the user asks to review today's logged entries ("show my log", "what's logged", "review today's entries"), perform the following:
daily-report-intake.json in the user's working directoryWhen the user asks to clear the intake log ("clear the log", "start over", "wipe today's log", "reset the log"):
daily-report-intake.json in the user's working directorydaily-report-intake-{YYYY-MM-DD}-cleared.json (entries aren't permanently lost){
"date": "YYYY-MM-DD",
"entries": []
}
references/intake-schema.md — JSON schema for intake log entriesreferences/classification-examples.md — 50+ classification examples for trainingreferences/auto-context.md — proactive prompting rulesreferences/conversational-flow.md — multi-turn interaction patternsreferences/proactive-prompting.md — smart follow-up question rulesreferences/edge-cases.md — handling ambiguous and unusual input