Borrowing it
Nothing to install: this file belongs to PatrickSUDO/fadacai-portfolio. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/PatrickSUDO/fadacai-portfolio/main/.agents/skills/portfolio-review/SKILL.mdgit clone --depth 1 https://github.com/PatrickSUDO/fadacai-portfolioWrote 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/patricksudo/fadacai-portfolio/portfolio-review)<a href="https://agentmods.dev/skills/patricksudo/fadacai-portfolio/portfolio-review"><img src="https://agentmods.dev/badge/skills/patricksudo/fadacai-portfolio/portfolio-review/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/patricksudo/fadacai-portfolio/portfolio-review"><img src="https://agentmods.dev/badge/skills/patricksudo/fadacai-portfolio/portfolio-review.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 1 finding, up to medium
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 →
- medium Excessive Agency · line 5 Skill selects an external model or provider that may use a different account or billing plan than the operator expects. Undisclosed model switches can cause unexpected cost or quota consumption.Fix: Remove the model/provider override or disclose it prominently and require explicit operator approval before invoking an external coding CLI or billed model.
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.00037 | $0.12651 |
| Opus 5.5 | $0.00015 | $0.05060 |
| Sonnet 5.5 | $0.00007 | $0.02530 |
| Haiku 4.5 | $0.00004 | $0.01265 |
Grade A, and why
portfolio-review 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 17d ago.
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 — 710 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Portfolio Review
Generate a comprehensive portfolio report from the user's live brokerage positions (via the firstrade-server MCP).
Step 0: 配置同步 & 倉位偵測
執行 AGENTS.md 的 Step 0 統一規範(0a → 0b → 0c → 0d → 0e)。
- 讀
plan.md+feedback/*.md(必做);在後續分析中引用板塊目標與策略佇列 - 呼叫
get_account_position取即時持倉 - 今日 journal 不存在 → 執行 gap-fill + 變動偵測 + 自動建立 journal
- 0e 第一性原理紀律:在「下一步建議」之前必須完成「組合層級 thesis / 證偽條件 / 機率分布」三題(見 AGENTS.md 0e)
Step 0.5: Macro + Earnings + Fundamentals Cache Load
讀以下四份 cache(由各預載腳本維護):
briefing-out/cache/macro-snapshot.json— 供 Step 0e 與 probability-honesty-checker Step 1ibriefing-out/cache/earnings-history.json— 供 Section F Key Alerts、Section G 個股 thesis、及 probability-honesty-checker Step 1d base ratebriefing-out/cache/earnings-dates.json— 供 Section F earnings window 警示briefing-out/cache/fundamentals-snapshot.json(TTL 24h,tools/fetch_fundamentals.py預載)— 供 Section G3.5 三錨點估值、probability-honesty-checker Step 1d/1hbriefing-out/cache/leading-indicators.json(TTL 20h,tools/fetch_leading.py預載,配置research/leading-config.json)— 供 Section F 🚦 regime-break / 台股月營收轉負 / revision decel 旗標(display-only,記錄不阻擋,同影子訊號 A4);revision_delta.status == "warming_up"→ 不產生 decel 旗標;blockcarried_forward→ 標前日值
判定 fundamentals cache:
status == "ok"且 mtime < 30h → 使用(Section G3.5 三錨點計算直接取 highlights)status == "skipped"/ mtime > 30h / 缺失 → 標⚠️ Fundamentals cache stale/missing,派 Agent 即時補抓(同 briefing Deep 模式):Agent(subagent_type="data-collector"): 呼叫 mcp__eodhd-mcp__get_fundamentals_snapshot 對所有 >3% 持倉 (TICKER.US) 回傳 dict {ticker: {snapshot:{...}, base_rate:{...}}}pe_ratio == 0.0 / null→ 丟棄 A1 錨;peg_ratio == 0.0 / null→ 丟棄 A2 錨;不猜測
若 macro status == "skipped" → Section K 第一性檢查標記 Macro: unavailable,probability-honesty-checker 1i 填 unavailable。
若 earnings cache 過期 > 36h → 加註 ⚠️ cache stale (X h)。
若 cache 缺某 ticker → Section F 該 ticker earnings 列 (unavailable),prompt 提示手動 python3 tools/earnings_history.py --force。
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.
- 17d ago Changed · +3 lines 05af54018d82
- 1mo ago Changed · +6 lines eb7c12e28d15
- 1mo ago Changed · +1 lines 39a947d1fc21
- 1mo ago Changed d1a9b03392c5
- 1mo ago Changed 2d997e35f386
- 2mo ago First seen · 700 lines · 37 tokens per session scan A 5da9f7a5d537
portfolio-review is a skill published in the GitHub repository PatrickSUDO/fadacai-portfolio (144 stars, last pushed 7d ago), licensed MIT. It adds 37 tokens to every session and 12,651 once invoked, about $0.0001 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.
portfolio-review compared with skills from other repositories
| Mod | Type | Stars | Last push | Licence | Scan | Tokens | Works with |
|---|---|---|---|---|---|---|---|
| portfolio-reviewPatrickSUDO/fadacai-portfolio | Skill | 144 | 7d ago | MIT | A | 37 | Claude Code |
| 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 | yesterday | Apache-2.0 | A | 54 | Claude Code, Codex |
| multi-expert-analyzerdigoal/blog | Skill | 8.6k | 2d ago | GPL-2.0 | A | 292 | Codex |