{"data":{"skill":{"slug":"agentkitco-agents-md-audit","name":"agents-md-audit","icon":"📦","repo":"https://github.com/agentkitco/agentkit-dev-skills/tree/3de707c7875147b65ddff504d86b0d0dbf713fa7/skills/agents-md-audit","status":"approved","author":"agentkitco","authorVersion":"1.0","skillstoreRevision":1},"audit":{"id":"2a41e4c4-7c44-4b96-acc0-f48179baa189","skill_id":"0232eadf-7bdf-4e2a-aec9-cacc93f2ae9d","version":1,"content_hash":"v3:743429f75b17204d47661a86b577a575ad67517f:43e4da8c75b16ea459422c9a6bc6043a392345bebbbc844d546624b72a228e61:ab422e508aa5eeb9bbd3529d3e98adea0f898256962146e11ec352097ebdcf7e:736b696c6c732f6167656e746b6974636f2f6167656e74732d6d642d6175646974:94917bd879a35193b20a3950be7fa6f3","risk_level":"safe","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"All 13 static findings are false positives involving Markdown, Python strings, comments, detection patterns, or dictionary operations. The checker reads local files without executing extracted commands or sending data over a network. The workflow permits safe local checks, excludes deployment and destructive commands, and requires approval before editing; no additional semantic security findings were identified.","remediation":[],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"scripts/audit_instructions.py","line_end":26,"line_start":26},{"file":"scripts/audit_instructions.py","line_end":27,"line_start":27},{"file":"scripts/audit_instructions.py","line_end":29,"line_start":29},{"file":"scripts/audit_instructions.py","line_end":147,"line_start":98},{"file":"scripts/audit_instructions.py","line_end":153,"line_start":147},{"file":"SKILL.md","line_end":16,"line_start":16},{"file":"SKILL.md","line_end":18,"line_start":18},{"file":"SKILL.md","line_end":19,"line_start":19},{"file":"SKILL.md","line_end":20,"line_start":20},{"file":"SKILL.md","line_end":49,"line_start":31}]}],"critical_findings":[],"high_findings":[],"medium_findings":[],"low_findings":[],"dangerous_patterns":[],"files_scanned":2,"total_lines":250,"audit_model":"codex","audited_at":"2026-10-17T19:40:13.502+00:00","created_at":"2026-10-17T20:05:25.55489+00:00","static_findings":[{"id":"external_commands:scripts/audit_instructions.py:26:ruby-shell-backtick-execution","file":"scripts/audit_instructions.py","pattern":"Ruby/shell backtick execution","snippet":"PATH_RE = re.compile(r\"`([A-Za-z0-9_./@-]+(?:/[A-Za-z0-9_.@*-]+)+|[A-Za-z0-9_.-]+\\.%s)`\" % PATH_EXT)","category":"external_commands","line_end":26,"severity":"medium","line_start":26},{"id":"external_commands:scripts/audit_instructions.py:27:ruby-shell-backtick-execution","file":"scripts/audit_instructions.py","pattern":"Ruby/shell backtick execution","snippet":"CMD_RE = re.compile(r\"`((?:npm|pnpm|yarn|bun)\\s+(?:run\\s+)?([A-Za-z0-9:_-]+)[^`]*|make\\s+([A-Za-z0-9","category":"external_commands","line_end":27,"severity":"medium","line_start":27},{"id":"external_commands:scripts/audit_instructions.py:29:ruby-shell-backtick-execution","file":"scripts/audit_instructions.py","pattern":"Ruby/shell backtick execution","snippet":"# `npm test`, `npm start`, `npm stop`, `npm restart` run package.json scripts without \"run\".","category":"external_commands","line_end":29,"severity":"medium","line_start":29},{"id":"external_commands:scripts/audit_instructions.py:98:ruby-shell-backtick-execution","file":"scripts/audit_instructions.py","pattern":"Ruby/shell backtick execution","snippet":"if line.startswith(\"```\"):","category":"external_commands","line_end":147,"severity":"medium","line_start":98},{"id":"external_commands:scripts/audit_instructions.py:147:ruby-shell-backtick-execution","file":"scripts/audit_instructions.py","pattern":"Ruby/shell backtick execution","snippet":"findings.append(dict(level=\"check\", line=i, msg=\"no package.json script named '%s'; `npm %s` only wo","category":"external_commands","line_end":153,"severity":"medium","line_start":147},{"id":"sensitive:scripts/audit_instructions.py:90:certificate-key-files","file":"scripts/audit_instructions.py","pattern":"Certificate/key files","snippet":"scripts = set((pkg or {}).get(\"scripts\", {}).keys()) if pkg else None","category":"sensitive","line_end":90,"severity":"high","line_start":90},{"id":"sensitive:scripts/audit_instructions.py:22:crypto-seed-private-key-mention","file":"scripts/audit_instructions.py","pattern":"Crypto seed/private key mention","snippet":"(r\"-----BEGIN [A-Z ]*PRIVATE KEY-----\", \"private key block\"),","category":"sensitive","line_end":22,"severity":"high","line_start":22},{"id":"external_commands:SKILL.md:16:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"1. **Find the files.** Look for `AGENTS.md`, `CLAUDE.md`, `CLAUDE.local.md`, `.claude/rules/*.md`, `","category":"external_commands","line_end":16,"severity":"medium","line_start":16},{"id":"external_commands:SKILL.md:18:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"`python3 scripts/audit_instructions.py <file> [<file> ...]`","category":"external_commands","line_end":18,"severity":"medium","line_start":18},{"id":"external_commands:SKILL.md:19:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"(The path is relative to this skill's folder; use the full path to the installed skill.) It reports ","category":"external_commands","line_end":19,"severity":"medium","line_start":19},{"id":"external_commands:SKILL.md:20:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"3. **Check each command yourself.** For every command in the file, confirm it exists (script in `pac","category":"external_commands","line_end":20,"severity":"medium","line_start":20},{"id":"external_commands:SKILL.md:31:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":49,"severity":"medium","line_start":31},{"id":"blocker:SKILL.md:45:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"- <command>: <why you did not run it>","category":"blocker","line_end":45,"severity":"low","line_start":45}],"finding_verdicts":[{"id":"external_commands:scripts/audit_instructions.py:26:ruby-shell-backtick-execution","reason":"The backticks delimit Markdown paths inside a Python regular expression. PATH_RE locates text for filesystem existence checks and never executes it.","verdict":"false_positive","confidence":1},{"id":"external_commands:scripts/audit_instructions.py:27:ruby-shell-backtick-execution","reason":"CMD_RE matches inline command text in a Python raw string. Matches are compared with locally parsed script names and targets, not executed.","verdict":"false_positive","confidence":1},{"id":"external_commands:scripts/audit_instructions.py:29:ruby-shell-backtick-execution","reason":"This Python comment describes npm script aliases using Markdown backticks. Comments do not execute commands.","verdict":"false_positive","confidence":1},{"id":"external_commands:scripts/audit_instructions.py:98:ruby-shell-backtick-execution","reason":"The triple backticks are a literal string checked with startswith to recognize Markdown fences. The surrounding code collects findings without shell execution.","verdict":"false_positive","confidence":1},{"id":"external_commands:scripts/audit_instructions.py:147:ruby-shell-backtick-execution","reason":"The backtick-wrapped npm and make examples appear in diagnostic message strings. They are appended to findings and printed, never passed to an execution API.","verdict":"false_positive","confidence":1},{"id":"sensitive:scripts/audit_instructions.py:90:certificate-key-files","reason":"The keys() call retrieves script names from the parsed package.json dictionary. It does not read certificate files or cryptographic keys.","verdict":"false_positive","confidence":1},{"id":"sensitive:scripts/audit_instructions.py:22:crypto-seed-private-key-mention","reason":"The private-key header is a regular expression used to detect possible secrets in the supplied instruction file. Findings report the category without reproducing matched values.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:16:ruby-shell-backtick-execution","reason":"Backticks format the instruction filenames and discovery patterns. This step asks the agent to locate relevant documentation, not execute those strings.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:18:ruby-shell-backtick-execution","reason":"This documents the intended invocation of the bundled local Python checker. The reviewed checker reads files and reports findings without executing extracted commands.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:19:ruby-shell-backtick-execution","reason":"The backticks format the literal [BRACKET] placeholder checked by the script. The surrounding prose explains checker output and a manual fallback.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:20:ruby-shell-backtick-execution","reason":"Backticks format repository metadata filenames, not shell substitution. The workflow limits execution to safe checks and explicitly excludes deploy, migrate, and delete commands.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:31:ruby-shell-backtick-execution","reason":"The triple backticks open a fenced Markdown report template. The enclosed text contains headings and placeholders, not executable shell instructions.","verdict":"false_positive","confidence":1},{"id":"blocker:SKILL.md:45:system-reconnaissance","reason":"This placeholder belongs to the Not verified report section and records why a command was not run. No reconnaissance operation is requested.","verdict":"false_positive","confidence":1}],"semantic_findings":[],"subject_marketplace_commit_sha":"743429f75b17204d47661a86b577a575ad67517f","subject_content_hash":"43e4da8c75b16ea459422c9a6bc6043a392345bebbbc844d546624b72a228e61","subject_tree_hash":"ab422e508aa5eeb9bbd3529d3e98adea0f898256962146e11ec352097ebdcf7e","subject_plugin_path":"skills/agentkitco/agents-md-audit","audit_payload_hash":"94917bd879a35193b20a3950be7fa6f3","confirmed_risk_level":"safe","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"743429f75b17204d47661a86b577a575ad67517f","contentHash":"43e4da8c75b16ea459422c9a6bc6043a392345bebbbc844d546624b72a228e61","treeHash":"ab422e508aa5eeb9bbd3529d3e98adea0f898256962146e11ec352097ebdcf7e","pluginPath":"skills/agentkitco/agents-md-audit","auditPayloadHash":"94917bd879a35193b20a3950be7fa6f3"},"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/agentkitco-agents-md-audit/audits/1/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}}