Skip to main content

update-solution-analyzer

MANDATORY guidelines for ANY edit to ANY file under Tools/Solutions Analyzer/ — including the mapper (map_solutions_connectors_tables.py), doc generator (generate_connector_docs.py), interactive docs (generate_interactive_docs.py), ASIM browser, collect_table_info, collect_asim_fields, upload_to_kusto, compare_runs, solution_analyzer_overrides.csv, filter_field_resolution.yaml, or any other script/config in that folder. Use when: editing/modifying/refactoring/fixing/renaming/tweaking ANY logic in those files, even one-line fixes such as renaming a classification, escaping a character, adjusting a regex, adding an override row, suppressing a false positive, or changing a constant. Covers: keeping script-docs in sync, README Version History changelog rules (required for feature/behavior changes; optional for small bug fixes), CSV output sync with upload_to_kusto.py, static/interactive index synchronization, and markdown/HTML entity page synchronization.

Source facts

Repository
Azure/Azure-Sentinel
Last source activity
July 2, 2026 at 22:32
Detected SKILL.md language
English
Stars
6,229
Forks
3,857

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
update-solution-analyzer
description
MANDATORY guidelines for ANY edit to ANY file under Tools/Solutions Analyzer/ — including the mapper (map_solutions_connectors_tables.py), doc generator (generate_connector_docs.py), interactive docs (generate_interactive_docs.py), ASIM browser, collect_table_info, collect_asim_fields, upload_to_kusto, compare_runs, solution_analyzer_overrides.csv, filter_field_resolution.yaml, or any other script/config in that folder. Use when: editing/modifying/refactoring/fixing/renaming/tweaking ANY logic in those files, even one-line fixes such as renaming a classification, escaping a character, adjusting a regex, adding an override row, suppressing a false positive, or changing a constant. Covers: keeping script-docs in sync, README Version History changelog rules (required for feature/behavior changes; optional for small bug fixes), CSV output sync with upload_to_kusto.py, static/interactive index synchronization, and markdown/HTML entity page synchronization.
# Update Solution Analyzer Scripts ## Before Modifying a Script Always review the relevant script documentation in `Tools/Solutions Analyzer/script-docs/` first. For changes to a CSV output file's columns or semantics, also review the corresponding per-CSV reference page in `Tools/Solutions Analyzer/script-docs/csv/` (one file per CSV). ## Script Documentation Updates When updating a script, update the corresponding doc in `script-docs/` to reflect: - Script parameters added or changed - Output file changes — for new/renamed/removed CSV columns, **edit the per-CSV page in `script-docs/csv/<csv-name>.md`** (the script doc only lists CSVs as a summary table with links; it does not duplicate column tables) - Changes to analysis methods or logic - New CSV output: create a new page under `script-docs/csv/`, add a row to the summary table in the script doc, and add the new CSV to `script-docs/csv/README.md` (both the "By generating script" and "By role" sections) ## README Changelog **Required for feature additions and behavior changes; optional for small bug fixes.** New features, changed analysis logic, new/renamed/removed CSV columns, parameter changes, and other user-visible behavior changes must appear in the changelog. Pure bug fixes — such as correcting a typo, fixing a crash, escape-character tweaks, regex corrections, or one-line fixes that restore intended behavior without changing it — may be logged at your discretion but are not required. When a changelog entry is warranted, update the `## Version History` section in `Tools/Solutions Analyzer/README.md`: - Add the change under the **latest version heading** at the top of the changelog - If the latest version has not been committed yet (i.e., it already has uncommitted changes in the changelog), add to that existing version — do **not** create a new version entry - If the latest version was already committed, create a new version entry with an incremented version number and a short descriptive title - Each entry should be a bullet under a bold category heading (e.g., `**Fix Name:**`) - Be concise but specific: state what changed, why, and what the user-visible impact is ## CSV Output Changes When adding or removing a CSV output file from the mapper: - Update `upload_to_kusto.py` → `SOLUTION_ANALYZER_FILES` list to add/remove the file ## Static and Interactive Index Synchronization The documentation generator produces **two parallel sets of index pages** that must stay in sync: 1. **Static indexes** (`generate_connector_docs.py`): Markdown index pages — `solutions-index.md`, `connectors-index.md`, `tables-index.md`, `content/content-index.md`, etc. 2. **Interactive index** (`generate_interactive_docs.py`): HTML page with DataTables.js — `index.html` with tabs for Solutions, Connectors, Tables, and Content. **When modifying any index generation logic**, apply the same change to BOTH: - Data filtering/inclusion rules (which connectors or tables to show) - Status classification logic (Active/Deprecated/Unpublished/Discovered) - Icon usage and legend entries - Special-case handling (placeholder names like `<PlaybookName>`, "GitHub Only" solution name) - Link generation (collection method links, content item links, parser routing) - Column additions or removals - Description cleanup (quote stripping, truncation) ## Markdown and HTML Entity Page Synchronization The doc generator produces **both static markdown and HTML versions** of every entity page. - **Markdown pages** (`generate_connector_docs.py`): Primary data source — all content, counts, tables, and formatting are defined here. - **HTML entity pages** (`generate_interactive_docs.py` → `_generate_html_pages()`): Auto-generated from markdown via Python `markdown` library. In most cases, changing `generate_connector_docs.py` is sufficient because HTML pages derive from markdown. But if the change involves: - Navigation or link targets - HTML-specific rendering (e.g., DataTables on schema tables) - Heading structure changes ...also update `generate_interactive_docs.py`.
View on GitHub