Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add Senpi-ai/senpi-skills --skill senpi-portfoliogit clone --depth 1 https://github.com/Senpi-ai/senpi-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/senpi-ai/senpi-skills/senpi-portfolio)<a href="https://agentmods.dev/skills/senpi-ai/senpi-skills/senpi-portfolio"><img src="https://agentmods.dev/badge/skills/senpi-ai/senpi-skills/senpi-portfolio/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/senpi-ai/senpi-skills/senpi-portfolio"><img src="https://agentmods.dev/badge/skills/senpi-ai/senpi-skills/senpi-portfolio.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 2 findings, up to high
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- high Memory Poisoning · line 540 Skill manipulates agent memory, state, or stored context. Memory corruption can alter personality, override safety rules, or cause unpredictable behavior.Fix: Protect agent memory and state from modification by untrusted content. Use read-only memory for critical instructions and validate all state changes.
- medium Excessive Agency · line 716 Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.Fix: Add human-in-the-loop confirmation for destructive, irreversible, or high-impact operations. Never auto-execute commands that modify files, send data, or alter system state.
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00385 | $0.14217 |
| Opus 5.5 | $0.00154 | $0.05687 |
| Sonnet 5.5 | $0.00077 | $0.02843 |
| Haiku 4.5 | $0.00038 | $0.01422 |
Grade A, and why
senpi-portfolio scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured today.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 734 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Senpi Portfolio — real-time, all-wallet analysis
Follow-ups first — the router
Follow-ups: answer only what is new. Re-run the one step the question needs (numbers always come from a fresh read, never an earlier one), answer that question, and never re-send the wallet list, the book total, or verdicts and figures already shown unless the user asks for them again.
| The ask | Step to run | Read first |
|---|---|---|
| "how much idle / where's my money / balance across wallets / grand total / my wallets", a wallet they added | money |
"One wallet list" below |
| "are my strategies protected? / do they have a stop-loss? / how are my strategies doing / analyze my strategies / what's their DSL / mandate" | strategies |
references/dsl.md (protection), references/mandate.md (verdicts), references/runtime-health.md (liveness) |
| "is it running / health check / degraded / not running / could not verify / it looks stuck / restart it" | strategies |
references/runtime-health.md |
| "why hasn't it traded / why didn't it open X / no signals" | strategies |
references/why-not-trading.md |
a copy-trade (strategy_kind: "mirror") |
strategies |
references/mirror-strategies.md |
| "analyze my positions / my positions vs the market / net exposure / concentration / idle drag" | positions |
references/analysis-framework.md |
| "analyze my portfolio / how am I doing" (the full read) | money → strategies → positions, narrating between |
references/output-contract.md, references/runtime-health.md (liveness) |
| "what happened to my closed X / did my trade go through / do I still hold X" | strategies (closed), positions |
"Source of truth" below |
| "go deeper on X" (the deep-dive answer) | a strategy: strategies; a wallet they added: its row; the Senpi main wallet: embedded_wallet |
— |
| add / change / remove a stop or DSL | nothing here — this skill reads; offer it, then senpi-trade |
"This skill reads" below |
| score / rate / grade my trading | quant-desk on these wallets |
— |
| "where am I leaking / did a stop fail / exit quality", trade history | senpi-improve-trades |
— |
| what a JSON field means | — | references/output-fields.md |
a read failed: meta.degraded, meta.warnings, reconciles: false, a null figure |
re-run that step | references/output-contract.md ("Resilience") |
| run this on a schedule | — | say the cost first: every firing is a full model call; at most twice a day, after a yes ("Run it in steps") |
| close / pause / keep / top up ONE wallet of a strategy | — | the no-no below: whole strategy only |
| a yes to CTA 1 / CTA 2, or a digit (after the CTAs: that CTA; after the idle menu: that option), or a question about a menu option or its numbers | the levers / the ready options | references/output-contract.md (the menu) |
What ships with it
24 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- references/analysis-framework.md 6.2 KB
- references/dsl.md 7.9 KB
- references/mandate.md 6.9 KB
- references/mirror-strategies.md 2.2 KB
- references/output-contract.md 14 KB
- references/output-fields.md 16 KB
- references/rationale.md 5.5 KB
- references/runtime-health.md 14 KB
- references/why-not-trading.md 6.8 KB
- scripts/mcp_client.py 6.1 KB runs code
- scripts/portfolio.py 157 KB runs code
- tests/fixtures/portfolio_fixture.json 3.2 KB
- tests/fixtures/runtimes_list.json 582 B
- tests/test_close_recency.py 5.7 KB runs code
- tests/test_closed_stats.py 9.7 KB runs code
- tests/test_name_reader_parity.py 24 KB runs code
- tests/test_portfolio_external_wallets.py 20 KB runs code
- tests/test_portfolio_one_wallet_list.py 32 KB runs code
- tests/test_portfolio_skill_layout.py 34 KB runs code
- tests/test_portfolio.py 113 KB runs code
- tests/test_prescribed_tools_exist.py 1.8 KB runs code
- tests/test_skill_raw_position_stop.py 746 B runs code
- tests/test_skill_source_trader_read.py 1.3 KB runs code
- tests/test_your_wallets_wording.py 8.4 KB runs code
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- today Changed 7f8757484590
- yesterday Changed 069957511dcb
- 7d ago Changed · +1 lines 7536106d5fa4
- 9d ago Changed 5bc25630e768
- 10d ago Changed fa6557f17305
- 13d ago Changed · -369 lines bb553132cc5b
- 15d ago Changed · +1 lines 00aac38332b3
- 20d ago Changed · +9 lines 4b092c48bc77
- 27d ago Changed · +136 lines · +33 tokens per session 8dfd4df5e0c8
- 1mo ago First seen · 956 lines · 352 tokens per session scan A 28b8cf812b50
senpi-portfolio is a skill published in the GitHub repository Senpi-ai/senpi-skills (144 stars, last pushed yesterday), licensed MIT. It adds 385 tokens to every session and 14,217 once invoked, about $0.0015 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
senpi-portfolio compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| senpi-portfolioSenpi-ai/senpi-skills | Skill | 144 | yesterday | MIT | A | 385 | Claude Code, Codex |
| sector-rotationHKUDS/Vibe-Trading | Skill | 38k | yesterday | MIT | A | 39 | Claude Code, Codex |
| twitter-readerhimself65/finance-skills | Skill | 3.5k | 2d ago | MIT | A | 110 | Claude Code |
| strategy-pivot-designertradermonty/claude-trading-skills | Skill | 3.7k | 2d ago | MIT | A | 28 | Claude Code, Codex |
| energy-procurementhashgraph-online/awesome-codex-plugins | Skill | 1.5k | yesterday | Apache-2.0 | A | 93 | Claude Code, Codex |
| airdrop-hunting-guidenirholas/three.ws | Skill | 269 | today | Apache-2.0 | A | 54 | Claude Code, Codex |
| multi-expert-analyzerdigoal/blog | Skill | 8.6k | 2d ago | GPL-2.0 | A | 292 | Codex |