From gd-mcp-skills
Costing Quality — daily Skill that surfaces inventory valuation and COGS data quality issues blocking a clean accounting close. Runs five detection routines (zero-COGS shipments, zero landed cost on-hand, negative on-hand, lot-offset, landed cost completeness) and rolls them into a single severity-scored scorecard ranked by $ impact. Read-only. Use this Skill when the user says: "is the close ready", "costing readiness", "COGS check", "zero cost shipments", "missing landed cost", "negative inventory cost impact", "what's blocking close", "run gd-costing-quality", "run costing quality". Persona: Controller / Cost Accountant. Cadence: daily 6am USA Central weekdays, plus ad hoc.
How this skill is triggered — by the user, by Claude, or both
Slash command
/gd-mcp-skills:costing-qualityThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Costing Quality is a daily read-only Skill that answers one question for the controller every weekday morning: **is inventory valuation and COGS close-ready?**
Costing Quality is a daily read-only Skill that answers one question for the controller every weekday morning: is inventory valuation and COGS close-ready?
It runs five detection routines, then rolls them into a single severity-scored scorecard. The output is ranked by $ impact and age, top-10 with a tail summary, with drill links back to GoodDay for any row.
This Skill does not draft transactions. Operational follow-through (transfers, adjustments) lives in gd-onhand-ops, gd-safety-stock, and gd-rebalance.
../Configuration — Shared.md — schedule, delivery, output shape, ranking, observability, brand, Data Source contract (Section 16)../Configuration - Costing Quality.md — severity thresholds, fallback cost cascade, ignore lists, incoterms matrix, lookback windows../SOP - Costing Quality.md — full procedure and rationale.../🖼️ Brand Guidelines.pdf — colors, voice, badge styling.This Skill describes the business entities each routine needs. The concrete mapping — which MCP tool, verified query, or CSV column populates each entity — lives in ../MCP Tool Catalog.md. When the GoodDay MCP renames a tool or publishes a new verified query, only the catalog changes; this Skill does not. Same for the CSV path: if a merchant's export uses different column names, the catalog records the mapping.
Session context (merchant id, today's date, channels, locations) comes from the connected MCP's standard surface (merchant://channels, merchant://locations, per-response metadata) — no explicit bootstrap call required.
Entities this Skill needs — look each one up in the catalog:
| Routine | Entity needed |
|---|---|
| 1 — Zero-COGS Check | Fulfillment history with recorded COGS over the configured lookback window |
| 2 — Zero Landed Cost | Lots currently on hand with no landed cost applied (+ lot-grain $ valuation for ranking) |
| 3 — Negative On-Hand | Negative on-hand positions at SKU × Channel × Location |
| 4 — Lot-Offset Flag | Lot positions across the same SKU × Location (for sibling-sign comparison) |
| 5 — Landed Cost Completeness | Receipts in the configured lookback window + parent PO incoterms type + vendor country of origin |
| Ranking (all routines) | Lot-grain inventory valuation + fallback cost cascade per Configuration |
Output delivery is per ../Configuration — Shared.md Section 5. Drill links are from per-row deep_link fields on every catalog-mapped tool response.
Catalog binding may be partial. If the catalog's current binding for any entity resolves to a verified query or tool that the live MCP doesn't honor (VALIDATION_ERROR: not_found or equivalent), follow ../Configuration — Shared.md Section 12b: surface a routine-specific notice and do not attempt a fallback.
The Skill executes five detection routines in parallel where possible, then rolls them up.
Routine 1: Zero-COGS Check → Units fulfilled at $0 cost, root-cause classified
Routine 2: Zero Landed Cost → Lots on hand with no landed cost
Routine 3: Negative On-Hand → Negative positions at any ledger grain
Routine 4: Lot-Offset Flag → Hidden negative lots offset by positive siblings
Routine 5: Landed Cost Completeness → Receipts missing required components per incoterms
Scorecard: costing-readiness → Severity-scored roll-up of all five
Identify units fulfilled in the lookback window where recorded COGS is zero. Classify each by likely root cause (missing vendor cost / FOB no freight / draft receipt / lot mix). Compute $ exposure using the fallback cost cascade in the Configuration doc.
Identify lots currently on hand with no landed cost applied. Compute $ exposure using the fallback cost cascade.
Identify negative on-hand positions at the SKU × Channel × Location grain. Classify each as cross-channel (positive elsewhere at the Location) or single-channel (no offset).
For each SKU + Location, scan lots for opposite-sign positions (one negative, one positive) at the same SKU+Location. Surface these explicitly — they're invisible at the SKU summary level.
For each receipt in the lookback window, look up the parent PO's incoterms type and the vendor's country of origin. Consult the incoterms matrix in the Configuration doc to determine which cost components are required. Flag receipts missing any required component.
Read the outputs of Routines 1–5. Do not re-detect. Apply the severity rules defined in ./Configuration - Costing Quality.md Section 1 (Severity thresholds). Compose the headline ("Is the close ready today?"), top-10 punch list, and tail summary per the shared Output shape (../Configuration — Shared.md Section 7).
Follow the output shape from the shared Configuration:
+N more lines totaling $X if more than 10Render against the GoodDay Brand Guide. High severity uses brand alert red; Medium uses brand amber; KPI tiles and headers follow brand typography.
Post to the configured Slack channel for scheduled runs. Return inline for ad hoc invocations.
gd-onhand-ops, gd-rebalance, or gd-safety-stock for the operational follow-through.Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub gooddaysoftware/gd-mcp-skills-plugin --plugin gd-mcp-skills