feat: update macro-intelligence to v2.1#283
Conversation
… diversity, dashboard redesign
✅ Phase 1: Structure Validation — PASSED→ Proceeding to Phase 2: Build Verification |
📋 Phase 3: AI Code Review Report — Score: 82/100
1. Plugin Overview
Summary: A unified macro intelligence aggregator that polls 9+ external data sources (NewsNow, Polymarket, Finnhub, FRED, CoinGecko, 6551.io OpenNews, CryptoPanic, Fear & Greed, RSS, Telegram), classifies macro events via keyword regex + LLM, scores sentiment, and exposes filtered signals through an HTTP API on port 3252 and optional WebSocket on 3253. It is read-only with no trading logic or wallet operations. Target Users: Traders and developers building downstream trading/alpha skills who need a consolidated macro news/sentiment feed with event classification. 2. Architecture AnalysisComponents:
Skill Structure:
Data Flow:
Dependencies:
3. Auto-Detected Permissionsonchainos Commands Used
Wallet Operations
External APIs / URLs
Chains Operated OnNone. This is a read-only intelligence feed with no on-chain interactions. Overall Permission SummaryThe plugin is a read-only data aggregator. It polls public APIs for news/market data, optionally connects to Telegram (user-supplied credentials), calls Anthropic API for classification (user-supplied key), and runs local HTTP/WebSocket servers. No wallet access, no transaction signing, no on-chain activity. Primary risks are: (1) outbound network traffic containing user-configured API keys (sent only to their respective services), (2) headlines sent to Anthropic for classification, and (3) user-configured webhook POST destinations. No credential exfiltration patterns detected. 4. onchainos API ComplianceDoes this plugin use onchainos CLI for all on-chain write operations?N/A — the plugin performs no on-chain operations of any kind. On-Chain Write Operations (MUST use onchainos)
Data Queries (allowed to use external sources)
External APIs / Libraries Detected
Verdict: ✅ Fully CompliantThe plugin does not perform on-chain operations, so onchainos usage is not required. All external queries are read-only data sources, which is explicitly permitted. 5. Security AssessmentStatic Rule Scan (C01-C09, H01-H09, M01-M08, L01-L02)
No other static rules match. No curl|sh, no prompt injection, no base64/unicode obfuscation, no pseudo-system tags, no HTML comment injection, no backtick injection, no hardcoded secrets, no credential output/exfiltration, no persistence, no sensitive path access, no system modification, no plaintext .env credential writes, no Agent credential solicitation, no --signed-tx parameters, no unpinned packages (Python deps are documented as optional LLM Judge Analysis (L-PINJ, L-MALI, L-MEMA, L-IINJ, L-AEXE, L-FINA, L-FISO)
Toxic Flow Detection (TF001-TF006)No toxic flows detected. Specifically:
Prompt Injection ScanChecked SKILL.md and source code for: instruction override, identity manipulation, hidden behavior, confirmation bypass, unauthorized operations, base64 payloads, invisible chars, pseudo-system tags. None found. Result: ✅ Clean Dangerous Operations CheckNo transfers, no signing, no contract calls, no tx broadcasting. Plugin is intelligence-only. Result: ✅ Safe Data Exfiltration RiskPotential data flows: (a) headlines sent to Anthropic for classification (user opts in with their own API key), (b) signals POSTed to user-configured webhook URLs (explicit user configuration), (c) Telegram messages read via user's own API credentials. All are user-controlled and declared. No covert exfiltration (no hardcoded attacker URLs, no credential files read, no environment variable scraping beyond documented API keys). Result: ✅ No Risk Overall Security Rating: 🟢 Low Risk6. Source Code Security (if source code is included)Language & Build Config
Dependency Analysis
Code Safety Audit
Does SKILL.md accurately describe what the source code does?Yes. SKILL.md describes 9+ sources, classification pipeline, HTTP API on :3252, WebSocket on :3253, state persistence, reputation system, token extraction, AI insights — all verified in source. Minor extras in code (WebSocket server, webhook push, fuzzy dedup, accuracy tracking) are also mentioned in SKILL.md/config. Verdict: ✅ Source Safe7. Code ReviewQuality Score: 82/100
Strengths
Issues Found
8. SUMMARY.md Review
The SUMMARY.md is concise and well under the 17,000 character limit, but it does not follow the required three-section structure (Overview / Prerequisites / Quick Start). It uses a free-form introduction followed by a Highlights list. 9. Recommendations
10. Reviewer SummaryOne-line verdict: A well-engineered, read-only macro intelligence aggregator with strong security hygiene and explicit external-data boundary; only minor documentation fixes (SUMMARY.md structure, version alignment) are needed. Merge recommendation: Items to address before merge:
Generated by Claude AI via Anthropic API — review the full report before approving. |
… etc.) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…, no cd paths Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The Rust linter panics on multi-byte UTF-8 box-drawing characters at non-char-boundary byte offsets. Replace architecture diagram box-drawing chars with ASCII equivalents.
- Remove full registration URLs from SKILL.md (triggered E141 data exfiltration check) - Add 9 API domains to plugin.yaml api_calls (fixes W140) - Reduce tags from 11 to 10 (fixes W047) - Replace webhook example URLs with placeholder strings
The linter flags any URL in SKILL.md as potential data exfiltration. Replace code examples with localhost URLs with text descriptions.
Summary
fed_cut_surprise → BTC +0.85, ETH +0.80). 23 event types covered + generic fallback. Client-side fallback for legacy signals._diverse_recent_signals()guarantees minimum 5 signals per source type (Finnhub, Polymarket, OpenNews etc.) instead of letting one source flood the feed. Returns 80 signals instead of 50.victorlee→VibeCodeDaddyacross plugin.yaml and plugin.json.Files Changed
config.pymacro_news.pydashboard.htmlplugin.yaml.claude-plugin/plugin.jsonTest plan
GET /api/healthreturnsopennews_article_count > 0GET /api/statereturns 80 signals with mixed source typestoken_impactsarray with symbol/impact/direction🤖 Generated with Claude Code