kishorkukreja/awesome-supply-chain/order-fulfillment

Claude Code and agent skill by kishorkukreja/awesome-supply-chain

Trust tier 3
  • community
Source check pending

Checking that the SKILL.md file is still in the repository.

When the user wants to design or optimize order fulfillment operations, improve pick-pack-ship processes, or reduce fulfillment costs. Also use when the user mentions "order processing," "pick-pack-ship," "picking strategy," "packing operations," "shipping optimization," "wave planning," "batch picking," or "fulfillment center operations." For warehouse layout, see warehouse-design. For routing pickers, see picker-routing-optimization.

Install

npx vskill@latest install kishorkukreja/awesome-supply-chain/order-fulfillment

SKILL.md

Order Fulfillment

You are an expert in order fulfillment operations and optimization. Your goal is to help design efficient, accurate, and cost-effective fulfillment processes that meet customer service expectations while minimizing labor and operational costs.

Initial Assessment

Before optimizing fulfillment, understand:

  1. Order Profile
  • Order volume? (orders/day, peak vs. average)
  • Order characteristics? (lines/order, units/order)
  • Order types? (B2B pallets, B2C eaches, mixed)
  • SKU count and velocity distribution?
  1. Service Requirements
  • Delivery speed? (same-day, next-day, 2-day, standard)
  • Cutoff times for shipping?
  • Order accuracy targets? (99.5%+)
  • Special services? (gift wrap, kitting, customization)
  1. Current Operations
  • Current fulfillment process and flow?
  • Pick accuracy and productivity rates?
  • Technology in use? (WMS, automation, RF scanners)
  • Pain points and bottlenecks?
  1. Constraints
  • Labor availability and cost?
  • Facility layout and space?
  • Capital budget for improvements?
  • IT systems and integration capabilities?

Order Fulfillment Framework

Core Fulfillment Processes

1. Order Receipt & Validation

  • Order intake from channels (web, EDI, phone)
  • Inventory availability check (ATP)
  • Credit/payment verification
  • Order prioritization and batching

2. Picking

  • Retrieve items from storage locations
  • Verify SKU and quantity accuracy
  • Multiple strategies (discrete, batch, zone, wave)

3. Packing

  • Select appropriate packaging
  • Pack items securely
  • Insert documents (packing slip, returns)
  • Generate shipping label

4. Shipping

  • Carrier selection and manifesting
  • Trailer loading and departure
  • Track and trace updates

5. Returns Processing

  • Receive and inspect returns
  • Disposition (restock, liquidate, destroy)
  • Customer refund/exchange processing

Picking Strategies

Strategy Comparison
StrategyOrders/HourLabor EfficiencyAccuracyComplexityBest For
Discrete (Single Order)20-40LowHighLowLow volume, high value
Batch Picking60-100MediumMediumMediumMedium volume
Zone Picking80-150HighMediumHighHigh SKU count
Wave Picking100-200+Very HighMediumVery HighHigh volume
Cluster Picking100-150HighHighMediumMulti-order picking
Discrete Order Picking

Description:

  • Pick one order at a time
  • Complete each order before starting next
  • Simple, accurate, inefficient

When to Use:

  • Low order volume (<500 orders/day)
  • High-value orders requiring accuracy
  • Complex orders with customization
python
import numpy as np
import pandas as pd
def discrete_picking_capacity(orders_per_day, lines_per_order,
pick_rate_per_hour=100,
working_hours=8):
"""
Calculate labor requirements for discrete picking
Parameters:
- orders_per_day: Daily order volume
- lines_per_order: Average lines per order
- pick_rate_per_hour: Picks per person per hour (includes travel)
- working_hours: Working hours per shift
"""
picks_per_day = orders_per_day * lines_per_order
# Labor hours needed
labor_hours_needed = picks_per_day / pick_rate_per_hour
# Pickers needed
pickers_needed = labor_hours_needed / working_hours
# Orders per picker per day
orders_per_picker = orders_per_day / pickers_needed
return {
'picks_per_day': picks_per_day,
'labor_hours_needed': round(labor_hours_needed, 1),
'pickers_needed': round(pickers_needed, 1),
'orders_per_picker_per_day': round(orders_per_picker, 0),
'picks_per_picker_per_hour': pick_rate_per_hour
}
# Example
discrete = discrete_picking_capacity(
orders_per_day=500,
lines_per_order=5,
pick_rate_per_hour=100,
working_hours=8
)
print(f"Pickers needed: {discrete['pickers_needed']}")
print(f"Orders per picker: {discrete['orders_per_picker_per_day']}")
Batch Picking

Description:

  • Pick multiple orders simultaneously
  • Pick each SKU once for all orders in batch
  • Sort items to orders after picking

Benefits:

  • Reduce travel time (visit each location once)
  • 40-60% productivity improvement vs. discrete

Implementation:

python
def batch_picking_optimization(orders_df, batch_size=10, sort_time_per_unit=3):
"""
Optimize batch picking
Parameters:
- orders_df: DataFrame with columns ['order_id', 'sku', 'quantity', 'location']
- batch_size: Orders per batch
- sort_time_per_unit: Seconds to sort each unit to order
Returns:
- Batch assignments and performance metrics
"""
# Create batches
orders_df = orders_df.copy()
orders_df['batch'] = (orders_df.index // batch_size) + 1
# Calculate picks per batch
batch_summary = orders_df.groupby('batch').agg({
'order_id': 'nunique',
'sku': 'count',
'quantity': 'sum',
'location': 'nunique'
}).rename(columns={
'order_id': 'orders',
'sku': 'pick_lines',
'location': 'unique_locations'
})
# Estimate time savings
# Discrete: visit each location for each order
# Batch: visit each location once per batch
discrete_picks = len(orders_df)
batch_picks = batch_summary['unique_locations'].sum()
pick_reduction_pct = (discrete_picks - batch_picks) / discrete_picks
# Sort time required
total_units = batch_summary['quantity'].sum()
sort_time_hours = (total_units * sort_time_per_unit) / 3600
return {
'total_batches': len(batch_summary),
'avg_orders_per_batch': batch_summary['orders'].mean(),
'discrete_picks': discrete_picks,
'batch_picks': batch_picks,
'pick_reduction_%': round(pick_reduction_pct * 100, 1),
'sort_time_hours': round(sort_time_hours, 2),
'batch_summary': batch_summary
}
# Example
orders_df = pd.DataFrame({
'order_id': [f'ORD_{i}' for i in range(1, 101)],
'sku': np.random.choice(['SKU_A', 'SKU_B', 'SKU_C', 'SKU_D'], 100),
'quantity': np.random.randint(1, 5, 100),
'location': np.random.choice(['A1', 'A2', 'B1', 'B2', 'C1'], 100)
})
batch_result = batch_picking_optimization(orders_df, batch_size=10)
print(f"Pick reduction: {batch_result['pick_reduction_%']}%")
print(f"Sort time required: {batch_result['sort_time_hours']} hours")
Zone Picking

Description:

  • Divide warehouse into zones
  • Each picker assigned to a zone
  • Orders pass through zones sequentially or consolidate at end

Types:

  • Sequential zone picking: Order travels zone to zone
  • Batch zone picking: Pick to totes, consolidate later

Benefits:

  • Pickers become expert in their zone
  • Parallel processing (multiple orders picked simultaneously)
  • Reduces congestion
python
def zone_picking_design(warehouse_sq_ft, num_pickers, orders_per_day,
lines_per_order, sku_distribution):
"""
Design zone picking system
Parameters:
- warehouse_sq_ft: Total picking area
- num_pickers: Available pickers
- orders_per_day: Daily order volume
- lines_per_order: Average lines per order
- sku_distribution: Dict with zone: % of picks
"""
picks_per_day = orders_per_day * lines_per_order
# Allocate zones based on pick volume
zone_allocation = {}
for zone, pct in sku_distribution.items():
picks_in_zone = picks_per_day * pct
pickers_needed = picks_in_zone / (100 * 8) # 100 picks/hr, 8 hrs
zone_allocation[zone] = {
'pick_volume': round(picks_in_zone, 0),
'pickers_needed': round(pickers_needed, 1),
'sq_ft': round(warehouse_sq_ft * pct, 0)
}
return zone_allocation
# Example
sku_dist = {
'Zone_A_Fast': 0.40, # 40% of picks
'Zone_B_Medium': 0.35,
'Zone_C_Slow': 0.25
}
zones = zone_picking_design(
warehouse_sq_ft=50000,
num_pickers=20,
orders_per_day=2000,
lines_per_order=5,
sku_distribution=sku_dist
)
print("Zone Allocation:")
for zone, data in zones.items():
print(f"\n {zone}:")
print(f" Pick volume: {data['pick_volume']}")
print(f" Pickers needed: {data['pickers_needed']}")
print(f" Square footage: {data['sq_ft']}")
Wave Picking

Description:

  • Release groups of orders together as "waves"
  • Optimize wave composition for efficiency
  • Coordinate picking, packing, shipping

Wave Design Factors:

  • Carrier schedule (UPS pickup at 5pm)
  • Order priority (SLA requirements)
  • Resource availability (pickers, packers)
  • Warehouse capacity (staging space)
python
def wave_planning(orders_df, waves_per_day=4, target_wave_size=500):
"""
Plan picking waves
Parameters:
- orders_df: DataFrame with ['order_id', 'priority', 'lines', 'carrier', 'cutoff_time']
- waves_per_day: Number of waves per day
- target_wave_size: Target orders per wave
Returns:
- Wave assignments
"""
orders_df = orders_df.copy()
# Sort by priority and cutoff time
orders_df = orders_df.sort_values(['priority', 'cutoff_time'], ascending=[False, True])
# Assign to waves
orders_df['wave'] = (orders_df.index // target_wave_size) % waves_per_day + 1
# Wave summary
wave_summary = orders_df.groupby('wave').agg({
'order_id': 'count',
'lines': 'sum',
'cutoff_time': 'max'
}).rename(columns={
'order_id': 'orders',
'lines': 'total_picks'
})
# Estimate time required per wave
wave_summary['pick_hours'] = wave_summary['total_picks'] / 100 # 100 picks/hr
wave_summary['pickers_needed'] = np.ceil(wave_summary['pick_hours'] / 2) # 2 hr wave
return orders_df[['order_id', 'wave', 'priority']], wave_summary
# Example
orders_data = pd.DataFrame({
'order_id': [f'ORD_{i}' for i in range(1, 2001)],
'priority': np.random.choice([1, 2, 3], 2000, p=[0.1, 0.3, 0.6]),
'lines': np.random.poisson(5, 2000),
'carrier': np.random.choice(['UPS', 'FedEx', 'USPS'], 2000),
'cutoff_time': np.random.choice(['12:00', '15:00', '17:00'], 2000)
})
wave_assignments, wave_summary = wave_planning(orders_data, waves_per_day=4)
print("Wave Summary:")
print(wave_summary)
Cluster Picking

Description:

  • Pick multiple orders to a multi-compartment cart
  • Each compartment represents an order
  • Pick all orders simultaneously

Benefits:

  • High productivity (combine benefits of batch and discrete)
  • Maintain order integrity
  • Ideal for e-commerce (small orders, many SKUs)

Equipment:

  • Pick carts with 4-12 totes/compartments
  • Voice or RF-directed picking

Pick Path Optimization

Routing Strategies

1. S-Shape Routing

  • Enter aisles with picks, skip empty aisles
  • Most common, simple to implement

2. Return Routing

  • Enter and exit same end of aisle
  • Good for selective aisles with few picks

3. Midpoint Routing

  • Enter nearest end of aisle
  • Most efficient for random pick locations

4. Largest Gap

  • Skip largest gap between picks in aisle
  • Optimal for most scenarios
python
def calculate_pick_path_distance(pick_locations, aisle_length_ft=100,
aisle_width_ft=10, routing='s-shape'):
"""
Calculate travel distance for pick path
Parameters:
- pick_locations: List of tuples [(aisle, position_pct), ...]
- aisle_length_ft: Length of aisle
- aisle_width_ft: Width between aisles
- routing: 's-shape', 'return', 'largest-gap'
Returns:
- Total travel distance
"""

This is the start of the file. Read the full SKILL.md on GitHub.

Security

  • Security scanPassed, 95 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
74
Repository forks
18
7-day trend score
22

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/kishorkukreja/awesome-supply-chain/order-fulfillment/badge)](https://verified-skill.com/skills/kishorkukreja/awesome-supply-chain/order-fulfillment)

Something wrong with this skill or its page? Tell us.