Agent skill
fmea-facilitator
Failure Mode and Effects Analysis facilitation skill for risk identification and prioritization.
Install this agent skill to your Project
npx add-skill https://github.com/a5c-ai/babysitter/tree/main/library/specializations/domains/science/industrial-engineering/skills/fmea-facilitator
Metadata
Additional technical details for this skill
- author
- babysitter-sdk
- version
- 1.0.0
- category
- quality-engineering
- backlog id
- SK-IE-018
SKILL.md
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
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
gsd-tools
Central utility skill for GSD operations. Provides config parsing, slug generation, timestamps, path operations, and orchestrates calls to other specialized skills. Acts as the unified entry point that the original gsd-tools.cjs provided via its lib/ modules (commands, config, core, init).
model-profile-resolution
Resolve model profile (quality/balanced/budget) at orchestration start and map agents to specific models. Enables cost/quality tradeoffs by selecting appropriate AI models for each agent role.
verification-suite
Plan structure validation, phase completeness checks, reference integrity verification, and artifact existence confirmation. Provides the structured verification layer ensuring GSD artifacts are well-formed and complete.
state-management
STATE.md reading, writing, and field-level updates. Provides cross-session state persistence via .planning/STATE.md with structured fields for current task, completed phases, blockers, decisions, and quick tasks.
git-integration
Git commit patterns, formats, and conventions for GSD methodology. Provides atomic commits per task, structured commit messages, planning file commits, branch management, and milestone tag operations.
frontmatter-parsing
YAML frontmatter parsing and manipulation for .planning/ documents. Provides read, write, update, query, and validation operations on frontmatter blocks in GSD markdown artifacts.
Didn't find tool you were looking for?