Security Scan Report
**Generated:** 2026-04-20 10:43 UTC **Skills scanned:** 134 **Total findings:** 821 **Critical:** 68 | **High:** 57 | **Safe skills:** 93/134
Overview
Security Scan Report
Generated: 2026-04-20 10:43 UTC
Skills scanned: 134
Total findings: 821
Critical: 68 | High: 57 | Safe skills: 93/134
Summary
| Skill | Severity | Findings | Safe | Duration |
|---|---|---|---|---|
| citation-management | 🔴 CRITICAL | 13 | ❌ | 28.1s |
| clinical-decision-support | 🔴 CRITICAL | 13 | ❌ | 64.0s |
| clinical-reports | 🔴 CRITICAL | 13 | ❌ | 59.9s |
| cobrapy | 🔴 CRITICAL | 4 | ❌ | 35.5s |
| hypothesis-generation | 🔴 CRITICAL | 11 | ❌ | 36.1s |
| infographics | 🔴 CRITICAL | 10 | ❌ | 33.4s |
| latex-posters | 🔴 CRITICAL | 11 | ❌ | 34.9s |
| literature-review | 🔴 CRITICAL | 12 | ❌ | 49.8s |
| markitdown | 🔴 CRITICAL | 11 | ❌ | 40.8s |
| peer-review | 🔴 CRITICAL | 11 | ❌ | 42.7s |
| pptx-posters | 🔴 CRITICAL | 10 | ❌ | 32.3s |
| research-grants | 🔴 CRITICAL | 11 | ❌ | 38.5s |
| research-lookup | 🔴 CRITICAL | 16 | ❌ | 44.3s |
| scholar-evaluation | 🔴 CRITICAL | 10 | ❌ | 37.0s |
| scientific-critical-thinking | 🔴 CRITICAL | 10 | ❌ | 41.4s |
| scientific-schematics | 🔴 CRITICAL | 10 | ❌ | 34.4s |
| scientific-slides | 🔴 CRITICAL | 17 | ❌ | 51.3s |
| scientific-writing | 🔴 CRITICAL | 10 | ❌ | 32.5s |
| seaborn | 🔴 CRITICAL | 4 | ❌ | 32.6s |
| shap | 🔴 CRITICAL | 5 | ❌ | 39.7s |
| treatment-plans | 🔴 CRITICAL | 12 | ❌ | 49.6s |
| umap-learn | 🔴 CRITICAL | 5 | ❌ | 35.6s |
| venue-templates | 🔴 CRITICAL | 11 | ❌ | 46.2s |
| consciousness-council | 🟠 HIGH | 5 | ❌ | 34.4s |
| dask | 🟠 HIGH | 4 | ❌ | 25.1s |
| dhdna-profiler | 🟠 HIGH | 5 | ❌ | 36.2s |
| esm | 🟠 HIGH | 4 | ❌ | 18.6s |
| geomaster | 🟠 HIGH | 8 | ❌ | 38.1s |
| modal | 🟠 HIGH | 9 | ❌ | 29.2s |
| parallel-web | 🟠 HIGH | 7 | ❌ | 42.3s |
| pathml | 🟠 HIGH | 7 | ❌ | 18.8s |
| polars | 🟠 HIGH | 4 | ❌ | 22.2s |
| pytorch-lightning | 🟠 HIGH | 4 | ❌ | 21.7s |
| qutip | 🟠 HIGH | 4 | ❌ | 16.8s |
| scikit-bio | 🟠 HIGH | 4 | ❌ | 31.2s |
| scvi-tools | 🟠 HIGH | 5 | ❌ | 28.3s |
| sympy | 🟠 HIGH | 4 | ❌ | 25.5s |
| torch-geometric | 🟠 HIGH | 7 | ❌ | 28.7s |
| torchdrug | 🟠 HIGH | 4 | ❌ | 20.1s |
| transformers | 🟠 HIGH | 5 | ❌ | 27.1s |
| zarr-python | 🟠 HIGH | 4 | ❌ | 34.9s |
| dnanexus-integration | 🟡 MEDIUM | 4 | ✅ | 31.2s |
| docx | 🟡 MEDIUM | 5 | ✅ | 43.6s |
| ginkgo-cloud-lab | 🟡 MEDIUM | 4 | ✅ | 21.8s |
| imaging-data-commons | 🟡 MEDIUM | 4 | ✅ | 17.3s |
| labarchive-integration | 🟡 MEDIUM | 7 | ✅ | 29.7s |
| open-notebook | 🟡 MEDIUM | 20 | ✅ | 26.7s |
| pennylane | 🟡 MEDIUM | 5 | ✅ | 25.0s |
| phylogenetics | 🟡 MEDIUM | 11 | ✅ | 30.9s |
| primekg | 🟡 MEDIUM | 5 | ✅ | 30.8s |
| protocolsio-integration | 🟡 MEDIUM | 8 | ✅ | 38.2s |
| pyhealth | 🟡 MEDIUM | 4 | ✅ | 27.3s |
| pymatgen | 🟡 MEDIUM | 5 | ✅ | 27.5s |
| rowan | 🟡 MEDIUM | 5 | ✅ | 29.3s |
| vaex | 🟡 MEDIUM | 3 | ✅ | 18.4s |
| what-if-oracle | 🟡 MEDIUM | 4 | ✅ | 35.3s |
| adaptyv | 🔵 LOW | 4 | ✅ | 27.9s |
| aeon | 🔵 LOW | 4 | ✅ | 23.5s |
| anndata | 🔵 LOW | 3 | ✅ | 19.0s |
| arboreto | 🔵 LOW | 1 | ✅ | 11.0s |
| astropy | 🔵 LOW | 5 | ✅ | 29.9s |
| benchling-integration | 🔵 LOW | 4 | ✅ | 20.1s |
| bgpt-paper-search | 🔵 LOW | 4 | ✅ | 21.4s |
| biopython | 🔵 LOW | 4 | ✅ | 18.2s |
| cellxgene-census | 🔵 LOW | 4 | ✅ | 22.8s |
| database-lookup | 🔵 LOW | 4 | ✅ | 31.7s |
| datamol | 🔵 LOW | 4 | ✅ | 20.6s |
| deeptools | 🔵 LOW | 1 | ✅ | 15.3s |
| depmap | 🔵 LOW | 3 | ✅ | 24.6s |
| diffdock | 🔵 LOW | 2 | ✅ | 17.7s |
| etetoolkit | 🔵 LOW | 3 | ✅ | 23.7s |
| exploratory-data-analysis | 🔵 LOW | 4 | ✅ | 28.0s |
| flowio | 🔵 LOW | 2 | ✅ | 16.9s |
| fluidsim | 🔵 LOW | 3 | ✅ | 21.0s |
| generate-image | 🔵 LOW | 4 | ✅ | 22.8s |
| geniml | 🔵 LOW | 3 | ✅ | 19.0s |
| geopandas | 🔵 LOW | 4 | ✅ | 21.7s |
| get-available-resources | 🔵 LOW | 4 | ✅ | 21.3s |
| gget | 🔵 LOW | 4 | ✅ | 24.0s |
| glycoengineering | 🔵 LOW | 3 | ✅ | 22.2s |
| gtars | 🔵 LOW | 5 | ✅ | 29.3s |
| histolab | 🔵 LOW | 3 | ✅ | 25.8s |
| hypogenic | 🔵 LOW | 4 | ✅ | 23.6s |
| iso-13485-certification | 🔵 LOW | 3 | ✅ | 22.0s |
| lamindb | 🔵 LOW | 3 | ✅ | 21.4s |
| latchbio-integration | 🔵 LOW | 3 | ✅ | 20.8s |
| market-research-reports | 🔵 LOW | 4 | ✅ | 33.5s |
| matchms | 🔵 LOW | 1 | ✅ | 12.6s |
| matlab | 🔵 LOW | 3 | ✅ | 22.4s |
| matplotlib | 🔵 LOW | 1 | ✅ | 15.9s |
| medchem | 🔵 LOW | 1 | ✅ | 15.9s |
| molecular-dynamics | 🔵 LOW | 3 | ✅ | 18.8s |
| molfeat | 🔵 LOW | 3 | ✅ | 17.1s |
| networkx | 🔵 LOW | 4 | ✅ | 28.8s |
| neurokit2 | 🔵 LOW | 3 | ✅ | 27.9s |
| neuropixels-analysis | 🔵 LOW | 4 | ✅ | 30.7s |
| omero-integration | 🔵 LOW | 4 | ✅ | 25.0s |
| opentrons-integration | 🔵 LOW | 4 | ✅ | 25.2s |
| optimize-for-gpu | 🔵 LOW | 3 | ✅ | 22.8s |
| paper-lookup | 🔵 LOW | 5 | ✅ | 33.6s |
| paperzilla | 🔵 LOW | 3 | ✅ | 15.6s |
| 🔵 LOW | 5 | ✅ | 32.3s | |
| polars-bio | 🔵 LOW | 3 | ✅ | 19.4s |
| pptx | 🔵 LOW | 4 | ✅ | 29.1s |
| pufferlib | 🔵 LOW | 4 | ✅ | 24.6s |
| pydeseq2 | 🔵 LOW | 3 | ✅ | 19.9s |
| pydicom | 🔵 LOW | 4 | ✅ | 31.1s |
| pylabrobot | 🔵 LOW | 2 | ✅ | 20.2s |
| pymc | 🔵 LOW | 2 | ✅ | 17.9s |
| pymoo | 🔵 LOW | 1 | ✅ | 14.0s |
| pyopenms | 🔵 LOW | 2 | ✅ | 13.2s |
| pysam | 🔵 LOW | 1 | ✅ | 10.9s |
| pytdc | 🔵 LOW | 4 | ✅ | 35.1s |
| pyzotero | 🔵 LOW | 3 | ✅ | 21.1s |
| qiskit | 🔵 LOW | 3 | ✅ | 19.4s |
| rdkit | 🔵 LOW | 3 | ✅ | 21.0s |
| scanpy | 🔵 LOW | 2 | ✅ | 13.1s |
| scientific-brainstorming | 🔵 LOW | 1 | ✅ | 10.9s |
| scikit-survival | 🔵 LOW | 3 | ✅ | 20.7s |
| scvelo | 🔵 LOW | 4 | ✅ | 23.6s |
| simpy | 🔵 LOW | 1 | ✅ | 14.6s |
| stable-baselines3 | 🔵 LOW | 2 | ✅ | 14.2s |
| statistical-analysis | 🔵 LOW | 1 | ✅ | 14.2s |
| tiledbvcf | 🔵 LOW | 3 | ✅ | 19.7s |
| timesfm-forecasting | 🔵 LOW | 3 | ✅ | 32.9s |
| usfiscaldata | 🔵 LOW | 3 | ✅ | 20.2s |
| xlsx | 🔵 LOW | 4 | ✅ | 37.2s |
| statsmodels | ⚪ INFO | 1 | ✅ | 8.3s |
| bioservices | 🟢 SAFE | 0 | ✅ | 14.4s |
| cirq | 🟢 SAFE | 0 | ✅ | 8.9s |
| deepchem | 🟢 SAFE | 0 | ✅ | 11.1s |
| markdown-mermaid-writing | 🟢 SAFE | 0 | ✅ | 9.2s |
| scientific-visualization | 🟢 SAFE | 0 | ✅ | 11.9s |
| scikit-learn | 🟢 SAFE | 0 | ✅ | 5.1s |
Detailed Findings
citation-management — 🔴 CRITICAL
-
🔴 CRITICAL
BEHAVIOR_CROSSFILE_ENV_VAR_EXFILTRATION— Cross-file env var exfiltration: 6 filesEnvironment variable access with network calls in scripts/extract_metadata.py, scripts/generate_schematic_ai.py, scripts/generate_schematic.py, scripts/search_pubmed.py Remediation: Review data flow across files: scripts/generate_schematic_ai.py, scripts/search_pubmed.py, scripts/generate_schematic.py, scripts/doi_to_bibtex.py, scripts/extract_metadata.py, scripts/validate_citations.py
-
🔴 CRITICAL
BEHAVIOR_CROSSFILE_EXFILTRATION_CHAIN— Cross-file exfiltration chain: 6 filesMulti-file exfiltration chain detected: scripts/extract_metadata.py, scripts/generate_schematic_ai.py, scripts/generate_schematic.py, scripts/search_pubmed.py collect data → scripts/generate_schematic_ai.py → scripts/doi_to_bibtex.py, scripts/extract_metadata.py, scripts/validate_citations.py, scripts/generate_schematic_ai.py, scripts/search_pubmed.py transmit to network Remediation: Review data flow across files: scripts/generate_schematic_ai.py, scripts/search_pubmed.py, scripts/generate_schematic.py, scripts/doi_to_bibtex.py, scripts/extract_metadata.py, scripts/validate_citations.py
-
🔵 LOW
LLM_SKILL_DISCOVERY_ABUSE— Cross-Skill Activation Promotion (scientific-schematics Skill)The SKILL.md instructions contain a section that actively promotes and triggers the use of another skill ('scientific-schematics') by instructing the agent to 'always consider adding scientific diagrams' and stating 'Scientific schematics should be generated by default'. This creates an over-broad activation pattern that may cause the agent to invoke additional skills beyond the user's intent when using citation management. File:
SKILL.mdRemediation: Remove or make optional the automatic cross-skill invocation. The citation management skill should focus on its stated purpose (citation management) and not automatically trigger other skills without explicit user request. -
🔵 LOW
LLM_SUPPLY_CHAIN_ATTACK— Unpinned Python Package DependenciesThe SKILL.md instructions recommend installing Python packages without version pins (e.g., 'pip install requests', 'pip install scholarly', 'pip install biopython'). Unpinned dependencies are vulnerable to supply chain attacks where a malicious version of a package could be installed, potentially compromising the skill's behavior. File:
SKILL.mdRemediation: Pin all dependencies to specific versions (e.g., 'requests==2.31.0') and provide a requirements.txt file with hashed dependencies. Use 'pip install --require-hashes' for additional security. -
🔴 CRITICAL
BEHAVIOR_ENV_VAR_EXFILTRATION— Environment variable access with network calls detectedScript accesses environment variables and makes network calls in scientific-skills/citation-management/scripts/extract_metadata.py File:
scientific-skills/citation-management/scripts/extract_metadata.pyRemediation: Remove environment variable harvesting or network transmission -
🟡 MEDIUM
BEHAVIOR_ENV_VAR_HARVESTING— Environment variable harvesting detectedScript iterates through environment variables in scientific-skills/citation-management/scripts/extract_metadata.py File:
scientific-skills/citation-management/scripts/extract_metadata.pyRemediation: Remove environment variable collection unless explicitly required and documented -
🟡 MEDIUM
BEHAVIOR_ENV_VAR_HARVESTING— Environment variable harvesting detectedScript iterates through environment variables in scientific-skills/citation-management/scripts/generate_schematic.py File:
scientific-skills/citation-management/scripts/generate_schematic.pyRemediation: Remove environment variable collection unless explicitly required and documented -
🔴 CRITICAL
BEHAVIOR_ENV_VAR_EXFILTRATION— Environment variable access with network calls detectedScript accesses environment variables and makes network calls in scientific-skills/citation-management/scripts/generate_schematic_ai.py File:
scientific-skills/citation-management/scripts/generate_schematic_ai.pyRemediation: Remove environment variable harvesting or network transmission -
🟡 MEDIUM
BEHAVIOR_ENV_VAR_HARVESTING— Environment variable harvesting detectedScript iterates through environment variables in scientific-skills/citation-management/scripts/generate_schematic_ai.py File:
scientific-skills/citation-management/scripts/generate_schematic_ai.pyRemediation: Remove environment variable collection unless explicitly required and documented -
🔴 CRITICAL
BEHAVIOR_ENV_VAR_EXFILTRATION— Environment variable access with network calls detectedScript accesses environment variables and makes network calls in scientific-skills/citation-management/scripts/search_pubmed.py File:
scientific-skills/citation-management/scripts/search_pubmed.pyRemediation: Remove environment variable harvesting or network transmission -
🟡 MEDIUM
BEHAVIOR_ENV_VAR_HARVESTING— Environment variable harvesting detectedScript iterates through environment variables in scientific-skills/citation-management/scripts/search_pubmed.py File:
scientific-skills/citation-management/scripts/search_pubmed.pyRemediation: Remove environment variable collection unless explicitly required and documented -
🟡 MEDIUM
LLM_DATA_EXFILTRATION— Environment Variable Access Combined with External Network CallsMultiple scripts access environment variables (NCBI_API_KEY, NCBI_EMAIL, OPENROUTER_API_KEY) and make outbound network requests. While these appear to be legitimate API keys for the stated purpose (PubMed, OpenRouter), the pattern of reading environment variables and sending them in HTTP requests represents a potential data exposure risk if the skill is used in environments where these variables contain sensitive credentials beyond the intended scope. The generate_schematic_ai.py script in particular reads OPENROUTER_API_KEY and sends it as a Bearer token to an external API. File:
scripts/generate_schematic_ai.pyRemediation: This is largely expected behavior for API-based tools. However, ensure that environment variable names are clearly documented and scoped. Consider validating that API keys are only used for their intended endpoints and not logged or transmitted elsewhere. -
🔵 LOW
LLM_DATA_EXFILTRATION— API Key Loaded from .env File Without Explicit User ConsentThe generate_schematic_ai.py script attempts to load API keys from .env files in the current working directory or script directory using python-dotenv. This could inadvertently expose API keys stored in .env files that the user may not have intended to share with this skill. File:
scripts/generate_schematic_ai.py:28Remediation: Document clearly that the skill reads .env files. Consider requiring explicit user confirmation before loading credentials from .env files, or restrict loading to only the skill's own directory.
clinical-decision-support — 🔴 CRITICAL
-
🔴 CRITICAL
BEHAVIOR_CROSSFILE_ENV_VAR_EXFILTRATION— Cross-file env var exfiltration: 2 filesEnvironment variable access with network calls in scripts/generate_schematic_ai.py, scripts/generate_schematic.py Remediation: Review data flow across files: scripts/generate_schematic_ai.py, scripts/generate_schematic.py
-
🔴 CRITICAL
BEHAVIOR_CROSSFILE_EXFILTRATION_CHAIN— Cross-file exfiltration chain: 2 filesMulti-file exfiltration chain detected: scripts/generate_schematic_ai.py, scripts/generate_schematic.py collect data → scripts/generate_schematic_ai.py → scripts/generate_schematic_ai.py transmit to network Remediation: Review data flow across files: scripts/generate_schematic_ai.py, scripts/generate_schematic.py
-
🟡 MEDIUM
LLM_UNAUTHORIZED_TOOL_USE— Mandatory External AI Service Dependency with No Fallback or ValidationThe SKILL.md instructions mandate that every clinical decision support document MUST include AI-generated figures using the scientific-schematics skill, which calls the external OpenRouter API. This creates a hard dependency on an external third-party service for document generation. If the external service is compromised, unavailable, or returns malicious content, the skill's output integrity is affected. The mandatory nature of this requirement (marked with ⚠️ MANDATORY) means users cannot opt out. File:
SKILL.mdRemediation: Make external AI figure generation optional rather than mandatory. Provide a fallback path that generates figures using local tools (e.g., matplotlib, TikZ) without requiring external API calls. Clearly document the external dependency and allow users to disable it. -
🔵 LOW
LLM_SKILL_DISCOVERY_ABUSE— Over-Broad Capability Claims and Mandatory Cross-Skill ActivationThe SKILL.md description makes very broad capability c