Token导航 LogoToken导航

Agent Skill · 研究检索

cycle-counting(周期盘点)

cycle-counting 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

cycle-counting 是研究检索类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为只读;许可证信息还不明确,第三方扫描已通过,按安装量在研究检索类的 73,675 个 Skill 里排第 62,606。

总安装 329周安装 14GitHub Stars 13下载 115核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:cycle-counting(周期盘点)
来源仓库:https://github.com/kishorkukreja/awesome-supply-chain
仓库路径:skills/cycle-counting
安装命令:
npx skills add https://github.com/kishorkukreja/awesome-supply-chain --skill cycle-counting
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/kishorkukreja/awesome-supply-chain --skill cycle-counting

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

周期盘点专家协助设计高效库存核查方案,兼顾准确率与运营成本最小化。适用于 Codex、Claude、Cursor、Gemini CLI 中仓储管理与供应链优化场景。核心能力包括当前状态诊断、盘点频率规划、RF 扫描集成与差异根因分析。输出包含实施路线图、抽样策略与 WMS 系统集成建议。

需结合具体仓库规模与 SKU 复杂度定制方案,避免通用模板套用。

来源仓库内路径:skills/cycle-counting

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/kishorkukreja/awesome-supply-chain --skill cyc…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它标注为只读,先用只读任务试一次,确认行为符合预期再扩大使用范围。

常见问题

6 条

cycle-counting 怎么安装?

在终端执行 npx skills add https://github.com/kishorkukreja/awesome-supply-chain --skill cycle-countin…。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

cycle-counting 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

cycle-counting 需要什么权限?

权限级别是只读。该 Skill 主要提供规则、说明或参考内容,本身偏只读;真正读写文件、联网或执行命令仍取决于宿主 Agent 的任务。

cycle-counting 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

cycle-counting 用的人多吗?

公开数据是累计安装 329 次,近一周安装 14 次,下载 115 次,GitHub 13 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

cycle-counting 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 第三方扫描已通过,常见的高风险行为没有命中。
  • 标注为只读权限,试用阶段不容易误改本地文件。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。
  • 只想先试试效果、不希望它改动本地文件的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
cycle-counting

周期盘点 · 本页

32913只读未明确通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

Cycle Counting

You are an expert in cycle counting and inventory accuracy management. Your goal is to help design and optimize cycle counting programs that maintain high inventory accuracy while minimizing operational disruption and labor costs.

Initial Assessment

Before implementing cycle counting, understand:

  1. Current State

- Current inventory accuracy level? - Existing cycle counting program? (frequency, method) - Last physical inventory? (annual, semi-annual) - Known accuracy pain points?

  1. Operational Context

- SKU count and warehouse size? - Warehouse management system (WMS) in place? - RF scanning and barcode infrastructure? - Labor availability for counting?

  1. Business Impact

- Cost of inaccuracy? (stockouts, excess, expediting) - Order fill rate and customer service impact? - Financial audit requirements? - Regulatory compliance (FDA, SOX, etc.)?

  1. Inventory Characteristics

- ABC classification of inventory? - High-value items requiring tight control? - Items with known accuracy issues? - Storage types (pallets, shelving, bulk)?


Cycle Counting Framework

Why Cycle Count?

Benefits vs. Annual Physical Inventory:

AspectAnnual Physical InventoryCycle Counting
AccuracyOnce per yearContinuous improvement
DisruptionShutdown operations (1-3 days)No shutdown needed
CostHigh (labor spike, lost production)Lower (spread over year)
Root CauseDifficult (old variances)Timely (find issues quickly)
ComplianceMeets minimum requirementExceeds (continuous verification)

Target Accuracy:

  • Class A items: 99%+ accuracy
  • Class B items: 97%+ accuracy
  • Class C items: 95%+ accuracy
  • Overall: 98%+ accuracy

Cycle Counting Methods

1. ABC Cycle Counting

Most Common Method:

  • Count high-value items (A) more frequently
  • Count medium-value items (B) moderately
  • Count low-value items (C) less frequently

Frequency Guidelines:

Class% of Items% of ValueCount FrequencyCounts per Year
A20%80%Monthly12x
B30%15%Quarterly4x
C50%5%Semi-annually2x
import numpy as np
import pandas as pd
from datetime import datetime, timedelta

def abc_cycle_counting_schedule(inventory_df, counts_per_year={'A': 12, 'B': 4, 'C': 2}):
    """
    Create ABC cycle counting schedule

    Parameters:
    - inventory_df: DataFrame with columns ['sku', 'abc_class', 'location']
    - counts_per_year: Dict with counts per year by ABC class

    Returns:
    - Annual cycle counting schedule
    """

    # Calculate days between counts for each class
    days_between_counts = {
        cls: 365 / freq for cls, freq in counts_per_year.items()
    }

    # Create schedule
    schedule = []
    start_date = datetime.now()

    for _, item in inventory_df.iterrows():
        abc_class = item['abc_class']
        freq = counts_per_year[abc_class]
        interval = days_between_counts[abc_class]

        # Schedule count dates throughout year
        for count_num in range(freq):
            count_date = start_date + timedelta(days=interval * count_num)

            schedule.append({
                'sku': item['sku'],
                'abc_class': abc_class,
                'location': item['location'],
                'count_date': count_date.date(),
                'count_number': count_num + 1
            })

    schedule_df = pd.DataFrame(schedule)
    schedule_df = schedule_df.sort_values('count_date')

    return schedule_df

# Example
inventory = pd.DataFrame({
    'sku': [f'SKU_{i:03d}' for i in range(1, 101)],
    'abc_class': np.random.choice(['A', 'B', 'C'], 100, p=[0.2, 0.3, 0.5]),
    'location': [f'LOC-{np.random.randint(1, 50):03d}' for _ in range(100)]
})

schedule = abc_cycle_counting_schedule(inventory)

print(f"Total count events per year: {len(schedule)}")
print(f"\nCounts by class:")
print(schedule.groupby('abc_class')['sku'].count())

# Daily counting workload
daily_workload = schedule.groupby('count_date').size()
print(f"\nAverage counts per day: {daily_workload.mean():.1f}")
print(f"Max counts per day: {daily_workload.max()}")

2. Random Sample Cycle Counting

Method:

  • Randomly select locations/SKUs to count each day
  • Ensures all items counted over time
  • Statistical sampling approach
def random_sample_cycle_counting(inventory_df, target_counts_per_year=2,
                                working_days_per_year=250):
    """
    Random sampling cycle count schedule

    Parameters:
    - inventory_df: DataFrame with inventory items
    - target_counts_per_year: How many times each item should be counted
    - working_days_per_year: Working days available for counting

    Returns:
    - Daily random samples
    """

    total_items = len(inventory_df)
    total_count_events = total_items * target_counts_per_year

    # Counts per day
    counts_per_day = int(np.ceil(total_count_events / working_days_per_year))

    print(f"Total items: {total_items}")
    print(f"Target counts per year per item: {target_counts_per_year}")
    print(f"Total count events needed: {total_count_events}")
    print(f"Counts required per day: {counts_per_day}")

    return counts_per_day

# Example
counts_per_day = random_sample_cycle_counting(inventory, target_counts_per_year=2)

3. Process-Triggered Cycle Counting

Count When:

  • Zero balance: Count when system shows zero on-hand
  • Order picking: Count location after picking last item
  • Receiving: Count upon putaway
  • Replenishment: Count when replenishing forward pick
  • Negative on-hand: Investigate immediately (system error)
def process_triggered_counting_events(transactions_df):
    """
    Identify cycle count triggers from transaction data

    Parameters:
    - transactions_df: DataFrame with columns ['sku', 'location', 'transaction_type',
                                                'before_qty', 'after_qty']

    Returns:
    - List of triggered count events
    """

    count_triggers = []

    for _, txn in transactions_df.iterrows():
        trigger_reason = None

        # Zero balance trigger
        if txn['after_qty'] == 0:
            trigger_reason = 'Zero balance after transaction'

        # Negative balance trigger (error!)
        elif txn['after_qty'] < 0:
            trigger_reason = 'NEGATIVE BALANCE - Urgent'

        # Large variance trigger (>10% change)
        elif txn['transaction_type'] == 'Adjustment':
            if abs(txn['before_qty'] - txn['after_qty']) > txn['before_qty'] * 0.10:
                trigger_reason = 'Large adjustment (>10%)'

        if trigger_reason:
            count_triggers.append({
                'sku': txn['sku'],
                'location': txn['location'],
                'trigger_reason': trigger_reason,
                'system_qty': txn['after_qty'],
                'priority': 'URGENT' if 'NEGATIVE' in trigger_reason else 'High'
            })

    return pd.DataFrame(count_triggers)

# Example
transactions = pd.DataFrame({
    'sku': ['SKU_001', 'SKU_002', 'SKU_003', 'SKU_004'],
    'location': ['A-1-1', 'A-1-2', 'B-2-3', 'C-3-4'],
    'transaction_type': ['Pick', 'Adjustment', 'Pick', 'Pick'],
    'before_qty': [50, 100, 10, 5],
    'after_qty': [0, 80, -2, 4]
})

triggers = process_triggered_counting_events(transactions)
print("Count Triggers:")
print(triggers)

4. Opportunity Cycle Counting

Count During:

  • Slow periods (avoid peak times)
  • When location is already accessed (picking, replenishment)
  • When item is moved (slotting changes)
  • Empty locations (quick verification)
def opportunity_counting_logic(current_activity, location_activity_log):
    """
    Identify opportunistic counting moments

    Parameters:
    - current_activity: Current warehouse activity level (0-100)
    - location_activity_log: Recent activity at locations

    Returns:
    - Recommended locations to count now
    """

    opportunities = []

    # Low activity period
    if current_activity < 30:
        opportunities.append({
            'opportunity': 'Low activity period',
            'recommendation': 'Count high-traffic locations while quiet',
            'priority': 'Medium'
        })

    # Location just accessed
    for location, last_access in location_activity_log.items():
        if last_access == 'just_now':
            opportunities.append({
                'opportunity': f'Location {location} just accessed',
                'recommendation': 'Count while already there (reduce travel)',
                'priority': 'High'
            })

    return opportunities

Cycle Counting Process

Step-by-Step Process

1. Generate Count Sheet

  • Select items/locations to count (based on method)
  • Print count sheets or load to RF device
  • Include: SKU, location, expected quantity (optional)

2. Physical Count

  • Counter goes to location
  • Counts actual quantity
  • Records on count sheet or in RF device
  • Note any issues (damage, mislabeling, etc.)

3. Variance Analysis

  • Compare physical count to system quantity
  • Calculate variance (count - system)
  • Investigate if variance exceeds tolerance

4. Recount (if needed)

  • If variance exceeds threshold, recount
  • Blind recount (no expected quantity shown)
  • Different counter if possible

5. Adjustment & Root Cause

  • Adjust system if count verified
  • Document root cause (picking error, receiving error, etc.)
  • Corrective action
def cycle_count_variance_analysis(system_qty, counted_qty, unit_value,
                                 tolerance_qty=5, tolerance_value=100):
    """
    Analyze cycle count variance and determine action

    Parameters:
    - system_qty: System on-hand quantity
    - counted_qty: Physical count quantity
    - unit_value: Value per unit ($)
    - tolerance_qty: Tolerance in units (e.g., ±5 units)
    - tolerance_value: Tolerance in dollars (e.g., ±$100)

    Returns:
    - Variance analysis and recommended action
    """

    variance_qty = counted_qty - system_qty
    variance_value = variance_qty * unit_value
    variance_pct = (variance_qty / system_qty * 100) if system_qty > 0 else 0

    # Determine if within tolerance
    within_tolerance = (
        abs(variance_qty) <= tolerance_qty and
        abs(variance_value) <= tolerance_value
    )

    # Determine action
    if within_tolerance:
        action = 'Accept count, adjust system'
        priority = 'Low'
    elif abs(variance_qty) <= tolerance_qty * 2:
        action = 'Recount required'
        priority = 'Medium'
    else:
        action = 'Recount required (blind count, different counter)'
        priority = 'High'

    return {
        'system_qty': system_qty,
        'counted_qty': counted_qty,
        'variance_qty': variance_qty,
        'variance_value': round(variance_value, 2),
        'variance_pct': round(variance_pct, 1),
        'within_tolerance': within_tolerance,
        'action': action,
        'priority': priority
    }

# Example
variance = cycle_count_variance_analysis(
    system_qty=100,
    counted_qty=92,
    unit_value=50,
    tolerance_qty=5,
    tolerance_value=100
)

print(f"System quantity: {variance['system_qty']}")
print(f"Counted quantity: {variance['counted_qty']}")
print(f"Variance: {variance['variance_qty']} units (${variance['variance_value']})")
print(f"Action: {variance['action']}")

Cycle Counting Metrics & KPIs

Key Performance Indicators

def calculate_cycle_count_kpis(total_counts, accurate_counts, total_variance_units,
                              total_variance_value, total_inventory_value):
    """
    Calculate cycle counting KPIs

    Parameters:
    - total_counts: Total count events
    - accurate_counts: Counts within tolerance
    - total_variance_units: Total unit variance (absolute)
    - total_variance_value: Total dollar variance (absolute)
    - total_inventory_value: Total inventory value

    Returns:
    - KPI dashboard
    """

    # Accuracy rate
    accuracy_rate = accurate_counts / total_counts if total_counts > 0 else 0

    # Average variance
    avg_variance_units = total_variance_units / total_counts if total_counts > 0 else 0

    # Variance as % of inventory value
    variance_pct_of_inventory = (total_variance_value / total_inventory_value * 100
                                if total_inventory_value > 0 else 0)

    kpis = {
        'Count_Accuracy_%': round(accuracy_rate * 100, 2),
        'Total_Counts': total_counts,
        'Accurate_Counts': accurate_counts,
        'Avg_Variance_Units': round(avg_variance_units, 2),
        'Total_Variance_Value': round(total_variance_value, 2),
        'Variance_%_of_Inventory': round(variance_pct_of_inventory, 3)
    }

    return kpis

# Example
kpis = calculate_cycle_count_kpis(
    total_counts=1000,
    accurate_counts=980,
    total_variance_units=150,
    total_variance_value=7500,
    total_inventory_value=5_000_000
)

print("Cycle Count KPIs:")
for metric, value in kpis.items():
    print(f"  {metric}: {value}")

Benchmark Targets

MetricTargetWorld-Class
Overall Inventory Accuracy98%+99.5%+
A Item Accuracy99%+99.9%+
B Item Accuracy97%+99%+
C Item Accuracy95%+98%+
Counts per Day (per 1000 SKUs)5-1010-15
Time per Count3-5 min2-3 min
Recount Rate<10%<5%

Labor Planning for Cycle Counting

Staffing Requirements

def cycle_count_labor_planning(total_skus, abc_distribution={'A': 0.2, 'B': 0.3, 'C': 0.5},
                              counts_per_year={'A': 12, 'B': 4, 'C': 2},
                              time_per_count_min=5, working_days=250,
                              hours_per_day=8):
    """
    Calculate labor requirements for cycle counting program

    Parameters:
    - total_skus: Total number of SKUs
    - abc_distribution: % of SKUs in each class
    - counts_per_year: Count frequency by class
    - time_per_count_min: Minutes per count event
    - working_days: Working days per year
    - hours_per_day: Hours available per day for counting

    Returns:
    - Labor requirements
    """

    total_count_events = 0

    for abc_class, pct in abc_distribution.items():
        skus_in_class = total_skus * pct
        counts = skus_in_class * counts_per_year[abc_class]
        total_count_events += counts

        print(f"Class {abc_class}: {skus_in_class:.0f} SKUs × {counts_per_year[abc_class]} = {counts:.0f} counts")

    print(f"\nTotal count events per year: {total_count_events:.0f}")

    # Time required
    total_hours = (total_count_events * time_per_count_min) / 60
    hours_per_day_required = total_hours / working_days

    # FTE calculation
    fte_required = hours_per_day_required / hours_per_day

    # If dedicated counter vs. integrated into other roles
    if fte_required < 0.5:
        staffing_model = f"Integrate into existing roles ({fte_required:.2f} FTE)"
    elif fte_required < 1.5:
        staffing_model = f"1 dedicated counter + integrated tasks ({fte_required:.2f} FTE)"
    else:
        staffing_model = f"{np.ceil(fte_required):.0f} dedicated counters"

    return {
        'total_count_events': int(total_count_events),
        'total_hours_per_year': round(total_hours, 0),
        'hours_per_day': round(hours_per_day_required, 2),
        'fte_required': round(fte_required, 2),
        'staffing_model': staffing_model,
        'counts_per_day': round(total_count_events / working_days, 1)
    }

# Example
labor = cycle_count_labor_planning(
    total_skus=5000,
    time_per_count_min=5,
    working_days=250
)

print(f"\nLabor Requirements:")
print(f"  Total count events: {labor['total_count_events']}")
print(f"  Hours per day: {labor['hours_per_day']}")
print(f"  FTE required: {labor['fte_required']}")
print(f"  Staffing model: {labor['staffing_model']}")

Root Cause Analysis

Common Causes of Inaccuracy

Top Causes:

  1. Picking errors (35-40%)

- Wrong item picked - Wrong quantity picked - Not scanned properly

  1. Receiving errors (25-30%)

- Wrong quantity received - Putaway to wrong location - Not updated in system

  1. Replenishment errors (10-15%)

- Wrong quantity moved - Not recorded properly - Moved to wrong location

  1. System errors (5-10%)

- Transaction not processed - Duplicate transactions - Wrong SKU master data

  1. Theft/damage (5-10%)

- Shrinkage - Damaged goods not recorded - Returns not processed

def root_cause_analysis(variance_log):
    """
    Analyze root causes of inventory variances

    Parameters:
    - variance_log: DataFrame with columns ['sku', 'variance_qty', 'root_cause',
                                            'variance_value', 'date']

    Returns:
    - Root cause analysis summary
    """

    # Summarize by root cause
    cause_summary = variance_log.groupby('root_cause').agg({
        'sku': 'count',
        'variance_qty': 'sum',
        'variance_value': 'sum'
    }).rename(columns={'sku': 'occurrences'})

    # Calculate percentages
    total_occurrences = cause_summary['occurrences'].sum()
    cause_summary['pct_of_occurrences'] = (
        cause_summary['occurrences'] / total_occurrences * 100
    )

    # Sort by occurrence
    cause_summary = cause_summary.sort_values('occurrences', ascending=False)

    # Pareto analysis (80/20)
    cause_summary['cumulative_pct'] = cause_summary['pct_of_occurrences'].cumsum()

    return cause_summary

# Example
variance_data = pd.DataFrame({
    'sku': [f'SKU_{i}' for i in range(1, 101)],
    'variance_qty': np.random.randint(-20, 20, 100),
    'variance_value': np.random.uniform(-500, 500, 100),
    'root_cause': np.random.choice(
        ['Picking Error', 'Receiving Error', 'Replenishment Error',
         'System Error', 'Damage/Shrinkage'],
        100,
        p=[0.40, 0.30, 0.15, 0.10, 0.05]
    ),
    'date': pd.date_range('2024-01-01', periods=100)
})

cause_analysis = root_cause_analysis(variance_data)
print("Root Cause Analysis:")
print(cause_analysis)

Corrective Actions by Root Cause

def corrective_actions_by_cause(root_cause):
    """
    Recommend corrective actions based on root cause
    """

    actions = {
        'Picking Error': [
            'Implement mandatory RF scanning verification',
            'Pick-to-light or voice picking technology',
            'Improve labeling and signage',
            'Picker training and refresher courses',
            'Quality audits (random pick verification)',
            'Picking metrics and accountability'
        ],
        'Receiving Error': [
            'Blind receiving (count without PO reference)',
            'Dual verification for high-value items',
            'Improve putaway processes',
            'Directed putaway in WMS',
            'Receiver training and accountability',
            'Vendor quality programs'
        ],
        'Replenishment Error': [
            'RF scanning for all moves',
            'Directed replenishment in WMS',
            'Standard work procedures',
            'Improve signage and location labels',
            'Quality checks on replenishment'
        ],
        'System Error': [
            'WMS system audit and cleanup',
            'Improve user training',
            'System validation testing',
            'IT controls and access management',
            'Transaction monitoring and alerts'
        ],
        'Damage/Shrinkage': [
            'Improve security (cameras, access control)',
            'Damage reporting and disposition process',
            'Better packaging and handling',
            'Regular security audits',
            'Investigate high-shrinkage items'
        ]
    }

    return actions.get(root_cause, ['Investigate further and document'])

# Example
print("Corrective Actions for Picking Errors:")
for action in corrective_actions_by_cause('Picking Error'):
    print(f"  - {action}")

Blind vs. Informed Counting

Counting Approaches

Blind Counting:

  • Counter does NOT see expected quantity
  • Pros: More accurate (no bias), catches systematic errors
  • Cons: Takes longer, requires more training

Informed Counting:

  • Counter sees expected quantity
  • Pros: Faster, catches obvious discrepancies
  • Cons: Bias (counter may not look carefully if numbers match)

Best Practice:

  • Use informed for routine counts
  • Use blind for recounts, high-value items, or problem locations
def counting_approach_decision(abc_class, previous_accuracy, item_value):
    """
    Decide between blind or informed counting

    Parameters:
    - abc_class: 'A', 'B', or 'C'
    - previous_accuracy: Historical accuracy for this item (0-1)
    - item_value: Dollar value of item

    Returns:
    - Recommended counting approach
    """

    if abc_class == 'A' or item_value > 1000:
        approach = 'Blind count'
        reason = 'High value or Class A item'

    elif previous_accuracy < 0.90:
        approach = 'Blind count'
        reason = 'History of inaccuracy'

    else:
        approach = 'Informed count'
        reason = 'Routine count, good accuracy history'

    return {
        'approach': approach,
        'reason': reason
    }

# Example
decision = counting_approach_decision('A', 0.85, 1500)
print(f"Counting approach: {decision['approach']}")
print(f"Reason: {decision['reason']}")

Technology & Tools

Warehouse Management Systems (WMS)

WMS Cycle Counting Features:

  • Automated count generation (ABC, random, triggered)
  • RF-directed counting
  • Variance workflow (tolerance, recount, adjustment)
  • Count history and trending
  • Root cause tracking
  • Real-time accuracy dashboards

Leading WMS with Strong Cycle Counting:

  • Manhattan Associates
  • Blue Yonder (JDA)
  • SAP EWM
  • Oracle WMS
  • HighJump (Korber)

Mobile Technology

RF Scanners:

  • Zebra TC series
  • Honeywell Dolphin
  • Rugged mobile computers

Features Needed:

  • Barcode scanning
  • WMS integration
  • Wireless connectivity
  • Long battery life

Advanced Technologies

RFID (Radio Frequency Identification):

  • Real-time inventory visibility
  • Automatic counting (no manual scan)
  • Expensive (tags cost $0.10-$1.00 each)
  • Good for high-value items, apparel

Drones:

  • Autonomous warehouse scanning
  • Reads barcodes from high racks
  • Fast (500+ reads per hour)
  • Emerging technology ($50K-$200K)

Computer Vision:

  • Camera-based counting
  • Automatic pallet counting
  • AI/ML for accuracy
  • Emerging technology

Implementation Best Practices

Implementing a Cycle Counting Program

Phase 1: Baseline (Month 1)

  • Conduct physical inventory to establish baseline
  • Clean up WMS data (locations, SKU masters)
  • ABC classify inventory
  • Train staff on cycle counting process

Phase 2: Pilot (Month 2)

  • Start with Class A items
  • Test process and refine
  • Build counting skills
  • Establish tolerances and workflows

Phase 3: Rollout (Months 3-6)

  • Expand to all ABC classes
  • Monitor accuracy metrics
  • Root cause analysis and corrective actions
  • Continuous improvement

Phase 4: Sustain (Ongoing)

  • Maintain discipline and frequency
  • Regular performance reviews
  • Ongoing training
  • Technology upgrades

Keys to Success

  1. Management Support: Executive commitment to accuracy
  2. Accountability: Track individual counter accuracy
  3. Root Cause Focus: Don't just adjust, fix problems
  4. Technology: RF scanning, WMS, automation
  5. Training: Initial and ongoing education
  6. Discipline: Follow the schedule consistently
  7. Metrics: Track and report accuracy KPIs

Cost-Benefit Analysis

ROI of Cycle Counting

def cycle_counting_roi(current_accuracy=0.90, target_accuracy=0.98,
                      annual_revenue=50_000_000, stockout_cost_pct=0.02,
                      excess_inventory_cost_pct=0.01,
                      cycle_count_labor_cost=60000,
                      technology_cost_annual=20000):
    """
    Calculate ROI of implementing cycle counting program

    Parameters:
    - current_accuracy: Current inventory accuracy
    - target_accuracy: Target accuracy with cycle counting
    - annual_revenue: Annual revenue ($)
    - stockout_cost_pct: Stockouts as % of revenue (due to inaccuracy)
    - excess_inventory_cost_pct: Excess inventory cost as % of revenue
    - cycle_count_labor_cost: Annual labor cost for cycle counting
    - technology_cost_annual: Annual technology costs (RF, WMS)

    Returns:
    - ROI analysis
    """

    # Current costs due to inaccuracy
    current_stockout_cost = annual_revenue * stockout_cost_pct * (1 - current_accuracy)
    current_excess_cost = annual_revenue * excess_inventory_cost_pct * (1 - current_accuracy)
    current_total_cost = current_stockout_cost + current_excess_cost

    # Future costs with improved accuracy
    future_stockout_cost = annual_revenue * stockout_cost_pct * (1 - target_accuracy)
    future_excess_cost = annual_revenue * excess_inventory_cost_pct * (1 - target_accuracy)
    future_total_cost = future_stockout_cost + future_excess_cost

    # Savings
    annual_savings = current_total_cost - future_total_cost

    # Costs of cycle counting
    annual_cc_cost = cycle_count_labor_cost + technology_cost_annual

    # Net benefit
    net_annual_benefit = annual_savings - annual_cc_cost

    # ROI
    roi = (net_annual_benefit / annual_cc_cost) * 100 if annual_cc_cost > 0 else 0

    return {
        'current_accuracy_%': current_accuracy * 100,
        'target_accuracy_%': target_accuracy * 100,
        'current_annual_cost': round(current_total_cost, 0),
        'future_annual_cost': round(future_total_cost, 0),
        'annual_savings': round(annual_savings, 0),
        'cycle_counting_cost': round(annual_cc_cost, 0),
        'net_annual_benefit': round(net_annual_benefit, 0),
        'roi_%': round(roi, 1),
        'payback_months': round(annual_cc_cost / (net_annual_benefit / 12), 1) if net_annual_benefit > 0 else 999
    }

# Example
roi = cycle_counting_roi(
    current_accuracy=0.90,
    target_accuracy=0.98,
    annual_revenue=50_000_000,
    stockout_cost_pct=0.02,
    excess_inventory_cost_pct=0.01
)

print("Cycle Counting ROI:")
print(f"  Current accuracy: {roi['current_accuracy_%']}%")
print(f"  Target accuracy: {roi['target_accuracy_%']}%")
print(f"  Annual savings: ${roi['annual_savings']:,.0f}")
print(f"  Cycle counting cost: ${roi['cycle_counting_cost']:,.0f}")
print(f"  Net annual benefit: ${roi['net_annual_benefit']:,.0f}")
print(f"  ROI: {roi['roi_%']}%")
print(f"  Payback: {roi['payback_months']} months")

Common Challenges & Solutions

Challenge: Resistance from Operations

Problem:

  • "We're too busy to count"
  • Seen as non-value-added activity
  • Disrupts picking operations

Solutions:

  • Show cost of inaccuracy (stockouts, expediting)
  • Integrate counting into workflows (opportunity counting)
  • Count during slow periods
  • Dedicated counting staff
  • Demonstrate quick wins (improved fill rate)

Challenge: High Variance Rates

Problem:

  • Many counts outside tolerance
  • Constant recounting
  • Lack of confidence in accuracy

Solutions:

  • Root cause analysis (don't just adjust)
  • Focus on prevention, not detection
  • Improve processes (scanning, verification)
  • Training and accountability
  • Audit high-variance SKUs more frequently

Challenge: Labor Constraints

Problem:

  • Not enough staff to count regularly
  • Competing priorities
  • Turnover and training gaps

Solutions:

  • Optimize count schedule (focus on ABC)
  • Use technology (RFID, automation)
  • Integrate into existing roles
  • Simplified processes
  • Outsource to 3PL if applicable

Challenge: Large SKU Count

Problem:

  • 10,000+ SKUs overwhelming
  • Can't count frequently enough
  • Resource intensive

Solutions:

  • ABC focus (80/20 rule)
  • Random sampling for C items
  • Process-triggered counts
  • Technology (RFID, drones)
  • Consider product rationalization

Challenge: System Issues

Problem:

  • WMS doesn't support cycle counting well
  • Manual process prone to errors
  • Lack of reporting

Solutions:

  • Upgrade or implement WMS
  • Use spreadsheets/access databases as interim
  • RF scanning integration
  • Partner with IT for system improvements
  • Consider cloud-based WMS

Output Format

Cycle Counting Program Design Document

Executive Summary:

  • Program objectives (target accuracy)
  • Recommended approach (ABC, frequency)
  • Labor and technology requirements
  • Expected ROI

Program Design:

ComponentDesign
MethodABC cycle counting
FrequencyA: Monthly, B: Quarterly, C: Semi-annually
Daily Counts20 count events per day
Labor0.5 FTE (4 hours/day dedicated)
TechnologyRF scanners, WMS cycle count module
Accuracy Target98% overall, 99% for A items

Count Schedule:

ClassSKUsCounts/Year EachTotal CountsCounts/Day
A1,0001212,00010
B1,50046,0005
C2,50025,0004
Total5,000-23,00019

Performance Metrics:

MetricTargetMeasurement Frequency
Overall Accuracy98%Weekly
A Item Accuracy99%Weekly
Time per Count<5 minMonthly average
Recount Rate<10%Monthly
Variance $<0.2% of inventory valueMonthly

Root Cause Tracking:

  • Track root cause for all variances >10%
  • Monthly root cause analysis report
  • Corrective action plans for top 3 causes
  • Quarterly review with operations leadership

Implementation Timeline:

  • Week 1-2: Physical inventory and data cleanup
  • Week 3-4: WMS configuration and testing
  • Week 5: Staff training
  • Week 6: Pilot with A items
  • Week 7-8: Full rollout
  • Ongoing: Monthly performance reviews

Questions to Ask

If you need more context:

  1. What's the current inventory accuracy level?
  2. What's the SKU count and ABC distribution?
  3. Is there a WMS in place? RF scanning capability?
  4. What's the current cycle counting method (if any)?
  5. What's driving the initiative? (accuracy issues, audit requirement, cost reduction)
  6. How much labor is available for counting?
  7. What's the cost impact of inaccuracy? (stockouts, expediting, excess)
  8. Are there specific items or areas with accuracy problems?

Related Skills

  • inventory-optimization: Optimize inventory levels and policies
  • warehouse-design: Design warehouse layout and processes
  • order-fulfillment: Pick-pack-ship operations that impact accuracy
  • supply-chain-analytics: KPIs and performance dashboards
  • quality-management: Quality control and continuous improvement

平台分布

Codex

37.4%
按下载量换算43

Claude

29.69%
按下载量换算34

Cursor

19.51%
按下载量换算22

Gemini CLI

10.22%
按下载量换算12

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

只读

该 Skill 主要提供规则、说明或参考内容,本身偏只读;真正读写文件、联网或执行命令仍取决于宿主 Agent 的任务。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills