incident-reporting
Last edited 3h ago by seed
RC
Edit skill
Description — one line, tells Larry when to use this skill
H&S incident and near-miss reporting for Formia Group via Slack DM. Use this skill whenever a staff member reports an incident, injury, near-miss, hazard, accident, or safety concern to Larry. Also trigger when management asks about incident history, when running incident reports, or when someone mentions something went wrong on site. Trigger for phrases like 'I hurt myself', 'there was an accident', 'near miss', 'someone got injured', 'safety incident', 'hazard', 'something happened in the workshop', 'cut my hand', 'machine jammed', or any description of a workplace safety event.
SKILL.md — full markdown including frontmatter
--- name: incident-reporting description: "H&S incident and near-miss reporting for Formia Group via Slack DM. Use this skill whenever a staff member reports an incident, injury, near-miss, hazard, accident, or safety concern to Larry. Also trigger when management asks about incident history, when running incident reports, or when someone mentions something went wrong on site. Trigger for phrases like 'I hurt myself', 'there was an accident', 'near miss', 'someone got injured', 'safety incident', 'hazard', 'something happened in the workshop', 'cut my hand', 'machine jammed', or any description of a workplace safety event." --- # Formia Group — Incident Reporting This skill handles workplace incident and near-miss reporting through Larry's Slack DMs, creating a proper paper trail and ensuring the right people are notified immediately. ## Why This Matters Under NZ's Health and Safety at Work Act 2015, employers must record and investigate workplace incidents. A "notifiable event" (serious injury, illness, or death) must be reported to WorkSafe NZ. Having a fast, easy reporting channel through Larry means incidents get logged immediately rather than days later when details are fuzzy. ## Workflow ### Step 1: Staff Reports an Incident Someone DMs Larry: - "Hey Larry, I just cut my hand on the saw" - "Near miss in the workshop — a piece kicked back off the table saw" - "Someone slipped on the wet floor near the spray booth" ### Step 2: Larry Gathers Details Larry responds with empathy first, then gathers information: > "Are you OK? That sounds rough. Let me get this logged properly — can you tell me a few things: > > 1. What happened? > 2. When did it happen (roughly)? > 3. Where exactly? (which machine/area) > 4. Was anyone injured? If so, how seriously? > 5. Has the area been made safe? Don't interrogate — if someone is hurt, the priority is their wellbeing. Get what you can and follow up later for details. If it sounds like a medical emergency, immediately say: "If anyone needs medical help right now, call 111 first — we can sort the paperwork after." ### Step 3: Log the Incident — use `incident.log`, do NOT touch Drive The H&S register lives in Postgres (`incidents` table), which is what the `/incidents` dashboard reads. The old Drive JSON (`PKA/business/hs-compliance/incident-log.json`) is deprecated — do not write to it. Every write goes through the `incident.log` MCP tool. ```text incident.log({ reportedBy: "Sam Gaskin", // staff name or Slack ID; tool resolves to entity company: "BWJ", // BWJ | SRJ | Formia severity: "near-miss", // near-miss | first-aid | medical | lost-time | property | other description: "Kickback off table saw while ripping 18mm MR MDF — no injury. Area stopped, cleared.", location: "BWJ workshop — table saw", // optional but include when known reportedAt: "2026-04-24T10:30:00+12:00" // optional ISO; defaults to now }) ``` Severity levels and when to pick each: | Severity | When to pick | |---|---| | `near-miss` | No injury, no damage, but could have been serious | | `first-aid` | Minor treatable on-site (bandage, plaster, eye wash) | | `medical` | GP or hospital visit — no lost time | | `lost-time` | Injury requiring time off work — often WorkSafe-notifiable | | `property` | Damage to kit / vehicle / building | | `other` | Policy breach, anonymous H&S concern, etc. | When in doubt, pick the more serious tier — easier to downgrade in a follow-up than to under-report a notifiable event. When the investigation / follow-up is complete, close the incident out with: ```text incident.resolve({ id: "<uuid from incident.log>", resolutionNotes: "First aid given; toolbox talk on kickback risks scheduled for 2026-04-25.", resolvedAt: "2026-04-24T11:00:00+12:00" // optional; defaults to now }) ``` Use `incident.list({company?, severity?, unresolvedOnly?})` for reads — "show me unresolved", "what's happened at SRJ this month", etc. ### Step 3.5: Cross-reference leave-management — MANDATORY when time off is mentioned If the description (or anything the reporter said in chat) mentions the injured person being unable to work for some period — **"X days off", "X weeks off", "won't be in tomorrow", "can't come in until [date]", "needs X weeks recovery", "off work for …", "medical leave for …", "laid up for …"** — you MUST also file a leave request via `leave.request`. An incident that takes someone out of work is **two records, not one**: an `incident.log` row AND a `leave.request` row. The `incident.log` tool will detect time-off phrasing in the description and return a `leaveRequestRequired` field in its response. When you see that field, treat it as a hard directive — do not end the turn until you have called `leave.request`. Workflow: 1. Identify who's actually off — usually the same as `reportedBy`, but for third-party reports ("Sam slipped on the wet floor") it's the *injured* person, not the reporter. 2. Confirm the duration and leave type with the reporter (sick is the default for an injury; LWOP if the person is out of sick balance; annual if they want to use it that way). Use the same explicit-confirmation flow as the regular leave-management workflow — never silently assume the type. 3. Call `leave.request` with `staff`, `leaveType`, `fromDate`, `workingDays`, `company`, and a `notes` field that references the incident id (e.g. `notes: "Linked to incident <uuid> — forklift foot injury"`). 4. If LWOP or annual leave is needed, the request goes to the manager for approval like any other request — Ben for BWJ, Mark for SRJ. Sick leave auto-logs. 5. In the user-visible reply, surface BOTH actions and BOTH proof links: > "Logged the incident (`/incidents#…`) and filed sick leave for X working days (`LR-N`, `/leave#…`). I've notified [Mark/Ben]." Never tell the user the incident is "all sorted" while a leave request implied by the description is still missing. That's the same gap that caused the 2026-04-23 test forklift miss. ### Step 4: Notify Management Immediately As soon as the incident is logged: **ALL incidents — regardless of severity or company:** - DM **Mark Bidlake** (U08T17B0MDH) immediately. Mark receives every incident report across both BWJ and SRJ as Formia Group's H&S lead. - DM the reporting staff member's direct manager (Ben for BWJ, Mark for SRJ — for SRJ incidents Mark already has the notification above, so no duplicate needed). **For injuries or high/critical severity:** - DM Rohan (U07K4CYNH9B) immediately in addition to the above. - If it's potentially notifiable (serious injury, hospitalisation), flag clearly: "This may be a notifiable event under HSWA — WorkSafe notification may be required within 48 hours." **For near-misses or low severity:** - Include in the next daily/weekly summary to Rohan. ### Step 5: Follow Up - If investigation is required, add it to the manager's task list - Check back with the reporter after 24 hours: "Hey [Name], just checking in — how are you going after yesterday? Has anything else come up about it?" - If corrective actions are identified, track them to completion ### Step 6: File Attachments If the reporter sends photos or documents via Slack DM: - Use the Slack API to download the file - Save to `health & saftey/Incident Reports/[INC-XXX]/` - Link the file in the incident record ## Severity Classification - **Low**: No injury, no damage, minor hazard. E.g. wet floor, untidy cables. - **Medium**: Minor injury (first aid only) or significant near-miss. E.g. small cut, piece kicked back. - **High**: Injury requiring medical treatment, or a near-miss that could have caused serious harm. E.g. deep laceration, forklift near-miss with pedestrian. - **Critical**: Serious injury, hospitalisation, or death. Likely a notifiable event. ## Notifiable Events (WorkSafe NZ) Under HSWA 2015, the following must be reported to WorkSafe: - Death - Notifiable injury or illness (amputation, head injury, serious burns, spinal injury, loss of consciousness, hospitalisation for 48+ hours) - Notifiable incident (uncontrolled explosion, fire, gas escape, collapse of structure, etc.) If Larry identifies a potentially notifiable event: 1. Flag immediately to Rohan with "URGENT — POTENTIALLY NOTIFIABLE" 2. Remind: "The site must be preserved. Don't disturb the scene unless it's to help an injured person or make the area safe." 3. Note: WorkSafe must be notified as soon as possible — there are existing QR code forms for both BWJ and SRJ in `health & saftey/H&S Forms Misc/` ## Existing Incident Forms Reference forms already in the workspace: - **Event Register**: `health & saftey/H&S Forms Misc/6. HSS Event Register Editable Jan 2025.docx` - **Event Investigation**: `health & saftey/H&S Forms Misc/7. Event Investigation Editable Jan 2025.docx` - **BWJ QR Code**: `health & saftey/H&S Forms Misc/Injury Incident Notification QR code - BWJoinery.pdf` - **SRJ QR Code**: `health & saftey/H&S Forms Misc/Injury & Incident Notification QR code - Sellers Room Joinery.pdf` ## Reports ### Weekly Incident Report to Mark Every Monday morning, send Mark Bidlake (U08T17B0MDH) a Slack DM summarising the past 7 days. This runs as a scheduled task (`weekly-incident-report`). Format: > **Weekly H&S Incident Report — [date range]** > > **New incidents this week:** [count] ([X] BWJ, [Y] SRJ) > **Open investigations:** [count] > **Overdue follow-up actions:** [count] > > | # | Date | Company | Type | Severity | Description | Status | > |---|------|---------|------|----------|-------------|--------| > | INC-XXX | 2026-04-07 | BWJ | Near miss | Medium | Table saw kickback | Under investigation | > > **Trends / notes:** [any patterns, recurring issues, or overdue items flagged] If there were no incidents that week, still send a short confirmation: "No incidents reported this week across BWJ or SRJ. All clear." ### On Request Management or Rohan asks for incident history: - Summarise all incidents by type, severity, and company - Highlight trends (e.g. recurring issues with a specific machine) - List open investigations and pending follow-up actions ### Monthly Include incident summary in the monthly activity report: - Number of incidents by type - Open vs resolved - Any overdue follow-up actions ## Access Control - **Basic staff**: Can report incidents and see their own reports. Cannot see other people's incidents. - **Management**: Can see all incidents for both companies. Can update investigation status and actions. - **Superadmin**: Full access. ## Larry's Tone Empathetic and calm. If someone's hurt, lead with concern — "Are you OK?" comes before "What happened?" Never blame the reporter. Make it clear that reporting is a good thing, not something to be afraid of. The goal is a culture where people report near-misses willingly because they know it makes the workshop safer for everyone.
Save
Archive