safety-inspection
Digital safety inspection system for construction sites. Checklists, hazard tracking, incident reporting, and compliance documentation.
Install / Use
npx skills add datadrivenconstruction/DDC_Skills_for_AI_Agents_in_Construction --skill safety-inspectionInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
Content & MediaSupported Platforms
Our assessment of safety-inspection
safety-inspection scores 91/100 on our quality scale, 404th of 1,180 Content & Media skills we index (top 35%).
Its SKILL.md is 23 KB long, well organised into 8 sections with 4 code examples: a thorough specification that gives an agent plenty to work with.
It has 333 GitHub stars, a meaningful sign that others use it.
Maintenance, license and trust
- The repository was last updated about 2 months ago, so safety-inspection is actively maintained.
- It is released under the MIT license, a permissive license that allows use, modification and commercial use with attribution.
- Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit β read the skill file before letting an agent act on it.
safety-inspection compared with similar skills
All 4 of these similar skills score higher than safety-inspection; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| safety-inspection (this skill)by datadrivenconstruction | 91 | 333 | 56d ago | SKILL.md |
| Agent-Reachby Panniantong | 100 | 98.3k | 2d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 75.5k | today | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 88.2k | today | MCP Server |
| crawl4aiby unclecode | 100 | 85.7k | 2d ago | MCP Server |
Frequently asked questions
- How do I install safety-inspection?
- Run
npx skills add datadrivenconstruction/DDC_Skills_for_AI_Agents_in_Construction --skill safety-inspection. The install tabs above show the steps for each supported agent. - Which AI agents does safety-inspection work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is safety-inspection safe to use?
- It is MIT-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is safety-inspection still maintained?
- The repository was last updated about 2 months ago, so safety-inspection is actively maintained.
Skill content
View source on GitHubname: "safety-inspection" description: "Digital safety inspection system for construction sites. Checklists, hazard tracking, incident reporting, and compliance documentation." homepage: "https://datadrivenconstruction.io" metadata: {"openclaw": {"emoji": "ποΈ", "os": ["darwin", "linux", "win32"], "homepage": "https://datadrivenconstruction.io", "requires": {"bins": ["python3"]}}}
Safety Inspection System for Construction
Comprehensive digital safety management system for construction sites with inspection checklists, hazard tracking, and incident reporting.
Business Case
Problem: Paper-based safety management leads to:
- Incomplete inspections (20-30% of items skipped)
- Lost documentation
- Delayed incident reporting
- Difficulty tracking corrective actions
- Compliance audit failures
Solution: Digital system that:
- Enforces complete checklist completion
- Photos attached to each finding
- Instant notifications for hazards
- Tracks corrective actions to closure
- Generates compliance reports
ROI: 40% reduction in recordable incidents, 100% audit compliance
Safety Inspection Types
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SAFETY INSPECTION TYPES β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β DAILY WEEKLY SPECIAL β
β βββββββββββββββ βββββββββββββββ βββββββββββββββ β
β β Pre-Work β β Area Walk β β Pre-Pour β β
β β β’ Housekeepingβ β β’ Fire ext. β β β’ Formwork β β
β β β’ PPE β β β’ First aid β β β’ Shoring β β
β β β’ Equipment β β β’ Scaffolds β β βββββββββββββββ β
β βββββββββββββββ β β’ Trenches β βββββββββββββββ β
β βββββββββββββββ βββββββββββββββ β Crane Setup β β
β β Toolbox Talkβ βββββββββββββββ β β’ Ground β β
β β β’ Topic β β Equipment β β β’ Load chartβ β
β β β’ Attendees β β β’ Cranes β β β’ Rigging β β
β β β’ Sign-off β β β’ Lifts β βββββββββββββββ β
β βββββββββββββββ β β’ Vehicles β βββββββββββββββ β
β βββββββββββββββ βββββββββββββββ β Hot Work β β
β β End of Day β β β’ Permit β β
β β β’ Secured β β β’ Fire watchβ β
β β β’ Barricadesβ βββββββββββββββ β
β βββββββββββββββ β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Data Structure
from dataclasses import dataclass, field
from datetime import datetime, date
from enum import Enum
from typing import List, Optional
import uuid
class HazardSeverity(Enum):
CRITICAL = "Critical" # Immediate danger to life
HIGH = "High" # Serious injury potential
MEDIUM = "Medium" # Injury potential
LOW = "Low" # Minor hazard
OBSERVATION = "Observation" # Best practice
class HazardStatus(Enum):
OPEN = "Open"
IN_PROGRESS = "In Progress"
CORRECTED = "Corrected"
VERIFIED = "Verified Closed"
class InspectionType(Enum):
DAILY_PREWORK = "Daily Pre-Work"
TOOLBOX_TALK = "Toolbox Talk"
AREA_INSPECTION = "Area Inspection"
EQUIPMENT_INSPECTION = "Equipment Inspection"
HOT_WORK_PERMIT = "Hot Work Permit"
CONFINED_SPACE = "Confined Space Entry"
CRANE_LIFT = "Crane/Lift Inspection"
SCAFFOLD = "Scaffold Inspection"
EXCAVATION = "Excavation Inspection"
INCIDENT = "Incident Report"
@dataclass
class Hazard:
hazard_id: str
inspection_id: str
description: str
severity: HazardSeverity
location: str
photo_urls: List[str] = field(default_factory=list)
assigned_to: str = ""
due_date: date = None
status: HazardStatus = HazardStatus.OPEN
corrective_action: str = ""
corrected_date: date = None
corrected_by: str = ""
verification_date: date = None
verified_by: str = ""
@dataclass
class Inspection:
inspection_id: str
inspection_type: InspectionType
project_id: str
date: date
inspector: str
location: str
checklist_items: List[dict] = field(default_factory=list)
hazards_found: List[Hazard] = field(default_factory=list)
overall_rating: str = "" # Pass/Fail/Conditional
notes: str = ""
photos: List[str] = field(default_factory=list)
signatures: List[dict] = field(default_factory=list)
weather: str = ""
created_at: datetime = field(default_factory=datetime.now)
@dataclass
class Incident:
incident_id: str
project_id: str
date: datetime
type: str # Near Miss, First Aid, Recordable, Lost Time
description: str
location: str
injured_party: str = ""
witness_names: List[str] = field(default_factory=list)
immediate_actions: str = ""
root_cause: str = ""
corrective_actions: str = ""
reported_by: str = ""
photos: List[str] = field(default_factory=list)
osha_recordable: bool = False
days_away: int = 0
days_restricted: int = 0
Python Implementation
import pandas as pd
from datetime import datetime, date, timedelta
from typing import List, Dict, Optional
import json
import os
class SafetyManager:
"""Construction site safety management system"""
def __init__(self, project_id: str, storage_path: str = None):
self.project_id = project_id
self.storage_path = storage_path or f"safety_{project_id}"
self.inspections: Dict[str, Inspection] = {}
self.hazards: Dict[str, Hazard] = {}
self.incidents: Dict[str, Incident] = {}
# Load checklists
self.checklists = self._load_checklists()
def _load_checklists(self) -> Dict[str, List[dict]]:
"""Load inspection checklists"""
return {
InspectionType.DAILY_PREWORK.value: [
{"id": "DP01", "item": "Work area clean and organized", "category": "Housekeeping"},
{"id": "DP02", "item": "Walking surfaces clear of debris", "category": "Housekeeping"},
{"id": "DP03", "item": "All workers have required PPE", "category": "PPE"},
{"id": "DP04", "item": "Hard hats worn in designated areas", "category": "PPE"},
{"id": "DP05", "item": "Safety glasses worn where required", "category": "PPE"},
{"id": "DP06", "item": "High-visibility vests worn", "category": "PPE"},
{"id": "DP07", "item": "Fall protection in use above 6 feet", "category": "Fall Protection"},
{"id": "DP08", "item": "Guardrails/covers on floor openings", "category": "Fall Protection"},
{"id": "DP09", "item": "Ladders in good condition", "category": "Equipment"},
{"id": "DP10", "item": "Extension cords not damaged", "category": "Electrical"},
{"id": "DP11", "item": "GFCIs in use for power tools", "category": "Electrical"},
{"id": "DP12", "item": "Fire extinguishers accessible", "category": "Fire Safety"},
{"id": "DP13", "item": "Emergency exits clear", "category": "Emergency"},
{"id": "DP14", "item": "First aid kit stocked", "category": "Emergency"},
{"id": "DP15", "item": "SDS sheets available", "category": "Hazcom"},
],
InspectionType.SCAFFOLD.value: [
{"id": "SC01", "item": "Base plates/mudsills in place", "category": "Foundation"},
{"id": "SC02", "item": "All legs plumb and level", "category": "Structure"},
{"id": "SC03", "item": "Cross bracing complete", "category": "Structure"},
{"id": "SC04", "item": "Planking fully decked", "category": "Platform"},
{"id": "SC05", "item": "No gaps >1 inch between planks", "category": "Platform"},
{"id": "SC06", "item": "Guardrails at 42 inches", "category": "Guardrails"},
{"id": "SC07", "item": "Midrails at 21 inches", "category": "Guardrails"},
{"id": "SC08", "item": "Toeboards installed", "category": "Guardrails"},
{"id": "SC09", "item": "Access ladder provided", "category": "Access"},
{"id": "SC10", "item": "Tied to structure every 26 feet vertical", "category": "Ties"},
{"id": "SC11", "item": "Inspection tag current", "category": "Documentation"},
{"id": "SC12", "item": "Competent person inspection today", "category": "Documentation"},
],
InspectionType.EXCAVATION.value: [
{"id": "EX01", "item": "Excavation permit obtained", "category": "Permits"},
{"id": "EX02", "item": "Utilities located and marked", "category": "Utilities"},
{"id": "EX03", "item": "Competent person on site", "category": "Supervision"},
{"id": "EX04", "item": "Soil classification completed", "category": "Soil"},
{"id": "EX05", "item": "Appropriate protective system in place", "category": "Protection"},
{"id": "EX06", "item": "Spoil pile 2+ feet from edge", "category": "Housekeeping"},
{"id": "EX07", "item": "Ladder within 25 feet of workers", "category": "Egress"},
{"id": "EX08", "item": "Barricades around excavation", "category": "Protection"},
{"id": "EX09", "item": "Water accumulation addressed", "category": "Conditions"},
{"id": "EX10", "item": "Atmosphere tested if >4 feet", "category": "Air Quality"},
],
}
def create_inspection(
self,
inspection_type: InspectionType,
inspector: str,
location: str,
weather: str = ""
) -> Inspection:
"""Create new inspection"""
inspection_id = f"INS-{datetime.now().strftime('%Y%m%d%H%M%S')}"
# Get checklist for this type
checklist = self.checklists.get(inspection_type.value, [])
checklist_items = [
{**item, "result": None, "notes": "", "photo": None}
for item in checklist
]
inspection = Inspection(
inspection_id=inspection_id,
inspection_type=inspection_type,
project_id=self.project_id,
date=date.today(),
inspector=inspector,
location=location,
checklist_items=checklist_items,
weather=weather
)
self.inspections[inspection_id] = inspection
return inspection
def complete_checklist_item(
self,
inspection_id: str,
item_id: str,
result: str, # "Pass", "Fail", "N/A"
notes: str = "",
photo_url: str = None
) -> Inspection:
"""Complete a checklist item"""
inspection = self.inspections.get(inspection_id)
if not inspection:
raise ValueError(f"Inspection {inspection_id} not found")
for item in inspection.checklist_items:
if item["id"] == item_id:
item["result"] = result
item["notes"] = notes
item["photo"] = photo_url
break
# If failed, prompt for hazard creation
if result == "Fail":
print(f"β οΈ Item {item_id} failed - create hazard record")
return inspection
def add_hazard(
self,
inspection_id: str,
description: str,
severity: HazardSeverity,
location: str,
assigned_to: str = "",
due_date: date = None,
photo_urls: List[str] = None
) -> Hazard:
"""
Truncated for display β read the full file on GitHub.
Related Skills
Agent-Reach
98.3kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu β one CLI, zero API fees.
headroom
75.5kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
Scrapling
88.2kπ·οΈ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
crawl4ai
85.7kOpen-source web crawler and scraper for LLMs and AI agents: any website into clean, LLM-ready Markdown. Run it yourself, or use Crawl4AI Cloud with one key.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit β see the Safety scan above for what the skill file itself contains.
