Skill Trust Decision

x-daily-report

Skill implements X/Twitter monitoring with undeclared browser cookie access, a hardcoded API key, and undocumented Feishu API communication—all not mentioned in SKILL.md.

Install decision first Source: Manual upload Scanned: Apr 4, 2026
Files 5
Artifacts 2
Violations 2
Findings 5
Most direct threat evidence
High Credential Theft
Hardcoded API Key in Source Code

A plaintext X API key is embedded in scripts/x-monitor.js at line 11. While the value appears to be a placeholder/test string, hardcoding credentials in source code is a serious anti-pattern that risks exposure through version control.

scripts/x-monitor.js:11

Why this conclusion was reached

3/4 dimensions flagged
Block
Declared vs actual capability

2 undeclared or violating capabilities were inferred.

Block
Hidden execution and egress

1 high-risk artifacts or egress signals were extracted.

Block
Attack chain and severe findings

The report includes 0 attack-chain steps and 2 severe findings.

Review
Dependencies and supply chain hygiene

2 dependency or supply-chain issues need attention.

What drove the risk score up

Undeclared browser cookie access +15

x-scraper-free.js uses useCookiesFromBrowser('chrome') to extract authenticated X sessions — not declared in SKILL.md

Hardcoded API key +15

x-monitor.js:11 contains X_API_KEY hardcoded as plaintext; also constitutes doc deception since SKILL.md says free mode requires no keys

Undeclared external API communication +10

x-monitor.js calls open.feishu.cn API with BITABLE_APP_TOKEN — not mentioned in SKILL.md

Unpinned dependencies +5

@the-convocation/twitter-scraper and axios have version ranges (^0.22.1, ^1.6.0) without pinning

Doc-to-code mismatch on API mode +3

SKILL.md claims zero-cost free mode but includes x-monitor.js which requires API credentials

Most important evidence

High Credential Theft

Hardcoded API Key in Source Code

A plaintext X API key is embedded in scripts/x-monitor.js at line 11. While the value appears to be a placeholder/test string, hardcoding credentials in source code is a serious anti-pattern that risks exposure through version control.

scripts/x-monitor.js:11
Remove hardcoded credentials. Use environment variables (process.env.X_API_KEY) and document required env vars in SKILL.md.
High Doc Mismatch

Undeclared Browser Cookie Access

x-scraper-free.js calls scraper.useCookiesFromBrowser('chrome') to extract live Chrome browser cookies for X authentication. This is a significant capability not declared anywhere in SKILL.md. An agent with this skill could harvest authenticated sessions for any site stored in Chrome.

scripts/x-scraper-free.js:90
Declare browser:READ permission in SKILL.md and document why Chrome cookie reuse is necessary.
Medium Doc Mismatch

Undeclared Feishu/Bitable API Communication

x-monitor.js communicates with open.feishu.cn to fetch account lists from a Feishu Bitable. This external data source integration is not documented in SKILL.md, which only describes free and API modes without mentioning Feishu.

scripts/x-monitor.js:8
Document Feishu Bitable integration in SKILL.md if intentional, or remove the code if unnecessary.
Medium Supply Chain

Unpinned Dependency Versions

@the-convocation/twitter-scraper (^0.22.1) and axios (^1.6.0) are listed with caret ranges, allowing automatic minor/patch updates. This creates supply chain risk where a compromised upstream release could be silently installed.

package.json:10
Pin exact versions (e.g., "0.22.1") to ensure reproducible and auditable builds.
Low Doc Mismatch

SKILL.md Misleading Zero-Cost Claim

SKILL.md prominently advertises '零成本运行' and '无需X开发者账号' but includes x-monitor.js which explicitly requires X_API_KEY. While x-scraper-free.js is the recommended path, the presence of x-monitor.js with a hardcoded key contradicts the zero-cost messaging.

SKILL.md:1
Clarify that an API-requiring mode exists alongside the free mode, or remove x-monitor.js if it's not a supported feature.

Declared capability vs actual capability

Filesystem Pass
Declared NONE
Inferred WRITE
x-scraper-free.js:9 — writeFile() used for local report output, documented in SKILL.md
Network Block
Declared NONE
Inferred READ
x-scraper-free.js:7 — Scraper fetches X/Twitter; x-monitor.js:8 — Feishu API calls, both undeclared
Browser Block
Declared NONE
Inferred READ
x-scraper-free.js:90 — scraper.useCookiesFromBrowser('chrome') extracts live X session cookies, completely undeclared
Shell Pass
Declared NONE
Inferred NONE
No subprocess, exec, or shell command execution found
Environment Pass
Declared NONE
Inferred NONE
No env iteration for secrets; FEISHU_ACCESS_TOKEN read only when used

Suspicious artifacts and egress

High API Key
API_KEY = 'THp2c1V4bW5JQVJ1S09IY1BzN1NubDoxaXJpUQ'

scripts/x-monitor.js:11

Medium External URL
https://open.feishu.cn/open-apis

scripts/x-monitor.js:8

Dependencies and supply chain

PackageVersionSourceKnown vulnNotes
@the-convocation/twitter-scraper ^0.22.1 npm No Version not pinned — minor updates auto-installed
axios ^1.6.0 npm No Version not pinned — minor updates auto-installed

File composition

5 files · 609 lines
JavaScript 2 files · 445 linesMarkdown 2 files · 147 linesJSON 1 files · 17 lines
Files of concern · 4
scripts/x-monitor.js JavaScript · 235 lines
Hardcoded API Key in Source Code · Undeclared Feishu/Bitable API Communication · API_KEY = 'THp2c1V4bW5JQVJ1S09IY1BzN1NubDoxaXJpUQ' · https://open.feishu.cn/open-apis
scripts/x-scraper-free.js JavaScript · 210 lines
Undeclared Browser Cookie Access
SKILL.md Markdown · 93 lines
SKILL.md Misleading Zero-Cost Claim
package.json JSON · 17 lines
Unpinned Dependency Versions
Other files · account-list.md

Security positives

No shell command execution or subprocess usage detected
No base64-encoded strings or obfuscated code found
No network exfiltration or C2 communication observed
No credential harvesting loops or suspicious environment variable iteration
No reverse shell, eval(), or dynamic code execution
File writes are scoped to report output and are documented behavior
No cron, startup hooks, or persistence mechanisms found