{"data":{"skill":{"slug":"longbridge-longbridge-quant","name":"longbridge-quant","icon":"📦","repo":"https://github.com/longbridge/skills/tree/main/skills/longbridge-quant","status":"approved","author":"longbridge","authorVersion":"1.0.0","skillstoreRevision":2},"audit":{"id":"05a0c7ce-5ad0-4f0c-b4fc-b12651cd9c5a","skill_id":"dc811afa-50ce-4731-a7ad-fe9bf98de5a6","version":7,"content_hash":"v3:656be3040aef5c047555a908cd5c695d22a4a548:563d1655f1923203cd0ac9c69cb300fef1206232109f73b63273f9841b2604b0:cb725f9923abf588abf0bc09a6c79d1d8c7a939eb7df3231bc5e79ff373d6e20:736b696c6c732f6c6f6e676272696467652f6c6f6e676272696467652d7175616e74:17d1a4683b7e18eacb0afac5841948af","risk_level":"medium","is_blocked":false,"safe_to_publish":true,"analysis_status":"ok","agent_auto_install_policy":"allowed","manual_install_policy":"allowed","summary":"Most static findings mistake Markdown backticks or ordinary financial terminology for shell execution or reconnaissance. Remote indicator execution can disclose submitted scripts, and the hedging workflow accesses authenticated portfolio positions despite public-access metadata.","remediation":[{"issue":"User-defined indicator scripts are sent to Longbridge for server-side execution.","severity":"low","suggestion":"Disclose the remote submission before execution, request confirmation, and warn users not to include secrets or proprietary logic."},{"issue":"The metadata says login is not required, but the hedging workflow can request portfolio positions with trade scope.","severity":"medium","suggestion":"Mark authenticated features as conditional and require explicit consent before reading portfolio positions."}],"risk_factor_evidence":[{"factor":"external_commands","evidence":[{"file":"references/factor-screen.md","line_end":64,"line_start":60},{"file":"references/quant-cli.md","line_end":74,"line_start":74},{"file":"references/quant-cli.md","line_end":95,"line_start":85},{"file":"SKILL.md","line_end":26,"line_start":26},{"file":"SKILL.md","line_end":52,"line_start":52},{"file":"SKILL.md","line_end":56,"line_start":54},{"file":"SKILL.md","line_end":58,"line_start":56},{"file":"SKILL.md","line_end":100,"line_start":58},{"file":"SKILL.md","line_end":106,"line_start":100},{"file":"SKILL.md","line_end":107,"line_start":106},{"file":"SKILL.md","line_end":107,"line_start":107},{"file":"SKILL.md","line_end":119,"line_start":118},{"file":"SKILL.md","line_end":120,"line_start":119},{"file":"SKILL.md","line_end":124,"line_start":120},{"file":"SKILL.md","line_end":133,"line_start":124}]}],"critical_findings":[],"high_findings":[],"medium_findings":[{"title":"Ruby/shell backtick execution","locations":[{"file":"SKILL.md","line_end":107,"line_start":107}],"confidence":0.94,"description":"| `ModuleNotFoundError: sklearn` | Run `pip install scikit-learn` |","review_kind":"capability","source_category":"external_commands","source_severity":"medium","confidence_reasoning":"The troubleshooting instruction tells the agent to run pip install scikit-learn. Package installation executes third-party build or installation logic and should require user confirmation."},{"title":"Authenticated Portfolio Access Is Undeclared","locations":[{"file":"SKILL.md","line_end":13,"line_start":10},{"file":"references/hedging.md","line_end":29,"line_start":28}],"confidence":0.99,"description":"The metadata says login is not required, while the hedging workflow reads current portfolio positions using trade-scope authentication. This mismatch can obscure access to sensitive financial data.","review_kind":"security","source_category":"semantic","source_severity":"medium","confidence_reasoning":"Both the public-access metadata and the trade-scope positions command are explicit. The contradiction is direct and affects permission transparency."}],"low_findings":[{"title":"Network reconnaissance","locations":[{"file":"references/quant-cli.md","line_end":39,"line_start":39}],"confidence":0.98,"description":"Executes the script server-side and returns the computed indicator/plot values as JSON. Scripts are ","review_kind":"security","source_category":"blocker","source_severity":"low","confidence_reasoning":"The workflow explicitly sends user-provided scripts to a remote server for execution. This is not reconnaissance, but it creates a real code-disclosure risk if scripts contain sensitive logic."}],"dangerous_patterns":[{"title":"Network reconnaissance","locations":[{"file":"references/quant-cli.md","line_end":39,"line_start":39}],"confidence":0.98,"description":"Executes the script server-side and returns the computed indicator/plot values as JSON. Scripts are ","review_kind":"security","source_category":"blocker","source_severity":"low","confidence_reasoning":"The workflow explicitly sends user-provided scripts to a remote server for execution. This is not reconnaissance, but it creates a real code-disclosure risk if scripts contain sensitive logic."}],"files_scanned":14,"total_lines":1257,"audit_model":"codex","audited_at":"2026-08-08T09:51:03.388+00:00","created_at":"2026-08-08T15:00:42.71702+00:00","static_findings":[{"id":"external_commands:references/factor-screen.md:60:ruby-shell-backtick-execution","file":"references/factor-screen.md","pattern":"Ruby/shell backtick execution","snippet":"# NOTE: `operating` returns data for HK stocks only; for US/A-share use financial-report instead","category":"external_commands","line_end":64,"severity":"medium","line_start":60},{"id":"blocker:references/hedging.md:70:system-reconnaissance","file":"references/hedging.md","pattern":"System reconnaissance","snippet":"| Cost | Premium paid | Near zero |","category":"blocker","line_end":70,"severity":"low","line_start":70},{"id":"blocker:references/hedging.md:97:system-reconnaissance","file":"references/hedging.md","pattern":"System reconnaissance","snippet":"Cost efficiency = Protection value / Premium paid","category":"blocker","line_end":98,"severity":"low","line_start":97},{"id":"blocker:references/multifactor.md:28:system-reconnaissance","file":"references/multifactor.md","pattern":"System reconnaissance","snippet":"- Bottom 20%: avoid / short signal","category":"blocker","line_end":28,"severity":"low","line_start":28},{"id":"external_commands:references/quant-cli.md:74:ruby-shell-backtick-execution","file":"references/quant-cli.md","pattern":"Ruby/shell backtick execution","snippet":"Script language: `navi` (default), or `pine` for PineScript compatibility","category":"external_commands","line_end":74,"severity":"medium","line_start":74},{"id":"external_commands:references/quant-cli.md:85:ruby-shell-backtick-execution","file":"references/quant-cli.md","pattern":"Ruby/shell backtick execution","snippet":"Print verbose request info (host, elapsed) to stderr, prefixed with `*` like curl -v","category":"external_commands","line_end":95,"severity":"medium","line_start":85},{"id":"blocker:references/quant-cli.md:39:network-reconnaissance","file":"references/quant-cli.md","pattern":"Network reconnaissance","snippet":"Executes the script server-side and returns the computed indicator/plot values as JSON. Scripts are ","category":"blocker","line_end":39,"severity":"low","line_start":39},{"id":"blocker:references/seasonality.md:49:system-reconnaissance","file":"references/seasonality.md","pattern":"System reconnaissance","snippet":"| Fewer than 250 candles returned  | 数据不足以计算季节性,建议选择历史更长的标的 | 數據不足,建議選擇歷史更長的標的          | Insufficie","category":"blocker","line_end":49,"severity":"low","line_start":49},{"id":"blocker:references/strategy-optimizer.md:3:system-reconnaissance","file":"references/strategy-optimizer.md","pattern":"System reconnaissance","snippet":"Quantitative strategy generation and optimisation framework — grid search, walk-forward validation, ","category":"blocker","line_end":3,"severity":"low","line_start":3},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"> **ChatGPT usage**: If you are using this skill inside ChatGPT, type `@longbridge` to connect — Lon","category":"external_commands","line_end":26,"severity":"medium","line_start":26},{"id":"external_commands:SKILL.md:52:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"The `quant` command runs user-defined indicator scripts against K-line data.","category":"external_commands","line_end":52,"severity":"medium","line_start":52},{"id":"external_commands:SKILL.md:54:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```bash","category":"external_commands","line_end":56,"severity":"medium","line_start":54},{"id":"external_commands:SKILL.md:56:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":58,"severity":"medium","line_start":56},{"id":"external_commands:SKILL.md:58:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"Use `longbridge kline <SYMBOL> --format json` (from longbridge-market-data) to obtain OHLCV input da","category":"external_commands","line_end":100,"severity":"medium","line_start":58},{"id":"external_commands:SKILL.md:100:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"`quant` CLI: Public — no login required. All frameworks are analytical.","category":"external_commands","line_end":106,"severity":"medium","line_start":100},{"id":"external_commands:SKILL.md:106:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `command not found: longbridge` | Install longbridge-terminal |","category":"external_commands","line_end":107,"severity":"medium","line_start":106},{"id":"external_commands:SKILL.md:107:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| `ModuleNotFoundError: sklearn` | Run `pip install scikit-learn` |","category":"external_commands","line_end":107,"severity":"medium","line_start":107},{"id":"external_commands:SKILL.md:118:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Raw K-line data | `longbridge-market-data` |","category":"external_commands","line_end":119,"severity":"medium","line_start":118},{"id":"external_commands:SKILL.md:119:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Technical analysis | `longbridge-technical` |","category":"external_commands","line_end":120,"severity":"medium","line_start":119},{"id":"external_commands:SKILL.md:120:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"| Options volatility | `longbridge-derivatives` |","category":"external_commands","line_end":124,"severity":"medium","line_start":120},{"id":"external_commands:SKILL.md:124:ruby-shell-backtick-execution","file":"SKILL.md","pattern":"Ruby/shell backtick execution","snippet":"```","category":"external_commands","line_end":133,"severity":"medium","line_start":124}],"finding_verdicts":[{"id":"external_commands:references/factor-screen.md:60:ruby-shell-backtick-execution","reason":"The backticks format the word operating as inline Markdown. No Ruby expression, shell substitution, or command execution occurs on these lines.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/hedging.md:70:system-reconnaissance","reason":"The line compares option premiums in a financial strategy table. It does not inspect the host system or gather system information.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/hedging.md:97:system-reconnaissance","reason":"The text defines a hedge cost-efficiency formula. It contains no system discovery, process inspection, or environment enumeration.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/multifactor.md:28:system-reconnaissance","reason":"The phrase describes the bottom-ranked portion of a stock universe. It is financial ranking guidance, not system reconnaissance.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:references/quant-cli.md:74:ruby-shell-backtick-execution","reason":"The backticks identify supported script-language names in Markdown. They do not invoke Ruby or a shell.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:references/quant-cli.md:85:ruby-shell-backtick-execution","reason":"The backticks format an asterisk while documenting verbose output. No shell substitution or executable expression is present.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/quant-cli.md:39:network-reconnaissance","reason":"The workflow explicitly sends user-provided scripts to a remote server for execution. This is not reconnaissance, but it creates a real code-disclosure risk if scripts contain sensitive logic.","verdict":"confirmed","severity":"low","confidence":0.98},{"id":"blocker:references/seasonality.md:49:system-reconnaissance","reason":"The line reports insufficient historical candle data. It does not inspect the local system or enumerate resources.","verdict":"false_positive","confidence":0.99},{"id":"blocker:references/strategy-optimizer.md:3:system-reconnaissance","reason":"The line is a plain description of strategy optimization methods. No system information is collected.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:26:ruby-shell-backtick-execution","reason":"The backticks format the ChatGPT plugin mention as inline text. They are not shell execution syntax in this Markdown context.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:52:ruby-shell-backtick-execution","reason":"The line uses Markdown backticks to name the quant command. It describes intended CLI functionality without executing a command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:54:ruby-shell-backtick-execution","reason":"This is the opening fence for a Bash example containing a fixed help command. It is documentation, with no interpolation or automatic execution.","verdict":"false_positive","confidence":0.97},{"id":"external_commands:SKILL.md:56:ruby-shell-backtick-execution","reason":"This line closes a Markdown code fence. It cannot execute Ruby or shell code.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:58:ruby-shell-backtick-execution","reason":"The backticks format a documented Longbridge command with a symbol placeholder. The surrounding section provides analytical instructions, not shell substitution.","verdict":"false_positive","confidence":0.98},{"id":"external_commands:SKILL.md:100:ruby-shell-backtick-execution","reason":"The backticks identify the quant CLI while stating its authentication requirement. No command is executed.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:106:ruby-shell-backtick-execution","reason":"The backticks format an expected error message in a troubleshooting table. The line does not invoke a shell.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:107:ruby-shell-backtick-execution","reason":"The troubleshooting instruction tells the agent to run pip install scikit-learn. Package installation executes third-party build or installation logic and should require user confirmation.","verdict":"confirmed","severity":"medium","confidence":0.94},{"id":"external_commands:SKILL.md:118:ruby-shell-backtick-execution","reason":"The backticks format a related skill name in a table. No shell or Ruby expression is present.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:119:ruby-shell-backtick-execution","reason":"The backticks format a related technical-analysis skill name. This is a reference, not an executable command.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:120:ruby-shell-backtick-execution","reason":"The backticks format a related derivatives skill name. There is no command invocation on this line.","verdict":"false_positive","confidence":0.99},{"id":"external_commands:SKILL.md:124:ruby-shell-backtick-execution","reason":"This line opens a Markdown fence for a file-layout diagram. It does not execute its contents.","verdict":"false_positive","confidence":0.99}],"semantic_findings":[{"title":"Authenticated Portfolio Access Is Undeclared","severity":"medium","locations":[{"file":"SKILL.md","line_end":13,"line_start":10},{"file":"references/hedging.md","line_end":29,"line_start":28}],"confidence":0.99,"description":"The metadata says login is not required, while the hedging workflow reads current portfolio positions using trade-scope authentication. This mismatch can obscure access to sensitive financial data.","confidence_reasoning":"Both the public-access metadata and the trade-scope positions command are explicit. The contradiction is direct and affects permission transparency."}],"subject_marketplace_commit_sha":"656be3040aef5c047555a908cd5c695d22a4a548","subject_content_hash":"563d1655f1923203cd0ac9c69cb300fef1206232109f73b63273f9841b2604b0","subject_tree_hash":"cb725f9923abf588abf0bc09a6c79d1d8c7a939eb7df3231bc5e79ff373d6e20","subject_plugin_path":"skills/longbridge/longbridge-quant","audit_payload_hash":"17d1a4683b7e18eacb0afac5841948af","confirmed_risk_level":"medium","scanner_version":"3.0.0","policy_version":"skillstore-security-audit-policy-v1","subject":{"marketplaceCommitSha":"656be3040aef5c047555a908cd5c695d22a4a548","contentHash":"563d1655f1923203cd0ac9c69cb300fef1206232109f73b63273f9841b2604b0","treeHash":"cb725f9923abf588abf0bc09a6c79d1d8c7a939eb7df3231bc5e79ff373d6e20","pluginPath":"skills/longbridge/longbridge-quant","auditPayloadHash":"17d1a4683b7e18eacb0afac5841948af"},"scannerVersion":"3.0.0","policyVersion":"skillstore-security-audit-policy-v1"},"auditTranslation":null,"localization":{"requestedLocale":"en","contentLocale":"en","availableLocales":["en"],"fallbackToEnglish":false},"attestation":{"availability":"issued","url":"/api/skills/longbridge-longbridge-quant/audits/7/attestation","status":"active"},"trust":{"publicState":"public","auditState":"complete","auditCurrentness":null,"confirmedRiskLevel":"medium","confirmedFindingCount":2,"capabilityReviewCount":1,"needsReviewCount":0,"falsePositiveCount":0,"agentAutoInstallPolicy":"allowed","manualInstallPolicy":"allowed","artifactSignatureState":"available","attestationState":"active","verificationState":"not_verified"},"isLatest":true}}