{"data":{"skill":{"slug":"lllllllama-explore-code","name":"explore-code","icon":"📦","repo":"https://github.com/lllllllama/rigorpilot-skills/tree/main/skills/explore-code/","status":"approved","author":"lllllllama","authorVersion":null,"skillstoreRevision":2},"audit":{"id":"386660bf-0851-423d-8458-6cc2cc2a56bf","skill_id":"b9de74e0-c4ff-45e0-90c2-f28919ee205f","version":7,"content_hash":"v3:656be3040aef5c047555a908cd5c695d22a4a548:aad15b9878fe48819a96d377cfc91bd603a63733161e4c6785c205736c6c00ce:cb6e417f2b81b58e905698ba78b80c469470db51644374367bed583376b4452a:736b696c6c732f6c6c6c6c6c6c6c616d612f6578706c6f72652d636f6465:e5e5b8dadae5c138c8ab2d0bf5955fd0","risk_level":"high","is_blocked":false,"safe_to_publish":false,"analysis_status":"ok","agent_auto_install_policy":"confirmation_required","manual_install_policy":"allowed","summary":"All 25 static alerts are false positives caused by Markdown formatting, ordinary Python syntax, fixed documentation paths, and conservative policy wording. However, a separate high-severity issue exists because scripts/write_outputs.py dynamically executes an unbundled Python module from outside the skill directory.","remediation":[{"issue":"The output wrapper executes Python code from a path three parent directories outside the skill package.","severity":"high","suggestion":"Bundle the writer inside the skill, import it normally, and verify its packaged hash before execution."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"scripts/plan_code_changes.py","line_end":135,"line_start":135},{"file":"scripts/plan_code_changes.py","line_end":147,"line_start":147},{"file":"scripts/plan_code_changes.py","line_end":149,"line_start":149},{"file":"scripts/plan_code_changes.py","line_end":183,"line_start":183},{"file":"scripts/plan_code_changes.py","line_end":258,"line_start":258},{"file":"scripts/plan_code_changes.py","line_end":259,"line_start":259},{"file":"scripts/plan_code_changes.py","line_end":265,"line_start":265},{"file":"scripts/plan_code_changes.py","line_end":271,"line_start":271},{"file":"SKILL.md","line_end":3,"line_start":3},{"file":"SKILL.md","line_end":9,"line_start":9},{"file":"SKILL.md","line_end":12,"line_start":12},{"file":"SKILL.md","line_end":31,"line_start":31},{"file":"SKILL.md","line_end":32,"line_start":32},{"file":"SKILL.md","line_end":39,"line_start":39},{"file":"SKILL.md","line_end":40,"line_start":40},{"file":"SKILL.md","line_end":41,"line_start":41},{"file":"SKILL.md","line_end":42,"line_start":42},{"file":"SKILL.md","line_end":43,"line_start":43},{"file":"SKILL.md","line_end":47,"line_start":47}]},{"factor":"filesystem","evidence":[{"file":"SKILL.md","line_end":12,"line_start":12},{"file":"SKILL.md","line_end":47,"line_start":47}]}],"critical_findings":[],"high_findings":[{"title":"Unbundled External Python Module Execution","locations":[{"file":"scripts/write_outputs.py","line_end":16,"line_start":11}],"confidence":0.98,"description":"The output wrapper resolves a module three parent directories above the skill and executes it through importlib. That external code is outside this audited skill bundle.","review_kind":"security","source_category":"semantic","source_severity":"high","confidence_reasoning":"The code directly constructs an out-of-package path and calls exec_module on it. The external module content is not included in the audited files."}],"medium_findings":[],"low_findings":[],"dangerous_patterns":[],"files_scanned":5,"total_lines":465,"audit_model":"codex","audited_at":"2026-08-08T08:48:23.149+00:00","created_at":"2026-08-08T14:58:12.597972+00:00","static_findings":[{"id":"blocker:references/explore-policy.md:15:system-reconnaissance","file":"references/explore-policy.md","pattern":"System reconnaissance","snippet":"## Avoid","category":"blocker","line_end":17,"severity":"low","line_start":15},{"id":"external_commands:scripts/plan_code_changes.py:135:ruby-shell-backtick-execution","file":"scripts/plan_code_changes.py","pattern":"Ruby/shell backtick execution","snippet":"\"reason\": f\"Maps `{idea_card.get('change_scope', 'candidate change')}` into `{idea_card.get('target_","category":"external_commands","line_end":135,"severity":"medium","line_start":135},{"id":"external_commands:scripts/plan_code_changes.py:147:ruby-shell-backtick-execution","file":"scripts/plan_code_changes.py","pattern":"Ruby/shell backtick execution","snippet":"changes.append(f\"Review config binding in `{path}` for reversible wiring.\")","category":"external_commands","line_end":147,"severity":"medium","line_start":147},{"id":"external_commands:scripts/plan_code_changes.py:149:ruby-shell-backtick-execution","file":"scripts/plan_code_changes.py","pattern":"Ruby/shell backtick execution","snippet":"changes.append(f\"Keep `{axis}` plumbed through existing config or CLI surfaces.\")","category":"external_commands","line_end":149,"severity":"medium","line_start":149},{"id":"external_commands:scripts/plan_code_changes.py:183:ruby-shell-backtick-execution","file":"scripts/plan_code_changes.py","pattern":"Ruby/shell backtick execution","snippet":"\"rationale\": f\"Expose `{idea_card.get('change_scope', 'candidate change')}` through frozen config su","category":"external_commands","line_end":183,"severity":"medium","line_start":183},{"id":"external_commands:scripts/plan_code_changes.py:258:ruby-shell-backtick-execution","file":"scripts/plan_code_changes.py","pattern":"Ruby/shell backtick execution","snippet":"tracks.append(f\"Stay anchored to the `{task_family}` task family while planning exploratory edits.\")","category":"external_commands","line_end":258,"severity":"medium","line_start":258},{"id":"external_commands:scripts/plan_code_changes.py:259:ruby-shell-backtick-execution","file":"scripts/plan_code_changes.py","pattern":"Ruby/shell backtick execution","snippet":"tracks.append(f\"Preserve `{current_research}` as the comparison anchor for all code changes.\")","category":"external_commands","line_end":259,"severity":"medium","line_start":259},{"id":"external_commands:scripts/plan_code_changes.py:265:ruby-shell-backtick-execution","file":"scripts/plan_code_changes.py","pattern":"Ruby/shell backtick execution","snippet":"tracks.append(f\"Review code touchpoints for `{axis}` variation across: {shown_values}.\")","category":"external_commands","line_end":265,"severity":"medium","line_start":265},{"id":"external_commands:scripts/plan_code_changes.py:271:ruby-shell-backtick-execution","file":"scripts/plan_code_changes.py","pattern":"Ruby/shell backtick execution","snippet":"tracks.append(f\"Keep `{spec['base_command']}` aligned with any exploratory code path changes.\")","category":"external_commands","line_end":271,"severity":"medium","line_start":271},{"id":"sensitive:scripts/plan_code_changes.py:148:certificate-key-files","file":"scripts/plan_code_changes.py","pattern":"Certificate/key files","snippet":"for axis in sorted((spec.get(\"variant_axes\") or {}).keys())[:2]:","category":"sensitive","line_end":148,"severity":"high","line_start":148},{"id":"external_commands:SKILL.md:3:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"description: Rigor Improve implementation leaf skill for auditable candidate implementation in deep ","category":"external_commands","line_end":3,"severity":"medium","line_start":3},{"id":"external_commands:SKILL.md:9:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"remains `explore-code` for compatibility.","category":"external_commands","line_end":9,"severity":"medium","line_start":9},{"id":"external_commands:SKILL.md:12:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"`../../references/agent-operating-principles.md`; this skill should guide","category":"external_commands","line_end":12,"severity":"medium","line_start":12},{"id":"external_commands:SKILL.md:31:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- Use `ai-research-explore` instead when the task spans both current_research coordination and explo","category":"external_commands","line_end":31,"severity":"medium","line_start":31},{"id":"external_commands:SKILL.md:32:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- It may hand off execution to `minimal-run-and-audit` or `run-train`.","category":"external_commands","line_end":32,"severity":"medium","line_start":32},{"id":"external_commands:SKILL.md:39:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `explore_outputs/CHANGESET.md`","category":"external_commands","line_end":39,"severity":"medium","line_start":39},{"id":"external_commands:SKILL.md:40:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `explore_outputs/SCIENTIFIC_CHANGELOG.md`","category":"external_commands","line_end":40,"severity":"medium","line_start":40},{"id":"external_commands:SKILL.md:41:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `explore_outputs/COMPARABILITY_REPORT.md`","category":"external_commands","line_end":41,"severity":"medium","line_start":41},{"id":"external_commands:SKILL.md:42:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `explore_outputs/TOP_RUNS.md`","category":"external_commands","line_end":42,"severity":"medium","line_start":42},{"id":"external_commands:SKILL.md:43:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"- `explore_outputs/status.json`","category":"external_commands","line_end":43,"severity":"medium","line_start":43},{"id":"external_commands:SKILL.md:47:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Use `references/explore-policy.md`, `../../references/research-rigor-principles.md`, `scripts/plan_c","category":"external_commands","line_end":47,"severity":"medium","line_start":47},{"id":"filesystem:SKILL.md:12:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"`../../references/agent-operating-principles.md`; this skill should guide","category":"filesystem","line_end":12,"severity":"high","line_start":12},{"id":"filesystem:SKILL.md:47:path-traversal-sequence","file":"SKILL.md","pattern":"Path traversal sequence","snippet":"Use `references/explore-policy.md`, `../../references/research-rigor-principles.md`, `scripts/plan_c","category":"filesystem","line_end":47,"severity":"high","line_start":47},{"id":"blocker:SKILL.md:24:system-reconnaissance","file":"SKILL.md","pattern":"System reconnaissance","snippet":"- When the user did not explicitly authorize exploratory modifications.","category":"blocker","line_end":24,"severity":"low","line_start":24},{"id":"obfuscation:scripts/plan_code_changes.py:1:heuristic-multiple-bracket-chains-6-jsfuck-obfus","file":"scripts/plan_code_changes.py","pattern":"[HEURISTIC] Multiple bracket chains (6) - JSFuck/obfuscation pattern","snippet":"())), [])[, ())[","category":"obfuscation","line_end":1,"severity":"high","line_start":1}],"finding_verdicts":[{"id":"blocker:references/explore-policy.md:15:system-reconnaissance","reason":"The cited lines are an Avoid heading and prohibitions against modifying baselines or making unsupported claims. They request no system discovery or reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:scripts/plan_code_changes.py:135:ruby-shell-backtick-execution","reason":"The backticks are literal Markdown delimiters inside a Python f-string used to describe a proposed target. No command execution API is invoked.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:scripts/plan_code_changes.py:147:ruby-shell-backtick-execution","reason":"This line appends explanatory Markdown to a list. The backticks only format a file path and are never evaluated by a shell.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:scripts/plan_code_changes.py:149:ruby-shell-backtick-execution","reason":"This line produces a planning sentence with Markdown code formatting. It does not spawn a process or pass the interpolated value to a shell.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:scripts/plan_code_changes.py:183:ruby-shell-backtick-execution","reason":"The f-string stores a human-readable rationale containing Markdown backticks. There is no Ruby or shell execution.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:scripts/plan_code_changes.py:258:ruby-shell-backtick-execution","reason":"The task family is inserted into a plain planning string. Backticks are output formatting and have no executable context.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:scripts/plan_code_changes.py:259:ruby-shell-backtick-execution","reason":"The research identifier is formatted as Markdown within an output string. No command runner or shell evaluation is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:scripts/plan_code_changes.py:265:ruby-shell-backtick-execution","reason":"This line builds descriptive output about variant values. It does not execute the string or invoke an external command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:scripts/plan_code_changes.py:271:ruby-shell-backtick-execution","reason":"The base command is quoted in a generated planning sentence but is not executed. The function only returns text tracks.","verdict":"false_positive","confidence":0.98},{"id":"sensitive:scripts/plan_code_changes.py:148:certificate-key-files","reason":"The match is the Python dictionary method keys() on variant_axes. It neither names nor accesses certificate or private-key files.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:3:ruby-shell-backtick-execution","reason":"The backticks occur in YAML description prose and format the explore_outputs directory name. Markdown text cannot execute a shell command.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:9:ruby-shell-backtick-execution","reason":"The backticks format the skill slug in documentation. The line contains no executable command.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:12:ruby-shell-backtick-execution","reason":"The backticks mark a relative documentation path. They are Markdown syntax, not shell substitution.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:31:ruby-shell-backtick-execution","reason":"The line names another skill using inline-code formatting. It does not invoke that skill through an external command.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:32:ruby-shell-backtick-execution","reason":"The line documents possible skill handoffs. Backticks format skill names and do not execute code.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:39:ruby-shell-backtick-execution","reason":"This is a Markdown list entry naming an expected output file. It contains no command or execution instruction.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:40:ruby-shell-backtick-execution","reason":"This is a Markdown list entry naming an expected output file. It contains no command or execution instruction.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:41:ruby-shell-backtick-execution","reason":"This is a Markdown list entry naming an expected output file. It contains no command or execution instruction.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:42:ruby-shell-backtick-execution","reason":"This is a Markdown list entry naming an expected output file. It contains no command or execution instruction.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:43:ruby-shell-backtick-execution","reason":"This is a Markdown list entry naming an expected output file. It contains no command or execution instruction.","verdict":"false_positive","confidence":1},{"id":"external_commands:SKILL.md:47:ruby-shell-backtick-execution","reason":"The backticks format reference and script paths in documentation. The line contains no shell or process invocation.","verdict":"false_positive","confidence":1},{"id":"filesystem:SKILL.md:12:path-traversal-sequence","reason":"This is a fixed link to a shared operating-principles document in the source repository. It contains no user-controlled path or executable file access.","verdict":"false_positive","confidence":0.93},{"id":"filesystem:SKILL.md:47:path-traversal-sequence","reason":"The fixed relative path names a shared research-rigor document. It is documentation, not a runtime path built from untrusted input.","verdict":"false_positive","confidence":0.93},{"id":"blocker:SKILL.md:24:system-reconnaissance","reason":"The line prohibits exploratory changes without explicit user authorization. It neither requests nor performs system reconnaissance.","verdict":"false_positive","confidence":1},{"id":"obfuscation:scripts/plan_code_changes.py:1:heuristic-multiple-bracket-chains-6-jsfuck-obfus","reason":"The file is readable Python with ordinary comprehensions, indexing, and dictionary access. No encoded payload, bracket-chain expression, or JavaScript execution exists.","verdict":"false_positive","confidence":1}],"semantic_findings":[{"title":"Unbundled External Python Module Execution","severity":"high","locations":[{"file":"scripts/write_outputs.py","line_end":16,"line_start":11}],"confidence":0.98,"description":"The output wrapper resolves a module three parent directories above the skill and executes it through importlib. That external code is outside this audited skill bundle.","confidence_reasoning":"The code directly constructs an out-of-package path and calls exec_module on it. The external module content is not included in the audited files."}],"subject_marketplace_commit_sha":"656be3040aef5c047555a908cd5c695d22a4a548","subject_content_hash":"aad15b9878fe48819a96d377cfc91bd603a63733161e4c6785c205736c6c00ce","subject_tree_hash":"cb6e417f2b81b58e905698ba78b80c469470db51644374367bed583376b4452a","subject_plugin_path":"skills/lllllllama/explore-code","audit_payload_hash":"e5e5b8dadae5c138c8ab2d0bf5955fd0","confirmed_risk_level":"high","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"656be3040aef5c047555a908cd5c695d22a4a548","contentHash":"aad15b9878fe48819a96d377cfc91bd603a63733161e4c6785c205736c6c00ce","treeHash":"cb6e417f2b81b58e905698ba78b80c469470db51644374367bed583376b4452a","pluginPath":"skills/lllllllama/explore-code","auditPayloadHash":"e5e5b8dadae5c138c8ab2d0bf5955fd0"},"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/lllllllama-explore-code/audits/7/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"high","confirmedFindingCount":1,"capabilityReviewCount":0,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"confirmation_required","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}