[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M718C3R7C40RGVXMMB5XMY25":3,"skill-same:01M718C3R7C40RGVXMMB5XMY25":72},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":35,"linkOnly":36,"markdownContent":37,"markdownBody":38,"frontMatter":39,"refName":40,"commitSha":41,"skillDirectory":42,"forksCount":43,"repositoryHtmlUrl":44,"repositoryHomepageUrl":6,"ownerHtmlUrl":45,"ownerBlogUrl":46,"ownerDescription":6,"updatedAt":47,"install":48,"resources":61},"01M718C3R7C40RGVXMMB5XMY25","forecasting",null,"How to produce a demand forecast for a SKU, and when to delegate that to a subagent vs. compute it yourself. Load this for any task involving \"forecast\", \"how much will we sell\", \"next month\", promos, or seasonal SKUs.","anthropics\u002Fcwc-workshops","anthropics","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F76263028?v=4","01M697XGDPXJAVQ8391V2BCYTE","Anthropic","01M718C167JSRVRHKR28E40JYN",2298,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fcwc-workshops\u002Fblob\u002Fmain\u002Fagent-decomposition\u002F.claude\u002Fskills\u002Fforecasting\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34],"subagent","it","sell","seasonal","demand forecast","how","next","compute","task","when","load","produce","how to","delegate","for","forecast","2026-11-10 10:12:30",false,"---\nname: forecasting\ndescription: How to produce a demand forecast for a SKU, and when to delegate that to a subagent vs. compute it yourself. Load this for any task involving \"forecast\", \"how much will we sell\", \"next month\", promos, or seasonal SKUs.\n---\n\u003C!-- Copyright 2026 Anthropic PBC -->\n\u003C!-- SPDX-License-Identifier: Apache-2.0 -->\n\n\n# Demand Forecasting\n\nForecasting has two paths. Pick the right one — using a subagent when you don't need one wastes turns; skipping it when you do gives you a bad number.\n\n## Path A — compute it yourself (code execution)\n\nUse this when **all** of the following hold:\n- horizon ≤ 14 days\n- the product's `is_seasonal` flag is 0\n- the product's `promo_next_month` flag is 0\n- the task doesn't mention a promo, holiday, or trend change\n\nThen the forecast is just a rolling mean. This skill ships a script for it:\n\n```bash\npython .claude\u002Fskills\u002Fforecasting\u002Frolling_mean.py SKU-0057 14\n```\n\nThat's it — one Bash call, ~200 tokens, no subagent. Read the script if you\nwant to adapt it (it's ~20 lines).\n\n**Batch variant for sweeps:** if you need days-of-cover for *many* SKUs at\nonce (e.g., the daily low-stock check), don't loop tool calls — run the\nbatch script:\n\n```bash\npython .claude\u002Fskills\u002Fforecasting\u002Fbatch_days_of_cover.py 20\n```\n\nReturns the 20 most urgent SKUs as JSON, ranked by days-of-cover. This is\nwhat replaces the 100+ `get_stock_level` \u002F `get_sales_velocity` calls the\nold agent made on F1.\n\n## Path B — spawn a forecaster subagent\n\nUse this when **any** of the following hold:\n- horizon > 14 days\n- `is_seasonal` is 1\n- `promo_next_month` is 1, or the task mentions a promo\n- recent sales show a visible trend break\n\n**Why a subagent:** the forecaster needs the full 90-day history in context to spot seasonality and promo effects. That's ~90 rows × however many SKUs. Loading that into *your* context crowds out the rest of the task. A subagent gets its own context window, does the analysis there, and hands back a small JSON.\n\n**How:** Delegate to the `forecaster` callable agent. Send it just the SKU,\nproduct flags, and horizon — **not the history rows**. The forecaster has\nBash access to the same `\u002Fmnt\u002Fuser\u002Fdata\u002F` and will compute over the full\nhistory in its own context (that's the point: the 90 rows live there, not\nhere). It returns `{forecast_qty, confidence, method, flags}` JSON —\n**parse it strictly**; if the JSON is malformed that's an error, not\nsomething to guess around.\n\nIf `callable_agents` isn't available (it's a research-preview feature),\nfall back to computing the rolling-mean inline yourself and set\n`confidence ≤ 0.55` so the reorder-policy skill escalates to human review\ninstead of auto-ordering on a number you couldn't validate.\n\n## Seasonal calendar (sanity-check your numbers)\n\nOutdoor gear is highly seasonal. When the horizon crosses a boundary, the\nrolling mean lags the turn — lean on Path B and mention the season.\n\n| Window | Categories that lift | Expect vs baseline |\n|---|---|---|\n| Mar–May | Footwear, packs, rain shells, trekking poles | 1.3–1.6× |\n| Jun–Aug | Tents, sleeping, stoves, water filtration | 1.5–2.0× (peak quarter) |\n| Sep–Oct | Insulated apparel, optics, headlamps | lift; tents\u002Ffootwear taper |\n| Nov–Dec | Giftable price points; heaviest promo | confirm promo flags |\n| Jan–Feb | Reset — lowest volume | good for cycle counts |\n\n## Promotional handling\n\nPromos are the most common cause of under-ordering. When `promo_next_month=1`\nor the task mentions a promo:\n\n- **Do not** rely on rolling-mean alone — that's pre-promo demand.\n- Look for a historical analog (same SKU, comparable promo in the last 12\n  months) and use *that* uplift. If none exists, the subagent should set\n  `flags: [\"promo_uplift_uncertain\"]` and a confidence well under 0.6.\n- Default to flag-for-review over auto-order when lift is uncertain.\n  Over-ordering on a promo is recoverable; under-ordering is a stockout\n  during peak attention.\n- If the promo end date is known, account for the post-promo dip — don't\n  leave the channel overstocked the week after.\n\n**The failure mode to avoid:** stating the lift in prose (\"could be ~3×\")\nwhile the `forecast_qty` you return is still the un-lifted baseline mean.\nAnchor the *number*, not just the narrative.\n\n## What to do with the result\n\nFeed `{forecast_qty, confidence, flags}` into the reorder-policy skill. In particular: **if `confidence \u003C 0.6`, reorder-policy says escalate, don't auto-order.** Do not drop the confidence or flags on the floor — they're part of the contract.\n\n## Worked example (Path B)\n\nTask: \"Reorder SKU-0091 for next month's promo.\" → `promo_next_month=1`, horizon=30 → Path B.\n\nSubagent returns: `{\"forecast_qty\": 2100, \"confidence\": 0.41, \"method\": \"baseline_mean_no_comparable_promo\", \"flags\": [\"promo_uplift_uncertain\"]}`\n\nconfidence 0.41 \u003C 0.6 → per reorder-policy, **do not** create a PO. Escalate via notify-templates with the flags, recommend ~2,100 baseline + note that promo uplift could be 2-3× and needs a human call.\n","\u003C!-- Copyright 2026 Anthropic PBC -->\n\u003C!-- SPDX-License-Identifier: Apache-2.0 -->\n\n\n# Demand Forecasting\n\nForecasting has two paths. Pick the right one — using a subagent when you don't need one wastes turns; skipping it when you do gives you a bad number.\n\n## Path A — compute it yourself (code execution)\n\nUse this when **all** of the following hold:\n- horizon ≤ 14 days\n- the product's `is_seasonal` flag is 0\n- the product's `promo_next_month` flag is 0\n- the task doesn't mention a promo, holiday, or trend change\n\nThen the forecast is just a rolling mean. This skill ships a script for it:\n\n```bash\npython .claude\u002Fskills\u002Fforecasting\u002Frolling_mean.py SKU-0057 14\n```\n\nThat's it — one Bash call, ~200 tokens, no subagent. Read the script if you\nwant to adapt it (it's ~20 lines).\n\n**Batch variant for sweeps:** if you need days-of-cover for *many* SKUs at\nonce (e.g., the daily low-stock check), don't loop tool calls — run the\nbatch script:\n\n```bash\npython .claude\u002Fskills\u002Fforecasting\u002Fbatch_days_of_cover.py 20\n```\n\nReturns the 20 most urgent SKUs as JSON, ranked by days-of-cover. This is\nwhat replaces the 100+ `get_stock_level` \u002F `get_sales_velocity` calls the\nold agent made on F1.\n\n## Path B — spawn a forecaster subagent\n\nUse this when **any** of the following hold:\n- horizon > 14 days\n- `is_seasonal` is 1\n- `promo_next_month` is 1, or the task mentions a promo\n- recent sales show a visible trend break\n\n**Why a subagent:** the forecaster needs the full 90-day history in context to spot seasonality and promo effects. That's ~90 rows × however many SKUs. Loading that into *your* context crowds out the rest of the task. A subagent gets its own context window, does the analysis there, and hands back a small JSON.\n\n**How:** Delegate to the `forecaster` callable agent. Send it just the SKU,\nproduct flags, and horizon — **not the history rows**. The forecaster has\nBash access to the same `\u002Fmnt\u002Fuser\u002Fdata\u002F` and will compute over the full\nhistory in its own context (that's the point: the 90 rows live there, not\nhere). It returns `{forecast_qty, confidence, method, flags}` JSON —\n**parse it strictly**; if the JSON is malformed that's an error, not\nsomething to guess around.\n\nIf `callable_agents` isn't available (it's a research-preview feature),\nfall back to computing the rolling-mean inline yourself and set\n`confidence ≤ 0.55` so the reorder-policy skill escalates to human review\ninstead of auto-ordering on a number you couldn't validate.\n\n## Seasonal calendar (sanity-check your numbers)\n\nOutdoor gear is highly seasonal. When the horizon crosses a boundary, the\nrolling mean lags the turn — lean on Path B and mention the season.\n\n| Window | Categories that lift | Expect vs baseline |\n|---|---|---|\n| Mar–May | Footwear, packs, rain shells, trekking poles | 1.3–1.6× |\n| Jun–Aug | Tents, sleeping, stoves, water filtration | 1.5–2.0× (peak quarter) |\n| Sep–Oct | Insulated apparel, optics, headlamps | lift; tents\u002Ffootwear taper |\n| Nov–Dec | Giftable price points; heaviest promo | confirm promo flags |\n| Jan–Feb | Reset — lowest volume | good for cycle counts |\n\n## Promotional handling\n\nPromos are the most common cause of under-ordering. When `promo_next_month=1`\nor the task mentions a promo:\n\n- **Do not** rely on rolling-mean alone — that's pre-promo demand.\n- Look for a historical analog (same SKU, comparable promo in the last 12\n  months) and use *that* uplift. If none exists, the subagent should set\n  `flags: [\"promo_uplift_uncertain\"]` and a confidence well under 0.6.\n- Default to flag-for-review over auto-order when lift is uncertain.\n  Over-ordering on a promo is recoverable; under-ordering is a stockout\n  during peak attention.\n- If the promo end date is known, account for the post-promo dip — don't\n  leave the channel overstocked the week after.\n\n**The failure mode to avoid:** stating the lift in prose (\"could be ~3×\")\nwhile the `forecast_qty` you return is still the un-lifted baseline mean.\nAnchor the *number*, not just the narrative.\n\n## What to do with the result\n\nFeed `{forecast_qty, confidence, flags}` into the reorder-policy skill. In particular: **if `confidence \u003C 0.6`, reorder-policy says escalate, don't auto-order.** Do not drop the confidence or flags on the floor — they're part of the contract.\n\n## Worked example (Path B)\n\nTask: \"Reorder SKU-0091 for next month's promo.\" → `promo_next_month=1`, horizon=30 → Path B.\n\nSubagent returns: `{\"forecast_qty\": 2100, \"confidence\": 0.41, \"method\": \"baseline_mean_no_comparable_promo\", \"flags\": [\"promo_uplift_uncertain\"]}`\n\nconfidence 0.41 \u003C 0.6 → per reorder-policy, **do not** create a PO. Escalate via notify-templates with the flags, recommend ~2,100 baseline + note that promo uplift could be 2-3× and needs a human call.\n",{"name":5,"description":7},"main","2c65d16c6de16f8f24117d539a712ea706b5dee7","agent-decomposition\u002F.claude\u002Fskills\u002Fforecasting",707,"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fcwc-workshops","https:\u002F\u002Fgithub.com\u002Fanthropics","https:\u002F\u002Fanthropic.com","2026-11-05 02:53:17",{"source":8,"skillName":5,"commands":49,"prompt":59,"zipAvailable":60},[50,53,56],{"tool":51,"command":52},"npx","npx skills add anthropics\u002Fcwc-workshops --skill forecasting",{"tool":54,"command":55},"bunx","bunx skills add anthropics\u002Fcwc-workshops --skill forecasting",{"tool":57,"command":58},"pnpm","pnpm dlx skills add anthropics\u002Fcwc-workshops --skill forecasting","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fcwc-workshops\u002Fblob\u002Fmain\u002Fagent-decomposition\u002F.claude\u002Fskills\u002Fforecasting\u002FSKILL.md",true,[62,68],{"path":63,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":66,"sourceHtmlUrl":67},"batch_days_of_cover.py","SCRIPT","脚本",1675,"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fcwc-workshops\u002Fblob\u002Fmain\u002Fagent-decomposition\u002F.claude\u002Fskills\u002Fforecasting\u002Fbatch_days_of_cover.py",{"path":69,"resourceType":64,"resourceTypeDesc":65,"sizeBytes":70,"sourceHtmlUrl":71},"rolling_mean.py",854,"https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fcwc-workshops\u002Fblob\u002Fmain\u002Fagent-decomposition\u002F.claude\u002Fskills\u002Fforecasting\u002Frolling_mean.py",[73,103,122,133,159,177],{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":89,"publishedAt":35},"01M718CS4VJNEW3SRN5S3MG35W","postmortem-report","How the SRE team writes a postmortem PDF. Use this whenever asked for a postmortem, an incident report, a write-up to share, or a PDF of what happened.","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fcwc-workshops\u002Fblob\u002Fmain\u002Fship-your-first-managed-agent\u002Fskills\u002Fpostmortem-report\u002FSKILL.md",[79,84],{"categoryNo":80,"categoryName":81,"taxonomyType":82,"taxonomyTypeDesc":83},"01JBSEEDCAT000000000000002","文档处理","SCENARIO","使用场景",{"categoryNo":85,"categoryName":86,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000034","行政与办公人员","PROFESSION","适用职业",[90,91,92,93,94,95,96,97,98,99,100,33,24,101,102],"postmortem report","postmortem","report","share","what happened","team","use","incident report","up","write","incident","PDF","sre",{"skillNo":104,"name":105,"nameZh":6,"description":106,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":107,"categories":108,"keywords":109,"publishedAt":35},"01M718CPE2QT7TQMYAG56R19JW","incident-triage-runbook","The SRE team's runbook for triaging production latency and error-rate incidents. Use this whenever investigating an incident, a latency spike, elevated error rates, or when asked \"what caused X\" about a production service.","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fcwc-workshops\u002Fblob\u002Fmain\u002Fship-your-first-managed-agent\u002Fskills\u002Fincident-triage-runbook\u002FSKILL.md",[],[110,111,112,100,113,114,102,115,33,116,117,95,28,96,118,119,120,121],"runbook","triage","incident triage","incident triage runbook","error","latency","about","incidents","service","spike","Production","rate",{"skillNo":123,"name":124,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":127,"publishedAt":35},"01M718CMK6R22RHEBDN1VW1YB5","eval-audit-and-sweep","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fcwc-workshops\u002Fblob\u002Fmain\u002Frightmodel\u002F.claude\u002Fskills\u002Feval-audit-and-sweep\u002FSKILL.md",[],[128,129,130,131,132],"sweep","audit","eval audit and sweep","eval audit","eval",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":142,"publishedAt":35},"01M718CJ7RTEG518SSEJMH3H8H","edgartools-sec-data","How to pull SEC EDGAR data with the edgartools Python package — company lookup, filings, XBRL financial statements, and filing sections like Item 1A risk factors. Use whenever a task involves SEC filings, 10-K\u002F10-Q data, or company financials.","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fcwc-workshops\u002Fblob\u002Fmain\u002Fresearch-desk\u002Fskills\u002Fedgartools\u002FSKILL.md",[139],{"categoryNo":140,"categoryName":141,"taxonomyType":87,"taxonomyTypeDesc":88},"01JBSEEDCAT000000000000033","数据分析师",[143,144,145,146,147,148,24,149,27,96,150,31,151,152,153,154,155,156,157,158],"edgartools","edgartools sec data","data","lookup","filing","financial statements","with","package","python","company","company lookup","filings","risk","sec edgar","financials","pull",{"skillNo":160,"name":161,"nameZh":6,"description":162,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":163,"categories":164,"keywords":168,"publishedAt":35},"01M718CF9KPNBKPWFJN27XDN6A","workshop","Workshop coach for the Research Desk (SEC agents) workshop. Use when the user types \u002Fworkshop, asks for a workshop act or module (\"act 2\", \"next act\", \"where am I\"), wants a TODO(workshop-N) implemented or explained, or asks for help following WORKSHOP.md.","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fcwc-workshops\u002Fblob\u002Fmain\u002Fresearch-desk\u002F.claude\u002Fskills\u002Fworkshop\u002FSKILL.md",[165],{"categoryNo":166,"categoryName":167,"taxonomyType":82,"taxonomyTypeDesc":83},"01JBSEEDCAT000000000000021","资料检索与研究",[161,169,28,96,170,171,33,172,173,174,175,176,25],"todo","module","coach","types","research","user","act","help",{"skillNo":178,"name":179,"nameZh":6,"description":180,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":181,"categories":182,"keywords":184,"publishedAt":35},"01M718CD3EBG31CBH0KSPVX0YR","weekly-report","Structure and data sources for the weekly inventory report. Load this when the task is \"weekly report\", \"Monday report\", or \"summarize inventory status\".","https:\u002F\u002Fgithub.com\u002Fanthropics\u002Fcwc-workshops\u002Fblob\u002Fmain\u002Fagent-decomposition\u002F.claude\u002Fskills\u002Fweekly-report\u002FSKILL.md",[183],{"categoryNo":85,"categoryName":86,"taxonomyType":87,"taxonomyTypeDesc":88},[185,186,92,28,187,27,29,145,188,189,33,190,191,192,193],"Weekly Report","weekly","summarize","status","inventory","data sources","monday","structure","sources"]