用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/a5c-ai/babysitter --skill anthropometric-analyzer命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
基于 SOC 职业分类
正在显示 SKILL.md
| name | anthropometric-analyzer |
| description | Anthropometric data analysis skill for workstation design and accommodation. |
| allowed-tools | Bash(*) Read Write Edit Glob Grep WebFetch |
| metadata | {"author":"babysitter-sdk","version":"1.0.0","category":"ergonomics","backlog-id":"SK-IE-022"} |
| 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"]} |
You are anthropometric-analyzer - a specialized skill for using anthropometric data to design accommodating workspaces.
This skill enables AI-powered anthropometric analysis including:
# US Adult Anthropometric Data (in inches)
# Based on NHANES and military surveys
ANTHROPOMETRIC_DATA = {
"stature": {
"male": {"5th": 64.0, "50th": 69.1, "95th": 74.4},
"female": {"5th": 59.0, "50th": 63.8, "95th": 68.5}
},
"sitting_height": {
"male": {"5th": 33.5, "50th": 35.7, "95th": 38.0},
"female": {"5th": 31.1, "50th": 33.5, "95th": 35.6}
},
"eye_height_sitting": {
"male": {"5th": 28.7, "50th": 31.0, "95th": 33.3},
"female": {"5th": 26.6, "50th": 28.9, "95th": 31.2}
},
"shoulder_height_sitting": {
"male": {"5th": 21.3, "50th": 23.3, "95th": 25.5},
"female": {"5th": 19.5, "50th": 21.5, "95th": 23.6}
},
"elbow_height_sitting": {
"male": {"5th": 7.4, "50th": 9.2, "95th": 11.0},
"female": {"5th": 6.8, "50th": 8.5, "95th": 10.2}
},
"thigh_clearance": {
"male": {"5th": 5.2, "50th": 6.0, "95th": 7.0},
"female": {"5th": 4.8, "50th": 5.7, "95th": 6.8}
},
"knee_height_sitting": {
"male": {"5th": 19.3, "50th": 21.4, "95th": 23.4},
"female": {"5th": 17.8, "50th": 19.6, "95th": 21.4}
},
"popliteal_height": { # Height to back of knee
"male": {"5th": 15.5, "50th": 17.3, "95th": 19.1},
"female": {"5th": 14.0, "50th": 15.7, "95th": 17.5}
},
"buttock_knee_length": {
"male": {"5th": 21.4, "50th": 23.4, "95th": 25.4},
"female": {"5th": 20.5, "50th": 22.4, "95th": 24.4}
},
"buttock_popliteal_length": {
"male": {"5th": 17.3, "50th": 19.2, "95th": 21.1},
"female": {"5th": 16.7, "50th": 18.5, "95th": 20.4}
},
"forward_reach": {
"male": {"5th": 29.5, "50th": 32.6, "95th": 35.7},
"female": {"5th": 26.3, "50th": 29.2, "95th": 32.1}
},
"shoulder_breadth": {
"male": {"5th": 16.7, "50th": 18.3, "95th": 19.9},
"female": {"5th": 14.5, "50th": 16.0, "95th": 17.6}
},
"hip_breadth_sitting": {
"male": {"5th": 12.6, "50th": 14.2, "95th": 16.1},
"female": {"5th": 13.0, "50th": 15.0, "95th": 17.4}
}
}
def get_anthropometric_value(dimension: str, percentile: str,
gender: str = "combined"):
"""
Get anthropometric value for a dimension
"""
if gender == "combined":
male_val = ANTHROPOMETRIC_DATA[dimension]["male"][percentile]
female_val = ANTHROPOMETRIC_DATA[dimension]["female"][percentile]
return (male_val + female_val) / 2
else:
return ANTHROPOMETRIC_DATA[dimension][gender.lower()][percentile]
def design_for_percentile(dimension: str, design_type: str, gender: str = "combined"):
"""
Recommend design dimension based on type of design
design_type:
- "reach": Use 5th percentile (shortest reach)
- "clearance": Use 95th percentile (largest dimension)
- "adjustable": Provide range 5th to 95th
"""
if design_type == "reach":
value = get_anthropometric_value(dimension, "5th", gender)
explanation = "Design to 5th percentile to accommodate shortest reach"
elif design_type == "clearance":
value = get_anthropometric_value(dimension, "95th", gender)
explanation = "Design to 95th percentile to accommodate largest users"
elif design_type == "adjustable":
low = get_anthropometric_value(dimension, "5th", gender)
high = get_anthropometric_value(dimension, "95th", gender)
value = {"min": low, "max": high}
explanation = "Provide adjustability from 5th to 95th percentile"
else:
value = get_anthropometric_value(dimension, "50th", gender)
explanation = "Using 50th percentile (average)"
return {
"dimension": dimension,
"design_type": design_type,
"value": value,
"unit": "inches",
"explanation": explanation
}
def calculate_reach_zones(forward_reach: float, shoulder_height: float):
"""
Calculate primary, secondary, and tertiary reach zones
"""
return {
"primary_zone": {
"description": "Frequent reaching, most comfortable",
"horizontal_radius": forward_reach * 0.4, # ~40% of max reach
"height_range": {
"min": shoulder_height * 0.7,
"max": shoulder_height * 1.1
},
"angle": "0-15 degrees from centerline"
},
"secondary_zone": {
"description": "Occasional reaching",
"horizontal_radius": forward_reach * 0.6, # ~60% of max reach
"height_range": {
"min": shoulder_height * 0.5,
"max": shoulder_height * 1.2
},
"angle": "15-45 degrees from centerline"
},
"tertiary_zone": {
"description": "Infrequent reaching only",
"horizontal_radius": forward_reach * 0.9, # ~90% of max reach
"height_range": {
"min": shoulder_height * 0.3,
"max": shoulder_height *
},
:
}
}
():
forward_reach = get_anthropometric_value(, , worker_gender)
shoulder_height = get_anthropometric_value(, , worker_gender)
zones = calculate_reach_zones(forward_reach, shoulder_height)
item_frequency == :
zone =
item_frequency == :
zone =
:
zone =
{
: zone,
: zones[zone],
:
}
def recommend_work_surface_height(task_type: str, posture: str = "sitting",
worker_gender: str = "combined"):
"""
Recommend work surface height based on task type
task_type: "precision", "light_assembly", "heavy_work"
posture: "sitting" or "standing"
"""
if posture == "sitting":
elbow_height = get_anthropometric_value("elbow_height_sitting", "50th", worker_gender)
seat_height = get_anthropometric_value("popliteal_height", "50th", worker_gender)
base_height = seat_height + elbow_height
adjustments = {
"precision": {
"adjustment": +4, # Above elbow for close viewing
"range": (base_height + 2, base_height + 6),
"reason": "Higher for visual tasks requiring close work"
},
"light_assembly": {
"adjustment": 0, # At elbow height
"range": (base_height - 2, base_height + 2),
"reason": "At elbow height for typical hand work"
},
"heavy_work": {
"adjustment": -4, # Below elbow for force application
"range": (base_height - 6, base_height - 2),
"reason":
}
}
:
stature = get_anthropometric_value(, , worker_gender)
elbow_height = stature *
adjustments = {
: {
: +,
: (elbow_height + , elbow_height + ),
:
},
: {
: -,
: (elbow_height - , elbow_height),
:
},
: {
: -,
: (elbow_height - , elbow_height - ),
:
}
}
task_adjustment = adjustments.get(task_type, adjustments[])
recommended_height = (elbow_height posture ==
seat_height + elbow_height) + task_adjustment[]
{
: task_type,
: posture,
: (recommended_height, ),
: task_adjustment[],
: task_adjustment[],
:
}
def calculate_clearances(posture: str = "sitting", worker_gender: str = "combined"):
"""
Calculate minimum clearance dimensions
"""
if posture == "sitting":
clearances = {
"vertical_clearance_under_surface": {
"minimum": get_anthropometric_value("thigh_clearance", "95th", worker_gender) +
get_anthropometric_value("popliteal_height", "95th", worker_gender) + 2,
"dimension": "From floor to underside of work surface",
"percentile_used": "95th",
"reason": "Accommodate largest thigh + knee height"
},
"knee_room_depth": {
"minimum": get_anthropometric_value("buttock_knee_length", "95th", worker_gender) + 2,
"dimension": "Depth for knees under surface",
"percentile_used": "95th"
},
"seat_width": {
"minimum": get_anthropometric_value("hip_breadth_sitting", "95th", worker_gender) + 2,
"dimension": "Seat pan width",
"percentile_used": "95th"
},
"passage_width": {
: get_anthropometric_value(, , ) + ,
: ,
:
}
}
:
clearances = {
: {
: get_anthropometric_value(, , ) + ,
: ,
:
},
: {
: ,
: ,
:
},
: {
: ,
: ,
:
}
}
clearances
def calculate_adjustability_range(dimension: str, accommodation_level: float = 0.90):
"""
Calculate required adjustability range to accommodate population percentage
accommodation_level: 0.90 for 90% (5th-95th), 0.95 for 95% (2.5th-97.5th)
"""
# Get male and female data
male_5th = ANTHROPOMETRIC_DATA[dimension]["male"]["5th"]
male_95th = ANTHROPOMETRIC_DATA[dimension]["male"]["95th"]
female_5th = ANTHROPOMETRIC_DATA[dimension]["female"]["5th"]
female_95th = ANTHROPOMETRIC_DATA[dimension]["female"]["95th"]
# Combined population range
population_min = min(female_5th, male_5th)
population_max = max(female_95th, male_95th)
# Standard deviation estimate
male_sd = (male_95th - male_5th) / 3.29 # 5th to 95th is 3.29 SDs
female_sd = (female_95th - female_5th) / 3.29
return {
"dimension": dimension,
"accommodation_level": f"{accommodation_level * 100}%",
"required_range": {
"min": round(population_min, 1),
"max": round(population_max, 1)
},
"adjustment_span": round(population_max - population_min, 1),
"male_range": {"5th": male_5th, "95th": male_95th},
: {: female_5th, : female_95th},
:
}
This skill integrates with the following processes:
workstation-design-optimization.jsergonomic-risk-assessment.js{
"design_type": "Seated Workstation",
"work_surface_height": {
"recommended": 28.5,
"adjustable_range": [26, 31],
"unit": "inches"
},
"reach_zones": {
"primary_radius": 11.8,
"secondary_radius": 17.7
},
"clearances": {
"under_surface": 25.5,
"knee_depth": 27.4
},
"accommodation": "90% of mixed population"
}