Scan Report
22 /100
contentclaw
Turn papers, podcasts, and case studies into publish-ready social posts, infographics, and diagrams
A legitimate content generation skill with well-scoped permissions, no credential theft, and no hidden malicious behavior; the only notable concern is a documented curl|sh installation pattern for a known tool (uv).
Safe to install
Approve for use. Consider pinning dependency versions in pyproject.toml to reduce supply chain risk. The curl|sh command is a documented installation step and involves a well-known tool (Astral's uv), but users should be aware of the pattern.
Findings 4 items
| Severity | Finding | Location |
|---|---|---|
| Medium | Documented curl|sh installation pattern RCE | SKILL.md:56 |
| Low | Unpinned dependency versions Supply Chain | pyproject.toml:10 |
| Low | False-positive IP address flagged in pre-scan Sensitive Access | scripts/browser.py:17 |
| Info | SKILL.md declares allowed-tools but capability mapping is mostly aligned Doc Mismatch | SKILL.md:34 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Filesystem | READ | WRITE | ✓ Aligned | SKILL.md declares Read/Write/Edit tools but Write usage is scoped to BASE_DIR co… |
| Network | READ | READ | ✓ Aligned | Makes outbound API calls to fal.ai and exa.ai (documented), no inbound listeners |
| Shell | WRITE | WRITE | ✓ Aligned | Uses uv run for subprocess execution; curl|sh documented in SKILL.md line 56 |
| Environment | NONE | READ | ✓ Aligned | Scoped .env loading of FAL_KEY and EXA_API_KEY in env.py, discover_topics.py, ge… |
| Skill Invoke | NONE | READ | ✓ Aligned | Skill invokes itself via recipe execution pattern; no privilege escalation |
| Clipboard | NONE | NONE | — | No clipboard access found |
| Browser | NONE | READ | ✓ Aligned | Playwright headless browser used for extraction; declared in install prerequisit… |
| Database | NONE | NONE | — | No database access |
1 Critical 1 High 20 findings
Critical Dangerous Command 危险 Shell 命令
curl -LsSf https://astral.sh/uv/install.sh | sh SKILL.md:56 High IP Address 硬编码 IP 地址
131.0.0.0 scripts/browser.py:17 Medium External URL 外部 URL
https://docs.astral.sh/uv/ SKILL.md:53 Medium External URL 外部 URL
https://astral.sh/uv/install.sh SKILL.md:56 Medium External URL 外部 URL
https://www.reddit.com/r/HowToAIAgent/comments/1rfo5i7/i_opensourced_my_kindle_publishing_pipeline_with/ recipes/demo-diagram-breakdown.yaml:50 Medium External URL 外部 URL
https://www.linkedin.com/posts/romejgeorgio_the-start-of-machine-to-machine-marketing-activity-7430322995220459520-gU7Q recipes/paper-breakdown-insight.yaml:49 Medium External URL 外部 URL
https://x.com/omarsar0/status/2030403147588604376 recipes/paper-breakdown-insight.yaml:63 Medium External URL 外部 URL
https://x.com/omarsar0/status/2029926242640912429 recipes/paper-breakdown-insight.yaml:64 Medium External URL 外部 URL
https://www.linkedin.com/posts/romejgeorgio_llms-are-curating-reality-x-open-sourcing-activity-7419815247869333504-l-KW recipes/podcast-insight.yaml:51 Medium External URL 外部 URL
https://www.reddit.com/r/gtmengineering/comments/1q805wm/how_were_personalising_cold_emails_at_scale_in/ recipes/reddit-short-case-study.yaml:49 Medium External URL 外部 URL
https://www.reddit.com/r/aiagents/comments/1rctr3d/agents_are_getting_more_powerful_every_day_here/ recipes/what-you-might-have-missed.yaml:52 Medium External URL 外部 URL
https://www.reddit.com/r/aiagents/comments/1r6jo63/its_been_a_big_week_for_agentic_ai_here_are_10/ recipes/what-you-might-have-missed.yaml:53 Medium External URL 外部 URL
https://arxiv.org/abs/2401.04088 tests/test_extract.py:33 Medium External URL 外部 URL
https://arxiv.org/pdf/2401.04088 tests/test_extract.py:34 Medium External URL 外部 URL
https://reddit.com/r/test/comments/abc tests/test_extract.py:35 Medium External URL 外部 URL
https://x.com/user/status/123 tests/test_extract.py:37 Medium External URL 外部 URL
https://twitter.com/user/status/123 tests/test_extract.py:38 Medium External URL 外部 URL
https://youtube.com/watch?v=abc tests/test_extract.py:41 Medium External URL 外部 URL
https://lilianweng.github.io/posts/2024-02-05-human-data-quality/ tests/test_extract.py:55 Medium External URL 外部 URL
https://thisdoesnotexist.example.com tests/test_extract.py:74 File Tree
46 files · 101.9 KB · 2923 lines Markdown 15f · 1241L
Python 8f · 1172L
YAML 22f · 487L
TOML 1f · 23L
├─
▾
agents
│ ├─
breakdown.md
Markdown
│ ├─
caption.md
Markdown
│ ├─
case-study.md
Markdown
│ ├─
diagram.md
Markdown
│ ├─
infographic.md
Markdown
│ ├─
insight-post.md
Markdown
│ ├─
poster.md
Markdown
│ ├─
reddit-human.md
Markdown
│ └─
roundup.md
Markdown
├─
▾
brand-graphs
│ └─
▾
templates
│ ├─
▾
ai-ml
│ │ ├─
audience.yaml
YAML
│ │ ├─
feedback.yaml
YAML
│ │ ├─
identity.yaml
YAML
│ │ ├─
strategy.yaml
YAML
│ │ └─
visual.yaml
YAML
│ ├─
▾
dev-tools
│ │ ├─
audience.yaml
YAML
│ │ ├─
feedback.yaml
YAML
│ │ ├─
identity.yaml
YAML
│ │ ├─
strategy.yaml
YAML
│ │ └─
visual.yaml
YAML
│ └─
▾
saas-b2b
│ ├─
audience.yaml
YAML
│ ├─
feedback.yaml
YAML
│ ├─
identity.yaml
YAML
│ ├─
strategy.yaml
YAML
│ └─
visual.yaml
YAML
├─
▾
recipes
│ ├─
_schema.yaml
YAML
│ ├─
demo-diagram-breakdown.yaml
YAML
│ ├─
news-event-poster.yaml
YAML
│ ├─
paper-breakdown-insight.yaml
YAML
│ ├─
podcast-insight.yaml
YAML
│ ├─
reddit-short-case-study.yaml
YAML
│ └─
what-you-might-have-missed.yaml
YAML
├─
▾
references
│ ├─
brand.md
Markdown
│ ├─
create-recipe.md
Markdown
│ ├─
run-recipe.md
Markdown
│ └─
topics.md
Markdown
├─
▾
scripts
│ ├─
▾
extractors
│ │ └─
extract.py
Python
│ ├─
browser.py
Python
│ ├─
discover_topics.py
Python
│ ├─
env.py
Python
│ └─
generate_image.py
Python
├─
▾
tests
│ ├─
test_extract.py
Python
│ ├─
test_image_gen.py
Python
│ └─
test_recipes.py
Python
├─
pyproject.toml
TOML
├─
SKILL.md
Markdown
└─
TODOS.md
Markdown
Dependencies 6 items
| Package | Version | Source | Known Vulns | Notes |
|---|---|---|---|---|
httpx | >=0.27 | pip | No | Version not pinned |
pymupdf | >=1.24 | pip | No | Version not pinned |
readabilipy | >=0.2 | pip | No | Version not pinned; less widely-used package |
playwright | >=1.49 | pip | No | Version not pinned |
fal-client | >=0.5 | pip | No | Version not pinned |
exa-py | >=1.0 | pip | No | Version not pinned |
Security Positives
✓ Scoped .env loading — only FAL_KEY and EXA_API_KEY are loaded, preventing credential over-exposure
✓ Strong file scoping — SKILL.md explicitly restricts reads/writes to BASE_DIR only
✓ No credential theft — no iteration over os.environ, no access to ~/.ssh, ~/.aws, or other sensitive paths
✓ No exfiltration — extracted content is processed locally; external API calls only send condensed specs and search queries
✓ No obfuscation — no base64-encoded strings, eval(), or dynamic code generation
✓ No persistence mechanisms — no cron jobs, startup hooks, or backdoor installation
✓ No C2 communication — no hardcoded IPs for command-and-control
✓ Legitimate toolchain — uses well-known, reputable services (fal.ai, exa.ai, Playwright, Astral uv)
✓ Transparent data flow — SKILL.md documents all external API calls and browser automation clearly