{"data":{"skill":{"slug":"microsoft-azure-resource-visualizer","name":"azure-resource-visualizer","icon":"📦","repo":"https://github.com/microsoft/github-copilot-for-azure/tree/main/plugin/skills/azure-resource-visualizer/","status":"approved","author":"microsoft","authorVersion":"0.0.0-placeholder","skillstoreRevision":2},"audit":{"id":"62c9bf94-92cc-4788-a5ae-84cc576a2635","skill_id":"256ba031-3ea5-4834-ae57-5c7a56f06836","version":5,"content_hash":"v3:ebdfe608f5de2b66ff37ab4af12af8ac4f5e8006:5211cadba6aceafd035920044590bb2e88b1ffc3fb0cafd5b85f8a53b4f08aef:2d213d52f1aeeea63882ba08638fea0f5ab7074bb6213bc12c8c2798d21b6fc2:736b696c6c732f6d6963726f736f66742f617a7572652d7265736f757263652d76697375616c697a6572:c35350a1842424e02e3d0ff4cab0b449","risk_level":"safe","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"All 39 static findings are false positives caused by private example addresses, Markdown code formatting, Mermaid syntax, and legitimate read-only Azure discovery guidance. No executable Ruby code, malicious reconnaissance, prompt injection, secret exposure, or unsafe command construction was found.","remediation":[],"risk_factor_evidence":[{"factor":"network","evidence":[{"file":"assets/example-diagram.md","line_end":12,"line_start":12},{"file":"assets/example-diagram.md","line_end":13,"line_start":13},{"file":"assets/example-diagram.md","line_end":14,"line_start":14}]},{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":28,"line_start":28},{"file":"SKILL.md","line_end":41,"line_start":41},{"file":"SKILL.md","line_end":62,"line_start":62},{"file":"SKILL.md","line_end":69,"line_start":69},{"file":"SKILL.md","line_end":74,"line_start":74},{"file":"SKILL.md","line_end":75,"line_start":75},{"file":"SKILL.md","line_end":76,"line_start":76},{"file":"SKILL.md","line_end":88,"line_start":88},{"file":"SKILL.md","line_end":110,"line_start":110},{"file":"SKILL.md","line_end":111,"line_start":111},{"file":"SKILL.md","line_end":112,"line_start":112},{"file":"SKILL.md","line_end":113,"line_start":113},{"file":"SKILL.md","line_end":116,"line_start":116},{"file":"SKILL.md","line_end":117,"line_start":117},{"file":"SKILL.md","line_end":122,"line_start":122},{"file":"SKILL.md","line_end":123,"line_start":123},{"file":"SKILL.md","line_end":157,"line_start":157},{"file":"SKILL.md","line_end":158,"line_start":158},{"file":"SKILL.md","line_end":159,"line_start":159},{"file":"SKILL.md","line_end":160,"line_start":160},{"file":"SKILL.md","line_end":161,"line_start":161},{"file":"SKILL.md","line_end":169,"line_start":169}]}],"critical_findings":[],"high_findings":[],"medium_findings":[],"low_findings":[],"dangerous_patterns":[],"files_scanned":5,"total_lines":377,"audit_model":"codex","audited_at":"2026-07-23T19:27:27.675+00:00","created_at":"2026-07-25T23:07:37.753736+00:00","static_findings":[{"id":"network:assets/example-diagram.md:12:hardcoded-ip-address","file":"assets/example-diagram.md","pattern":"Hardcoded IP address","snippet":"VNET[Virtual Network<br/>10.0.0.0/16]","category":"network","line_end":12,"severity":"medium","line_start":12},{"id":"network:assets/example-diagram.md:13:hardcoded-ip-address","file":"assets/example-diagram.md","pattern":"Hardcoded IP address","snippet":"SUBNET1[Subnet: web<br/>10.0.1.0/24]","category":"network","line_end":13,"severity":"medium","line_start":13},{"id":"network:assets/example-diagram.md:14:hardcoded-ip-address","file":"assets/example-diagram.md","pattern":"Hardcoded IP address","snippet":"SUBNET2[Subnet: data<br/>10.0.2.0/24]","category":"network","line_end":14,"severity":"medium","line_start":14},{"id":"blocker:assets/example-diagram.md:5:system-reconnaissance","file":"assets/example-diagram.md","pattern":"System reconnaissance","snippet":"## Sample Mermaid Diagram","category":"blocker","line_end":5,"severity":"low","line_start":5},{"id":"blocker:assets/example-diagram.md:7:system-reconnaissance","file":"assets/example-diagram.md","pattern":"System reconnaissance","snippet":"```mermaid","category":"blocker","line_end":8,"severity":"low","line_start":7},{"id":"blocker:assets/template-architecture.md:21:system-reconnaissance","file":"assets/template-architecture.md","pattern":"System reconnaissance","snippet":"```mermaid","category":"blocker","line_end":22,"severity":"low","line_start":21},{"id":"external_commands:SKILL.md:28:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. Use your tools to query available resource groups. If you do not have a tool for this, use `az`.","category":"external_commands","line_end":28,"severity":"medium","line_start":28},{"id":"external_commands:SKILL.md:41:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. **Query all resources** in the resource group using Azure MCP tools or `az`.","category":"external_commands","line_end":41,"severity":"medium","line_start":41},{"id":"external_commands:SKILL.md:62:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Create a **detailed Mermaid diagram** using the `graph TB` (top-to-bottom) or `graph LR` (left-to-ri","category":"external_commands","line_end":62,"severity":"medium","line_start":62},{"id":"external_commands:SKILL.md:69:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- **Include details**: SKUs, tiers, important settings in node labels (use `<br/>` for line breaks)","category":"external_commands","line_end":69,"severity":"medium","line_start":69},{"id":"external_commands:SKILL.md:74:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `-->` for data flow or dependencies","category":"external_commands","line_end":74,"severity":"medium","line_start":74},{"id":"external_commands:SKILL.md:75:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `-.->` for optional/conditional connections","category":"external_commands","line_end":75,"severity":"medium","line_start":75},{"id":"external_commands:SKILL.md:76:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `==>` for critical/primary paths","category":"external_commands","line_end":76,"severity":"medium","line_start":76},{"id":"external_commands:SKILL.md:88:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Use [template-architecture.md](./assets/template-architecture.md) as a template and create a markdow","category":"external_commands","line_end":88,"severity":"medium","line_start":88},{"id":"external_commands:SKILL.md:110:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Use `intent=\"list resource groups\"` to discover resource groups","category":"external_commands","line_end":110,"severity":"medium","line_start":110},{"id":"external_commands:SKILL.md:111:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Use `intent=\"list resources in group\"` with group name to get all resources","category":"external_commands","line_end":111,"severity":"medium","line_start":111},{"id":"external_commands:SKILL.md:112:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Use `intent=\"get resource details\"` for individual resource analysis","category":"external_commands","line_end":112,"severity":"medium","line_start":112},{"id":"external_commands:SKILL.md:113:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Use `command` parameter when you need specific Azure operations","category":"external_commands","line_end":113,"severity":"medium","line_start":113},{"id":"external_commands:SKILL.md:116:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Always create in workspace root or a `docs/` folder if it exists","category":"external_commands","line_end":116,"severity":"medium","line_start":116},{"id":"external_commands:SKILL.md:117:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Use clear, descriptive filenames: `[rg-name]-architecture.md`","category":"external_commands","line_end":117,"severity":"medium","line_start":117},{"id":"external_commands:SKILL.md:122:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Example: `az resource list --resource-group <name> --output json`","category":"external_commands","line_end":122,"severity":"medium","line_start":122},{"id":"external_commands:SKILL.md:123:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Example: `az network vnet show --resource-group <name> --name <vnet-name>`","category":"external_commands","line_end":123,"severity":"medium","line_start":123},{"id":"external_commands:SKILL.md:157:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Use `graph TB` (top-to-bottom) for vertical layouts","category":"external_commands","line_end":157,"severity":"medium","line_start":157},{"id":"external_commands:SKILL.md:158:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Use `graph LR` (left-to-right) for horizontal layouts (better for wide architectures)","category":"external_commands","line_end":158,"severity":"medium","line_start":158},{"id":"external_commands:SKILL.md:159:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Subgraph syntax: `subgraph \"Descriptive Name\"`","category":"external_commands","line_end":159,"severity":"medium","line_start":159},{"id":"external_commands:SKILL.md:160:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Node syntax: `ID[\"Display Name<br/>Details\"]`","category":"external_commands","line_end":160,"severity":"medium","line_start":160},{"id":"external_commands:SKILL.md:161:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Connection syntax: `SOURCE -->|\"Label\"| TARGET`","category":"external_commands","line_end":161,"severity":"medium","line_start":161},{"id":"external_commands:SKILL.md:169:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Use code blocks with `mermaid` language tag for diagrams","category":"external_commands","line_end":169,"severity":"medium","line_start":169},{"id":"blocker:SKILL.md:3:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"description: \"Analyze Azure resource groups and generate detailed Mermaid architecture diagrams show","category":"blocker","line_end":3,"severity":"low","line_start":3},{"id":"blocker:SKILL.md:12:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"A user may ask for help understanding how individual resources fit together, or to create a diagram ","category":"blocker","line_end":12,"severity":"low","line_start":12},{"id":"blocker:SKILL.md:19:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"4. **Diagram Generation**: Create detailed, accurate Mermaid diagrams","category":"blocker","line_end":19,"severity":"low","line_start":19},{"id":"blocker:SKILL.md:62:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"Create a **detailed Mermaid diagram** using the `graph TB` (top-to-bottom) or `graph LR` (left-to-ri","category":"blocker","line_end":62,"severity":"low","line_start":62},{"id":"blocker:SKILL.md:93:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"4. **Architecture Diagram**: The complete Mermaid diagram","category":"blocker","line_end":93,"severity":"low","line_start":93},{"id":"blocker:SKILL.md:118:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"- Ensure Mermaid syntax is valid (test syntax mentally before output)","category":"blocker","line_end":118,"severity":"low","line_start":118},{"id":"blocker:SKILL.md:143:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"- ❌ Generate invalid Mermaid syntax","category":"blocker","line_end":143,"severity":"low","line_start":143},{"id":"blocker:SKILL.md:156:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"### Mermaid Diagram Syntax","category":"blocker","line_end":156,"severity":"low","line_start":156},{"id":"blocker:SKILL.md:174:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"- ✅ Valid resource group identified","category":"blocker","line_end":174,"severity":"low","line_start":174},{"id":"blocker:SKILL.md:177:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"- ✅ Detailed Mermaid diagram with proper grouping","category":"blocker","line_end":177,"severity":"low","line_start":177},{"id":"blocker:SKILL.md:180:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"- ✅ Valid Mermaid syntax that renders correctly","category":"blocker","line_end":180,"severity":"low","line_start":180}],"finding_verdicts":[{"id":"network:assets/example-diagram.md:12:hardcoded-ip-address","reason":"The address is an RFC 1918 private CIDR used only as a label in a static sample Mermaid diagram; it creates no network connection.","verdict":"false_positive","confidence":0.99},{"id":"network:assets/example-diagram.md:13:hardcoded-ip-address","reason":"The address is a private example subnet displayed in documentation, not a destination used by executable network code.","verdict":"false_positive","confidence":0.99},{"id":"network:assets/example-diagram.md:14:hardcoded-ip-address","reason":"The address is a private example subnet displayed in documentation, not a destination used by executable network code.","verdict":"false_positive","confidence":0.99},{"id":"blocker:assets/example-diagram.md:5:system-reconnaissance","reason":"This line is a heading introducing a sample Mermaid diagram and contains no reconnaissance instruction or executable behavior.","verdict":"false_positive","confidence":0.99},{"id":"blocker:assets/example-diagram.md:7:system-reconnaissance","reason":"This is a Markdown fence that opens a static Mermaid example; it does not inspect a system or invoke a tool.","verdict":"false_positive","confidence":0.99},{"id":"blocker:assets/template-architecture.md:21:system-reconnaissance","reason":"This is a Mermaid code fence in an output template and has no system discovery behavior.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:28:ruby-shell-backtick-execution","reason":"Backticks format the Azure CLI name as inline Markdown; the prose recommends legitimate resource-group discovery and contains no Ruby execution syntax.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:41:ruby-shell-backtick-execution","reason":"Backticks format the Azure CLI name in documentation; the instruction describes authorized resource inventory and does not execute a shell command itself.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:62:ruby-shell-backtick-execution","reason":"The backticked values are Mermaid layout keywords, not shell substitutions or executable commands.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:69:ruby-shell-backtick-execution","reason":"The backticked HTML line-break tag is Mermaid label formatting and cannot execute a shell command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:74:ruby-shell-backtick-execution","reason":"The backticked arrow is Mermaid relationship syntax shown as documentation, not command execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:75:ruby-shell-backtick-execution","reason":"The backticked arrow is Mermaid relationship syntax shown as documentation, not command execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:76:ruby-shell-backtick-execution","reason":"The backticked arrow is Mermaid relationship syntax shown as documentation, not command execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:88:ruby-shell-backtick-execution","reason":"The line references a local template and formats an output filename placeholder; it contains no command invocation.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:110:ruby-shell-backtick-execution","reason":"The backticked text documents a fixed Azure MCP intent value and is not shell or Ruby code.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:111:ruby-shell-backtick-execution","reason":"The backticked text documents a fixed Azure MCP intent value and is not shell or Ruby code.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:112:ruby-shell-backtick-execution","reason":"The backticked text documents a fixed Azure MCP intent value and is not shell or Ruby code.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:113:ruby-shell-backtick-execution","reason":"The backticked word names an Azure MCP parameter in prose; no value is interpolated or executed here.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:116:ruby-shell-backtick-execution","reason":"The backticked value is a relative documentation folder name, not shell syntax.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:117:ruby-shell-backtick-execution","reason":"The backticked value is a Markdown filename template and contains no executable expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:122:ruby-shell-backtick-execution","reason":"This is a read-only Azure CLI example with an explicit placeholder; it is documentation and performs no automatic interpolation or execution.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:123:ruby-shell-backtick-execution","reason":"This is a read-only Azure CLI show example with explicit placeholders; it is documentation and performs no automatic interpolation or execution.","verdict":"false_positive","confidence":0.96},{"id":"external_commands:SKILL.md:157:ruby-shell-backtick-execution","reason":"The backticked value is a Mermaid graph orientation keyword, not an external command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:158:ruby-shell-backtick-execution","reason":"The backticked value is a Mermaid graph orientation keyword, not an external command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:159:ruby-shell-backtick-execution","reason":"The backticked value demonstrates Mermaid subgraph syntax and is not evaluated by a shell.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:160:ruby-shell-backtick-execution","reason":"The backticked value demonstrates Mermaid node syntax and is not evaluated by a shell.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:161:ruby-shell-backtick-execution","reason":"The backticked value demonstrates Mermaid connection syntax and is not evaluated by a shell.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:169:ruby-shell-backtick-execution","reason":"The backticked word names the Mermaid Markdown language tag and has no execution behavior.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:3:system-reconnaissance","reason":"The metadata describes user-authorized Azure resource visualization; it does not direct host reconnaissance, privilege escalation, or covert discovery.","verdict":"false_positive","confidence":0.96},{"id":"blocker:SKILL.md:12:system-reconnaissance","reason":"The mission statement limits analysis to Azure resources the user requests and frames discovery as architecture documentation.","verdict":"false_positive","confidence":0.95},{"id":"blocker:SKILL.md:19:system-reconnaissance","reason":"Diagram generation is a documentation capability and does not perform system reconnaissance.","verdict":"false_positive","confidence":0.98},{"id":"blocker:SKILL.md:62:system-reconnaissance","reason":"The line specifies Mermaid diagram layout and contains no system inspection behavior.","verdict":"false_positive","confidence":0.98},{"id":"blocker:SKILL.md:93:system-reconnaissance","reason":"The line names the architecture diagram section of the generated document and does not request reconnaissance.","verdict":"false_positive","confidence":0.98},{"id":"blocker:SKILL.md:118:system-reconnaissance","reason":"This quality check concerns Mermaid syntax validity and has no relationship to system discovery.","verdict":"false_positive","confidence":0.98},{"id":"blocker:SKILL.md:143:system-reconnaissance","reason":"This prohibition against invalid Mermaid output is a documentation quality rule, not reconnaissance.","verdict":"false_positive","confidence":0.98},{"id":"blocker:SKILL.md:156:system-reconnaissance","reason":"This line is a heading for Mermaid syntax documentation and contains no discovery instruction.","verdict":"false_positive","confidence":0.99},{"id":"blocker:SKILL.md:174:system-reconnaissance","reason":"The success criterion confirms the user-selected Azure resource group and does not imply unauthorized system enumeration.","verdict":"false_positive","confidence":0.97},{"id":"blocker:SKILL.md:177:system-reconnaissance","reason":"The success criterion evaluates diagram grouping and contains no reconnaissance behavior.","verdict":"false_positive","confidence":0.98},{"id":"blocker:SKILL.md:180:system-reconnaissance","reason":"The success criterion checks Mermaid rendering syntax and does not inspect any system.","verdict":"false_positive","confidence":0.98}],"semantic_findings":[],"subject_marketplace_commit_sha":"ebdfe608f5de2b66ff37ab4af12af8ac4f5e8006","subject_content_hash":"5211cadba6aceafd035920044590bb2e88b1ffc3fb0cafd5b85f8a53b4f08aef","subject_tree_hash":"2d213d52f1aeeea63882ba08638fea0f5ab7074bb6213bc12c8c2798d21b6fc2","subject_plugin_path":"skills/microsoft/azure-resource-visualizer","audit_payload_hash":"c35350a1842424e02e3d0ff4cab0b449","confirmed_risk_level":"safe","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"ebdfe608f5de2b66ff37ab4af12af8ac4f5e8006","contentHash":"5211cadba6aceafd035920044590bb2e88b1ffc3fb0cafd5b85f8a53b4f08aef","treeHash":"2d213d52f1aeeea63882ba08638fea0f5ab7074bb6213bc12c8c2798d21b6fc2","pluginPath":"skills/microsoft/azure-resource-visualizer","auditPayloadHash":"c35350a1842424e02e3d0ff4cab0b449"},"scannerVersion":"3.0.0","policyVersion":"skillstore-security-audit-policy-v1"},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"issued","url":"/api/skills/microsoft-azure-resource-visualizer/audits/5/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"safe","confirmedFindingCount":0,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}