azure/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.
npx skills add https://github.com/Azure/Azure-Sentinel --skill update-solution-analyzer
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).
When updating a script, update the corresponding doc in script-docs/ to reflect:
script-docs/csv/<csv-name>.md (the script doc only lists CSVs as a summary table with links; it does not duplicate column tables)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)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:
Fix Name:)When adding or removing a CSV output file from the mapper:
upload_to_kusto.py → SOLUTION_ANALYZER_FILES list to add/remove the fileThe documentation generator produces two parallel sets of index pages that must stay in sync:
generate_connector_docs.py): Markdown index pages — solutions-index.md, connectors-index.md, tables-index.md, content/content-index.md, etc.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:
<PlaybookName>, "GitHub Only" solution name)The doc generator produces both static markdown and HTML versions of every entity page.
generate_connector_docs.py): Primary data source — all content, counts, tables, and formatting are defined here.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:
...also update generate_interactive_docs.py.
Take azure/update-solution-analyzer from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.