Runs every weekday, 08:35 UTC

Institutional-grade stock research, on autopilot.

34 InvestSkill analysis frameworks, driven by GitHub Actions and Gemini 3.6 Flash. Pick a ticker, pick a depth, and a full research report lands in the repo — no data vendor, no subscription, no API bill beyond your own key.

Free market data via yfinance · Reports in Traditional Chinese (繁體中文) by default

output/full_report/msft/full_report_2026-07-28.md
Composite score 8.2/10
Signal · 12 months+ ▲ Bullish
Signal · 1–3 months Neutral / correction
Confidence High
Modules run 15 comprehensive
34Analysis frameworks, synced to InvestSkill v1.12.0
156Reports committed as of 29 Jul 2026
16Tickers covered across five report types
$0Spent on market data or subscriptions

Showcase · 繁體中文

All 27 frameworks, run on one four-stock basket.

A worked example in Traditional Chinese: MU, SKHY, MRVL and SNDL — three memory/AI semis plus one deliberate outlier — all four of which gapped down 7.8–9.6% on the same day. Eight report pages covering the full framework catalogue and all seven cookbook workflows.

8Report pages, all in Traditional Chinese
27Frameworks exercised, none skipped
A–GCookbook workflows run — two correctly refuse to produce a setup
3Data defects left in on purpose, for result-validator to catch

Also in the showcase: MRVL — GAAP 與 non-GAAP 的鴻溝 (goodwill is 77% of equity; three valuation methods disagree by an order of magnitude) and SNDL — 0.41 倍淨值,但淨值在融化 (a value trap anatomy where even the bear-case DCF sits above the current price). Every figure is computed from one shared yfinance snapshot dated 29 Jul 2026 and is independently recomputable.

What we analyse

Every angle on a ticker, one framework at a time.

Each framework is a structured prompt from the InvestSkill plugin. Every one ends in the same investment signal block — score out of 10, direction, confidence, and a buy / hold / avoid call — so modules can be compared and combined.

34 frameworks in total. Three are kept as redirects to the skill they were merged into: dcf-valuation → stock-valuation, fundamental-analysis → stock-eval, and research-bundle → full-report's depth flag.

Pick your depth

Five modules or fifteen — same pipeline.

One shared market-data snapshot feeds every module in the run, then a synthesis pass reconciles the signal blocks into a single verdict. A module that fails is recorded and skipped; it never takes the run down with it.

5 modules

Quick

Rapid screen when time is the constraint.

  • stock-eval
  • technical-analysis
  • dcf-valuation
  • insider-trading
  • earnings-call-analysis
--depth quick
10 modules

Standard

Balanced research before opening a position.

  • Everything in Quick, plus:
  • institutional-ownership
  • competitor-analysis
  • sector-analysis
  • options-analysis
  • short-interest
--depth standard
Default 15 modules

Comprehensive

Full pre-commitment due diligence.

  • Everything in Standard, plus:
  • fundamental-analysis
  • stock-valuation
  • economics-analysis
  • financial-report-analyst
  • dividend-analysis
--depth comprehensive

How it works

Four steps, no infrastructure.

The whole thing is a Python package and a handful of GitHub Actions workflows. Trigger one by hand, or let the weekday schedule do it.

1 Load the frameworks git clone yennanliu/InvestSkill — GEMINI.md becomes the system context, prompts/*.md the frameworks 2 Snapshot the market One yfinance fetch per run: price history, financials, valuation inputs 1 fetch · shared by every module 3 Run the modules 5, 10 or 15 frameworks against that same snapshot; a failure is recorded, never fatal to the run 4 Commit the report Markdown to output/, Mermaid linted, bot pushes to main no infrastructure to run
The synthesis pass reconciles every module's signal block into one verdict — see the worked example for the same pipeline drawn against real numbers.

Load the frameworks

The workflow clones yennanliu/InvestSkill so GEMINI.md becomes the system context and prompts/*.md supply the frameworks.

Snapshot the market

One yfinance fetch per run — price history, financials, and valuation inputs — shared across every module so the numbers can't drift mid-report.

Run the modules

Each framework goes to the model with the shared snapshot. Gemini 3.6 Flash by default; --provider openai or claude swaps it.

Commit the report

Markdown is written to output/<type>/<ticker>/, Mermaid charts are linted, and the bot commits it back to main.

Coverage

16 tickers, 156 reports, all in the open.

Every report is committed to the repository, including the ones that aged badly. Main keeps the last 30 days, and older reports stay in git history. These links open the repository as of 2026-09-27, before the first cleanup.

Dates show the latest full report per ticker in that snapshot. Also archived: stock-eval, DCF valuation, fundamental analysis, and CrewAI multi-agent runs.

Bring your own model

One pipeline, three providers.

Set the matching API key as a repository secret and pass --provider. Defaults live in one file.

Default Google Gemini gemini-3.6-flash · 20,000 max output tokens

Secret: GEMINI_API_KEY

OpenAI gpt-4o · 16,000 max output tokens

Secret: OPENAI_API_KEY

Anthropic Claude claude-sonnet · 8,000 max output tokens

Secret: ANTHROPIC_API_KEY

Get started

Fork it, add one key, get a report tomorrow morning.

Add GEMINI_API_KEY to your repository secrets, edit the scheduled ticker, and the weekday cron takes over from there.