sentinel-xdr-solution-packager
Skill6.2k starsChanged 16 days agoMITView on GitHub
Package a complete Microsoft Sentinel and Defender XDR solution through the V3.1 packaging implementation.
We split this skill into the rules it gives an agent
21 rules. About 0 are common, 10 are distinctive, and 11 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈10
Distinctive · estimate
This author's own choices. Worth a look.
11
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 8
Use this skill after solution content, any XDR Detections/*.yaml, and selected XDR Workbooks/*.json files are complete and structurally …
- Very specific: line 27
Use the explicit solution Data XDR Workbooks selection.
- Distinctive: line 45
Keep workspace-function prerequisites in full registration.
- Very specific: line 48
Do not classify _GetWatchlist as an installable parser or Watchlist as connector-fed telemetry.
- Distinctive: line 51
Do not rewrite source workbooks, remove panels, silently resolve blockers, or treat conversion findings as permission to change toolkit …
- Very specific: line 81
Use none for repeat local validation.
- Distinctive: line 103
When the solution contains Custom Detections, confirm its solution-data JSON contains:
- Distinctive: line 136
Stop for wrong or ambiguously mapped identities and out-of-scope resources, not for an intended managed same-ID update.
- Distinctive: line 144
Do not claim otherwise from template generation.
- Very specific: line 155
Verify every contentProvenance.source.id resolves to exactly one Analytic Rule content ID.
- Distinctive: line 160
Run the deterministic toolkit wrapper:
- Very specific: line 168
Use none for validation without modifying source versions.
- Very specific: line 176
Never reuse pre-existing package artifacts as proof that this stage ran.
- Distinctive: line 183
Never synthesize it or substitute a bare GUID, Partner ID, or plan ID.
- Distinctive: line 184
If absent or blank, packaging continues without a marker and nested XDR packages warn that Partner Center cannot auto-add attribution for …
- Very specific: line 199
only emitted families declare Deploy* booleans.
- Very specific: line 201
every AR is gated by DeployAnalyticsRule, independently of CDs.
- Very specific: line 202
every CD installation and registration is gated by DeployCustomDetection.
- Distinctive: line 204
every CD resolves to exactly one source AR.
- Very specific: line 205
every CD body has status: disabled.
- Distinctive: line 216
Run the repository packaging validations.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Package a Sentinel and Defender XDR solution
Use this skill after solution content, any XDR Detections/*.yaml, and selected
XDR Workbooks/*.json files are complete and structurally validated.
The XDR Solution Manager workflow always runs V3.1. Legacy V3 remains available outside this workflow for legacy Sentinel-only packaging and intentionally ignores XDR Detections. Never use V3 to satisfy this workflow's packaging stage.
The generated package remains a full Microsoft Sentinel solution. When XDR Detections are declared, it also supports hybrid installation:
DeployAnalyticsRule=true(default) installs Sentinel Analytic Rule content.DeployCustomDetection=true(default false) installs Custom Detections and their Content Hub registrations independently. Both selections may be true.- Custom Detections are always packaged disabled.
DeployDefenderWorkbook=true(default false) installs Defender Workbooks and their registrations independently of SentinelDeployWorkbook.
Defender Workbook candidate boundary
Use the explicit solution Data XDR Workbooks selection. An empty array emits no
Defender Workbook resources or deployment flag; never scan to repopulate it.
Each selected file retains a complete Notebook/1.0, distinct canonical content
and installation GUIDs, exact raw source-file and query provenance, resolved
prerequisites, and explicit false review markers. Content versions inherit the
selected solution release; the Notebook format version is unchanged.
Installation and stored installation templates carry exactly the resolved
package/content identity quartet. Full registration also retains prerequisites.
Reviewed workspace functions are declared in requiredWorkspaceFunctions with
functionAlias, solution-relative sourcePath, and current sourceSha256.
Required parser installation is mandatory: the workbook's outer installation
deployment must depend on the actual unconditional
Microsoft.OperationalInsights/workspaces/savedSearches resources emitted in
the same enclosing template. Do not substitute parser catalog registration for
installation, invent dependencies on external resources, or allow selection
flags to skip required parsers. Missing/stale/ambiguous prerequisites block
packaging before template mutation. Parser overwrites are expected for this route.
Keep workspace-function prerequisites in full registration; installed content
provenance remains the quartet. ARM ordering does not prove AH visibility or
query/runtime acceptance.
Do not classify _GetWatchlist as an installable parser or Watchlist as
connector-fed telemetry. Raw reference lineage is separate from required
workload/connector data types.
Do not rewrite source workbooks, remove panels, silently resolve blockers, or
treat conversion findings as permission to change toolkit implementation.
The installation/registration provider contract is unverified. A generated candidate is not accepted packaging. Require independent approved lab installation, registration/provenance readback, repeat-install and update evidence before claiming contract acceptance. ARM success, ARM-TTK, and local tests do not establish workbook UI or query qualification. No packaging command implicitly authorizes environment writes.
Scope
This skill:
- validates the solution-data packaging contract;
- selects and applies one semantic version increment;
- runs the supported local packaging entry point;
- verifies the generated template, parameter file, and ZIP;
- checks AR-to-CD matching and hybrid deployment conditions; and
- reports validation failures without hiding or weakening them.
It does not convert Analytic Rules, create mock data, deploy the generated template, enable detections, or validate alert parity.
Inputs
- A solution folder under
Solutions\. - The solution data folder, normally
Solutions\<solution>\Data. - The version action:
none,patch,minor, ormajor.
Use none for repeat local validation. Before producing a package intended for
submission, ask which release increment to apply. Never bump the version more
than once for the same package attempt.
V3.1 requires effective solution release versions in [3.2.0, 4.0.0).
Independent XDR Custom Detection release versions remain in [3.1.0, 4.0.0).
Other content release versions must be below 4.0.0; their
legacy lower versions remain valid. Out-of-range versions are hard errors, not
automatic promotions. A major bump from 3.x is therefore rejected.
XDR requires its own top-level YAML version (major.minor.patch); new
conversions initialize it to 3.1.0 independently of the Sentinel source.
Registration metadata and content product IDs use that value. This check
applies regardless of deployment selection. Data XDR Detection Version, solution
version, and source provenance are not fallbacks. Older files missing the
version must be explicitly reconverted with --overwrite after reviewing
manual edits, or have their independent XDR version authored. Never falsify
contentProvenance.source.version or bump the source AR to satisfy the XDR floor.
Solution version bumps do not change per-detection versions.
These bounds do not apply to API, schema, or extension-provider versions.
XDR packaging contract
When the solution contains Custom Detections, confirm its solution-data JSON contains:
{
"Analytic Rules": [],
"XDR Detections": []
}For every XDR Detection YAML, require:
kind: CustomDetection;- top-level
versionin[3.1.0, 4.0.0), separate fromschemaVersion; resourceType: Microsoft.Security/detectionRules;- a supported
apiVersion; - a stable
properties.id; contentProvenance.source.idmatching exactly one packaged Analytic Rule;- a query, schedule, alert template, and reviewed entity mappings; and
properties.status: disabled.
For Sentinel-derived detections, properties.id is xdr-<full source GUID>,
while contentProvenance.source.id remains the original unprefixed GUID. The
packager normalizes a bare source GUID on its packaging copy, keeps a canonical
xdr- ID unchanged, and rejects unrelated custom IDs; it must not rewrite the
authored detection YAML or provenance. Installation and registration IDs and
references must use the same normalized identity. Existing deployed identities
are not migrated or deleted. An optional read-only identity review may help
diagnose known legacy IDs or collisions, but it is not a mandatory
pre-deployment existence check. Follow the canonical toolkit-owner managed
update policy: approved same-ID workbook and XDR detection overwrites are normal,
including in labs. Do not require a previous remote-content hash match or an
extra overwrite decision solely because existing content/version differs.
Stop for wrong or ambiguously mapped identities and out-of-scope resources,
not for an intended managed same-ID update. Personalized workbook copies use
separate IDs and are not selected for toolkit updates. Preserve deployment
consent, disabled detection payloads and exact post-write acceptance checks.
Include XDR Content Registration is deprecated: any supplied value warns and
is ignored. V3.1 emits installation and registration together under
DeployCustomDetection; live provider support for registration is unverified.
Do not claim otherwise from template generation. Require separate exact-scope
approval before any environment write.
Workflow
- Work from the repository root.
- Confirm PowerShell 7.1 or newer, Node.js, and the
powershell-yamlmodule are available. Install missing dependencies only after confirming they are required. - Inspect the solution-data JSON and all referenced files. Stop on missing, duplicate, conflicting, or review-required content.
- Verify every
contentProvenance.source.idresolves to exactly one Analytic Rule content ID. - Confirm the current solution version and the requested bump. Check that
ReleaseNotes.md, when present, can be synchronized to the resulting version. Run the deterministic toolkit wrapper:
sentinel-xdr-migration package-v3-1 ` --solution ".\Solutions\<solution>" ` --version-bump noneUse
nonefor validation without modifying source versions. Replace it with the approvedpatch,minor, ormajorvalue when producing a release package; those options update the solution data and metadata versions. The wrapper invokesTools\Create-Azure-Sentinel-Solution\V3\createSolutionV3_1.ps1with local version mode, validates every required output and the ZIP, and writesSolutions\<solution>\Logs\sentinel-xdr-migration\<run-id>\packaging.v3_1.json.Never reuse pre-existing package artifacts as proof that this stage ran. Complete the workflow stage only with the wrapper's
workflowArtifactsvalues, includingpackager=V3.1andpackageReport. Historical V4 reports are not V3.1 evidence; rebuild rather than relabel them.Optional
trackingIdin SolutionMetadata.json must contain the complete ID copied unchanged from Partner Center > offer > plan > Technical configuration. Never synthesize it or substitute a bare GUID, Partner ID, or plan ID. If absent or blank, packaging continues without a marker and nested XDR packages warn that Partner Center cannot auto-add attribution for functional nested deployments. Surface that warning and recommend adding the ID and rebuilding; do not claim upload rejection. See official attribution guidance.Require successful packaging and inspect:
Package\mainTemplate.json;Package\createUiDefinition.json;Package\testParameters.json; andPackage\<version>.zip.
For a hybrid package, verify:
- only emitted families declare
Deploy*booleans; Sentinel defaults true,DeployCustomDetectiondefaults false, and UI/test parameters agree; - every AR is gated by
DeployAnalyticsRule, independently of CDs; - every CD installation and registration is gated by
DeployCustomDetection; - existing conditions are AND-composed without changing nested scopes;
- every CD resolves to exactly one source AR; CD deployment/registration counts match;
- every CD body has
status: disabled; - deployment names and CD IDs are unique and deterministic;
- content packages and attribution remain unconditional; dependencies are unchanged and may still require unselected content or external prerequisites;
- no
E5FlavororRegisterE5Contentparameter is generated; - multiple authored tactics retain only the first authored entry and its techniques in both ARM payload copies, with an explicit omission warning; authored YAML and provenance remain unchanged, and Graph deployment still has its single-tactic guard; and
- the generated ZIP version matches the solution-data version.
- only emitted families declare
- Run the repository packaging validations. Do not classify skipped tests as passed. Separate genuine template failures from documented validator or environment limitations.
- Report the generated version, artifact paths, content counts, validation results, and any deployment prerequisites or unresolved failures.
Packaging is complete only when the artifacts exist, versions are synchronized, all expected resources are present, the V3.1 evidence report is accepted by the workflow gate, and no unexplained validation failure remains.
Trending
More talk lately.about the whole repository
Who's talking about Azure/Azure-Sentinel
- @github-trending.bsky.social“📦 Azure / Azure-Sentinel ⭐ 4,774 (+3) 🗒 Python Cloud-native SIEM for intelligent security analytics for …”Bluesky · Feb 12, 2025 · 2 likes
- pulumi/pulumi-cloud-requests“Logs automated export into Azure Storage Account and/or Log Analytics Workspace”GitHub · Aug 9, 2024 · 2 reactions
- octocat/Spoon-Knife“**Describe the bug**”GitHub · Jun 11, 2022 · 2 reactions
- redaliscbe/Azure-Sentinel“Feature 1”GitHub · Jul 8, 2026 · 1 reactions
- Stack Overflow“How do I search through the in Sentinel Workbooks stored queries?”Stack Overflow · Aug 12, 2024 · 1 votes
The biggest 5 of 57 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 57
Talked about on GitHub, Stack Overflow and Bluesky (57 times).
On GitHub · 43
- Aug 9, 2024Logs automated export into Azure Storage Account and/or Log Analytics Workspace — pulumi/pulumi-cloud-requests2 reactions · 1 comment
- Jun 11, 2022**Describe the bug** — octocat/Spoon-Knife2 reactions
- Jul 8, 2026Feature 1 — redaliscbe/Azure-Sentinel1 reaction
- Dec 3, 2020Updat the Entity eum to include all the new types — wortell/AZSentinel1 reaction
- Oct 29, 2026Daily catalog: Iwatobi, SCuBA, AI scanning, and GCP detections — amcamillo/Cybersecurity_Tools0 reactions
38 more on GitHub
- Oct 15, 2026Support reviewed workbook updates with clean public artifacts and local audit evidence — oferInbar/Azure-Sentinel0 reactions
- Sep 28, 2026Mxdr 5375 v1 sentinel ccf multitenant — V1ManagedServices/Azure-Sentinel0 reactions
- Sep 22, 2026Main to master — idoshabi07/Azure-Sentinel0 reactions
- Sep 22, 2026Main — idoshabi07/Azure-Sentinel0 reactions
- Sep 15, 2026Release/3.75.0 — ccx-mss/Azure-Sentinel0 reactions
- Sep 14, 2026Release/3.75.0 — ccx-mss/Azure-Sentinel0 reactions · 1 comment
- Sep 9, 2026Create connector-builder-agent configuration — fuqing04/Azure-Sentinel0 reactions
- Aug 16, 2026Add dual-signal containment gate community plugin — Azure/Security-Copilot0 reactions
- Aug 16, 2026Add dual_signal_containment_gate custom function — phantomcyber/playbooks0 reactions
- Aug 10, 2026Semperis Lightning 4.1.0: merge CCF into existing offer (Function App + CCF) — MitchellGulledge3/Azure-Sentinel0 reactions · 5 comments
- Aug 10, 2026RFPD-77178: log ingestion api (v3.0) — recordedfuture/Azure-Sentinel0 reactions
- Jun 4, 2026Change api — adutt-commvault/Azure-Sentinel0 reactions
- May 21, 2026Update README with contribution guidelines and resources — vikorium/Azure-Sentinel0 reactions
- May 18, 2026Add weekly Azure Sentinel connector report workflow — fuqing04/sentinel-agent-runner0 reactions
- Mar 17, 2026Feat sar 46819 — sonraisecurity/Azure-Sentinel0 reactions
- Feb 27, 2026Update requirements.txt — daneshelias01/Azure-Sentinel0 reactions
- Jan 20, 2026test — BC-47/Azure-Sentinel0 reactions
- Jan 16, 2026Add new entry to ExclusionListForASimTests.csv — v-sabiraj/Azure-Sentinel0 reactions
- Mar 13, 2025Create Cholitas — GravityFallsInc/GravityFalls_Sentinel0 reactions
- Sep 10, 2024Patch-1 — mpmisha/Azure-Sentinel0 reactions
- Jul 11, 2024 - added metadata tags to incident description — synack/Azure-Sentinel0 reactions
- Jan 12, 2024Added local changes for test — SmitR01/Azure-Sentinel0 reactions
- Nov 9, 2023Create dsdsadasda — aviatam/Azure-Sentinel0 reactions · 1 comment
- Aug 24, 2023Praveenthepro patch 1 1 — praveenthepro/Azure-Sentinel0 reactions
- Jul 31, 2023seraphic security connector — LihiAtzmoni1/Azure-Sentinel0 reactions · 1 comment
- Jun 1, 2023Automation test — cohesity/Azure-Sentinel0 reactions
- May 4, 2023Just a demo branch to show right structure of the installation and co… — cohesity/Azure-Sentinel0 reactions
- Dec 6, 2022Cmmc2.0 — cwling75/AzureSentinel0 reactions
- Dec 2, 2022Just initialize this new branch for Cohesity internal collaboration/r… — cohesity/Azure-Sentinel0 reactions · 4 comments
- Aug 5, 2022Create intrigus-lgtm.txt — intrigus-lgtm/Azure-Sentinel0 reactions
- Jun 7, 2022Yaronfr/log4j 1 — qusaiismail/Sentinel0 reactions
- May 30, 2022test new script — sivanguetta/Azure-Sentinel0 reactions · 1 comment
- May 30, 2022test — sivanguetta/Azure-Sentinel0 reactions · 1 comment
- May 26, 2022Run ASIM testers on 'eco-connector-test' workspace — sivanguetta/Azure-Sentinel0 reactions · 1 comment
- May 19, 2022Run ASIM testers on 'eco-connector-test' workspace — sivanguetta/Azure-Sentinel0 reactions · 1 comment
- May 2, 2022[Asim] test kqlFuncYaml2Arm on ASimProcessEvent folder — sivanguetta/Azure-Sentinel0 reactions · 1 comment
- Apr 26, 2022Test GitHub action that generates ARM templates from KQL — sivanguetta/Azure-Sentinel0 reactions
- Feb 14, 2022Google Workspace connector: Don't use pickle — r4vi/Azure-Sentinel0 reactions
On Stack Overflow · 13
- Aug 12, 2024How do I search through the in Sentinel Workbooks stored queries?1 vote
- Apr 3, 2019Azure log analytics: monitoring successful sign-ins following repeated sign-in failures1 vote
- Sep 29, 2024KQL for exfiltration of files/data ...almost there but slightly wrong0 votes · 1 answer
- Aug 8, 2024How do I search through the in Sentinel Workbooks stored queries?0 votes
- May 1, 2024Trying to set Azure Activity Log from Tenant Root(all subscriptions) getting Resource Provider Error0 votes · 1 answer
8 more on Stack Overflow
- Apr 11, 2024Azure Sentinel Incident Trigger in Logic Apps Automation Delay0 votes
- Nov 17, 2023Need Assistance with collecting O365 Audit Logs with function app and directing them to Event Hub0 votes · 1 answer
- Oct 21, 2022Azure Sentinel Sample data CSV0 votes · 1 answer
- Oct 12, 2022AZURE sentinel query to log off Azure remote session for user0 votes
- Feb 4, 2022Integration issues with Microsoft Sentinel and ServiceNow and Get Etag0 votes
- Dec 13, 2021How to detect when a security incident occurs0 votes
- Jul 1, 2021Download multiple file from GitHub public repos without git0 votes
- Feb 13, 2020Creating a Pull Request in Azure sentinel Repository0 votes · 1 answer
On Bluesky · 1
- Feb 12, 2025📦 Azure / Azure-Sentinel ⭐ 4,774 (+3) 🗒 Python Cloud-native SIEM for intelligent security analytics for your entire enterprise. — @github-trending.bsky.social2 likes and reposts
In this repository30 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- .github/copilot-instructions.mdCopilot instructions
- Tools/Microsoft-Sentinel-Classic-CLv1-Tables-Impact-Assessment/.github/copilot-instructions.mdCopilot instructions
- .cursor/rules/sentinel-xdr-migration.mdcCursor rule
- sentinel-xdr-migrationSkill
- asim-parser-create-parameter-parserSkill
- asim-parser-create-parserSkill
- asim-parser-creator-orchestratorSkill
- asim-parser-filter-validatorSkill
- asim-parser-github-pr-packagerSkill
- asim-parser-la-deployerSkill
- asim-parser-pr-reviewerSkill
- asim-parser-user-prompterSkill
- asim-parser-validatorSkill
- az-cli-command-runnerSkill
- azure-monitor-logs-ingestionSkill
- log-analytics-workspace-queryerSkill
- run-solution-analyzerSkill
- sentinel-solution-mock-data-generationSkill
- sentinel-solution-optional-testingSkill
- sentinel-xdr-alert-parity-validatorSkill
- sentinel-xdr-dependency-helperSkill
- sentinel-xdr-detection-validatorSkill
- sentinel-xdr-end-to-end-orchestratorSkill
- sentinel-xdr-migration-orchestratorSkill
- sentinel-xdr-rule-converterSkill
- sentinel-xdr-solution-deployerSkill
- solution-release-notes-updaterSkill
- update-solution-analyzerSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

