{"id":"754e5e34-eb80-448b-be28-4fd4ebf9956b","shortId":"M2pG9k","kind":"skill","title":"azure-ai-anomalydetector-java","tagline":"Build anomaly detection applications with Azure AI Anomaly Detector SDK for Java. Use when implementing univariate/multivariate anomaly detection, time-series analysis, or AI-powered monitoring.","description":"# Azure AI Anomaly Detector SDK for Java\n\nBuild anomaly detection applications using the Azure AI Anomaly Detector SDK for Java.\n\n## Installation\n\n```xml\n<dependency>\n  <groupId>com.azure</groupId>\n  <artifactId>azure-ai-anomalydetector</artifactId>\n  <version>3.0.0-beta.6</version>\n</dependency>\n```\n\n## Client Creation\n\n### Sync and Async Clients\n\n```java\nimport com.azure.ai.anomalydetector.AnomalyDetectorClientBuilder;\nimport com.azure.ai.anomalydetector.MultivariateClient;\nimport com.azure.ai.anomalydetector.UnivariateClient;\nimport com.azure.core.credential.AzureKeyCredential;\n\nString endpoint = System.getenv(\"AZURE_ANOMALY_DETECTOR_ENDPOINT\");\nString key = System.getenv(\"AZURE_ANOMALY_DETECTOR_API_KEY\");\n\n// Multivariate client for multiple correlated signals\nMultivariateClient multivariateClient = new AnomalyDetectorClientBuilder()\n    .credential(new AzureKeyCredential(key))\n    .endpoint(endpoint)\n    .buildMultivariateClient();\n\n// Univariate client for single variable analysis\nUnivariateClient univariateClient = new AnomalyDetectorClientBuilder()\n    .credential(new AzureKeyCredential(key))\n    .endpoint(endpoint)\n    .buildUnivariateClient();\n```\n\n### With DefaultAzureCredential\n\n```java\nimport com.azure.identity.DefaultAzureCredentialBuilder;\n\nMultivariateClient client = new AnomalyDetectorClientBuilder()\n    .credential(new DefaultAzureCredentialBuilder().build())\n    .endpoint(endpoint)\n    .buildMultivariateClient();\n```\n\n## Key Concepts\n\n### Univariate Anomaly Detection\n- **Batch Detection**: Analyze entire time series at once\n- **Streaming Detection**: Real-time detection on latest data point\n- **Change Point Detection**: Detect trend changes in time series\n\n### Multivariate Anomaly Detection\n- Detect anomalies across 300+ correlated signals\n- Uses Graph Attention Network for inter-correlations\n- Three-step process: Train → Inference → Results\n\n## Core Patterns\n\n### Univariate Batch Detection\n\n```java\nimport com.azure.ai.anomalydetector.models.*;\nimport java.time.OffsetDateTime;\nimport java.util.List;\n\nList<TimeSeriesPoint> series = List.of(\n    new TimeSeriesPoint(OffsetDateTime.parse(\"2023-01-01T00:00:00Z\"), 1.0),\n    new TimeSeriesPoint(OffsetDateTime.parse(\"2023-01-02T00:00:00Z\"), 2.5),\n    // ... more data points (minimum 12 points required)\n);\n\nUnivariateDetectionOptions options = new UnivariateDetectionOptions(series)\n    .setGranularity(TimeGranularity.DAILY)\n    .setSensitivity(95);\n\nUnivariateEntireDetectionResult result = univariateClient.detectUnivariateEntireSeries(options);\n\n// Check for anomalies\nfor (int i = 0; i < result.getIsAnomaly().size(); i++) {\n    if (result.getIsAnomaly().get(i)) {\n        System.out.printf(\"Anomaly detected at index %d with value %.2f%n\",\n            i, series.get(i).getValue());\n    }\n}\n```\n\n### Univariate Last Point Detection (Streaming)\n\n```java\nUnivariateLastDetectionResult lastResult = univariateClient.detectUnivariateLastPoint(options);\n\nif (lastResult.isAnomaly()) {\n    System.out.println(\"Latest point is an anomaly!\");\n    System.out.printf(\"Expected: %.2f, Upper: %.2f, Lower: %.2f%n\",\n        lastResult.getExpectedValue(),\n        lastResult.getUpperMargin(),\n        lastResult.getLowerMargin());\n}\n```\n\n### Change Point Detection\n\n```java\nUnivariateChangePointDetectionOptions changeOptions = \n    new UnivariateChangePointDetectionOptions(series, TimeGranularity.DAILY);\n\nUnivariateChangePointDetectionResult changeResult = \n    univariateClient.detectUnivariateChangePoint(changeOptions);\n\nfor (int i = 0; i < changeResult.getIsChangePoint().size(); i++) {\n    if (changeResult.getIsChangePoint().get(i)) {\n        System.out.printf(\"Change point at index %d with confidence %.2f%n\",\n            i, changeResult.getConfidenceScores().get(i));\n    }\n}\n```\n\n### Multivariate Model Training\n\n```java\nimport com.azure.ai.anomalydetector.models.*;\nimport com.azure.core.util.polling.SyncPoller;\n\n// Prepare training request with blob storage data\nModelInfo modelInfo = new ModelInfo()\n    .setDataSource(\"https://storage.blob.core.windows.net/container/data.zip?sasToken\")\n    .setStartTime(OffsetDateTime.parse(\"2023-01-01T00:00:00Z\"))\n    .setEndTime(OffsetDateTime.parse(\"2023-06-01T00:00:00Z\"))\n    .setSlidingWindow(200)\n    .setDisplayName(\"MyMultivariateModel\");\n\n// Train model (long-running operation)\nAnomalyDetectionModel trainedModel = multivariateClient.trainMultivariateModel(modelInfo);\n\nString modelId = trainedModel.getModelId();\nSystem.out.println(\"Model ID: \" + modelId);\n\n// Check training status\nAnomalyDetectionModel model = multivariateClient.getMultivariateModel(modelId);\nSystem.out.println(\"Status: \" + model.getModelInfo().getStatus());\n```\n\n### Multivariate Batch Inference\n\n```java\nMultivariateBatchDetectionOptions detectionOptions = new MultivariateBatchDetectionOptions()\n    .setDataSource(\"https://storage.blob.core.windows.net/container/inference-data.zip?sasToken\")\n    .setStartTime(OffsetDateTime.parse(\"2023-07-01T00:00:00Z\"))\n    .setEndTime(OffsetDateTime.parse(\"2023-07-31T00:00:00Z\"))\n    .setTopContributorCount(10);\n\nMultivariateDetectionResult detectionResult = \n    multivariateClient.detectMultivariateBatchAnomaly(modelId, detectionOptions);\n\nString resultId = detectionResult.getResultId();\n\n// Poll for results\nMultivariateDetectionResult result = multivariateClient.getBatchDetectionResult(resultId);\nfor (AnomalyState state : result.getResults()) {\n    if (state.getValue().isAnomaly()) {\n        System.out.printf(\"Anomaly at %s, severity: %.2f%n\",\n            state.getTimestamp(),\n            state.getValue().getSeverity());\n    }\n}\n```\n\n### Multivariate Last Point Detection\n\n```java\nMultivariateLastDetectionOptions lastOptions = new MultivariateLastDetectionOptions()\n    .setVariables(List.of(\n        new VariableValues(\"variable1\", List.of(\"timestamp1\"), List.of(1.0f)),\n        new VariableValues(\"variable2\", List.of(\"timestamp1\"), List.of(2.5f))\n    ))\n    .setTopContributorCount(5);\n\nMultivariateLastDetectionResult lastResult = \n    multivariateClient.detectMultivariateLastAnomaly(modelId, lastOptions);\n\nif (lastResult.getValue().isAnomaly()) {\n    System.out.println(\"Anomaly detected!\");\n    // Check contributing variables\n    for (AnomalyContributor contributor : lastResult.getValue().getInterpretation()) {\n        System.out.printf(\"Variable: %s, Contribution: %.2f%n\",\n            contributor.getVariable(),\n            contributor.getContributionScore());\n    }\n}\n```\n\n### Model Management\n\n```java\n// List all models\nPagedIterable<AnomalyDetectionModel> models = multivariateClient.listMultivariateModels();\nfor (AnomalyDetectionModel m : models) {\n    System.out.printf(\"Model: %s, Status: %s%n\",\n        m.getModelId(),\n        m.getModelInfo().getStatus());\n}\n\n// Delete a model\nmultivariateClient.deleteMultivariateModel(modelId);\n```\n\n## Error Handling\n\n```java\nimport com.azure.core.exception.HttpResponseException;\n\ntry {\n    univariateClient.detectUnivariateEntireSeries(options);\n} catch (HttpResponseException e) {\n    System.out.println(\"Status code: \" + e.getResponse().getStatusCode());\n    System.out.println(\"Error: \" + e.getMessage());\n}\n```\n\n## Environment Variables\n\n```bash\nAZURE_ANOMALY_DETECTOR_ENDPOINT=https://<resource>.cognitiveservices.azure.com/\nAZURE_ANOMALY_DETECTOR_API_KEY=<your-api-key>\n```\n\n## Best Practices\n\n1. **Minimum Data Points**: Univariate requires at least 12 points; more data improves accuracy\n2. **Granularity Alignment**: Match `TimeGranularity` to your actual data frequency\n3. **Sensitivity Tuning**: Higher values (0-99) detect more anomalies\n4. **Multivariate Training**: Use 200-1000 sliding window based on pattern complexity\n5. **Error Handling**: Always handle `HttpResponseException` for API errors\n\n## Trigger Phrases\n\n- \"anomaly detection Java\"\n- \"detect anomalies time series\"\n- \"multivariate anomaly Java\"\n- \"univariate anomaly detection\"\n- \"streaming anomaly detection\"\n- \"change point detection\"\n- \"Azure AI Anomaly Detector\"\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["azure","anomalydetector","java","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding"],"capabilities":["skill","source-sickn33","skill-azure-ai-anomalydetector-java","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/azure-ai-anomalydetector-java","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34964 github stars · SKILL.md body (8,414 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-04-25T00:50:30.544Z","embedding":null,"createdAt":"2026-04-18T21:31:50.248Z","updatedAt":"2026-04-25T00:50:30.544Z","lastSeenAt":"2026-04-25T00:50:30.544Z","tsv":"'-01':217,218,227,377,378,386,438 '-02':228 '-06':385 '-07':437,445 '-1000':640 '-31':446 '-99':631 '/container/data.zip?sastoken':373 '/container/inference-data.zip?sastoken':433 '0':259,328,630 '00':220,230,380,388,440,448 '00z':221,231,381,389,441,449 '1':601 '1.0':222,501 '10':451 '12':237,609 '2':615 '2.5':232,509 '200':391,639 '2023':216,226,376,384,436,444 '2f':276,302,304,306,345,479,536 '3':625 '3.0.0':60 '300':180 '4':635 '5':512,647 '95':248 'accuraci':614 'across':179 'action':693 'actual':622 'ai':3,12,30,34,47,58,678 'ai-pow':29 'align':617 'alway':650 'analysi':27,114 'analyz':149 'anomali':7,13,22,35,41,48,81,88,145,175,178,255,269,299,475,522,590,595,634,658,662,666,669,672,679 'anomalycontributor':528 'anomalydetectionmodel':400,414,550 'anomalydetector':4,59 'anomalydetectorclientbuild':101,118,134 'anomalyst':468 'api':90,597,654 'applic':9,43,687 'ask':731 'async':66 'attent':185 'azur':2,11,33,46,57,80,87,589,594,677 'azure-ai-anomalydetector':56 'azure-ai-anomalydetector-java':1 'azurekeycredenti':104,121 'base':643 'bash':588 'batch':147,201,423 'best':599 'beta.6':61 'blob':363 'boundari':739 'build':6,40,138 'buildmultivariatecli':108,141 'buildunivariatecli':125 'catch':575 'chang':165,170,311,338,674 'changeopt':316,324 'changeresult':322 'changeresult.getconfidencescores':348 'changeresult.getischangepoint':330,334 'check':253,411,524 'clarif':733 'clear':706 'client':62,67,93,110,132 'code':580 'cognitiveservices.azure.com':593 'com.azure':55 'com.azure.ai.anomalydetector.anomalydetectorclientbuilder':70 'com.azure.ai.anomalydetector.models':205,356 'com.azure.ai.anomalydetector.multivariateclient':72 'com.azure.ai.anomalydetector.univariateclient':74 'com.azure.core.credential.azurekeycredential':76 'com.azure.core.exception.httpresponseexception':571 'com.azure.core.util.polling.syncpoller':358 'com.azure.identity.defaultazurecredentialbuilder':130 'complex':646 'concept':143 'confid':344 'contribut':525,535 'contributor':529 'contributor.getcontributionscore':539 'contributor.getvariable':538 'core':198 'correl':96,181,190 'creation':63 'credenti':102,119,135 'criteria':742 'd':273,342 'data':163,234,365,603,612,623 'defaultazurecredenti':127 'defaultazurecredentialbuild':137 'delet':562 'describ':694,710 'detect':8,23,42,146,148,156,160,167,168,176,177,202,270,285,313,487,523,632,659,661,670,673,676 'detectionopt':427,456 'detectionresult':453 'detectionresult.getresultid':459 'detector':14,36,49,82,89,591,596,680 'e':577 'e.getmessage':585 'e.getresponse':581 'endpoint':78,83,106,107,123,124,139,140,592 'entir':150 'environ':586,722 'environment-specif':721 'error':567,584,648,655 'execut':689 'expect':301 'expert':727 'f':502,510 'frequenc':624 'get':266,335,349 'getinterpret':531 'getsever':483 'getstatus':421,561 'getstatuscod':582 'getvalu':281 'granular':616 'graph':184 'handl':568,649,651 'higher':628 'httpresponseexcept':576,652 'id':409 'implement':20 'import':69,71,73,75,129,204,206,208,355,357,570 'improv':613 'index':272,341 'infer':196,424 'input':736 'instal':53 'int':257,326 'inter':189 'inter-correl':188 'isanomali':473,520 'java':5,17,39,52,68,128,203,287,314,354,425,488,542,569,660,667 'java.time.offsetdatetime':207 'java.util.list':209 'key':85,91,105,122,142,598 'last':283,485 'lastopt':490,517 'lastresult':289,514 'lastresult.getexpectedvalue':308 'lastresult.getlowermargin':310 'lastresult.getuppermargin':309 'lastresult.getvalue':519,530 'lastresult.isanomaly':293 'latest':162,295 'least':608 'limit':698 'list':210,543 'list.of':212,494,498,500,506,508 'long':397 'long-run':396 'lower':305 'm':551 'm.getmodelid':559 'm.getmodelinfo':560 'manag':541 'match':618,707 'minimum':236,602 'miss':744 'model':352,395,408,415,540,545,547,552,554,564 'model.getmodelinfo':420 'modelid':405,410,417,455,516,566 'modelinfo':366,367,369,403 'monitor':32 'multipl':95 'multivari':92,174,351,422,484,636,665 'multivariatebatchdetectionopt':426,429 'multivariatecli':98,99,131 'multivariateclient.deletemultivariatemodel':565 'multivariateclient.detectmultivariatebatchanomaly':454 'multivariateclient.detectmultivariatelastanomaly':515 'multivariateclient.getbatchdetectionresult':465 'multivariateclient.getmultivariatemodel':416 'multivariateclient.listmultivariatemodels':548 'multivariateclient.trainmultivariatemodel':402 'multivariatedetectionresult':452,463 'multivariatelastdetectionopt':489,492 'multivariatelastdetectionresult':513 'mymultivariatemodel':393 'n':277,307,346,480,537,558 'network':186 'new':100,103,117,120,133,136,213,223,242,317,368,428,491,495,503 'offsetdatetime.parse':215,225,375,383,435,443 'oper':399 'option':241,252,291,574 'output':716 'overview':697 'pagediter':546 'pattern':199,645 'permiss':737 'phrase':657 'point':164,166,235,238,284,296,312,339,486,604,610,675 'poll':460 'power':31 'practic':600 'prepar':359 'process':194 'real':158 'real-tim':157 'request':361 'requir':239,606,735 'result':197,250,462,464 'result.getisanomaly':261,265 'result.getresults':470 'resultid':458,466 'review':728 'run':398 'safeti':738 'scope':709 'sdk':15,37,50 'sensit':626 'seri':26,152,173,211,244,319,664 'series.get':279 'setdatasourc':370,430 'setdisplaynam':392 'setendtim':382,442 'setgranular':245 'setsensit':247 'setslidingwindow':390 'setstarttim':374,434 'settopcontributorcount':450,511 'setvari':493 'sever':478 'signal':97,182 'singl':112 'size':262,331 'skill':685,701 'skill-azure-ai-anomalydetector-java' 'slide':641 'source-sickn33' 'specif':723 'state':469 'state.gettimestamp':481 'state.getvalue':472,482 'status':413,419,556,579 'step':193 'stop':729 'storag':364 'storage.blob.core.windows.net':372,432 'storage.blob.core.windows.net/container/data.zip?sastoken':371 'storage.blob.core.windows.net/container/inference-data.zip?sastoken':431 'stream':155,286,671 'string':77,84,404,457 'substitut':719 'success':741 'sync':64 'system.getenv':79,86 'system.out.printf':268,300,337,474,532,553 'system.out.println':294,407,418,521,578,583 't00':219,229,379,387,439,447 'task':705 'test':725 'three':192 'three-step':191 'time':25,151,159,172,663 'time-seri':24 'timegranular':619 'timegranularity.daily':246,320 'timeseriespoint':214,224 'timestamp1':499,507 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'train':195,353,360,394,412,637 'trainedmodel':401 'trainedmodel.getmodelid':406 'treat':714 'trend':169 'tri':572 'trigger':656 'tune':627 'univari':109,144,200,282,605,668 'univariate/multivariate':21 'univariatechangepointdetectionopt':315,318 'univariatechangepointdetectionresult':321 'univariatecli':115,116 'univariateclient.detectunivariatechangepoint':323 'univariateclient.detectunivariateentireseries':251,573 'univariateclient.detectunivariatelastpoint':290 'univariatedetectionopt':240,243 'univariateentiredetectionresult':249 'univariatelastdetectionresult':288 'upper':303 'use':18,44,183,638,683,699 'valid':724 'valu':275,629 'variabl':113,526,533,587 'variable1':497 'variable2':505 'variablevalu':496,504 'window':642 'workflow':691 'xml':54","prices":[{"id":"9d4f2ee4-162f-4790-9809-0fa9468169c6","listingId":"754e5e34-eb80-448b-be28-4fd4ebf9956b","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:31:50.248Z"}],"sources":[{"listingId":"754e5e34-eb80-448b-be28-4fd4ebf9956b","source":"github","sourceId":"sickn33/antigravity-awesome-skills/azure-ai-anomalydetector-java","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-ai-anomalydetector-java","isPrimary":false,"firstSeenAt":"2026-04-18T21:31:50.248Z","lastSeenAt":"2026-04-25T00:50:30.544Z"}],"details":{"listingId":"754e5e34-eb80-448b-be28-4fd4ebf9956b","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"azure-ai-anomalydetector-java","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34964,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-24T06:41:17Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"f998904a9015af5bc263c464fcad2e4b29325243","skill_md_path":"skills/azure-ai-anomalydetector-java/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/azure-ai-anomalydetector-java"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"azure-ai-anomalydetector-java","description":"Build anomaly detection applications with Azure AI Anomaly Detector SDK for Java. Use when implementing univariate/multivariate anomaly detection, time-series analysis, or AI-powered monitoring."},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/azure-ai-anomalydetector-java"},"updatedAt":"2026-04-25T00:50:30.544Z"}}