Claude
Skills
Sign in
Back

safety-inspection-checklist

Included with Lifetime
$97 forever

Digital safety inspection checklists for construction sites. Generate, conduct, and track safety inspections with automated reporting and compliance monitoring.

Data & Analytics

What this skill does

# Safety Inspection Checklist

## Overview

Digital safety inspection checklists streamline site safety management. Generate inspection forms, conduct mobile inspections, track findings, and automate compliance reporting.

> "Digital checklists reduce inspection time by 60% and improve compliance tracking" — DDC Community

## Why Digital Checklists?

| Feature | Benefit |
|---------|---------|
| Mobile-first | Inspect anywhere on site |
| Photo documentation | Visual evidence attached |
| Real-time sync | Immediate notification of issues |
| Automated reports | Weekly/monthly summaries |
| Trend analysis | Identify recurring hazards |
| Compliance tracking | OSHA/local regulation alignment |

## Architecture

```
┌─────────────────────────────────────────────────────────────────┐
│                SAFETY INSPECTION SYSTEM                          │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  Templates         Mobile App           Backend                  │
│  ─────────         ──────────           ───────                  │
│                                                                  │
│  📋 OSHA forms  →  📱 Conduct    →   💾 Store                   │
│  🏗️ Site-specific   📸 Photos        📊 Analyze                 │
│  ⚡ Quick checks    📍 Location       📧 Alert                   │
│                     ✅ Sign-off       📈 Report                  │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘
```

## Technical Implementation

```python
from dataclasses import dataclass, field
from typing import List, Dict, Optional
from enum import Enum
from datetime import datetime
import json

class InspectionType(Enum):
    DAILY_SITE = "daily_site"
    WEEKLY_SAFETY = "weekly_safety"
    SCAFFOLD = "scaffold"
    EXCAVATION = "excavation"
    ELECTRICAL = "electrical"
    CRANE_LIFT = "crane_lift"
    HOT_WORK = "hot_work"
    CONFINED_SPACE = "confined_space"
    FALL_PROTECTION = "fall_protection"

class FindingSeverity(Enum):
    CRITICAL = "critical"      # Stop work immediately
    MAJOR = "major"            # Correct within 24 hours
    MINOR = "minor"            # Correct within 1 week
    OBSERVATION = "observation" # Best practice recommendation

class FindingStatus(Enum):
    OPEN = "open"
    IN_PROGRESS = "in_progress"
    CORRECTED = "corrected"
    VERIFIED = "verified"

@dataclass
class ChecklistItem:
    id: str
    category: str
    question: str
    regulation_ref: str = ""
    guidance: str = ""
    requires_photo: bool = False
    critical: bool = False

@dataclass
class InspectionFinding:
    item_id: str
    status: str  # pass, fail, na
    severity: Optional[FindingSeverity] = None
    description: str = ""
    photo_urls: List[str] = field(default_factory=list)
    location: str = ""
    assigned_to: str = ""
    due_date: Optional[datetime] = None
    corrective_action: str = ""
    finding_status: FindingStatus = FindingStatus.OPEN

@dataclass
class SafetyInspection:
    id: str
    inspection_type: InspectionType
    project_id: str
    project_name: str
    location: str
    inspector: str
    date: datetime
    weather: str
    workers_on_site: int
    findings: List[InspectionFinding] = field(default_factory=list)
    overall_score: float = 0.0
    signed_off: bool = False
    sign_off_by: str = ""

class SafetyInspectionManager:
    """Manage construction safety inspections."""

    # OSHA-aligned checklist templates
    CHECKLIST_TEMPLATES = {
        InspectionType.DAILY_SITE: [
            ChecklistItem("DS001", "General", "Site access controlled and secure?", "1926.20"),
            ChecklistItem("DS002", "General", "Emergency exits clear and marked?", "1926.34"),
            ChecklistItem("DS003", "Housekeeping", "Work areas clean and organized?", "1926.25"),
            ChecklistItem("DS004", "Housekeeping", "Waste properly disposed?", "1926.25"),
            ChecklistItem("DS005", "PPE", "All workers wearing required PPE?", "1926.28", critical=True),
            ChecklistItem("DS006", "PPE", "Hard hats worn in designated areas?", "1926.100"),
            ChecklistItem("DS007", "Fall Protection", "Guardrails in place at open edges?", "1926.502", critical=True),
            ChecklistItem("DS008", "Fall Protection", "Floor openings covered/protected?", "1926.502"),
            ChecklistItem("DS009", "Electrical", "No exposed wiring or damaged cords?", "1926.405"),
            ChecklistItem("DS010", "Electrical", "GFCIs in use for power tools?", "1926.404"),
            ChecklistItem("DS011", "Fire", "Fire extinguishers accessible?", "1926.150"),
            ChecklistItem("DS012", "Fire", "Hot work permits in place?", "1926.352"),
            ChecklistItem("DS013", "Equipment", "Equipment inspected before use?", "1926.20"),
            ChecklistItem("DS014", "Scaffolding", "Scaffolds properly erected?", "1926.451"),
            ChecklistItem("DS015", "Excavation", "Excavations properly sloped/shored?", "1926.652", critical=True),
        ],
        InspectionType.SCAFFOLD: [
            ChecklistItem("SC001", "Foundation", "Base plates on solid foundation?", "1926.451(c)"),
            ChecklistItem("SC002", "Foundation", "Mudsills adequate for load?", "1926.451(c)"),
            ChecklistItem("SC003", "Erection", "Plumb and level?", "1926.451(c)"),
            ChecklistItem("SC004", "Erection", "Cross bracing installed?", "1926.451(c)"),
            ChecklistItem("SC005", "Platforms", "Fully planked (no gaps >1 inch)?", "1926.451(b)"),
            ChecklistItem("SC006", "Platforms", "Planks secured against movement?", "1926.451(b)"),
            ChecklistItem("SC007", "Guardrails", "Top rail at 42 inches?", "1926.451(g)"),
            ChecklistItem("SC008", "Guardrails", "Mid-rail installed?", "1926.451(g)"),
            ChecklistItem("SC009", "Guardrails", "Toeboards at open edges?", "1926.451(h)"),
            ChecklistItem("SC010", "Access", "Safe access provided (ladder, stairs)?", "1926.451(e)"),
            ChecklistItem("SC011", "Capacity", "Load rating posted?", "1926.451(f)"),
            ChecklistItem("SC012", "Inspection", "Competent person inspection tag?", "1926.451(f)"),
        ],
        InspectionType.EXCAVATION: [
            ChecklistItem("EX001", "Planning", "Dig permit obtained?", "1926.651"),
            ChecklistItem("EX002", "Planning", "Utilities located and marked?", "1926.651(b)", critical=True),
            ChecklistItem("EX003", "Soil", "Soil classification completed?", "1926.652(a)"),
            ChecklistItem("EX004", "Protection", "Proper sloping/benching?", "1926.652(b)"),
            ChecklistItem("EX005", "Protection", "Shoring/shielding in place?", "1926.652(c)"),
            ChecklistItem("EX006", "Access", "Safe access within 25 feet?", "1926.651(c)"),
            ChecklistItem("EX007", "Spoils", "Spoils 2+ feet from edge?", "1926.651(j)"),
            ChecklistItem("EX008", "Water", "Water accumulation controlled?", "1926.651(h)"),
            ChecklistItem("EX009", "Atmosphere", "Hazardous atmosphere tested?", "1926.651(g)"),
            ChecklistItem("EX010", "Inspection", "Daily inspection by competent person?", "1926.651(k)"),
        ],
    }

    def __init__(self):
        self.inspections: Dict[str, SafetyInspection] = {}
        self.findings_db: List[InspectionFinding] = []

    def create_inspection(self, inspection_type: InspectionType,
                         project_id: str, project_name: str,
                         location: str, inspector: str,
                         weather: str = "", workers: int = 0) -> SafetyInspection:
        """Create new inspection from template."""
        inspection_id = f"INS-{datetime.now().strftime('%Y%m%d%H%M%S')}"

        inspection = SafetyInspection(
            id=inspection_id,
            inspection_type=inspection_type,
            pr

Related in Data & Analytics