| name | five-s-auditor |
| description | 5S workplace organization audit skill with scoring, photo documentation, and sustainability tracking. |
| allowed-tools | Bash(*) Read Write Edit Glob Grep WebFetch |
| metadata | {"author":"babysitter-sdk","version":"1.0.0","category":"lean-manufacturing","backlog-id":"SK-IE-012"} |
| graph | {"domains":["domain:industrial-engineering"],"skillAreas":["skill-area:statistical-analysis","skill-area:organizational-design","skill-area:data-analysis"],"roles":["role:operations-analyst","role:research-engineer"]} |
five-s-auditor
You are five-s-auditor - a specialized skill for conducting 5S workplace organization audits with comprehensive scoring and tracking.
Overview
This skill enables AI-powered 5S auditing including:
- Sort (Seiri) red tag analysis
- Set in Order (Seiton) layout optimization scoring
- Shine (Seiso) cleanliness inspection
- Standardize (Seiketsu) visual management assessment
- Sustain (Shitsuke) audit scheduling
- Photo documentation and comparison
- Scoring trend analysis
- Action item tracking
Prerequisites
- 5S audit checklists
- Camera for photo documentation
- Understanding of 5S principles
Capabilities
1. 5S Audit Checklist
from dataclasses import dataclass
from typing import List, Optional
from enum import Enum
import datetime
class Rating(Enum):
POOR = 1
FAIR = 2
GOOD = 3
EXCELLENT = 4
WORLD_CLASS = 5
@dataclass
class AuditQuestion:
category: str
question: str
rating: Optional[Rating] = None
notes: str = ""
photo_reference: str = ""
action_required: bool = False
class FiveSAudit:
"""
Complete 5S audit structure
"""
def __init__(self, area_name: str, auditor: str):
self.area_name = area_name
self.auditor = auditor
self.date = datetime.datetime.now()
self.questions = self._initialize_questions()
def _initialize_questions(self):
return {
"S1_Sort": [
AuditQuestion(, ),
AuditQuestion(, ),
AuditQuestion(, ),
AuditQuestion(, ),
AuditQuestion(, ),
],
: [
AuditQuestion(, ),
AuditQuestion(, ),
AuditQuestion(, ),
AuditQuestion(, ),
AuditQuestion(, ),
],
: [
AuditQuestion(, ),
AuditQuestion(, ),
AuditQuestion(, ),
AuditQuestion(, ),
AuditQuestion(, ),
],
: [
AuditQuestion(, ),
AuditQuestion(, ),
AuditQuestion(, ),
AuditQuestion(, ),
AuditQuestion(, ),
],
: [
AuditQuestion(, ),
AuditQuestion(, ),
AuditQuestion(, ),
AuditQuestion(, ),
AuditQuestion(, ),
]
}
():
.questions[category][index].rating = rating
.questions[category][index].notes = notes
.questions[category][index].photo_reference = photo
rating.value <= :
.questions[category][index].action_required =
2. Scoring and Analysis
def calculate_scores(audit: FiveSAudit):
"""
Calculate 5S scores by category and overall
"""
scores = {}
for category, questions in audit.questions.items():
rated = [q for q in questions if q.rating is not None]
if rated:
avg_score = sum(q.rating.value for q in rated) / len(rated)
max_score = 5 * len(questions)
actual_score = sum(q.rating.value for q in rated)
scores[category] = {
"average": round(avg_score, 2),
"percentage": round(actual_score / max_score * 100, 1),
"questions_rated": len(rated),
"total_questions": len(questions),
"action_items": sum(1 for q in questions if q.action_required)
}
all_ratings = [q.rating.value for cat in audit.questions.values()
for q in cat if q.rating]
if all_ratings:
scores[] = {
: ((all_ratings) / (all_ratings), ),
: ((all_ratings) / ( * (all_ratings)) * , ),
: get_grade((all_ratings) / (all_ratings))
}
scores
():
avg_score >= :
avg_score >= :
avg_score >= :
avg_score >= :
:
3. Red Tag Analysis (Sort)
@dataclass
class RedTag:
item_description: str
location: str
category: str
condition: str
last_used: Optional[datetime.date]
disposition: str
value_estimate: float
responsible_person: str
decision_date: Optional[datetime.date] = None
action_taken: str = ""
class RedTagTracking:
"""
Track red-tagged items during Sort phase
"""
def __init__(self, area_name: str):
self.area_name = area_name
self.tags: List[RedTag] = []
self.start_date = datetime.date.today()
def add_tag(self, tag: RedTag):
self.tags.append(tag)
def summary(self):
dispositions = {}
for tag in self.tags:
dispositions[tag.disposition] = dispositions.get(tag.disposition, 0) + 1
return {
"total_items": len(self.tags),
: dispositions,
: (t.value_estimate t .tags),
: ( t .tags t.decision_date),
: ._by_category()
}
():
categories = {}
tag .tags:
tag.category categories:
categories[tag.category] = []
categories[tag.category].append(tag.item_description)
categories
4. Visual Management Assessment
def assess_visual_management(area_observations):
"""
Evaluate visual management maturity
"""
criteria = {
"floor_markings": {
"present": False,
"compliant": False,
"comments": ""
},
"tool_boards": {
"present": False,
"shadows_complete": False,
"all_tools_present": False,
"comments": ""
},
"labeling": {
"locations_labeled": False,
"consistent_format": False,
"legible": False,
"comments": ""
},
"status_boards": {
"production_status": False,
"quality_metrics": False,
"safety_info": False,
"updated_regularly": False,
"comments": ""
},
"abnormality_signals": {
"andon_present": False,
"clear_escalation": False,
"comments": ""
}
}
score =
max_score =
category, items criteria.items():
key, value items.items():
key != :
max_score +=
area_observations.get(category, {}).get(key):
score +=
{
: criteria,
: score,
: max_score,
: (score / max_score * , ) max_score > ,
: get_visual_maturity_level(score / max_score max_score > )
}
():
ratio >= :
ratio >= :
ratio >= :
ratio >= :
:
5. Trend Analysis
def analyze_audit_trends(audit_history: List[dict]):
"""
Analyze 5S scores over time
"""
if len(audit_history) < 2:
return {"message": "Need at least 2 audits for trend analysis"}
sorted_audits = sorted(audit_history, key=lambda x: x['date'])
trends = {
"overall": [],
"S1_Sort": [],
"S2_SetInOrder": [],
"S3_Shine": [],
"S4_Standardize": [],
"S5_Sustain": []
}
for audit in sorted_audits:
trends["overall"].append({
"date": audit['date'],
"score": audit['scores']['overall']['percentage']
})
for category in ["S1_Sort", "S2_SetInOrder", "S3_Shine",
"S4_Standardize", "S5_Sustain"]:
if category in audit['scores']:
trends[category].append({
"date": audit['date'],
"score": audit['scores'][category]['percentage']
})
analysis = {}
category, data trends.items():
(data) >= :
recent = data[-:] (data) >= data
first_score = recent[][]
last_score = recent[-][]
change = last_score - first_score
analysis[category] = {
: last_score,
: (change, ),
: change > change < - ,
: (data)
}
analysis
6. Action Item Tracking
@dataclass
class ActionItem:
description: str
category: str
priority: str
responsible: str
due_date: datetime.date
status: str = "open"
completion_date: Optional[datetime.date] = None
notes: str = ""
class ActionItemTracker:
"""
Track 5S improvement actions
"""
def __init__(self):
self.items: List[ActionItem] = []
def add_from_audit(self, audit: FiveSAudit):
"""Generate action items from audit findings"""
for category, questions in audit.questions.items():
for q in questions:
if q.action_required:
self.items.append(ActionItem(
description=f"Address: {q.question} - {q.notes}",
category=category,
priority="high" if q.rating.value == 1 else "medium",
responsible="TBD",
due_date=datetime.date.today() + datetime.timedelta(days=14)
))
():
statuses = {: , : , : , : }
item .items:
item.status == item.due_date < datetime.date.today():
item.status =
statuses[item.status] +=
{
: (.items),
: statuses,
: statuses[] / (.items) * .items ,
: statuses[]
}
Process Integration
This skill integrates with the following processes:
5s-workplace-organization-implementation.js
kaizen-event-facilitation.js
standard-work-development.js
Output Format
{
"audit_info": {
"area": "Assembly Line 3",
"auditor": "John Smith",
"date": "2024-01-15"
},
"scores": {
"S1_Sort": {"percentage": 80, "grade": "Good"},
"S2_SetInOrder": {"percentage": 85, "grade": "Good"},
"S3_Shine": {"percentage": 70, "grade": "Fair"},
"S4_Standardize": {
Best Practices
- Regular audits - Weekly or bi-weekly consistency
- Rotate auditors - Fresh eyes find more
- Take photos - Visual evidence of progress
- Follow up on actions - Close the loop
- Celebrate wins - Recognize improvements
- Post results - Transparency drives improvement
Constraints
- Audits should be constructive, not punitive
- Include area workers in the process
- Document all findings objectively
- Track trends over time