← Back to Skills Marketplace
pfbao

Stock-Decision

by pfbao · GitHub ↗ · v1.0.1 · MIT-0
cross-platform ⚠ suspicious
96
Downloads
0
Stars
0
Active Installs
2
Versions
Install in OpenClaw
/install stock-decision
Description
Comprehensive stock decision analysis combining technical indicators (MA, MACD, KDJ, RSI, DMI), macro environment assessment (industry cycle, governance, mac...
Usage Guidance
This skill generally does what it says (technical indicators, macro web-search, backtests), but there are implementation-level risks you should consider before installing or running it: - Command-injection risk: Several scripts construct shell commands with user-supplied strings and call subprocess.run(..., shell=True). If you or others can pass arbitrary stock names/codes to the skill, those inputs could include shell metacharacters and execute unexpected commands. Prefer running in a sandbox or patch scripts to use subprocess.run([...], shell=False) with argument lists or to sanitize inputs. - Local dependency risk: The scripts call a local skill at ~/.workbuddy/skills/westock-data/scripts/index.js. Ensure that the referenced westock-data code is genuine and not replaced by an attacker — otherwise the skill could run arbitrary Node code when invoked. - Network and privacy: macro_analyzer scrapes Bing search results directly (requests to bing.com) and sends company/industry queries. That is expected for macro analysis, but be aware that queried company names and search keywords will be sent to external services. If you have confidentiality concerns, disable network or review/meter outbound traffic. - Fragile scraping & high thresholds: macro_analyzer uses regex HTML scraping which is brittle; also some thresholds (e.g., requiring >=5 severe keywords) may produce false negatives/positives. This is an operational/data-quality concern, not necessarily malicious. Recommendations before use: 1. Review and/or modify scripts to remove shell=True and pass command arguments as lists to subprocess.run (or validate/escape inputs). 2. Verify the integrity and provenance of the westock-data skill at the hardcoded path. 3. Run the code in an isolated environment (container/VM) with limited permissions and controlled network access; monitor outbound connections. 4. If you plan to accept inputs from untrusted users, add input validation and stricter sanitization. 5. If you need to trust external web results less, consider configuring or restricting the search endpoints and logging the queries for audit. Because the issues are implementation vulnerabilities rather than clear malicious intent, I classify this as 'suspicious' (medium confidence). Reviewing the scripts and running them in a sandboxed environment will reduce risk; if you want, I can point out the exact lines to change to remove shell usage and hardcoded-path assumptions.
Capability Analysis
Type: OpenClaw Skill Name: stock-decision Version: 1.0.1 The skill bundle contains a critical shell injection vulnerability in 'scripts/analyze.py' and 'scripts/backtest.py', where user-provided stock names or codes are passed directly into 'subprocess.run' with 'shell=True' without sanitization. While the scripts appear functionally dedicated to stock analysis and macro-economic research (including web scraping via 'requests' in 'scripts/macro_analyzer.py'), the insecure execution pattern allows for arbitrary command execution. No evidence of intentional malice, such as data exfiltration or persistence mechanisms, was observed.
Capability Assessment
Purpose & Capability
The name/description (technical indicators + macro + backtest) aligns with the included Python scripts and the SKILL.md workflow. The scripts call a local 'westock-data' skill for market data and perform web searches for macro analysis — these are expected for the stated purpose. Notable: the code assumes a specific local path (~/.workbuddy/skills/westock-data/) and Node scripts exist, which is a design choice that creates a strong coupling to the environment.
Instruction Scope
Scripts execute shell commands via subprocess.run(..., shell=True) with user-controllable inputs (e.g., analyze.py inserts the raw user stock_input into a shell command; backtest and analyze build commands from stock codes). This enables command-injection if an attacker (or malicious input) supplies crafted stock names/codes. The macro_analyzer performs direct HTTP requests to Bing and scrapes HTML; it sends search queries over the network and parses page content. Those network operations are coherent with macro analysis but expand the attack surface (external requests, potential leakage of queried company names).
Install Mechanism
No install spec; code is instruction + scripts only. This minimizes supply-chain install-time risk. However, runtime behavior writes/reads nothing outside expected paths, and no external archives or downloads are performed by an installer.
Credentials
The skill declares no required environment variables or secrets, which fits the purpose. However, it relies on network access (requests to bing.com) and on a local dependency at ~/.workbuddy/skills/westock-data/ — that local path is assumed rather than validated. If an attacker can replace the referenced Node scripts, they could influence results or exfiltrate data. There are no declared credentials, but the skill issues outbound network requests and calls other local tools.
Persistence & Privilege
The skill does not request always:true, does not modify other skills or global agent settings, and appears runnable only when invoked. It does not persist credentials or change agent configuration on its own.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install stock-decision
  3. After installation, invoke the skill by name or use /stock-decision
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v1.0.1
No file changes detected. No functional or documentation changes in this release.
v1.0.0
stock-decision v1.0.0 - Initial release of the skill. - Implements technical analysis (Improved Strategy 1) with key indicators (MA, MACD, KDJ, RSI, DMI). - Provides detailed buy/sell recommendations. - Includes stop-loss and take-profit guidance.
Metadata
Slug stock-decision
Version 1.0.1
License MIT-0
All-time Installs 0
Active Installs 0
Total Versions 2
Frequently Asked Questions

What is Stock-Decision?

Comprehensive stock decision analysis combining technical indicators (MA, MACD, KDJ, RSI, DMI), macro environment assessment (industry cycle, governance, mac... It is an AI Agent Skill for Claude Code / OpenClaw, with 96 downloads so far.

How do I install Stock-Decision?

Run "/install stock-decision" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Stock-Decision free?

Yes, Stock-Decision is completely free, licensed under MIT-0. You can download, install and use it at no cost.

Which platforms does Stock-Decision support?

Stock-Decision is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Stock-Decision?

It is built and maintained by pfbao (@pfbao); the current version is v1.0.1.

💬 Comments