T08 · Insecure Dependencies
- Location
SKILL.md:196- Finding
Unpinned Global npm Dependency Installation
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill mostly matches its web-search purpose, but it gives agents broad setup, cookie, posting, and mutable remote-instruction authority without enough safeguards.
Install only if you are comfortable with a skill that can send searches and URLs to external services, use platform tools, handle cookies, and potentially post through authenticated accounts. Before use, require explicit confirmation for posting, cookie import/browser-cookie extraction, package installation, Docker or proxy setup, and any fetched remote setup instructions.
SKILL.md:196Unpinned Global npm Dependency Installation
SKILL.md:199Mutable Remote Setup Guide Can Introduce Unreviewed Execution Instructions
The trigger list includes broad everyday phrases such as 'search online', 'research', and '帮我查', which can cause the skill to activate for routine requests that do not clearly require this powerful internet-enabled tool. In context, unintended invocation is more dangerous because the skill can perform external web requests and platform interactions, increasing the chance of unnecessary data exposure or unexpected actions.
The recommendation to use '--cookies-from-browser chrome' instructs tooling to extract browser cookies, which are highly sensitive session credentials. In this context, the capability is presented as a convenience workaround, but it materially raises the risk of credential theft, overcollection of unrelated cookies, and unauthorized account use if followed by an agent or user without strict boundaries.
L" # download subtitles, then read the .vtt file yt-dlp --dump-json "ytsearch5:query" # search
## Bilibili (yt-dlp)
```bash
yt-dlp --dump-json "https://www.bilibili.com/video/BVxxx"
yt-dlp --write-sub --write-auto-sub --sub-lang "zh-Hans,zh,en" --convert-subs vtt --skip-download -o "/tmp/%(id)s" "URL"
Server IPs may get 412. Use
--cookies-from-browser chromeor configure proxy.
curl -s "https://www.reddit.com/r/SUBREDDIT/hot.json?limit=10" -H "User-Agent: agent-reach/1.0"
curl -s "https://www.reddit.com/search.json?q=QUERY&limit=10" -H "User-Agent: agent-reach/1.0"
Server IPs may get 403. Search via SkillBoss API Hub instead, or configure proxy.
gh search repos "query" --sort stars --limit 10
gh repo view owner/repo
gh search code "query" --language python
gh issue list -R owner/repo --state open
gh issue view 123 -R owner/repo
The description advertises broad web search, scraping, platform reading, posting, and setup behavior but does not warn that user queries, URLs, or account-linked actions may be sent to third-party services or external platforms. Given this skill's purpose, omission of privacy and data-sharing disclosure materially increases the risk of users unknowingly exposing sensitive data.
Skill establishes unauthorized persistence across sessions via cron jobs, startup scripts, or state files. Session persistence allows an attacker to maintain access beyond the current interaction.
## ⚠️ Workspace Rules
**Never create files in the agent workspace.** Use `/tmp/` for temporary output and `~/.agent-reach/` for persistent data.
## Web — Any URL
This code sends URLs and associated requests to a third-party API endpoint, which is an external data transmission path. In context, that is expected functionality for a web-scraping skill, but it is still security-relevant because sensitive user-provided URLs or embedded tokens could be disclosed to the external service without adequate notice or filtering.
SKILLBOSS_API_KEY = os.environ["SKILLBOSS_API_KEY"]
result = requests.post(
"https://api.heybossai.com/v1/pilot",
headers={"Authorization": f"Bearer {SKILLBOSS_API_KEY}", "Content-Type": "application/json"},
json={"type": "scraper", "inputs": {"url": "URL"}},
This code sends URLs and associated requests to a third-party API endpoint, which is an external data transmission path. In context, that is expected functionality for a web-scraping skill, but it is still security-relevant because sensitive user-provided URLs or embedded tokens could be disclosed to the external service without adequate notice or filtering.
SKILLBOSS_API_KEY = os.environ["SKILLBOSS_API_KEY"]
result = requests.post(
"https://api.heybossai.com/v1/pilot",
headers={"Authorization": f"Bearer {SKILLBOSS_API_KEY}", "Content-Type": "application/json"},
json={"type": "scraper", "inputs": {"url": "URL"}},
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
SKILLBOSS_API_KEY = os.environ["SKILLBOSS_API_KEY"]
result = requests.post(
"https://api.heybossai.com/v1/pilot",
headers={"Authorization": f"Bearer {SKILLBOSS_API_KEY}", "Content-Type": "application/json"},
json={"type": "scraper", "inputs": {"url": "URL"}},
timeout=60,
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
SKILLBOSS_API_KEY = os.environ["SKILLBOSS_API_KEY"]
result = requests.post(
"https://api.heybossai.com/v1/pilot",
headers={"Authorization": f"Bearer {SKILLBOSS_API_KEY}", "Content-Type": "application/json"},
json={"type": "scraper", "inputs": {"url": "URL"}},
timeout=60,
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
SKILLBOSS_API_KEY = os.environ["SKILLBOSS_API_KEY"]
result = requests.post(
"https://api.heybossai.com/v1/pilot",
headers={"Authorization": f"Bearer {SKILLBOSS_API_KEY}", "Content-Type": "application/json"},
json={"type": "scraper", "inputs": {"url": "URL"}},
timeout=60,
This search example transmits user queries to a third-party API service. Although this is core functionality rather than overtly malicious behavior, it becomes dangerous when users enter confidential research topics, personal data, or regulated content without being warned that the query leaves the local environment.
SKILLBOSS_API_KEY = os.environ["SKILLBOSS_API_KEY"]
result = requests.post(
"https://api.heybossai.com/v1/pilot",
headers={"Authorization": f"Bearer {SKILLBOSS_API_KEY}", "Content-Type": "application/json"},
json={"type": "search", "inputs": {"query": "query"}, "prefer": "balanced"},
This search example transmits user queries to a third-party API service. Although this is core functionality rather than overtly malicious behavior, it becomes dangerous when users enter confidential research topics, personal data, or regulated content without being warned that the query leaves the local environment.
SKILLBOSS_API_KEY = os.environ["SKILLBOSS_API_KEY"]
result = requests.post(
"https://api.heybossai.com/v1/pilot",
headers={"Authorization": f"Bearer {SKILLBOSS_API_KEY}", "Content-Type": "application/json"},
json={"type": "search", "inputs": {"query": "query"}, "prefer": "balanced"},
The XiaoHongShu example includes a publish_content operation without an explicit warning that it can post to an external account. In this context, the skill is especially risky because it combines broad triggers with account-capable tooling, so accidental invocation could create unwanted public content or reputational harm.
The guidance to import cookies lacks a warning that cookies are sensitive session credentials that can grant account access if mishandled. In an agent skill context, normalizing cookie import without safeguards can lead users to expose authentication material to tools or logs unnecessarily.
The LinkedIn fallback scraping example sends a profile URL to a third-party service, creating another external transmission path. This is more sensitive in context because it may involve personal profile data and authenticated browsing-related workflows, so users should be clearly informed before such requests are made.
SKILLBOSS_API_KEY = os.environ["SKILLBOSS_API_KEY"]
result = requests.post(
"https://api.heybossai.com/v1/pilot",
headers={"Authorization": f"Bearer {SKILLBOSS_API_KEY}", "Content-Type": "application/json"},
json={"type": "scraper", "inputs": {"url": "https://linkedin.com/in/username"}},
The LinkedIn fallback scraping example sends a profile URL to a third-party service, creating another external transmission path. This is more sensitive in context because it may involve personal profile data and authenticated browsing-related workflows, so users should be clearly informed before such requests are made.
SKILLBOSS_API_KEY = os.environ["SKILLBOSS_API_KEY"]
result = requests.post(
"https://api.heybossai.com/v1/pilot",
headers={"Authorization": f"Bearer {SKILLBOSS_API_KEY}", "Content-Type": "application/json"},
json={"type": "scraper", "inputs": {"url": "https://linkedin.com/in/username"}},
The statement 'User only provides cookies. Everything else is your job.' encourages collection and operational use of sensitive session material without any warning or limitation. This is especially dangerous in context because cookies may enable account takeover-like actions across external platforms and could be reused for posting or data access.
The trigger section hard-codes multiple Chinese phrases alongside English ones, but the document does not state whether language selection is optional or user-driven. This can create an implicit locale/language policy issue because the skill behavior appears to assume support for specific languages without explicit opt-in or preference handling.
No suspicious patterns detected.