Packages the created and validated ASIM schema parser into a GitHub PR for the Azure-Sentinel repository. Use this skill when asked to package a parser into a GitHub PR.
60
70%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./.github/skills/asim-parser-github-pr-packager/SKILL.mdYou are responsible for packaging the ASIM parser into a GitHub PR for the Azure-Sentinel repository. This involves creating a PR with the necessary changes to include the new or updated parser in the repository.
You will need the following information to package the parser into a GitHub PR:
ASim<Schema><Vendor><Product>) and the parameterized parser (vim<Schema><Vendor><Product>)Verify the following before proceeding:
git remote -v.Create a new branch based on the target branch (e.g., main) using the naming convention:
asim/<schema>-<vendor>-<product>For example: asim/networksession-cisco-asa.
Create a YAML file for each parser (parameter-less and parameterized) in the directory Parsers/ASim<SchemaName>/Parsers/.
For the schema reference in both parser files, use the exact SchemaTitle and schema-specific aka.ms SchemaLink defined for the schema in .script/tests/asimParsersTest/VerifyASimParserTemplate.py. Do not substitute a Learn documentation URL.
ASim<Schema><Vendor><Product>.yamlParser:
Title: <schema name> ASIM parser for <vendor> <product> <schema name> Events
Version: '0.1.0'
LastUpdated: <current date in ISO 8601 format>
Product:
Name: <vendor> <product>
Normalization:
Schema: <schema name>
Version: <schema version>
References:
- Title: ASIM <schema name> Schema
Link: <schema-specific aka.ms SchemaLink from VerifyASimParserTemplate.py>
- Title: ASIM
Link: https://aka.ms/AboutASIM
- Title: <vendor> <product> Documentation
Link: <link to the documentation that the user had provided about the product events>
Description: |
<description of the parser, including the data source, the use cases that the parser can support, and any other relevant information.>
This parser was created using the agentic ASIM parser creation tool, powered by Skills in GitHub.
ParserName: ASim<Schema><Vendor><Product>
EquivalentBuiltInParser: _ASim_<SchemaName>_<Vendor><Product>
ParserParams:
- Name: disabled
Type: bool
Default: false
- Name: pack
Type: bool
Default: false
ParserQuery: |
<KQL query of the parameter-less ASIM parser>vim<Schema><Vendor><Product>.yamlParser:
Title: <schema name> ASIM filtering parser for <vendor> <product> <schema name> Events
Version: '0.1.0'
LastUpdated: <current date in long date format>
Product:
Name: <vendor> <product>
Normalization:
Schema: <schema name>
Version: <schema version>
References:
- Title: ASIM <schema name> Schema
Link: <schema-specific aka.ms SchemaLink from VerifyASimParserTemplate.py>
- Title: ASIM
Link: https://aka.ms/AboutASIM
- Title: <vendor> <product> Documentation
Link: <link to the documentation that the user had provided about the product events>
Description: |
<description of the filtering parser, including the data source and the additional filter parameters it supports.>
This parser was created using the agentic ASIM parser creation tool, powered by Skills in GitHub.
ParserName: vim<Schema><Vendor><Product>
EquivalentBuiltInParser: _Im_<SchemaName>_<Vendor><Product>
ParserParams:
- Name: disabled
Type: bool
Default: false
- Name: pack
Type: bool
Default: false
<additional filter parameters as defined by the schema documentation>
ParserQuery: |
<KQL query of the parameterized ASIM parser>Create a changelog file in the directory Parsers/ASim<SchemaName>/CHANGELOG/ for both parser files.
<parser name for parameter less parser>.md# Changelog for <parser name for parameter less parser>
## Version 0.1.0 - <current date in YYYY-MM-DD format>
- (<current date in YYYY-MM-DD format>) Initial creation of the parser
- <other important mappings done in this version that may be relevant for the user to know><parser name for parameterized parser>.md# Changelog for <parser name for parameterized parser>
## Version 0.1.0 - <current date in YYYY-MM-DD format>
- (<current date in YYYY-MM-DD format>) Initial creation of the parser
- <other important mappings done in this version that may be relevant for the user to know>Update the unifying parsers to include the new parsers.
In the directory, Parsers/ASim<SchemaName>/Parsers/, there will be two parsers that include all existing parsers (e.g. ASimAuditEvent.yaml and vimAuditEvent.yaml).
Update the following for both yaml files:
Update the unifying parsers changelog files.
In the directory, Parsers/ASim<SchemaName>/CHANGELOG/, there will be two changelogs regarding the unifying parsers(e.g. ASimAuditEvent.md and vimAuditEvent.md).
Add a new entry to each changelog file to document the addition of the new parsers.
In the directory .script/tests/KqlvalidationsTests/CustomTables, check if the source table is defined as one of the files.
If there a file that defines the table, the parser is ready to be used in KQL validation tests in GitHub. You can skip this step.
If there is no file, then we will need to create a file.
{
"Name": "<source table name>",
"Properties": [
{ "name": "<property name>", "type": "<column type>" }, ...
]
}Extract the EventVendor and EventProduct from the parameter-less parser. Create a sample data file in the directory Sample Data/ASIM with the following name:
{EventVendor}_{EventProduct}_{ASIMSchema}_IngestedLogs.csv
The headers of the CSV file should match the name of the columns from the source table. The source table columns can be derived from Step 8. Generate 10 rows of sample data for the CSV file.
For new parsers, ensure that all of the following files are present or have been modified:
ASimAuditEvent{ProductName}.yaml and vimAuditEvent{ProductName}.yaml)ASimAuditEvent{ProductName}.md and vimAuditEvent{ProductName}.md)ASimAuditEvent.yaml and imAuditEvent.yaml)ASimAuditEvent.md and imAuditEvent.md)<EventVendor>_<EventProduct>_<ASIMSchema>_IngestedLogs.csv)Provided that you are in the root directory of the repository (Azure-Sentinel), run the following command to generate the ARM templates:
.script\kqlFuncYaml2Arm.ps1
This will generate the necessary ARM templates for the new parsers and update the unifying parsers.
There should not be any files deleted after running this script.
Commit all changes with a meaningful commit message, e.g.:
Add ASIM <SchemaName> parser for <Vendor> <Product>fd26ba7
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.