dead-stock-identifier — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited dead-stock-identifier (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Flag dead, slow-moving, and declining SKUs based on sales velocity analysis. Produces a flagged inventory CSV, velocity distribution chart (PNG), and a formatted PDF report with operational guidance — all three, every run.
Activate when the user:
Before running the analysis, ensure Python 3.9+ is available and install dependencies:
pip install -r "$SKILL_DIR/scripts/requirements.txt"Resolve SKILL_DIR to the installed skill root first. If pip install fails due to permissions, try pip install --user -r "$SKILL_DIR/scripts/requirements.txt" or use a virtual environment.
The skill needs sales data with dates (to measure velocity) and optionally product data (for stock on hand and cost).
Lineitem sku, Lineitem quantity, Lineitem price, Created at.Variant Inventory Qty), cost (Variant Cost per item), and product titles. Without this, dead stock detection is limited to SKUs that appear in orders.Any CSV with SKU, date, and quantity columns works. Use --sku-col, --date-col, --quantity-col to specify column names if auto-detection fails. Use --cost-col and --stock-col for product data in generic formats.
Resolve the installed skill root first. The exact path depends on where the skill was installed in the current environment.
SKILL_DIR="<resolved-installed-skill-dir>"
python "$SKILL_DIR/scripts/dead_stock.py" \
--orders <path-to-orders-csv> \
--products <path-to-products-csv> \
--output-dir ./dead-stock-output| Flag | Default | Description |
|---|---|---|
--orders | (required) | Path to orders/sales CSV |
--products | — | Path to products CSV (stock, cost, titles) |
--output-dir | ./dead-stock-output | Directory for output files |
--window | 90 | Analysis window in days |
--slow-percentile | 10 | Velocity percentile for "at risk" tier |
--decline-threshold | 50 | Velocity decline % for "watch" tier |
--carrying-cost | — | Annual carrying cost as fraction of product cost (e.g., 0.25) |
--csv-only | false | Skip PNG and PDF generation (faster, CSV only) |
--sku-col | auto-detect | SKU column name for generic CSVs |
--products-sku-col | auto-detect | SKU column name in products CSV (when different from orders) |
--date-col | auto-detect | Date column name for generic CSVs |
--quantity-col | auto-detect | Quantity column name for generic CSVs |
--revenue-col | auto-detect | Revenue/price column name for generic CSVs |
--cost-col | auto-detect | Product cost column name for generic CSVs |
--stock-col | auto-detect | Stock-on-hand column name for generic CSVs |
Shopify exports with carrying cost analysis:
python "$SKILL_DIR/scripts/dead_stock.py" \
--orders orders_export.csv \
--products products_export.csv \
--output-dir ./dead-stock-output \
--carrying-cost 0.25Wider analysis window (180 days):
python "$SKILL_DIR/scripts/dead_stock.py" \
--orders orders_export.csv \
--products products_export.csv \
--window 180The script always produces all three outputs:
The CSV is sorted by risk tier (Dead first, then At Risk, Watch, Healthy) and within each tier by days since last sale (longest first). This means the most urgent items appear at the top of the file.
| Tier | Definition | Color |
|---|---|---|
| Dead | Zero units sold in the analysis window | Red |
| At Risk | Velocity in the bottom Nth percentile of active SKUs | Amber |
| Watch | Velocity declined >X% vs prior equivalent period | Yellow |
| Healthy | Not flagged | Green |
After the script runs:
reference.md for follow-up questions about dead stock methodology, SLOB terminology, aging framework, or carrying cost calculationIf no products file was provided: Acknowledge upfront that stock-on-hand, carrying cost, sell-through rate, and days-of-stock are unavailable. Explain what additional insights would be available with product data: "With a products export, I could also show you how much capital is tied up in dead stock, how many days of inventory you're carrying, and sell-through rates."
Financial Status column are automatically filtered to paid/authorized orders. If this column is absent, cancelled orders may inflate velocity — noted in caveats.If the user also wants revenue-priority context, pair this analysis with a separate ABC analysis. Treat that as an optional follow-up rather than a dependency: this skill stands on its own for dead-stock and slow-mover decisions.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.