T06 · System Persistence
- Location
SKILL.md:25- Finding
Persistent Hourly Execution Through User Crontab
- Content
View full analysis
- Remediation
View remediation
Security audit
Security checks for vulnerabilities and agentic risk
This skill is an underimplemented X-to-Obsidian scaffold that asks users to set up persistent hourly execution without enough scoping or removal guidance.
Review this before installing if you are comfortable with a Chinese-language, mostly unfinished scaffold. Do not add the suggested cron job unless you want persistent hourly execution, use absolute paths, restrict permissions on the project directory, and document how to remove the crontab entry later.
SKILL.md:25Persistent Hourly Execution Through User Crontab
The declared description overstates the implemented functionality. While the code structure aligns with the general theme of an X/Twitter mining-to-Obsidian workflow, the core capabilities are not actually implemented: tweet collection is only described in comments/prints, no real browser or API calls occur, no automatic hourly scheduling exists, and translation is not performed. The Obsidian note generation and local file output do match part of the declaration, but the primary promised behavior is only a scaffold rather than a functioning auto-scanning/translation pipeline.
The skill advertises operational behavior and references executable scripts, but the manifest declares no explicit tool scope or permissions despite detected capabilities for environment access and file read/write. This creates an overbroad and non-transparent trust boundary: operators cannot easily tell what resources the skill may use, which increases the chance of unintended data access or modification when the skill is installed or reviewed.
The description says the skill will automatically translate content into professional Chinese articles, which imposes a specific language choice by default. Under the language/locale policy, this is a natural-language policy concern unless the skill explicitly offers user choice or documents a justified locale constraint.
The skill documentation explicitly instructs users to install a cron job for recurring execution, which introduces persistence on the host outside the normal interactive session. In security-sensitive environments, unattended periodic execution can repeatedly access files, environment variables, network resources, or generate content without ongoing user review, increasing the blast radius if the underlying script is later modified or behaves unexpectedly.
python3 scripts/x_deep_miner.py status
crontab -e 0 * * * * cd /path/to && python3 scripts/x_deep_miner.py scan
The manifest describes an operational skill that automatically scans high-heat X posts every hour, translates them into professional Chinese articles, and outputs Obsidian format. In contrast, this documentation explicitly says auto-crawling and translation still require manual steps or future API integration, and calls the hourly scan 'currently simulated,' indicating the implemented behavior does not match the advertised capability.
Data from a source is assigned to a variable that is later passed to a sink, creating a variable-mediated taint flow.
def save_config(config: dict):
"""保存配置"""
CONFIG_FILE.parent.mkdir(parents=True, exist_ok=True)
with open(CONFIG_FILE, 'w') as f:
json.dump(config, f, indent=2)
The documentation says the function '抓取用户 Timeline 新帖' using a managed browser, which describes an implemented scraping action. In reality, the body performs no browser interaction or tweet extraction and always returns an empty list, so the inline intent directly contradicts the actual behavior.
The docstring states that the function translates text into professional Chinese while preserving technical terms. The implementation is a placeholder that returns the original text without any translation, which is a direct contradiction rather than merely incomplete documentation.
The function docstring explicitly says content will be translated into Chinese, and the rest of the user-facing output is also Chinese. This enforces a specific language/locale without any opt-in, fallback, or documented regional justification, which matches the natural-language policy violation criteria.
Data from a source is assigned to a variable that is later passed to a sink, creating a variable-mediated taint flow.
filename = f"{datetime.now().strftime('%Y%m%d_%H%M%S')}_{safe_title}.md"
output_path = OUTPUT_DIR / category / filename
with open(output_path, 'w', encoding='utf-8') as f:
f.write(note)
print(f" ✓ 已保存: {output_path}")
This markdown file contains user-facing instructions exclusively in Chinese, and there is no note that the skill is region-specific or that alternative languages are supported. Per the policy, forcing a specific language without user opt-in is a natural-language locale violation.
No suspicious patterns detected.