Babysitter fmea-facilitator
Failure Mode and Effects Analysis facilitation skill for risk identification and prioritization.
install
source · Clone the upstream repo
git clone https://github.com/a5c-ai/babysitter
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/a5c-ai/babysitter "$T" && mkdir -p ~/.claude/skills && cp -r "$T/library/specializations/domains/science/industrial-engineering/skills/fmea-facilitator" ~/.claude/skills/a5c-ai-babysitter-fmea-facilitator-65cde1 && rm -rf "$T"
manifest:
library/specializations/domains/science/industrial-engineering/skills/fmea-facilitator/SKILL.mdsource content
fmea-facilitator
You are fmea-facilitator - a specialized skill for facilitating Failure Mode and Effects Analysis for risk identification and prioritization.
Overview
This skill enables AI-powered FMEA including:
- FMEA scope and boundary definition
- Failure mode brainstorming facilitation
- Severity, Occurrence, Detection rating guidance
- RPN (Risk Priority Number) calculation
- AIAG-VDA Action Priority (AP) methodology
- Control plan integration
- Recommended action tracking
- FMEA revision and living document management
Capabilities
1. FMEA Structure
from dataclasses import dataclass, field from typing import List, Optional from datetime import datetime from enum import Enum class FMEAType(Enum): DESIGN = "DFMEA" PROCESS = "PFMEA" SYSTEM = "SFMEA" @dataclass class FailureMode: id: str item_function: str potential_failure_mode: str potential_effects: List[str] severity: int # 1-10 potential_causes: List[str] occurrence: int # 1-10 current_controls_prevention: List[str] current_controls_detection: List[str] detection: int # 1-10 recommended_actions: List[str] = field(default_factory=list) responsibility: str = "" target_date: Optional[datetime] = None actions_taken: str = "" severity_after: Optional[int] = None occurrence_after: Optional[int] = None detection_after: Optional[int] = None @property def rpn(self): return self.severity * self.occurrence * self.detection @property def rpn_after(self): if all([self.severity_after, self.occurrence_after, self.detection_after]): return self.severity_after * self.occurrence_after * self.detection_after return None @dataclass class FMEA: fmea_type: FMEAType item_name: str revision: str team_members: List[str] start_date: datetime failure_modes: List[FailureMode] = field(default_factory=list) def add_failure_mode(self, fm: FailureMode): self.failure_modes.append(fm) def get_high_rpn_items(self, threshold=100): return [fm for fm in self.failure_modes if fm.rpn >= threshold]
2. Severity Rating Guide
SEVERITY_RATINGS = { 10: { "effect": "Hazardous without warning", "description": "Very high severity ranking when potential failure mode affects safe operation without warning", "criteria": "May endanger operator; Noncompliance with regulations" }, 9: { "effect": "Hazardous with warning", "description": "Very high severity ranking when potential failure mode affects safe operation with warning", "criteria": "May endanger operator with warning" }, 8: { "effect": "Very High", "description": "Product inoperable, loss of primary function", "criteria": "100% of product affected, customer very dissatisfied" }, 7: { "effect": "High", "description": "Product operable but performance level reduced", "criteria": "Most customers dissatisfied" }, 6: { "effect": "Moderate", "description": "Product operable but comfort/convenience items inoperable", "criteria": "Customer experiences discomfort" }, 5: { "effect": "Low", "description": "Product operable but comfort/convenience items reduced", "criteria": "Customer somewhat dissatisfied" }, 4: { "effect": "Very Low", "description": "Fit and finish items do not conform, noticed by most customers", "criteria": "Defect noticed by most customers" }, 3: { "effect": "Minor", "description": "Fit and finish items do not conform, noticed by average customers", "criteria": "Defect noticed by average customers" }, 2: { "effect": "Very Minor", "description": "Fit and finish items do not conform, noticed by discriminating customers", "criteria": "Defect noticed by discriminating customers" }, 1: { "effect": "None", "description": "No discernible effect", "criteria": "No effect" } } def get_severity_guidance(context="process"): """Return severity rating guidance""" return SEVERITY_RATINGS
3. Occurrence Rating Guide
OCCURRENCE_RATINGS = { 10: {"probability": "Very High", "rate": ">= 100 per 1000", "cpk": "< 0.33"}, 9: {"probability": "High", "rate": "50 per 1000", "cpk": ">= 0.33"}, 8: {"probability": "High", "rate": "20 per 1000", "cpk": ">= 0.51"}, 7: {"probability": "Moderately High", "rate": "10 per 1000", "cpk": ">= 0.67"}, 6: {"probability": "Moderate", "rate": "5 per 1000", "cpk": ">= 0.83"}, 5: {"probability": "Moderate", "rate": "2 per 1000", "cpk": ">= 1.00"}, 4: {"probability": "Moderately Low", "rate": "1 per 1000", "cpk": ">= 1.17"}, 3: {"probability": "Low", "rate": "0.5 per 1000", "cpk": ">= 1.33"}, 2: {"probability": "Very Low", "rate": "0.1 per 1000", "cpk": ">= 1.50"}, 1: {"probability": "Remote", "rate": "<= 0.01 per 1000", "cpk": ">= 1.67"} }
4. Detection Rating Guide
DETECTION_RATINGS = { 10: { "likelihood": "Almost Impossible", "description": "No known controls to detect failure mode", "criteria": "Cannot detect or not checked" }, 9: { "likelihood": "Very Remote", "description": "Controls probably will not detect", "criteria": "Control achieved with indirect or random checks only" }, 8: { "likelihood": "Remote", "description": "Controls have poor chance of detection", "criteria": "Control achieved with visual inspection only" }, 7: { "likelihood": "Very Low", "description": "Controls have poor chance of detection", "criteria": "Control achieved with double visual inspection" }, 6: { "likelihood": "Low", "description": "Controls may detect", "criteria": "Control achieved with charting methods (SPC)" }, 5: { "likelihood": "Moderate", "description": "Controls may detect", "criteria": "Control based on variable gauging after parts leave station" }, 4: { "likelihood": "Moderately High", "description": "Controls have good chance to detect", "criteria": "Error detection in subsequent operations" }, 3: { "likelihood": "High", "description": "Controls have good chance to detect", "criteria": "Error detection at station (gauging)" }, 2: { "likelihood": "Very High", "description": "Controls almost certain to detect", "criteria": "Error detection at station (automatic gauging)" }, 1: { "likelihood": "Almost Certain", "description": "Controls certain to detect", "criteria": "Error proofing - cannot produce discrepant part" } }
5. AIAG-VDA Action Priority (AP)
def calculate_action_priority(severity, occurrence, detection): """ Calculate Action Priority per AIAG-VDA FMEA handbook Returns: 'H' (High), 'M' (Medium), 'L' (Low) """ # High Priority if severity >= 9 and occurrence >= 4: return "H" if severity >= 9 and detection >= 7: return "H" if severity >= 5 and occurrence >= 7 and detection >= 5: return "H" # Low Priority if severity <= 4 and occurrence <= 3: return "L" if severity <= 4 and detection <= 3: return "L" if severity <= 6 and occurrence <= 2 and detection <= 4: return "L" # Medium Priority (default) return "M" def get_ap_table(): """ Return AP lookup table summary """ return { "H": { "description": "High Priority", "action": "Required - Must take action to improve controls", "review": "Management attention required" }, "M": { "description": "Medium Priority", "action": "Recommended - Should take action to improve controls", "review": "Team decision" }, "L": { "description": "Low Priority", "action": "Optional - May take action to improve controls", "review": "Team discretion" } }
6. FMEA Analysis and Reporting
def analyze_fmea(fmea: FMEA): """ Analyze FMEA and generate summary report """ analysis = { "total_failure_modes": len(fmea.failure_modes), "rpn_statistics": {}, "ap_distribution": {"H": 0, "M": 0, "L": 0}, "top_risks": [], "actions_status": { "pending": 0, "in_progress": 0, "completed": 0 } } rpns = [fm.rpn for fm in fmea.failure_modes] if rpns: analysis["rpn_statistics"] = { "max": max(rpns), "min": min(rpns), "average": sum(rpns) / len(rpns), "above_100": sum(1 for r in rpns if r >= 100), "above_200": sum(1 for r in rpns if r >= 200) } # AP distribution for fm in fmea.failure_modes: ap = calculate_action_priority(fm.severity, fm.occurrence, fm.detection) analysis["ap_distribution"][ap] += 1 # Top risks (by RPN) sorted_fms = sorted(fmea.failure_modes, key=lambda x: x.rpn, reverse=True) analysis["top_risks"] = [ { "id": fm.id, "failure_mode": fm.potential_failure_mode, "rpn": fm.rpn, "severity": fm.severity, "occurrence": fm.occurrence, "detection": fm.detection, "ap": calculate_action_priority(fm.severity, fm.occurrence, fm.detection) } for fm in sorted_fms[:10] ] # Actions status for fm in fmea.failure_modes: if fm.actions_taken: analysis["actions_status"]["completed"] += 1 elif fm.recommended_actions: analysis["actions_status"]["in_progress"] += 1 else: analysis["actions_status"]["pending"] += 1 return analysis def generate_control_plan_items(fmea: FMEA): """ Generate control plan items from FMEA """ control_items = [] for fm in fmea.failure_modes: for control in fm.current_controls_prevention + fm.current_controls_detection: control_items.append({ "process_step": fm.item_function, "characteristic": fm.potential_failure_mode, "control_method": control, "sample_size": "TBD", "frequency": "TBD", "reaction_plan": f"If out of control, refer to FMEA ID {fm.id}" }) return control_items
Process Integration
This skill integrates with the following processes:
failure-mode-effects-analysis.jsroot-cause-analysis-investigation.jsstatistical-process-control-implementation.js
Output Format
{ "fmea_summary": { "type": "PFMEA", "item": "Assembly Process", "revision": "1.2", "total_failure_modes": 45 }, "risk_analysis": { "high_priority_count": 8, "medium_priority_count": 22, "low_priority_count": 15, "max_rpn": 392, "avg_rpn": 112 }, "top_risks": [ { "failure_mode": "Missing fastener", "rpn": 392, "ap": "H", "recommended_action": "Add vision system verification" } ], "actions_required": 12 }
Best Practices
- Cross-functional team - Include design, manufacturing, quality, service
- Start early - Begin FMEA during design phase
- Focus on prevention - Prioritize prevention over detection
- Living document - Update FMEA when process changes
- Use AP not just RPN - Consider AIAG-VDA AP methodology
- Track actions - Close the loop on recommended actions
Constraints
- Document all assumptions
- Use consistent rating criteria
- Review periodically
- Link to control plans