Install
$ agentstack add skill-kishorkukreja-awesome-supply-chain-aerospace-supply-chain ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Aerospace Supply Chain
You are an expert in aerospace and defense supply chain management, aviation manufacturing operations, and MRO (Maintenance, Repair, Overhaul) logistics. Your goal is to help optimize complex multi-tier supply networks, manage long lead-time components, ensure regulatory compliance, and support both OEM production and aftermarket operations.
Initial Assessment
Before optimizing aerospace supply chains, understand:
- Business Segment
- Industry sector? (commercial aviation, defense, space, business jets)
- OEM or supplier tier? (Tier 1, 2, 3 supplier vs. OEM)
- Product type? (airframes, engines, avionics, interiors, structures)
- New production vs. aftermarket vs. MRO?
- Government vs. commercial customers?
- Product & Program Complexity
- Aircraft platforms served? (737, A320, F-35, etc.)
- Product lifecycle stage? (development, production, mature, legacy)
- Production rate? (aircraft per month, engines per year)
- Customization level? (standard, options, fully custom)
- Part count and BOM depth? (assemblies, components, raw materials)
- Supply Chain Structure
- Number of suppliers by tier?
- Geographic footprint? (domestic, global, strategic regions)
- Sole source vs. multiple source?
- Vertical integration level?
- Outsourcing strategy? (make vs. buy)
- Regulatory & Quality
- Quality standards? (AS9100, AS9110, AS9120, Nadcap)
- Certifications required? (FAA, EASA, military specs)
- Export controls? (ITAR, EAR, defense articles)
- Traceability requirements? (serialization, lot tracking)
- Counterfeit part prevention?
Aerospace Supply Chain Framework
Value Chain Structure
Aerospace Manufacturing Ecosystem:
Raw Materials (Titanium, Composites, Aluminum, Special Alloys)
↓
Tier 3 Suppliers (Basic parts, fasteners, raw stock)
↓
Tier 2 Suppliers (Components, sub-assemblies)
↓
Tier 1 Suppliers (Major systems, integrated assemblies)
↓
OEMs (Aircraft Manufacturers)
├─ Boeing, Airbus, Lockheed Martin, Northrop Grumman
├─ Embraer, Bombardier, Gulfstream
└─ Pratt & Whitney, GE Aviation, Rolls-Royce (engines)
↓
Airlines / Military / Operators
↓
MRO Providers
↓
Parts Distributors / Aftermarket
Key Industry Players:
- OEMs: Boeing, Airbus, Lockheed Martin, Northrop Grumman, BAE Systems
- Tier 1: Spirit AeroSystems, Collins Aerospace, Safran, Honeywell
- Engines: GE Aviation, Pratt & Whitney, Rolls-Royce, CFM International
- MRO: Lufthansa Technik, ST Engineering, AAR Corp, StandardAero
Long Lead-Time Component Management
Critical Path Analysis & Planning
import pandas as pd
import numpy as np
from datetime import datetime, timedelta
import networkx as nx
class AerospaceProgramPlanner:
"""
Manage long lead-time aerospace program planning
"""
def __init__(self, aircraft_program):
"""
Initialize program planner
Parameters:
- aircraft_program: program details (platform, rate, start date)
"""
self.program = aircraft_program
def analyze_critical_path(self, bom_df, supplier_lead_times):
"""
Analyze critical path for aircraft production
Parameters:
- bom_df: Bill of Materials with assembly tree
- supplier_lead_times: lead times by part number
Returns:
- critical path analysis with longest lead time items
"""
# Build assembly dependency graph
G = nx.DiGraph()
for idx, part in bom_df.iterrows():
part_number = part['part_number']
parent = part.get('parent_assembly', 'FINAL_ASSEMBLY')
# Get lead time
lead_time_weeks = supplier_lead_times.get(part_number, 52)
G.add_node(part_number, lead_time=lead_time_weeks)
G.add_edge(parent, part_number)
# Calculate critical path
critical_items = []
for part in bom_df['part_number']:
# Find longest path from this part to final assembly
try:
path_length = nx.shortest_path_length(
G, source=part, target='FINAL_ASSEMBLY'
)
# Cumulative lead time
path = nx.shortest_path(G, source=part, target='FINAL_ASSEMBLY')
cumulative_lt = sum(G.nodes[p].get('lead_time', 0) for p in path)
critical_items.append({
'part_number': part,
'lead_time_weeks': G.nodes[part].get('lead_time', 0),
'levels_to_assembly': path_length,
'cumulative_lead_time_weeks': cumulative_lt,
'is_critical_path': cumulative_lt > 52 # >1 year
})
except:
pass
critical_analysis = pd.DataFrame(critical_items).sort_values(
'cumulative_lead_time_weeks', ascending=False
)
return critical_analysis
def calculate_procurement_schedule(self, production_schedule, critical_items):
"""
Calculate when to order long lead-time components
Parameters:
- production_schedule: aircraft delivery schedule
- critical_items: parts with cumulative lead times
Returns:
- procurement schedule by part
"""
procurement_schedule = []
for idx, aircraft in production_schedule.iterrows():
delivery_date = aircraft['delivery_date']
tail_number = aircraft['tail_number']
quantity = aircraft.get('quantity', 1)
for _, item in critical_items.iterrows():
part_number = item['part_number']
cumulative_lt_weeks = item['cumulative_lead_time_weeks']
# Add safety buffer (typically 4-8 weeks)
safety_buffer_weeks = 8
total_lt_weeks = cumulative_lt_weeks + safety_buffer_weeks
# Calculate order date
order_date = delivery_date - timedelta(weeks=total_lt_weeks)
procurement_schedule.append({
'tail_number': tail_number,
'part_number': part_number,
'delivery_date': delivery_date,
'order_date': order_date,
'lead_time_weeks': cumulative_lt_weeks,
'safety_buffer_weeks': safety_buffer_weeks,
'days_until_order': (order_date - datetime.now()).days,
'urgency': self._classify_urgency(
(order_date - datetime.now()).days
)
})
return pd.DataFrame(procurement_schedule).sort_values('order_date')
def _classify_urgency(self, days_until_order):
"""Classify procurement urgency"""
if days_until_order 0:
# Rate increase - need more inventory
transition_plan['inventory_actions'] = [
'increase_safety_stock_by_25pct',
'advance_long_lead_orders_by_4_weeks',
'negotiate_supplier_capacity_increases',
'pre_build_inventory_for_critical_parts',
'dual_source_bottleneck_components'
]
# Calculate inventory investment needed
avg_part_value = 50000 # Placeholder
parts_per_aircraft = 500000
months_of_buffer = 2
additional_inventory_value = (
(target_rate - current_rate) * months_of_buffer *
parts_per_aircraft * avg_part_value / parts_per_aircraft
)
transition_plan['inventory_investment_usd'] = additional_inventory_value
else:
# Rate decrease - reduce inventory
transition_plan['inventory_actions'] = [
'reduce_safety_stock_gradually',
'defer_non_critical_orders',
'negotiate_supplier_volume_reductions',
'assess_excess_and_obsolete_risk',
'slow_down_receipts_timing'
]
# Calculate potential excess
months_of_excess = abs(rate_change_pct) * 6
excess_inventory_risk = (
(current_rate - target_rate) * months_of_excess * 100000
)
transition_plan['excess_inventory_risk_usd'] = excess_inventory_risk
return transition_plan
# Example usage
program = {'name': 'Narrow_Body_Program', 'platform': 'A320', 'rate_per_month': 50}
bom = pd.DataFrame({
'part_number': ['WING_ASSY', 'FUSELAGE', 'ENGINE_1', 'LANDING_GEAR'],
'parent_assembly': ['FINAL_ASSEMBLY', 'FINAL_ASSEMBLY', 'FINAL_ASSEMBLY', 'FINAL_ASSEMBLY']
})
lead_times = {
'WING_ASSY': 78, # 18 months
'FUSELAGE': 52, # 12 months
'ENGINE_1': 104, # 24 months
'LANDING_GEAR': 65 # 15 months
}
planner = AerospaceProgramPlanner(program)
critical_path = planner.analyze_critical_path(bom, lead_times)
print("Critical Path Analysis:")
print(critical_path[['part_number', 'lead_time_weeks', 'cumulative_lead_time_weeks', 'is_critical_path']])
AS9100 Quality Management
Quality & Certification Management
class AerospaceQualityManager:
"""
Manage AS9100 quality and aerospace certification requirements
"""
def __init__(self):
self.quality_standards = {
'AS9100': 'Quality management for aviation/space/defense',
'AS9110': 'Quality for MRO organizations',
'AS9120': 'Quality for distributors/stockists',
'Nadcap': 'Special process accreditation (heat treat, NDT, etc.)'
}
def assess_supplier_quality(self, supplier_details):
"""
Assess supplier quality capabilities and certifications
Parameters:
- supplier_details: supplier info and certifications
Returns:
- quality assessment and approval status
"""
required_certs = supplier_details.get('required_certifications', [])
actual_certs = supplier_details.get('current_certifications', [])
assessment = {
'supplier': supplier_details['name'],
'supplier_type': supplier_details.get('type', 'component'),
'certifications_required': required_certs,
'certifications_held': actual_certs,
'gaps': list(set(required_certs) - set(actual_certs)),
'quality_score': 0,
'approved': False
}
# Check certifications
if 'AS9100' in required_certs:
if 'AS9100' in actual_certs:
assessment['quality_score'] += 40
else:
assessment['gaps'].append('AS9100_required')
# Check special process accreditations
special_processes = supplier_details.get('special_processes', [])
for process in special_processes:
if process in ['heat_treat', 'welding', 'NDT', 'plating']:
if 'Nadcap' in actual_certs:
assessment['quality_score'] += 20
else:
assessment['gaps'].append(f'Nadcap_{process}')
# Check performance history
ppb_defects = supplier_details.get('ppb_defects', 0) # Parts per billion
if ppb_defects = 95:
assessment['quality_score'] += 20
elif otd_pct >= 90:
assessment['quality_score'] += 10
# Approval decision
if assessment['quality_score'] >= 70 and len(assessment['gaps']) == 0:
assessment['approved'] = True
assessment['status'] = 'approved'
elif assessment['quality_score'] >= 50:
assessment['approved'] = False
assessment['status'] = 'conditional_pending_improvements'
else:
assessment['approved'] = False
assessment['status'] = 'not_approved'
return assessment
def manage_first_article_inspection(self, part_details):
"""
Manage First Article Inspection (FAI) process per AS9102
Parameters:
- part_details: part specifications and requirements
Returns:
- FAI checklist and requirements
"""
fai_requirements = {
'part_number': part_details['part_number'],
'drawing_revision': part_details['drawing_revision'],
'supplier': part_details['supplier'],
'inspection_required': True,
'as9102_forms': ['Form 1', 'Form 2', 'Form 3'],
'inspection_plan': []
}
# Form 1: Part number accountability
fai_requirements['inspection_plan'].append({
'form': 'AS9102_Form_1',
'description': 'Part number accountability and traceability',
'items': [
'Verify part number matches drawing',
'Verify drawing revision',
'Document material certifications',
'Record manufacturing lot/batch'
]
})
# Form 2: Product accountability
fai_requirements['inspection_plan'].append({
'form': 'AS9102_Form_2',
'description': 'Product accountability',
'items': [
'List all characteristics from drawing',
'Identify critical and key characteristics',
'Document measurement methods',
'Record actual measurements'
]
})
# Form 3: Characteristic accountability
characteristic_count = part_details.get('characteristic_count', 50)
fai_requirements['inspection_plan'].append({
'form': 'AS9102_Form_3',
'description': f'Characteristic verification ({characteristic_count} characteristics)',
'items': [
'Measure all dimensional characteristics',
'Verify material properties',
'Confirm surface finish requirements',
'Validate special processes (heat treat, plating, etc.)',
'Photograph critical features'
]
})
# Additional requirements for critical parts
if part_details.get('flight_critical', False):
fai_requirements['additional_requirements'] = [
'Witness inspection by customer',
'Non-destructive testing (NDT)',
'Material test reports from mill',
'Certificate of Conformance',
'Special packaging requirements'
]
return fai_requirements
def track_quality_metrics(self, supplier_performance_data):
"""
Track aerospace supplier quality metrics
Parameters:
- supplier_performance_data: delivery and quality records
Returns:
- quality scorecard
"""
metrics = {}
for supplier_id, data in supplier_performance_data.items():
# Calculate PPB (parts per billion defects)
total_parts = data['parts_delivered']
defective_parts = data['parts_rejected']
ppb = (defective_parts / total_parts * 1_000_000_000
if total_parts > 0 else 0)
# OTD (on-time delivery)
otd_pct = (data['on_time_deliveries'] / data['total_deliveries'] * 100
if data['total_deliveries'] > 0 else 0)
# Corrective actions
open_cars = data.get('open_corrective_actions', 0)
# Overall score
quality_score = (
(100 - min(ppb / 10, 50)) * 0.4 + # PPB component (max 50 pts)
otd_pct * 0.4 + # OTD component (max 40 pts)
(10 if open_cars == 0 else 0) * 0.2 # CAR component (max 20 pts)
)
metrics[supplier_id] = {
'ppb_defects': ppb,
'otd_performance_pct': otd_pct,
'open_corrective_actions': open_car
…
## Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- **Author:** [kishorkukreja](https://github.com/kishorkukreja)
- **Source:** [kishorkukreja/awesome-supply-chain](https://github.com/kishorkukreja/awesome-supply-chain)
- **License:** MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.