agentleFS
Microsoft AzureKnown publisherAzure/Azure-Sentinel/.github/skills/sentinel-xdr-solution-packager/SKILL.md

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
  1. Very specific:

    Use this skill after solution content, any XDR Detections/*.yaml, and selected XDR Workbooks/*.json files are complete and structurally …

    line 8
  2. Very specific:

    Use the explicit solution Data XDR Workbooks selection.

    line 27
  3. Distinctive:

    Keep workspace-function prerequisites in full registration.

    line 45
  4. Very specific:

    Do not classify _GetWatchlist as an installable parser or Watchlist as connector-fed telemetry.

    line 48
  5. Distinctive:

    Do not rewrite source workbooks, remove panels, silently resolve blockers, or treat conversion findings as permission to change toolkit …

    line 51
  6. Very specific:

    Use none for repeat local validation.

    line 81
  7. Distinctive:

    When the solution contains Custom Detections, confirm its solution-data JSON contains:

    line 103
  8. Distinctive:

    Stop for wrong or ambiguously mapped identities and out-of-scope resources, not for an intended managed same-ID update.

    line 136
  9. Distinctive:

    Do not claim otherwise from template generation.

    line 144
  10. Very specific:

    Verify every contentProvenance.source.id resolves to exactly one Analytic Rule content ID.

    line 155
  11. Distinctive:

    Run the deterministic toolkit wrapper:

    line 160
  12. Very specific:

    Use none for validation without modifying source versions.

    line 168
  13. Very specific:

    Never reuse pre-existing package artifacts as proof that this stage ran.

    line 176
  14. Distinctive:

    Never synthesize it or substitute a bare GUID, Partner ID, or plan ID.

    line 183
  15. Distinctive:

    If absent or blank, packaging continues without a marker and nested XDR packages warn that Partner Center cannot auto-add attribution for …

    line 184
  16. Very specific:

    only emitted families declare Deploy* booleans.

    line 199
  17. Very specific:

    every AR is gated by DeployAnalyticsRule, independently of CDs.

    line 201
  18. Very specific:

    every CD installation and registration is gated by DeployCustomDetection.

    line 202
  19. Distinctive:

    every CD resolves to exactly one source AR.

    line 204
  20. Very specific:

    every CD body has status: disabled.

    line 205
  21. Distinctive:

    Run the repository packaging validations.

    line 216

≈ “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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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 Sentinel DeployWorkbook.

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, or major.

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 version in [3.1.0, 4.0.0), separate from schemaVersion;
  • resourceType: Microsoft.Security/detectionRules;
  • a supported apiVersion;
  • a stable properties.id;
  • contentProvenance.source.id matching 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

  1. Work from the repository root.
  2. Confirm PowerShell 7.1 or newer, Node.js, and the powershell-yaml module are available. Install missing dependencies only after confirming they are required.
  3. Inspect the solution-data JSON and all referenced files. Stop on missing, duplicate, conflicting, or review-required content.
  4. Verify every contentProvenance.source.id resolves to exactly one Analytic Rule content ID.
  5. Confirm the current solution version and the requested bump. Check that ReleaseNotes.md, when present, can be synchronized to the resulting version.
  6. Run the deterministic toolkit wrapper:

    sentinel-xdr-migration package-v3-1 `
      --solution ".\Solutions\<solution>" `
      --version-bump none

    Use none for validation without modifying source versions. Replace it with the approved patch, minor, or major value when producing a release package; those options update the solution data and metadata versions. The wrapper invokes Tools\Create-Azure-Sentinel-Solution\V3\createSolutionV3_1.ps1 with local version mode, validates every required output and the ZIP, and writes Solutions\<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 workflowArtifacts values, including packager=V3.1 and packageReport. Historical V4 reports are not V3.1 evidence; rebuild rather than relabel them.

    Optional trackingId in 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.

  7. Require successful packaging and inspect:

    • Package\mainTemplate.json;
    • Package\createUiDefinition.json;
    • Package\testParameters.json; and
    • Package\<version>.zip.
  8. For a hybrid package, verify:

    • only emitted families declare Deploy* booleans; Sentinel defaults true, DeployCustomDetection defaults 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 E5Flavor or RegisterE5Content parameter 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.
  9. Run the repository packaging validations. Do not classify skipped tests as passed. Separate genuine template failures from documented validator or environment limitations.
  10. 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.

Download now (ZIP)

Trending

More talk lately.about the whole repository

Dec 2025: 0 mentionsJan 2026: 2 mentionsFeb 2026: 1 mentionMar 2026: 1 mentionApr 2026: 0 mentionsMay 2026: 2 mentionsJun 2026: 1 mentionJul 2026: 1 mentionAug 2026: 4 mentionsSep 2026: 6 mentionsOct 2026: 2 mentionsNov 2026: 0 mentions
Dec 2025Jun 2026Nov 2026
Mentions a month of the Azure/Azure-Sentinel repository that our weekly crawl found. There is no adoption data for this file yet.

Who's talking about Azure/Azure-Sentinel

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

38 more on GitHub

On Stack Overflow · 13

8 more on Stack Overflow

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.