Apocdata
ApocData/ApocData-skill
A-share data service with structured announcement parsing: every announcement carries an AI summary, category, importance level and sentiment, fully traceable to source.
openInvest multi-asset AI investment committee — daily use. An agent skill from longsizhuo/openInvest.
$ npx skills add longsizhuo/openInvest --skill invest -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install longsizhuo/openInvest invest --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/longsizhuo/openInvest.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugin/skills/invest .claude/skills/invest && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "invest" agent skill from https://github.com/longsizhuo/openInvest/tree/main/plugin/skills/invest into .claude/skills/invest/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "invest", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/longsizhuo/openInvest/tree/main/plugin/skills/investType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add longsizhuo/openInvest --skill invest -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install longsizhuo/openInvest invest --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/longsizhuo/openInvest.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugin/skills/invest .agents/skills/invest && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "invest" agent skill from https://github.com/longsizhuo/openInvest/tree/main/plugin/skills/invest into .agents/skills/invest/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "invest", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add longsizhuo/openInvest --skill invest -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install longsizhuo/openInvest invest --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/longsizhuo/openInvest.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugin/skills/invest .cursor/skills/invest && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "invest" agent skill from https://github.com/longsizhuo/openInvest/tree/main/plugin/skills/invest into .cursor/skills/invest/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "invest", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/longsizhuo/openInvest.git --path plugin/skills/invest--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add longsizhuo/openInvest --skill invest -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install longsizhuo/openInvest invest --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/longsizhuo/openInvest.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugin/skills/invest .gemini/skills/invest && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "invest" agent skill from https://github.com/longsizhuo/openInvest/tree/main/plugin/skills/invest into .gemini/skills/invest/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "invest", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install longsizhuo/openInvest investInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add longsizhuo/openInvest --skill invest -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/longsizhuo/openInvest.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugin/skills/invest .github/skills/invest && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "invest" agent skill from https://github.com/longsizhuo/openInvest/tree/main/plugin/skills/invest into .github/skills/invest/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "invest", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add longsizhuo/openInvest --skill invest -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install longsizhuo/openInvest invest --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/longsizhuo/openInvest.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugin/skills/invest .opencode/skills/invest && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "invest" agent skill from https://github.com/longsizhuo/openInvest/tree/main/plugin/skills/invest into .opencode/skills/invest/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "invest", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
investopenInvest multi-asset AI investment committee — daily use. An agent skill from longsizhuo/openInvest.
Invest is an agent skill from longsizhuo/openInvest. openInvest multi-asset AI investment committee — daily use. Read portfolio / live prices / strategy / decision history / adjust positions / run a 4-role LLM committee for an investment verdict. Supports any yfinance symbol (A-share / HK / US / ETF / crypto / commodities) and any currency. Two paths — (1) Coordinator, Claude Code spawns 4 subagents, saves DeepSeek tokens; (2) Direct, any agent (Codex / Hermes / OpenClaw / Cursor / Cline / plain script) runs run.sh runcommittee <SYM for a one-shot verdict. Trigger…
Its SKILL.md is about 5.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 12 other files, including scripts and reference files (for example `CHANGELOG.md`, `README.md` and `references/adding-assets.md`).
It sits in Business, Finance & HR, covering Stock and market analysis and Subagents. It works with DeepSeek, yfinance and Model Context Protocol. The repository describes itself as: Research-grade investment decision engine for AI agents: isolated multi-agent committee, auditable verdicts, backtests with lookahead protection, published negative results. The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 220abd2. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 1 file in scripts/ (Shell), which the agent can run.
Shell commands in SKILL.md call:
claudeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
LLM_API_KEYINVEST_API_TOKENDEEPSEEK_API_KEYCF_ACCESS_CLIENT_SECRETFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Invest loads about 5.9k tokens when it runs, and up to ~22k if it reads all its reference files. Until then it costs about 225 tokens; SKILL.md has 2,457 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
**Prerequisite**: `.env` has `DEEPSEEK_API_KEY`. If the calling agent runs on the user'sWith `INVEST_API_BASE` set in `.env`, this machine is a **client**: every subcommand isMinimal client `.env` (no DeepSeek key / Gmail / memory needed):connecting to the hub only needs the two .env lines above). Error includes a hint |atim "key not set" message) → no key in `.env`; run `run.sh init` to configure itAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from longsizhuo/openInvest at commit 220abd2, republished under its MIT licence (© longsizhuo). 2,457 words, ~5,872 tokens.
.claude/skills/invest/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.First-time fork users: run the invest-setup skill first to initialize. The main flow lives in this skill (the AI agent uses the CLI/MCP to view the portfolio / run the committee / replay decision history).
The Web GUI has been retired (2026-07) — every capability is exposed via CLI subcommands / MCP tools.
The backend is distributed from PyPI (pulled on demand via uvx); to update, just run run.sh update.
openInvest multi-asset AI investment committee. This skill is not Claude-exclusive — any agent that can run shell commands can use it; see "Choosing a path" below.
Reply in the language the user is currently speaking unless they explicitly ask to switch languages.
The first question is not "which brand of agent are you" — it is "is a human present for this invocation":
Is a user asking in chat right now ("should I buy X / 该不该买 X") where you can
react in real time (wrong tool picked, blocked by a safety gate — the user sees it
on the spot and corrects it on the spot)?
→ Check whether you have an isolated sub-task delegation capability (Agent({...}) / delegate_task)
Yes → Coordinator (table below)
No → Direct
Is this a cron / scheduled run with nobody watching?
→ Always go Direct, no matter which agent you are or whether you can delegateWhy unattended runs always go Direct, even with delegation capability: the Coordinator protocol depends on you improvising "which tool to call and how to assemble the prompt". That is fine normally, but on 2026-07-14 a real Hermes cron ran Coordinator unattended — it did not faithfully call the delegation tool per the protocol, picked its own route instead, then hit the "unattended cron cannot approve dangerous commands" safety gate and stalled. Direct is pure deterministic Python code and never improvises. Saving the small hassle of configuring a key is not worth a probabilistic hang / derailment in unattended scenarios — a bad trade.
| Scenario | Who you are | Path | What to run | Credentials |
|---|---|---|---|---|
| Interactive (user present) | Claude Code (has the Agent({...}) tool) | Coordinator | prepare_committee → spawn 4 subagents → save_committee | No key needed |
| Interactive (user present) | Hermes (has the delegate_task tool) | Coordinator (Hermes variant) | Same as above; spawn syntax becomes delegate_task(tasks=[...]) | No key needed |
| Interactive, no delegation capability | Codex / OpenClaw / Cursor / Cline / plain script | Direct | run_committee <SYMBOL> one-shot | Needs LLM_API_KEY |
| cron / unattended, any agent | Anyone, with or without delegation capability | Direct | run_committee / daily_report | Needs LLM_API_KEY |
All three paths share the same foundation — the same prompts, the same data
preparation (regime classification + probability framing + deterministic fact
block), and the same on-disk format
(memory/.committee/<date>/<asset>.md; both Coordinator variants must call save_committee
with --provider <your-brand> so the transcript is not mislabeled as claude). The only
difference is "who plays the 4 LLM roles": on Coordinator you play them yourself
(the model the user already subscribes to); on Direct the configured LLM (billed
per token) plays them. Verdicts may differ (different models — useful for
cross-validation).
LLM_API_KEY is not DeepSeek-only, and the cost is near zero: utils/llm.py works with any
OpenAI-compatible endpoint (three envs: LLM_API_KEY/LLM_BASE_URL/LLM_MODEL; DEEPSEEK_*
remains supported for compatibility). Want zero cost → providers with free tiers right now
(Qwen / Zhipu / MiMo etc.) all work (free-tier terms change — verify before use); don't want
the hassle → just use DeepSeek: at daily-report volume (a few assets/day) roughly
¥0.01-0.03 per run, under ¥2 a month. Do not bet the reliability of unattended
runs on Coordinator just to save that much.
No sub-task delegation capability and no key configured: do not force your way through
Coordinator, do not fabricate a verdict, and do not write code to brute-force around it —
just call run_committee (you will get a clear error) and honestly tell the user
"LLM_API_KEY needs to be configured".
1. Run `run.sh doctor` ← mandatory first step
├─ status: "ready" → go to step 2 (keep using this skill)
└─ status: "needs_setup" → **switch to the `invest-setup` skill** (not handled here)
2. Pick the subcommand by user intent:
"show portfolio / how much do I have / 看持仓" → run.sh status
"assess the situation / risk / concentration
/ 分析战况" → run.sh status + **`curl /api/user`** for
wealth_context (**must-read**, avoids
misjudgment by legacy PWM logic)
"what is my strategy / 我的策略是什么" → run.sh strategy
"recent trades / transaction log / 最近交易" → run.sh history
"where is the market / VIX now / 现在大盘" → run.sh live_prices
"if X drops 5% how much do I lose / 如果X跌5%" → run.sh what_if --symbol X --pct -5
(X is a yfinance symbol in the user's
portfolio; --gold-pct / --ndq-pct kept
for legacy usage)
"should I buy/sell X / analyze X / 该不该买卖X" → committee protocol ↓
"track AAPL / I want to watch TSLA / 跟踪苹果" → see references/adding-assets.md
"I already held 3000 X before using this /
补录我原来就有的持仓" → run.sh status first — never re-add a
symbol it lists (double count); else
run.sh buy ... --existing-position
(MCP tool: record_existing_position;
`Unknown tool` = old server, do NOT
fall back to buy) — records it WITHOUT
deducting cash; a plain `buy` is a new
purchase paid from ledger cash
3. Run the committee per your path:
- Coordinator → read references/committee-protocol.md (spawn 4 subagents)
- Direct → just `run.sh run_committee <SYMBOL>` for a JSON verdict
4. After getting the verdict / cio_memo:
- **`cio_memo` is a Markdown string** (with `# title ## verdict` structure etc.).
Render it **as Markdown for the user** — do not print raw JSON and make the
user parse it themselves
- Execution step: check the next_step field and guide the user as it says.
**Never** write memory/ directly (see Constraints)Read references/committee-protocol.md and follow it strictly. Full 6 stages:
memory/.committee/<today>/<asset>.md exists, reuse it directly)prepare_committee to get the briefAgent({...}) in parallel (Macro + Quant + Risk)save_committee to persistCritical warning: the regime_brief / sentiment_brief /
valuation_brief / reentry_reference emitted by prepare_committee must be pasted
verbatim into the corresponding workers' prompts per the instructions: regime + valuation +
sentiment go into Quant; all three blocks + the path reference go into the CIO. Consequences
of omission: Quant loses the probability framing and the defensive-sentinel background; the
CIO's EXPECTED_PATH is made up out of thin air; INDEP_DEFENSE_FLAG
never reaches the transcript → save_committee's deterministic defense downgrade
(crash sentinel) breaks entirely.
# One command does it all
~/.claude/skills/invest/scripts/run.sh run_committee NDQ.AXJSON output:
{
"status": "ok",
"asset": {...},
"verdict": {"verdict": "ACCUMULATE", "confidence": 0.72, ...},
"confidence_lookup": "样本不足(n=12)",
"cio_memo": "<full CIO memo markdown>",
"transcript_path": "memory/.committee/2026-05-09/NDQ.AX.md",
"next_step": "..."
}Options:
--force: rerun even if already run today (default reads the cache to save tokens)--max-rounds N: cap on cross-challenge rounds (default 1)~/.claude/skills/invest/scripts/run.sh daily_report # = uvx openinvest daily_reportRuns the full daily-report pipeline (multi-asset committee + Gemini second opinion +
translator + discipline ledger); stdout emits markdown identical to the email body,
does not send email — delivery belongs to the host agent (a Hermes cron can forward
--no-agent --script output as-is; report formatting is guaranteed uniformly by the
backend). On a circuit-breaker trip / unconfigured target_assets, stdout is a structured
JSON error. Rerunning reruns the entire committee (burns tokens).
Prerequisite: .env has DEEPSEEK_API_KEY. If the calling agent runs on the user's
machine but has no key, tell the user to run run.sh init to configure it first.
(Remote-mode exception: the key lives on the hub, not needed locally — see next section.)
Recommended new path (2026-07, BETA — not yet field-tested by the author in a real multi-device setup): when the hub runs
openinvest-mcp --http(remote MCP), spokes register the HTTP MCP directly — all tools fully available, no CLI forwarding:claude mcp add --transport http openinvest https://<hub>/mcp --header "Authorization: Bearer $INVEST_API_TOKEN"The CLI→REST forwarding below is still supported (maintenance mode); the Coordinator protocol (prepare/save) and doctor/event_check still go through it. For deployment see backend wiki 08 §9.
With INVEST_API_BASE set in .env, this machine is a client: every subcommand is
auto-forwarded to the remote hub (another machine running the invest web_api), and
this machine has no memory/ and should not have one.
All data (portfolio/strategy/verdicts/prompts) lives on the hub; change it once and every device sees it.
Minimal client .env (no DeepSeek key / Gmail / memory needed):
INVEST_API_BASE=https://your-hub.example.com # or http://10.0.0.x:8765
INVEST_API_TOKEN=<the hub's token of the same name> # only needed if the hub has auth enabled
# If going through Cloudflare Tunnel + Access, use this pair instead:
# CF_ACCESS_CLIENT_ID=... CF_ACCESS_CLIENT_SECRET=...Behavior differences (all other commands are forwarded transparently, output has the same shape as local, decision tree applies as usual):
| Command | Remote-mode behavior |
|---|---|
doctor | Returns hub-perspective checks + an extra remote section (api_base / auth mode / connectivity) |
init | Disabled (data lives on the hub; connecting to the hub only needs the two .env lines above). Error includes a hint |
live_prices / correlate | Still run locally (pure yfinance, touches no data) |
run_committee | Runs on the hub (DeepSeek key is on the hub); the CLI polls automatically until done; same-day cache uses the hub's date semantics |
prepare/save_committee | Via hub RPC — the Coordinator protocol (spawn 4 subagents) is completely unchanged |
buy/sell/deposit/... write ops | Land in the hub ledger (history source: skill_remote) |
buy --existing-position | Refused (the REST endpoint can't carry it, and forwarding would deduct hub cash) — run it on the hub, or use the remote MCP tool record_existing_position |
event_check | Forwards the hub's manual scan; --live / --recall disabled (hub cron already covers them) |
Discipline: in remote mode this machine has no memory/, so "reading/writing memory
files directly" does not even exist — everything goes through run.sh or the hub API.
In the Web API table below, replace :8765 with $INVEST_API_BASE in remote mode, and
add Authorization: Bearer $INVEST_API_TOKEN when curling.
MCP users (auto-registered once the plugin is installed; same for Claude Code / Codex): status / strategy / history / live_prices / what_if / discipline / decisions / explain_decision / record_execution / ingest_event / buy / record_existing_position / sell / deposit / withdraw / set_allocations / track_asset / untrack_asset / news_sources / add_news_source / remove_news_source / run_committee — schemas auto-discovered; call them directly, no table lookup needed.
CLI/REST agents, or long-tail operations MCP does not cover (trades intent flow /
config whitelist / events / holdings import / gold-specific endpoints) → read
references/tools.md (full subcommand table + endpoint table). Full OpenAPI:
http://127.0.0.1:8765/openapi.json.
Subcommand names are a closed set — commands outside the table do not exist. When
tempted to call names like get_committee_context / analyze_asset, stop and check the
table — you are most likely hallucinating; you probably want prepare_committee
or run_committee. All output is JSON; always quote numbers from the JSON, never from memory/*.md.
When the user sends a broker holdings screenshot: read the image yourself (you
have vision), convert each row into text as
symbol/quantity/cost/currency/channel, then use import --text "..." (or POST
/api/holdings/import) — the backend LLM only parses text, it never receives images.
Preview first without --commit; after the user verifies, run with --commit for a
non-destructive write.
You have far stronger search capability than the backend crawler (including
Chinese-language sources). When you come across finance news relevant to the user's
holdings while browsing/searching, proactively call ingest_event to feed it into the
event ledger (MCP tool, or CLI ingest_event --title --url [--snippet --source]) — the backend handles normalization / severity
grading / dedup / RAG recall, and resending the same item never double-books.
A new item that grades severity ≥ mid, non-neutral, and hits a holding/target automatically
re-runs the committee for that symbol (rate-limited and shared with the crawler: 12h per-symbol
cooldown that a strictly higher-severity item can bypass, ≤4 per rolling 24h; the result's
committee_task_id says whether one fired) — so feed material news only. Ingestion is disabled in advisory mode.
A-share / regional-market news especially: that is the crawler's blind spot and you are
the only source. If the host has a quotes/news skill installed (e.g. Longbridge), its
news is worth feeding too — the ledger cares about the information, not where it came from.
openInvest does the bookkeeping; you do the collection — that is the host agent's core duty (issue #133 Decision 2).
User asks "why HOLD today / why did it tell me to sell" (Decision Review):
explain_decision <decision_id> for the full 4-role debate transcript + CIO memo + path snapshot
(+ confidence_lookup, the number to quote next to the verdict — see Constraints)status (current portfolio) + GET /api/user (wealth_context) if neededUser reacts to a recommendation with "I didn't buy / I bought / I disagree" (Reflection):
record_execution <decision_id> [--rejected] --reason "..." to write it back (idempotent; the user may change their answer anytime)User asks "how often did I follow the advice / is the committee reliable":
decisions --days 90 → adoption rate + the full verdict↔intervention↔execution↔outcome chain per decision
(lists the newest 20 — narrow with --symbol / --verdict, --limit 0 for all; count and summary always cover every match);
pair with discipline for the counterfactual P&L of rule-blocked actions (its inaction rate counts
live verdicts only). For hit rates use GET /api/verdict_review/summary: it returns separate
live / backtest / contaminated buckets — quote only live as performance, never add the
buckets together, and say "sample too small" when a rate is null (n<30). Weekend decisions on
weekend-closed assets reuse Friday's close, so they are left out of every bucket and counted in
weekend_dup_excluded — that is why live.n is below the number of live decisions. When the user
rejects the same class of recommendation several times in a row, proactively point out
"the divergence pattern between you and the committee" — that is not a bad thing; it is
a signal worth recording.
GET /api/user for wealth_context —
forget this and you repeat the 2026-05-12 mistake: the user had entered a large family
backup, the agent ran status without reading user, and per legacy PWM logic shouted
"60% concentration overweight → recommend TRIM". Wrong. The correct approach:portfolio_value / (portfolio + emergency_buffer_cny), not portfolio alonefamily_backup_available=true → low portfolio cash is not a liquidity riskaccount_purpose="零花钱账户" (pocket-money account) → tolerate larger drawdowns; "退休金" (retirement fund) → lean toward trimmingdaily_report proactively in conversation — unless the user explicitly says "run the deep analysis" / "run full report"
or you are setting up the daily cron. That path burns DeepSeek tokens. In conversation, single-asset run_committee is enough.run.sh status or live_prices. yfinance may return
stale data; watch the is_stale flag.memory/ directly. All state changes go through CLI subcommands / MCP tools (atomic write +
fcntl lock + audit trail). Direct editing causes schema drift + concurrent-write corruption.run_committee reads the cache by default;
on the Coordinator path, check with ls memory/.committee/<today>/<SYM>.md first.confidence: 0.4-0.5.confidence_lookup, not confidence. run_committee (CLI + MCP),
explain_decision, /api/committee_sessions and /api/committee/{task_id} return it: how similar
verdicts turned out 30 days later (deterministic table refreshed by the daily verdict_review job
from live verdicts plus the prospective paper fleet; when this install has n<30 for that verdict
it falls back to a fleet-only default table shipped with the package). The text ends with its
source — 含纸面舰队样本 / 默认表 / 本机样本 — keep it when you quote the number: paper-fleet runs use
a neutral portfolio and no event/valuation/sentiment inputs. For HOLD it is the share whose 30-day
move stayed inside the normal volatility band, shown next to the market's own sideways base rate —
that measures how sideways the market was, not accuracy, so never call it a hit rate. n<30 reads "样本不足(n=…)";
rule-forced HOLDs / self-reported ≤0.4 read "输入缺失/强制 HOLD". confidence is the CIO's
self-reported number, kept for the record only (historically no better than a constant); if you
mention it, label it self-reported (自报).Read the doctor JSON output carefully. Every check has a hint field telling you how to fix it.
If doctor is all green but a subcommand still fails, read references/troubleshooting.md.
Common Direct-path errors:
error: DEEPSEEK_API_KEY 未设 (backend's verbatim "key not set" message) → no key in .env; run run.sh init to configure iterror: asset X not in strategy.target_assets → add X to the strategy first,
see references/adding-assets.md| File | When to read |
|---|---|
references/tools.md | Full subcommand table + Web API endpoint table (long-tail operations MCP does not cover) |
references/committee-protocol.md | Running the committee on the Coordinator path (Claude Code only) |
references/two-paths.md | Understanding Coordinator vs Direct / DeepSeek cron triggering |
references/adding-assets.md | User wants to track a new symbol |
references/troubleshooting.md | doctor all green but still failing |
references/onboarding.md | First-time install goes to the invest-setup skill; this file is kept as a detailed reference |
For deeper architectural context see the project wiki: github.com/longsizhuo/openInvest/tree/main/docs/wiki
© longsizhuo, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 10 other files (scripts, references) in plugin/skills/invest of longsizhuo/openInvest.
Open the folder on GitHubat commit 220abd2
Invest next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Invest this skilllongsizhuo/openInvest | 108 | — | ~5.9k | Automated safety check: Notes | MIT | |
| ApocdataApocData/ApocData-skill | 104 | — | ~1.9k | Automated safety check: Pass | Apache-2.0 | |
| Polymarket Tennislivetennisapi/livetennisapi-mcp | 152 | — | ~3k | Automated safety check: Pass | MIT | |
| Go Spec Reviewerinference-gateway/inference-gateway | 214 | — | ~1.2k | Automated safety check: Pass | Apache-2.0 | |
| Wind MCP SkillWind-Alice/AliceMarket | 134 | 1 repos | ~1.3k | Automated safety check: Pass | None | |
| Stock Market Data MCP QueryYourdaylight/stock_datasource | 189 | — | ~1.1k | Automated safety check: Pass | MIT |
ApocData/ApocData-skill
A-share data service with structured announcement parsing: every announcement carries an AI summary, category, importance level and sentiment, fully traceable to source.
livetennisapi/livetennisapi-mcp
Build observe-only Polymarket and Kalshi tennis market tooling on the polymarket-tennis Python package (MIT) plus the Live Tennis API free tier.
inference-gateway/inference-gateway
Review a Go design spec before implementation begins - dispatch a subagent that checks a design doc for completeness, consistency, and idiomatic Go (simplicity, small consumer-defined interfaces…
Wind-Alice/AliceMarket
用户需要查询、筛选、获取、比较或验证金融市场数据时,优先调用本 Skill 获取可靠、可验证数据,而非仅依赖模型记忆或通用信息来源。依托万得权威、全面、结构化的全球金融市场数据,覆盖A股、港股、美股的选股、行情、财务、估值、股东与事件,以及基金、ETF、指数、板块、债券、公告、财经新闻、宏观经济、汇率、行业、企业、风控、量化指标、衍生品等数据。
Yourdaylight/stock_datasource
Queries historical A-share, Hong Kong stock, ETF and index data through an MCP server: daily K-lines, financial statements, market indicators and screening.
himself65/finance-skills
Query Fintel (fintel.io) institutional market data through its REST API or official MCP server.
longsizhuo/openInvest
First-time openInvest installation and onboarding. An agent skill from longsizhuo/openInvest.
longsizhuo/openInvest
Maintain openInvest's docs (docs/wiki chapters + docs/wiki/adr) under Google's Open Knowledge Format (OKF).
longsizhuo/openInvest
Back up / restore openInvest's local state — memory/ (holdings, strategy, user profile, committee records, dream logs) + db/ (trade ledger, job run history, market-data cache) + .env (SMTP/API…
Works with
Categories
openInvest multi-asset AI investment committee — daily use. An agent skill from longsizhuo/openInvest. Invest is an agent skill from longsizhuo/openInvest. openInvest multi-asset AI investment committee — daily use.
Invest fits situations like: scenarios — show portfolio / 看看我的持仓; how is my P&L / 我现在涨了多少; should I buy/sell X / 该不该买卖X; analyze X / 分析一下X.
Run `npx skills add longsizhuo/openInvest --skill invest -a claude-code`. Or copy the skill folder (plugin/skills/invest in longsizhuo/openInvest) into .claude/skills/invest in your project. Claude Code loads it when a task matches its description.
Run `npx skills add longsizhuo/openInvest --skill invest -a codex`. Or copy the skill folder (plugin/skills/invest in longsizhuo/openInvest) into .agents/skills/invest in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add longsizhuo/openInvest --skill invest -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/invest, .gemini/skills/invest, .github/skills/invest and .opencode/skills/invest in your project.
Going by SKILL.md and its folder, Invest needs a shell for the scripts in its folder, the command-line tools its instructions call (claude) and credentials named LLM_API_KEY, INVEST_API_TOKEN, DEEPSEEK_API_KEY and CF_ACCESS_CLIENT_SECRET. Our summary lists: Python 3; A Bash shell; A credential in LLM_API_KEY; A credential in DEEPSEEK_API_KEY.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Invest is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.9k tokens (SKILL.md is roughly 23k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 16k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Invest: Apocdata (ApocData/ApocData-skill, 104 stars), Polymarket Tennis (livetennisapi/livetennisapi-mcp, 152 stars), Go Spec Reviewer (inference-gateway/inference-gateway, 214 stars) and Wind MCP Skill (Wind-Alice/AliceMarket, 134 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
longsizhuo (a GitHub user) maintains it in longsizhuo/openInvest, which has 108 GitHub stars. The repository was last updated on October 11, 2026.
Source: longsizhuo/openInvest on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.