{"id":"fae7a891-45d3-4e9b-834e-d70d18fa2b49","shortId":"ULKyuK","kind":"skill","title":"forecasting-timeseries","tagline":"Analyzes time series for trends, anomalies, and forecasts. Use when detecting spikes or drops, predicting future values, or finding unusual patterns over time.","description":"# Forecasting Time Series\n\n## Quick Start\n\n1. Query time series data with the lakehouse (daily granularity, 30-90 days covers both tools well)\n2. Use `Analyze Time Series Insight` to detect anomalies and get a statistical forecast\n3. If you need higher accuracy or uncertainty bands, follow up with `Forecast with Chronos` (needs 14+ days, best with 30+)\n\n## When to Use This Skill\n\n- User asks about trends, spikes, or drops in a metric over time\n- User wants to predict or forecast future values using local analysis tools\n- User asks \"is this normal?\" about a metric value\n- Investigating anomalies or unexpected changes in an ad-hoc session\n- User asks for projections, predictions, or what to expect next week/month\n- Keywords: \"forecast\", \"predict\", \"anomaly\", \"spike\", \"drop\", \"trend\", \"projection\", \"unusual\", \"normal range\"\n\n**This skill vs. forecast tasks:** This skill runs *on-demand, local analysis* using Python tools (Chronos, statsmodels). For *recurring, automated* forecasting on a schedule, use the **configuring-tasks** skill to create a `forecast` task instead.\n\n## Two Tools, Two Purposes\n\nThere are two complementary time series tools. Use one or both depending on the question.\n\n| | Analyze Time Series Insight | Forecast with Chronos |\n|---|---|---|\n| **Best for** | \"What happened?\" | \"What will happen?\" |\n| **Anomaly detection** | Yes (Z-score + IQR) | No |\n| **Forecasting method** | Exponential smoothing | Chronos-2 ML model |\n| **Uncertainty bands** | No | Yes (10th/90th percentile) |\n| **Minimum data** | 3 days | 14 days |\n| **Recommended data** | 14-90 days | 30-365 days |\n| **Default horizon** | 7 days | 14 days |\n| **Max input size** | 2000 chars | 3000 chars |\n\n### When to Use Each\n\n```\nUser question about a metric over time\n  │\n  ├─ \"Is this value normal?\" / \"Why did X spike?\"\n  │   → Analyze Time Series Insight (anomaly detection)\n  │\n  ├─ \"What will happen next week?\" / \"Forecast revenue\"\n  │   → Forecast with Chronos (ML forecast with uncertainty)\n  │\n  └─ \"Analyze this trend and predict what's next\"\n      → Both: Analyze first, then Chronos for deeper forecast\n```\n\n## Workflow\n\n### Step 1: Query the Data\n\nUse `query_lakehouse` to get daily time series data. Format the result as:\n\n```json\n[{\"date\": \"2024-01-01\", \"value\": 100}, {\"date\": \"2024-01-02\", \"value\": 105}]\n```\n\n**Keep the data compact.** Aggregate to weekly if the date range exceeds 90 days. The tools have strict character limits on input.\n\n### Step 2: Run Analysis\n\nStart with `Analyze Time Series Insight` for a statistical overview:\n- Detects anomalous values using Z-score and IQR methods\n- Identifies whether the latest value is anomalous\n- Provides trend direction and day-over-day change\n- Generates a short-term exponential smoothing forecast\n\n### Step 3: Enhance with Chronos (Optional)\n\nIf the user needs a more accurate forecast or wants confidence intervals, run `Forecast with Chronos`:\n- Provides point forecast plus 10th/90th percentile uncertainty bands\n- Better at capturing complex seasonal patterns\n- Indicates forecast confidence (high/medium/low based on band width)\n\n## Interpreting Results\n\n### Anomaly Detection\n\nThe analysis tool flags anomalies using two combined methods:\n- **Z-score**: Values more than 2 standard deviations from the mean\n- **IQR**: Values below Q1 - 1.5 * IQR or above Q3 + 1.5 * IQR\n\nA value flagged by either method is reported. If the latest value is anomalous, it requires attention.\n\n### Trend Direction\n\n| Forecast Change | Interpretation |\n|-----------------|----------------|\n| > +5% | Increasing trend |\n| -5% to +5% | Stable |\n| < -5% | Decreasing trend |\n\n### Chronos Confidence Levels\n\n| Uncertainty Band Width | Confidence |\n|------------------------|------------|\n| < 20% of forecast mean | High — narrow band, reliable |\n| 20-50% | Medium |\n| > 50% | Low — wide band, treat with caution |\n\n## Common Pitfalls\n\n1. **Sending too much data** — Tools have 2000/3000 char limits. Aggregate to weekly for long ranges\n2. **Too few data points** — Chronos needs 14+ days. Analysis needs 3+ but works best with 14+\n3. **Using Chronos for anomaly detection** — Chronos only forecasts; use Analyze Time Series for anomalies\n4. **Skipping aggregation** — Hourly data quickly exceeds size limits. Always use daily or weekly granularity\n5. **Ignoring uncertainty bands** — A Chronos forecast with wide bands means low confidence; communicate this clearly\n6. **Not checking seasonality** — Weekly patterns (weekday vs weekend) need at least 14 days to detect\n7. **Forecasting without context** — Always pair forecasts with what the current trend shows\n\n## References\n\n- [Chronos forecasting details](references/chronos-forecasting.md) - Read when generating forecasts or configuring prediction horizons and confidence intervals\n- [Anomaly detection methods](references/anomaly-detection.md) - Read when detecting anomalies or choosing between statistical methods","tags":["forecasting","timeseries","skills","altertable-ai","agent-skills","ai-agents","altertable"],"capabilities":["skill","source-altertable-ai","skill-forecasting-timeseries","topic-agent-skills","topic-ai-agents","topic-altertable"],"categories":["skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/altertable-ai/skills/forecasting-timeseries","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add altertable-ai/skills","source_repo":"https://github.com/altertable-ai/skills","install_from":"skills.sh"}},"qualityScore":"0.453","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 7 github stars · SKILL.md body (4,926 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:14:20.452Z","embedding":null,"createdAt":"2026-05-18T13:21:55.116Z","updatedAt":"2026-05-18T19:14:20.452Z","lastSeenAt":"2026-05-18T19:14:20.452Z","tsv":"'+5':533,538 '-01':351,352,357 '-02':358 '-2':238 '-365':259 '-5':536,540 '-50':559 '-90':43,256 '1':32,331,570 '1.5':504,509 '100':354 '105':360 '10th/90th':245,457 '14':79,251,255,265,593,602,661 '2':49,384,494,586 '20':550,558 '2000':270 '2000/3000':577 '2024':350,356 '3':63,249,432,597,603 '30':42,83,258 '3000':272 '4':618 '5':633 '50':561 '6':649 '7':263,665 '90':373 'accur':443 'accuraci':68 'ad':130 'ad-hoc':129 'aggreg':365,580,620 'alway':627,669 'analysi':111,167,386,480,595 'analyz':4,51,211,293,313,322,389,613 'anomal':398,413,524 'anomali':9,57,123,147,225,297,477,483,607,617,694,701 'ask':90,114,134 'attent':527 'autom':175 'band':71,242,460,473,547,556,564,636,642 'base':471 'best':81,218,600 'better':461 'captur':463 'caution':567 'chang':126,422,531 'char':271,273,578 'charact':379 'check':651 'choos':703 'chrono':77,171,217,237,308,325,435,452,543,591,605,609,638,679 'clear':648 'combin':486 'common':568 'communic':646 'compact':364 'complementari':199 'complex':464 'confid':447,469,544,549,645,692 'configur':183,688 'configuring-task':182 'context':668 'cover':45 'creat':187 'current':675 'daili':40,340,629 'data':36,248,254,334,343,363,574,589,622 'date':349,355,370 'day':44,80,250,252,257,260,264,266,374,419,421,594,662 'day-over-day':418 'decreas':541 'deeper':327 'default':261 'demand':165 'depend':207 'detail':681 'detect':14,56,226,298,397,478,608,664,695,700 'deviat':496 'direct':416,529 'drop':17,95,149 'either':515 'enhanc':433 'exceed':372,624 'expect':141 'exponenti':235,428 'find':22 'first':323 'flag':482,513 'follow':72 'forecast':2,11,27,62,75,106,145,158,176,189,215,233,304,306,310,328,430,444,450,455,468,530,552,611,639,666,671,680,686 'forecasting-timeseri':1 'format':344 'futur':19,107 'generat':423,685 'get':59,339 'granular':41,632 'happen':221,224,301 'high':554 'high/medium/low':470 'higher':67 'hoc':131 'horizon':262,690 'hour':621 'identifi':407 'ignor':634 'increas':534 'indic':467 'input':268,382 'insight':54,214,296,392 'instead':191 'interpret':475,532 'interv':448,693 'investig':122 'iqr':231,405,500,505,510 'json':348 'keep':361 'keyword':144 'lakehous':39,337 'latest':410,521 'least':660 'level':545 'limit':380,579,626 'local':110,166 'long':584 'low':562,644 'max':267 'mean':499,553,643 'medium':560 'method':234,406,487,516,696,706 'metric':98,120,282 'minimum':247 'ml':239,309 'model':240 'much':573 'narrow':555 'need':66,78,440,592,596,658 'next':142,302,320 'normal':117,153,288 'on-demand':163 'one':204 'option':436 'overview':396 'pair':670 'pattern':24,466,654 'percentil':246,458 'pitfal':569 'plus':456 'point':454,590 'predict':18,104,137,146,317,689 'project':136,151 'provid':414,453 'purpos':195 'python':169 'q1':503 'q3':508 'queri':33,332,336 'question':210,279 'quick':30,623 'rang':154,371,585 'read':683,698 'recommend':253 'recur':174 'refer':678 'references/anomaly-detection.md':697 'references/chronos-forecasting.md':682 'reliabl':557 'report':518 'requir':526 'result':346,476 'revenu':305 'run':162,385,449 'schedul':179 'score':230,403,490 'season':465,652 'send':571 'seri':6,29,35,53,201,213,295,342,391,615 'session':132 'short':426 'short-term':425 'show':677 'size':269,625 'skill':88,156,161,185 'skill-forecasting-timeseries' 'skip':619 'smooth':236,429 'source-altertable-ai' 'spike':15,93,148,292 'stabl':539 'standard':495 'start':31,387 'statist':61,395,705 'statsmodel':172 'step':330,383,431 'strict':378 'task':159,184,190 'term':427 'time':5,26,28,34,52,100,200,212,284,294,341,390,614 'timeseri':3 'tool':47,112,170,193,202,376,481,575 'topic-agent-skills' 'topic-ai-agents' 'topic-altertable' 'treat':565 'trend':8,92,150,315,415,528,535,542,676 'two':192,194,198,485 'uncertainti':70,241,312,459,546,635 'unexpect':125 'unusu':23,152 'use':12,50,86,109,168,180,203,276,335,400,484,604,612,628 'user':89,101,113,133,278,439 'valu':20,108,121,287,353,359,399,411,491,501,512,522 'vs':157,656 'want':102,446 'week':303,367,582,631,653 'week/month':143 'weekday':655 'weekend':657 'well':48 'whether':408 'wide':563,641 'width':474,548 'without':667 'work':599 'workflow':329 'x':291 'yes':227,244 'z':229,402,489 'z-score':228,401,488","prices":[{"id":"ea360053-e13e-47fe-99ee-ef569e89cd75","listingId":"fae7a891-45d3-4e9b-834e-d70d18fa2b49","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"altertable-ai","category":"skills","install_from":"skills.sh"},"createdAt":"2026-05-18T13:21:55.116Z"}],"sources":[{"listingId":"fae7a891-45d3-4e9b-834e-d70d18fa2b49","source":"github","sourceId":"altertable-ai/skills/forecasting-timeseries","sourceUrl":"https://github.com/altertable-ai/skills/tree/main/skills/forecasting-timeseries","isPrimary":false,"firstSeenAt":"2026-05-18T13:21:55.116Z","lastSeenAt":"2026-05-18T19:14:20.452Z"}],"details":{"listingId":"fae7a891-45d3-4e9b-834e-d70d18fa2b49","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"altertable-ai","slug":"forecasting-timeseries","github":{"repo":"altertable-ai/skills","stars":7,"topics":["agent-skills","ai-agents","altertable"],"license":"mit","html_url":"https://github.com/altertable-ai/skills","pushed_at":"2026-05-14T10:34:10Z","description":"Agent Skills for Altertable","skill_md_sha":"ea2a328ee0652c8da73cc6d415850d4de014477c","skill_md_path":"skills/forecasting-timeseries/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/altertable-ai/skills/tree/main/skills/forecasting-timeseries"},"layout":"multi","source":"github","category":"skills","frontmatter":{"name":"forecasting-timeseries","description":"Analyzes time series for trends, anomalies, and forecasts. Use when detecting spikes or drops, predicting future values, or finding unusual patterns over time.","compatibility":"Requires Altertable MCP server and Python 3 environment"},"skills_sh_url":"https://skills.sh/altertable-ai/skills/forecasting-timeseries"},"updatedAt":"2026-05-18T19:14:20.452Z"}}