{"data":{"skill":{"slug":"sickn33-agents-v2-py","name":"agents-v2-py","icon":"📦","repo":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/agents-v2-py","status":"approved","author":"sickn33","authorVersion":null,"skillstoreRevision":2},"audit":{"id":"67591691-2a24-4268-bb93-f55916621ab0","skill_id":"7b86b743-ffdd-4d31-849a-e8bdac7f7a66","version":5,"content_hash":"v3:ebdfe608f5de2b66ff37ab4af12af8ac4f5e8006:764fffdebaf0df1a8d9a884dea7facd7ea87a9ecf67f573c08a335c16898c453:cf94ea7bbe86c65909b20bb7b15b2b3b79c350335d68adf3f7c9832d812d306f:736b696c6c732f7369636b6e33332f6167656e74732d76322d7079:5e5af8ee24c7160b9160f6bc6501752b","risk_level":"medium","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"All 65 static findings are false positives caused by Markdown syntax, normal Python imports, example URLs, endpoint-only environment access, and troubleshooting text. Two contextual risks remain: copy-ready examples use mutable latest image tags, and an unguarded example deletes a cloud agent version. No prompt injection or malicious intent was found.","remediation":[{"issue":"Creation examples deploy container images with the mutable latest tag.","severity":"medium","suggestion":"Use immutable image digests or fixed version tags in every deployment example."},{"issue":"The deletion example removes an agent version without target validation or confirmation.","severity":"low","suggestion":"List versions, verify the exact target, and require explicit confirmation before deletion."}],"risk_factor_evidence":[{"factor":"scripts","evidence":[{"file":"SKILL.md","line_end":63,"line_start":59},{"file":"SKILL.md","line_end":221,"line_start":217},{"file":"SKILL.md","line_end":275,"line_start":271}]},{"factor":"external_commands","evidence":[{"file":"SKILL.md","line_end":11,"line_start":11},{"file":"SKILL.md","line_end":17,"line_start":15},{"file":"SKILL.md","line_end":19,"line_start":17},{"file":"SKILL.md","line_end":23,"line_start":19},{"file":"SKILL.md","line_end":25,"line_start":23},{"file":"SKILL.md","line_end":32,"line_start":25},{"file":"SKILL.md","line_end":33,"line_start":32},{"file":"SKILL.md","line_end":34,"line_start":33},{"file":"SKILL.md","line_end":38,"line_start":34},{"file":"SKILL.md","line_end":40,"line_start":38},{"file":"SKILL.md","line_end":49,"line_start":40},{"file":"SKILL.md","line_end":55,"line_start":49},{"file":"SKILL.md","line_end":64,"line_start":55},{"file":"SKILL.md","line_end":68,"line_start":64},{"file":"SKILL.md","line_end":92,"line_start":68},{"file":"SKILL.md","line_end":96,"line_start":92},{"file":"SKILL.md","line_end":100,"line_start":96},{"file":"SKILL.md","line_end":104,"line_start":100},{"file":"SKILL.md","line_end":109,"line_start":104},{"file":"SKILL.md","line_end":115,"line_start":109},{"file":"SKILL.md","line_end":115,"line_start":115},{"file":"SKILL.md","line_end":116,"line_start":116},{"file":"SKILL.md","line_end":117,"line_start":117},{"file":"SKILL.md","line_end":118,"line_start":118},{"file":"SKILL.md","line_end":119,"line_start":119},{"file":"SKILL.md","line_end":120,"line_start":120},{"file":"SKILL.md","line_end":126,"line_start":124},{"file":"SKILL.md","line_end":133,"line_start":126},{"file":"SKILL.md","line_end":138,"line_start":133},{"file":"SKILL.md","line_end":144,"line_start":138},{"file":"SKILL.md","line_end":151,"line_start":144},{"file":"SKILL.md","line_end":165,"line_start":151},{"file":"SKILL.md","line_end":167,"line_start":165},{"file":"SKILL.md","line_end":171,"line_start":167},{"file":"SKILL.md","line_end":180,"line_start":171},{"file":"SKILL.md","line_end":184,"line_start":180},{"file":"SKILL.md","line_end":194,"line_start":184},{"file":"SKILL.md","line_end":200,"line_start":194},{"file":"SKILL.md","line_end":207,"line_start":200},{"file":"SKILL.md","line_end":213,"line_start":207},{"file":"SKILL.md","line_end":263,"line_start":213},{"file":"SKILL.md","line_end":267,"line_start":263},{"file":"SKILL.md","line_end":300,"line_start":267},{"file":"SKILL.md","line_end":306,"line_start":300},{"file":"SKILL.md","line_end":306,"line_start":306},{"file":"SKILL.md","line_end":308,"line_start":307},{"file":"SKILL.md","line_end":309,"line_start":308},{"file":"SKILL.md","line_end":309,"line_start":309}]},{"factor":"network","evidence":[{"file":"SKILL.md","line_end":24,"line_start":24},{"file":"SKILL.md","line_end":177,"line_start":177},{"file":"SKILL.md","line_end":191,"line_start":191},{"file":"SKILL.md","line_end":321,"line_start":321},{"file":"SKILL.md","line_end":322,"line_start":322},{"file":"SKILL.md","line_end":323,"line_start":323}]},{"factor":"env_access","evidence":[{"file":"SKILL.md","line_end":46,"line_start":46},{"file":"SKILL.md","line_end":70,"line_start":70},{"file":"SKILL.md","line_end":85,"line_start":85},{"file":"SKILL.md","line_end":202,"line_start":202},{"file":"SKILL.md","line_end":227,"line_start":227},{"file":"SKILL.md","line_end":248,"line_start":248},{"file":"SKILL.md","line_end":282,"line_start":282}]}],"critical_findings":[],"high_findings":[],"medium_findings":[{"title":"Mutable Container Image Tags in Creation Examples","locations":[{"file":"SKILL.md","line_end":82,"line_start":82},{"file":"SKILL.md","line_end":294,"line_start":294}],"confidence":0.97,"description":"Copy-ready creation examples use the latest tag, so a moved registry tag can change which container code Azure executes.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"Both executable examples explicitly reference latest, although the later best-practice section advises fixed production tags."}],"low_findings":[{"title":"Cloud Agent Version Deletion Without a Guard","locations":[{"file":"SKILL.md","line_end":108,"line_start":104}],"confidence":0.95,"description":"The example directly deletes an Azure agent version without validating the target or requiring confirmation, creating accidental resource-loss risk.","review_kind":"security","source_category":"semantic","source_severity":"low","confidence_reasoning":"The delete_version call is explicit and unguarded, but it targets a named version and is presented as an intentional management operation."}],"dangerous_patterns":[],"files_scanned":1,"total_lines":332,"audit_model":"codex","audited_at":"2026-07-23T20:31:34.582+00:00","created_at":"2026-07-26T00:14:18.827171+00:00","static_findings":[{"id":"scripts:SKILL.md:59:dynamic-import-expression","file":"SKILL.md","pattern":"Dynamic import() expression","snippet":"from azure.ai.projects.models import (","category":"scripts","line_end":63,"severity":"medium","line_start":59},{"id":"scripts:SKILL.md:217:dynamic-import-expression","file":"SKILL.md","pattern":"Dynamic import() expression","snippet":"from azure.ai.projects.models import (","category":"scripts","line_end":221,"severity":"medium","line_start":217},{"id":"scripts:SKILL.md:271:dynamic-import-expression","file":"SKILL.md","pattern":"Dynamic import() expression","snippet":"from azure.ai.projects.models import (","category":"scripts","line_end":275,"severity":"medium","line_start":271},{"id":"external_commands:SKILL.md:11:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Build container-based hosted agents using `ImageBasedHostedAgentDefinition` from the Azure AI Projec","category":"external_commands","line_end":11,"severity":"medium","line_start":11},{"id":"external_commands:SKILL.md:15:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":17,"severity":"medium","line_start":15},{"id":"external_commands:SKILL.md:17:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":19,"severity":"medium","line_start":17},{"id":"external_commands:SKILL.md:19:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"**Minimum SDK Version:** `2.0.0b3` or later required for hosted agent support.","category":"external_commands","line_end":23,"severity":"medium","line_start":19},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":25,"severity":"medium","line_start":23},{"id":"external_commands:SKILL.md:25:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":32,"severity":"medium","line_start":25},{"id":"external_commands:SKILL.md:32:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"2. **ACR Pull Permissions** - Grant your project's managed identity `AcrPull` role on the ACR","category":"external_commands","line_end":33,"severity":"medium","line_start":32},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"3. **Capability Host** - Account-level capability host with `enablePublicHostingEnvironment=true`","category":"external_commands","line_end":34,"severity":"medium","line_start":33},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"4. **SDK Version** - Ensure `azure-ai-projects>=2.0.0b3`","category":"external_commands","line_end":38,"severity":"medium","line_start":34},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Always use `DefaultAzureCredential`:","category":"external_commands","line_end":40,"severity":"medium","line_start":38},{"id":"external_commands:SKILL.md:40:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":49,"severity":"medium","line_start":40},{"id":"external_commands:SKILL.md:49:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":55,"severity":"medium","line_start":49},{"id":"external_commands:SKILL.md:55:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":64,"severity":"medium","line_start":55},{"id":"external_commands:SKILL.md:64:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":68,"severity":"medium","line_start":64},{"id":"external_commands:SKILL.md:68:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":92,"severity":"medium","line_start":68},{"id":"external_commands:SKILL.md:92:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":96,"severity":"medium","line_start":92},{"id":"external_commands:SKILL.md:96:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":100,"severity":"medium","line_start":96},{"id":"external_commands:SKILL.md:100:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":104,"severity":"medium","line_start":100},{"id":"external_commands:SKILL.md:104:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":109,"severity":"medium","line_start":104},{"id":"external_commands:SKILL.md:109:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":115,"severity":"medium","line_start":109},{"id":"external_commands:SKILL.md:115:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `container_protocol_versions` | `list[ProtocolVersionRecord]` | Yes | Protocol versions the agent ","category":"external_commands","line_end":115,"severity":"medium","line_start":115},{"id":"external_commands:SKILL.md:116:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `image` | `str` | Yes | Full container image path (registry/image:tag) |","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":"| `cpu` | `str` | No | CPU allocation (e.g., \"1\", \"2\") |","category":"external_commands","line_end":117,"severity":"medium","line_start":117},{"id":"external_commands:SKILL.md:118:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `memory` | `str` | No | Memory allocation (e.g., \"2Gi\", \"4Gi\") |","category":"external_commands","line_end":118,"severity":"medium","line_start":118},{"id":"external_commands:SKILL.md:119:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `tools` | `list[dict]` | No | Tools available to the agent |","category":"external_commands","line_end":119,"severity":"medium","line_start":119},{"id":"external_commands:SKILL.md:120:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `environment_variables` | `dict[str, str]` | No | Environment variables for the container |","category":"external_commands","line_end":120,"severity":"medium","line_start":120},{"id":"external_commands:SKILL.md:124:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"The `container_protocol_versions` parameter specifies which protocols your agent supports:","category":"external_commands","line_end":126,"severity":"medium","line_start":124},{"id":"external_commands:SKILL.md:126:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":133,"severity":"medium","line_start":126},{"id":"external_commands:SKILL.md:133:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":138,"severity":"medium","line_start":133},{"id":"external_commands:SKILL.md:138:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `AgentProtocol.RESPONSES` | Standard response protocol for agent interactions |","category":"external_commands","line_end":144,"severity":"medium","line_start":138},{"id":"external_commands:SKILL.md:144:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":151,"severity":"medium","line_start":144},{"id":"external_commands:SKILL.md:151:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":165,"severity":"medium","line_start":151},{"id":"external_commands:SKILL.md:165:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":167,"severity":"medium","line_start":165},{"id":"external_commands:SKILL.md:167:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":171,"severity":"medium","line_start":167},{"id":"external_commands:SKILL.md:171:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":180,"severity":"medium","line_start":171},{"id":"external_commands:SKILL.md:180:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":184,"severity":"medium","line_start":180},{"id":"external_commands:SKILL.md:184:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":194,"severity":"medium","line_start":184},{"id":"external_commands:SKILL.md:194:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":200,"severity":"medium","line_start":194},{"id":"external_commands:SKILL.md:200:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":207,"severity":"medium","line_start":200},{"id":"external_commands:SKILL.md:207:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":213,"severity":"medium","line_start":207},{"id":"external_commands:SKILL.md:213:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":263,"severity":"medium","line_start":213},{"id":"external_commands:SKILL.md:263:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":267,"severity":"medium","line_start":263},{"id":"external_commands:SKILL.md:267:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```python","category":"external_commands","line_end":300,"severity":"medium","line_start":267},{"id":"external_commands:SKILL.md:300:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":306,"severity":"medium","line_start":300},{"id":"external_commands:SKILL.md:306:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `ImagePullBackOff` | ACR pull permission denied | Grant `AcrPull` role to project's managed identi","category":"external_commands","line_end":306,"severity":"medium","line_start":306},{"id":"external_commands:SKILL.md:307:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `InvalidContainerImage` | Image not found | Verify image path and tag exist in ACR |","category":"external_commands","line_end":308,"severity":"medium","line_start":307},{"id":"external_commands:SKILL.md:308:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `CapabilityHostNotFound` | No capability host configured | Create account-level capability host |","category":"external_commands","line_end":309,"severity":"medium","line_start":308},{"id":"external_commands:SKILL.md:309:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `ProtocolVersionNotSupported` | Invalid protocol version | Use `AgentProtocol.RESPONSES` with vers","category":"external_commands","line_end":309,"severity":"medium","line_start":309},{"id":"network:SKILL.md:24:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"AZURE_AI_PROJECT_ENDPOINT=https://<resource>.services.ai.azure.com/api/projects/<project>","category":"network","line_end":24,"severity":"low","line_start":24},{"id":"network:SKILL.md:177:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"\"server_url\": \"https://my-mcp-server.example.com\"","category":"network","line_end":177,"severity":"low","line_start":177},{"id":"network:SKILL.md:191:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"\"server_url\": \"https://custom-tool.example.com\"","category":"network","line_end":191,"severity":"low","line_start":191},{"id":"network:SKILL.md:321:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [Azure AI Projects SDK](https://pypi.org/project/azure-ai-projects/)","category":"network","line_end":321,"severity":"low","line_start":321},{"id":"network:SKILL.md:322:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [Hosted Agents Documentation](https://learn.microsoft.com/azure/ai-services/agents/how-to/hosted-a","category":"network","line_end":322,"severity":"low","line_start":322},{"id":"network:SKILL.md:323:hardcoded-url","file":"SKILL.md","pattern":"Hardcoded URL","snippet":"- [Azure Container Registry](https://learn.microsoft.com/azure/container-registry/)","category":"network","line_end":323,"severity":"low","line_start":323},{"id":"env_access:SKILL.md:46:python-environment-access","file":"SKILL.md","pattern":"Python environment access","snippet":"endpoint=os.environ[\"AZURE_AI_PROJECT_ENDPOINT\"],","category":"env_access","line_end":46,"severity":"low","line_start":46},{"id":"env_access:SKILL.md:70:python-environment-access","file":"SKILL.md","pattern":"Python environment access","snippet":"endpoint=os.environ[\"AZURE_AI_PROJECT_ENDPOINT\"],","category":"env_access","line_end":70,"severity":"low","line_start":70},{"id":"env_access:SKILL.md:85:python-environment-access","file":"SKILL.md","pattern":"Python environment access","snippet":"\"AZURE_AI_PROJECT_ENDPOINT\": os.environ[\"AZURE_AI_PROJECT_ENDPOINT\"],","category":"env_access","line_end":85,"severity":"low","line_start":85},{"id":"env_access:SKILL.md:202:python-environment-access","file":"SKILL.md","pattern":"Python environment access","snippet":"\"AZURE_AI_PROJECT_ENDPOINT\": os.environ[\"AZURE_AI_PROJECT_ENDPOINT\"],","category":"env_access","line_end":202,"severity":"low","line_start":202},{"id":"env_access:SKILL.md:227:python-environment-access","file":"SKILL.md","pattern":"Python environment access","snippet":"endpoint=os.environ[\"AZURE_AI_PROJECT_ENDPOINT\"],","category":"env_access","line_end":227,"severity":"low","line_start":227},{"id":"env_access:SKILL.md:248:python-environment-access","file":"SKILL.md","pattern":"Python environment access","snippet":"\"AZURE_AI_PROJECT_ENDPOINT\": os.environ[\"AZURE_AI_PROJECT_ENDPOINT\"],","category":"env_access","line_end":248,"severity":"low","line_start":248},{"id":"env_access:SKILL.md:282:python-environment-access","file":"SKILL.md","pattern":"Python environment access","snippet":"endpoint=os.environ[\"AZURE_AI_PROJECT_ENDPOINT\"],","category":"env_access","line_end":282,"severity":"low","line_start":282},{"id":"blocker:SKILL.md:309:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"| `ProtocolVersionNotSupported` | Invalid protocol version | Use `AgentProtocol.RESPONSES` with vers","category":"blocker","line_end":309,"severity":"low","line_start":309}],"finding_verdicts":[{"id":"scripts:SKILL.md:59:dynamic-import-expression","reason":"Lines 59-63 use a parenthesized Python from-import with fixed Azure SDK symbols, not a dynamic import expression.","verdict":"false_positive","confidence":0.99},{"id":"scripts:SKILL.md:217:dynamic-import-expression","reason":"Lines 217-221 repeat a static Python from-import whose module and imported names are fixed.","verdict":"false_positive","confidence":0.99},{"id":"scripts:SKILL.md:271:dynamic-import-expression","reason":"Lines 271-275 contain a static Python import list for the asynchronous example, with no runtime module selection.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:11:ruby-shell-backtick-execution","reason":"The backticks format a Python class name in Markdown prose and do not invoke Ruby or a shell.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:15:ruby-shell-backtick-execution","reason":"This is the opening delimiter for a documented Bash installation example, not a backtick execution operator.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:17:ruby-shell-backtick-execution","reason":"This line is a closing Markdown code fence and contains no executable backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:19:ruby-shell-backtick-execution","reason":"The backticks format an SDK version in prose and do not execute a command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:23:ruby-shell-backtick-execution","reason":"This is a Markdown fence introducing an environment-variable example, not Ruby or shell backtick execution.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:25:ruby-shell-backtick-execution","reason":"This line closes a Markdown code block and does not execute external code.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:32:ruby-shell-backtick-execution","reason":"The backticks format the Azure AcrPull role name in prerequisite documentation.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:33:ruby-shell-backtick-execution","reason":"The backticks format an Azure capability-host setting in prose without executing it.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:34:ruby-shell-backtick-execution","reason":"The SDK requirement is inline Markdown text, not a shell backtick expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:38:ruby-shell-backtick-execution","reason":"The backticks identify the DefaultAzureCredential class in documentation and do not trigger execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:40:ruby-shell-backtick-execution","reason":"This line is an opening Python Markdown fence, not an external command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:49:ruby-shell-backtick-execution","reason":"This line only closes a Python documentation block.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:55:ruby-shell-backtick-execution","reason":"This is an opening Python code fence for an import example, with no backtick evaluation.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:64:ruby-shell-backtick-execution","reason":"This is a closing Markdown fence and cannot execute a shell command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:68:ruby-shell-backtick-execution","reason":"This line opens a Python SDK example; the Markdown fence is not command execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:92:ruby-shell-backtick-execution","reason":"This line closes the hosted-agent creation example and has no executable backtick semantics.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:96:ruby-shell-backtick-execution","reason":"This is an opening Python fence for listing agent versions.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:100:ruby-shell-backtick-execution","reason":"This is a closing Markdown fence after a Python listing example.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:104:ruby-shell-backtick-execution","reason":"The line is a Python code-fence delimiter, not Ruby or shell backtick execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:109:ruby-shell-backtick-execution","reason":"This line closes a Python documentation example and does not execute a command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:115:ruby-shell-backtick-execution","reason":"Backticks format parameter and type names inside a Markdown table.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:116:ruby-shell-backtick-execution","reason":"Backticks format the image parameter and string type in a documentation table.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:117:ruby-shell-backtick-execution","reason":"Backticks format the CPU parameter and its type, with no command execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:118:ruby-shell-backtick-execution","reason":"Backticks format the memory parameter and its type in Markdown.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:119:ruby-shell-backtick-execution","reason":"Backticks format the tools parameter and Python type notation in a table.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:120:ruby-shell-backtick-execution","reason":"Backticks format an environment_variables parameter and its Python type.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:124:ruby-shell-backtick-execution","reason":"The backticks identify a documented parameter and do not execute it.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:126:ruby-shell-backtick-execution","reason":"This is an opening Python code fence for a protocol configuration example.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:133:ruby-shell-backtick-execution","reason":"This is the closing fence for a Python example, not an execution primitive.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:138:ruby-shell-backtick-execution","reason":"Backticks format an AgentProtocol enum value in a Markdown table.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:144:ruby-shell-backtick-execution","reason":"This line opens a Python resource-allocation example and does not execute backticks.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:151:ruby-shell-backtick-execution","reason":"This line closes a Python documentation block.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:165:ruby-shell-backtick-execution","reason":"This is an opening Python fence for a static tool configuration example.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:167:ruby-shell-backtick-execution","reason":"This line closes a Markdown code example and has no execution semantics.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:171:ruby-shell-backtick-execution","reason":"This is an opening Python fence for an MCP configuration example.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:180:ruby-shell-backtick-execution","reason":"This line closes the MCP configuration example and is not a shell operator.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:184:ruby-shell-backtick-execution","reason":"This is an opening Python fence for a documented tools list.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:194:ruby-shell-backtick-execution","reason":"This line closes a Python configuration example and does not run commands.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:200:ruby-shell-backtick-execution","reason":"This is an opening Python fence for environment-variable mapping documentation.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:207:ruby-shell-backtick-execution","reason":"This line closes a Markdown code block and cannot execute external commands.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:213:ruby-shell-backtick-execution","reason":"This line opens the complete Python SDK example; it is not a Ruby or shell expression.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:263:ruby-shell-backtick-execution","reason":"This is the closing Markdown fence for the complete Python example.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:267:ruby-shell-backtick-execution","reason":"This line opens an asynchronous Python SDK example and does not execute backticks.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:300:ruby-shell-backtick-execution","reason":"This line closes the asynchronous Python example.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:306:ruby-shell-backtick-execution","reason":"Backticks format an error name and Azure role in a troubleshooting table.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:307:ruby-shell-backtick-execution","reason":"Backticks format the InvalidContainerImage error label in Markdown.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:308:ruby-shell-backtick-execution","reason":"Backticks format the CapabilityHostNotFound error label in a table.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:309:ruby-shell-backtick-execution","reason":"Backticks format an error label, enum, and version string in troubleshooting text.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:24:hardcoded-url","reason":"The URL is a parameterized Azure project-endpoint template with resource and project placeholders.","verdict":"false_positive","confidence":0.98},{"id":"network:SKILL.md:177:hardcoded-url","reason":"The MCP address uses the reserved example.com domain and is clearly a placeholder.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:191:hardcoded-url","reason":"The custom-tool address uses the reserved example.com domain and does not identify a real endpoint.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:321:hardcoded-url","reason":"This is a documentation link to the official PyPI package page, not an application network request.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:322:hardcoded-url","reason":"This is a reference link to official Microsoft documentation.","verdict":"false_positive","confidence":0.99},{"id":"network:SKILL.md:323:hardcoded-url","reason":"This is a reference link to official Azure Container Registry documentation.","verdict":"false_positive","confidence":0.99},{"id":"env_access:SKILL.md:46:python-environment-access","reason":"The example reads only the Azure project endpoint as configuration and authenticates through DefaultAzureCredential.","verdict":"false_positive","confidence":0.98},{"id":"env_access:SKILL.md:70:python-environment-access","reason":"The code reads a named project endpoint required to construct the Azure SDK client.","verdict":"false_positive","confidence":0.98},{"id":"env_access:SKILL.md:85:python-environment-access","reason":"The project endpoint is passed to the hosted container as explicit configuration; no credential or secret is accessed.","verdict":"false_positive","confidence":0.96},{"id":"env_access:SKILL.md:202:python-environment-access","reason":"The documented mapping forwards only the Azure project endpoint and does not collect arbitrary environment data.","verdict":"false_positive","confidence":0.96},{"id":"env_access:SKILL.md:227:python-environment-access","reason":"The complete example reads the project endpoint solely to initialize AIProjectClient.","verdict":"false_positive","confidence":0.98},{"id":"env_access:SKILL.md:248:python-environment-access","reason":"The code forwards a named non-secret endpoint to the container and does not enumerate or exfiltrate the environment.","verdict":"false_positive","confidence":0.96},{"id":"env_access:SKILL.md:282:python-environment-access","reason":"The asynchronous example reads only the expected Azure project endpoint for SDK client configuration.","verdict":"false_positive","confidence":0.98},{"id":"blocker:SKILL.md:309:system-reconnaissance","reason":"The line is a static troubleshooting-table entry about a protocol error and performs no system reconnaissance.","verdict":"false_positive","confidence":0.99}],"semantic_findings":[{"title":"Mutable Container Image Tags in Creation Examples","severity":"medium","locations":[{"file":"SKILL.md","line_end":82,"line_start":82},{"file":"SKILL.md","line_end":294,"line_start":294}],"confidence":0.97,"description":"Copy-ready creation examples use the latest tag, so a moved registry tag can change which container code Azure executes.","confidence_reasoning":"Both executable examples explicitly reference latest, although the later best-practice section advises fixed production tags."},{"title":"Cloud Agent Version Deletion Without a Guard","severity":"low","locations":[{"file":"SKILL.md","line_end":108,"line_start":104}],"confidence":0.95,"description":"The example directly deletes an Azure agent version without validating the target or requiring confirmation, creating accidental resource-loss risk.","confidence_reasoning":"The delete_version call is explicit and unguarded, but it targets a named version and is presented as an intentional management operation."}],"subject_marketplace_commit_sha":"ebdfe608f5de2b66ff37ab4af12af8ac4f5e8006","subject_content_hash":"764fffdebaf0df1a8d9a884dea7facd7ea87a9ecf67f573c08a335c16898c453","subject_tree_hash":"cf94ea7bbe86c65909b20bb7b15b2b3b79c350335d68adf3f7c9832d812d306f","subject_plugin_path":"skills/sickn33/agents-v2-py","audit_payload_hash":"5e5af8ee24c7160b9160f6bc6501752b","confirmed_risk_level":"medium","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"ebdfe608f5de2b66ff37ab4af12af8ac4f5e8006","contentHash":"764fffdebaf0df1a8d9a884dea7facd7ea87a9ecf67f573c08a335c16898c453","treeHash":"cf94ea7bbe86c65909b20bb7b15b2b3b79c350335d68adf3f7c9832d812d306f","pluginPath":"skills/sickn33/agents-v2-py","auditPayloadHash":"5e5af8ee24c7160b9160f6bc6501752b"},"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/sickn33-agents-v2-py/audits/5/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"medium","confirmedFindingCount":2,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}