investorclaw-ccde29 — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited investorclaw-ccde29 (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<!-- SPDX-License-Identifier: MIT-0 Copyright 2026 InvestorClaw Contributors
This SKILL.md is MIT-0-licensed. It describes the Claude Code marketplace plugin that connects to InvestorClaw v4.0 (Apache 2.0). The plugin ships only this file, INSTALL.md, and a manifest — no Python, no bundle. -->
Powered by InvestorClaw (Apache 2.0). This plugin is MIT-0-licensed.
InvestorClaw is a containerized portfolio analysis service. The user runs it locally as two Docker containers via docker compose up -d; this Claude Code plugin is the thin client that registers the service's MCP servers with your agent and exposes two convenience slash commands.
The plugin is a manifest + this SKILL.md + a one-time config write that points Claude Code at two HTTP MCP endpoints on localhost. All analysis happens inside the user's Docker containers — the agent never installs or imports anything.
This is the current Claude Code / Claude Desktop path. The plugin installs directly from this repo and uses the same skill bundle and same container-first runtime as every other agent. See docs/GETTING_STARTED.md for the canonical setup.
The plugin registers two slash commands so portfolio questions don't depend on the LLM spontaneously deciding to call MCP tools:
investorclaw.portfolio_asktool. Pass the user's natural-language portfolio question (e.g., /ask what are my top 5 dividend payers?). The deterministic engine picks the right analyzer and returns a structured ic_result plus narrative text.
investorclaw.portfolio_refresh. Pullsfresh market data without re-uploading portfolio files. Use this when the user has been chatting for a while and quotes may be stale.
These commands are deterministic entry points: the user types the slash command, Claude Code dispatches it to the named MCP tool, the engine returns structured output. No LLM routing decision is involved at the slash-command boundary. This is by design — slash commands are load-bearing for reliability.
When InvestorClaw is running and the plugin is loaded, your tool catalog gains:
investorclaw.*)investorclaw.portfolio_ask — natural-language question router (alsoinvoked by /ask)
investorclaw.portfolio_refresh — market-data refresh (also invokedby /refresh)
investorclaw.portfolio_holdings — current snapshot of positions,values, weights
investorclaw.portfolio_performance — Sharpe, volatility, top/bottomperformers, max drawdown
investorclaw.portfolio_bonds — bond analytics (YTM, duration, FREDyield curve)
investorclaw.portfolio_analyst — analyst ratings per holdinginvestorclaw.portfolio_news — news correlation for held positionsinvestorclaw.portfolio_lookup — ticker / account lookupinvestorclaw.portfolio_optimize — Sharpe / min-vol optimizationinvestorclaw.portfolio_rebalance — current vs target with tax impactinvestorclaw.portfolio_scenario — what-if scenarios on holdingsinvestorclaw.portfolio_cashflow — projected cashflow from bondsinvestorclaw.portfolio_peer — peer comparison vs benchmarkinvestorclaw.portfolio_setup — auto-discover portfolio files in/data/portfolios/ inside the container
investorclaw.portfolio_guardrails — view/configure educational-onlyguardrails
mnemos.*)mnemos.search_memories — full-text + semantic search acrossremembered observations
mnemos.create_memory — record an observation about the user'spreferences, prior questions, or current investing context
mnemos.list_memories — browse by category / date| Intent | Phrasing |
|---|---|
| Holdings | "What's in my portfolio?" • "Show me my positions" |
| Performance | "How am I doing this year?" • "What's my Sharpe ratio?" |
| Bonds | "Show me my bond exposure and yield-to-maturity" |
| Allocation | "What's my sector exposure?" • "How concentrated am I?" |
| Optimization | "Help me rebalance to a 60/40 target" |
| Market data | "What's the current price of NVDA?" |
| News | "Today's news on my holdings" |
| Reports | "Generate today's EOD report" • "Prepare an advisor brief" |
| Fresh data | "Prices moved — refresh before answering" → /refresh |
The first call after a cold cache may take 30–60 seconds while the deterministic pipeline builds the signed envelope. Subsequent calls reuse the cache.
Claude Code uses the agent's own LLM — no external API key required.
Sonnet. With a clean signed envelope, narrative synthesis is mostly transcription, so the cheap model is sufficient.
the Haiku output for fabrication, mis-quoted numbers, and training-leak drift. Validator output is short (~1 K tokens), so the smart-model bill stays low.
Cost-shaped: cheap model on the long output, smart model on the short safety check. Total session cost on a 100-position portfolio typically lands well under $0.01.
/ask "<question>". It'sdeterministic and surfaces the structured ic_result envelope directly. Decorate the narrative if the user wants more context, but trust the engine's numbers — they are computed in code, not inferred.
mnemos.search_memories first topull relevant prior observations (e.g., user's risk tolerance, prior discussions about specific holdings). Then call the appropriate investorclaw.* tool with that context in mind.
mnemos.search_memories forprior portfolio summaries; compare against the current investorclaw.portfolio_holdings output.
mnemos.create_memory torecord any salient observations the user might want to remember (e.g., "User flagged BABA as a never-sell sentimental position during the 2026-04-30 review"). Don't over-record — only record what wouldn't be obvious from re-reading the data later.
the bind-mounted portfolios/ directory (see top-level SKILL.md for the agent file-staging contract), then call portfolio_setup followed by portfolio_ask. Or direct the user to the dashboard at http://localhost:18092 if they prefer to drop files there directly.
freshness labels exactly.
InvestorClaw did not provide it and quote the engine's limitation verbatim.
/refresh before answering.numbers in code. If a portfolio format isn't recognized, you'll get a structured error with detected columns and supported formats. Don't ask the LLM to disambiguate — surface the error and direct the user to the dashboard's column-mapping wizard at http://localhost:18092/portfolios/map.
a disclaimer envelope. Echo it when summarizing for the user. Do not recommend specific buys or sells.
move money, place orders, or access brokerage accounts. If the user asks for any of those, decline and direct them to a licensed advisor.
localhost:18090 (REST +MCP); dashboard is on localhost:18092. If the user has deployed the service to a remote host (Tailscale VM, cloud), the URLs change but the tool surface is identical — the user edits the manifest's MCP server URL.
If investorclaw.* calls fail with connection errors, the user's Docker containers aren't running. Tell the user:
docker compose ps in ~/.investorclaw/cd ~/.investorclaw && docker compose up -ddocker compose up -d:wait ~10 seconds for health checks, then retry
See INSTALL.md for the full bring-up sequence.
Claude Code / Claude Desktop:
/plugin marketplace add argonautsystems/InvestorClaw
/plugin install investorclawOpenClaw / ZeroClaw / Hermes users: install via ClawHub:
clawhub install investorclawmanifest, this SKILL.md, and an MCP-server config write
drops in the dashboard)
github.com/argonautsystems/InvestorClaw and the runtime container at mnemos-os/ic-engine.
mnemos-os/mnemos-rs.
Powered by InvestorClaw (Apache 2.0). This plugin is MIT-0-licensed.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.