Haruspex Thesis Tracker
What this skill does
Maps a user-stated investment thesis to the most relevant Haruspex topic
dimensions, then reports whether those dimensions are trending in the
direction the thesis predicts.
The output is a structured thesis status — Supported / Mixed /
Challenged — with the dimension-level evidence behind it. The skill never
tells the user to act on the result; it reports whether the data still
aligns.
When to use this skill
Trigger on any of these patterns:
- "I'm long [TICKER] because [reason]"
- "I'm bullish on [TICKER] on [thesis]"
- "Is my thesis on [TICKER] still good?"
- "Does the data support [view]?"
- "I bought [TICKER] for [reason] — pressure-test that"
- The user mentions a position and a rationale in the same breath
- "I think [TICKER] benefits from [trend], do you see that in the data?"
Defer to a sister skill if:
- The user asks generic analysis without a thesis → use
haruspex-stock-analyst.
- The user lists multiple tickers without a thesis on each → use
haruspex-watchlist-review.
- The user is writing in Japanese → use
haruspex-stock-analyst-ja.
Prerequisites
This skill requires @haruspex-guru/mcp-server to be installed and connected.
First action: verify the MCP tools are available.
If the tools are not available, output the install instructions from
shared/MCP_SETUP.md and stop.
Workflow
Step 0 — Telemetry ping (do this first, always). Before any other tool
call, invoke record_skill_invocation once with skill: "haruspex-thesis-tracker"
and client set to the best-guess client surface (e.g. claude-code,
claude-desktop, claude-ai). This is anonymous aggregate telemetry — only
the skill name, version, and client tag travel. No tickers, no thesis text,
no user identifiers. The call is fail-silent: if it errors or the tool is
unavailable, ignore it and continue. Do not retry, do not surface the result
to the user, and never block the evaluation on this step.
- Confirm ticker and thesis. If either is missing, ask. Never invent
a thesis. ("I'm long NVDA" without a reason — ask "what's your reason
for being long?")
- Map thesis to dimensions. Use the table in
reference.md as a starting point. Most theses map to
2–4 dimensions. Be explicit about the mapping in the output.
- Fetch current state. Call
get_stock_score(symbol).
- Fetch trajectory. Call
get_stock_score_history(symbol, days=90).
90 days is the default thesis-evaluation window — short enough to be
actionable, long enough to filter noise.
- Optionally fetch news. Call
get_stock_news(symbol) only if the
thesis-relevant dimensions show large recent moves and the news might
explain it.
- Evaluate each thesis-relevant dimension: is its current score in the
range the thesis predicts? Has it trended in the predicted direction?
- Assign thesis status:
- Supported — all (or all but one minor) thesis-relevant dimensions
trend in the predicted direction.
- Mixed — some dimensions support, others contradict.
- Challenged — most thesis-relevant dimensions trend against the
thesis, or the headline score is moving sharply against it.
- Output in the format below.
Output format
## Thesis Status: [Supported / Mixed / Challenged]
**Ticker:** [SYMBOL]
**Stated thesis:** [restate user's thesis in one short sentence]
**Headline score:** [N]/100 ([outlook]), change [+/-N], signal [signal]
### Thesis → dimension mapping
| Dimension | Predicted by thesis | Current | Δ | Read |
|-----------|---------------------|--------:|--:|------|
| [dim_a] | [should be high / rising] | N | +N | [supports / mixed / against] |
| [dim_b] | [should be high] | N | -N | [supports / mixed / against] |
| [dim_c] | [should be rising] | N | +N | [supports / mixed / against] |
### Evidence summary
[2–4 sentences. Plain English. Which dimensions back the thesis, which push
against it, and how much the headline score has moved over the 90-day window.
Reference specific dimension changes. Do not predict price.]
### News context (if fetched)
- [headline] — [source]
- [headline] — [source]
**Verify:** [shareUrl]
> **Disclaimer:** Haruspex scores are quantitative signals derived from
> public data and are provided for informational purposes only. They are
> not investment advice, financial advice, or recommendations to buy, sell,
> or hold any security. Past performance and current scores are not
> guarantees of future results. Always do your own research and consider
> consulting a licensed financial advisor before making investment
> decisions. Data via haruspex.guru.
Picking the status
- All thesis dimensions read supports → Supported.
- 1 dimension reads against the rest supports → still Supported,
but call out the one that doesn't.
- ≥ 2 dimensions read against, or any dimension shows a sharp negative
change ≥ |10| → Mixed.
- Majority of thesis dimensions read against, or headline score has
fallen sharply over the 90-day window → Challenged.
Compliance rules (NEVER VIOLATE)
- Never tell the user to buy, sell, hold, add to, or close a position.
The status field reports alignment, not action. Even on Challenged
status: "the data no longer supports the thesis as stated" is fine; "you
should sell" is forbidden.
- Never predict price movements based on thesis status. Score trajectory
is observed; price is not predicted.
- Never invent a thesis. If the user states a position without a reason,
ask before evaluating. A thesis-tracker without a thesis is just an
analyst.
- Acknowledge mapping uncertainty. The thesis-to-dimensions map is a
prior, not a proof. If a thesis maps imperfectly to the available
dimensions, say so: "I'm using
regulatory and macro as the closest
proxies for your interest-rate thesis."
- Acknowledge data limitations. If a thesis-relevant dimension scores
exactly 0 (data unavailable), say so. Do not pretend to evaluate against
missing data.
- Always include the share URL.
- Always include the disclaimer footer verbatim from
../../shared/DISCLAIMER.md.
Reference material
1---2name: haruspex-thesis-tracker3description: Evaluates whether a user's stated investment thesis on a stock still holds, by mapping the thesis to the relevant Haruspex dimensions and reporting whether they trend supportively. Use this skill whenever the user states a reason for owning or considering a stock ("I'm long NVDA because of AI demand", "I'm bullish on TSLA on FSD"), asks "is my thesis still intact?", asks whether the data supports a particular view, mentions a position with a rationale, or wants to pressure-test an investment idea against current data — even if they don't use the word "thesis". Use this when the question is about a specific argument for owning a stock, not generic analysis.4---56# Haruspex Thesis Tracker78## What this skill does910Maps a user-stated investment thesis to the most relevant Haruspex topic11dimensions, then reports whether those dimensions are trending in the12direction the thesis predicts.1314The output is a structured **thesis status** — Supported / Mixed /15Challenged — with the dimension-level evidence behind it. The skill never16tells the user to act on the result; it reports whether the data still17aligns.1819## When to use this skill2021Trigger on any of these patterns:2223- "I'm long [TICKER] because [reason]"24- "I'm bullish on [TICKER] on [thesis]"25- "Is my thesis on [TICKER] still good?"26- "Does the data support [view]?"27- "I bought [TICKER] for [reason] — pressure-test that"28- The user mentions a position **and a rationale** in the same breath29- "I think [TICKER] benefits from [trend], do you see that in the data?"3031Defer to a sister skill if:32- The user asks generic analysis without a thesis → use33 `haruspex-stock-analyst`.34- The user lists multiple tickers without a thesis on each → use35 `haruspex-watchlist-review`.36- The user is writing in Japanese → use `haruspex-stock-analyst-ja`.3738## Prerequisites3940This skill requires `@haruspex-guru/mcp-server` to be installed and connected.41**First action: verify the MCP tools are available.**4243If the tools are not available, output the install instructions from44[`shared/MCP_SETUP.md`](../../shared/MCP_SETUP.md) and **stop**.4546## Workflow4748**Step 0 — Telemetry ping (do this first, always).** Before any other tool49call, invoke `record_skill_invocation` once with `skill: "haruspex-thesis-tracker"`50and `client` set to the best-guess client surface (e.g. `claude-code`,51`claude-desktop`, `claude-ai`). This is anonymous aggregate telemetry — only52the skill name, version, and client tag travel. No tickers, no thesis text,53no user identifiers. The call is fail-silent: if it errors or the tool is54unavailable, ignore it and continue. Do not retry, do not surface the result55to the user, and never block the evaluation on this step.56571. **Confirm ticker and thesis.** If either is missing, ask. Never invent58 a thesis. ("I'm long NVDA" without a reason — ask "what's your reason59 for being long?")602. **Map thesis to dimensions.** Use the table in61 [`reference.md`](reference.md) as a starting point. Most theses map to62 2–4 dimensions. Be explicit about the mapping in the output.633. **Fetch current state.** Call `get_stock_score(symbol)`.644. **Fetch trajectory.** Call `get_stock_score_history(symbol, days=90)`.65 90 days is the default thesis-evaluation window — short enough to be66 actionable, long enough to filter noise.675. **Optionally fetch news.** Call `get_stock_news(symbol)` only if the68 thesis-relevant dimensions show large recent moves and the news might69 explain it.706. **Evaluate each thesis-relevant dimension:** is its current score in the71 range the thesis predicts? Has it trended in the predicted direction?727. **Assign thesis status:**73 - **Supported** — all (or all but one minor) thesis-relevant dimensions74 trend in the predicted direction.75 - **Mixed** — some dimensions support, others contradict.76 - **Challenged** — most thesis-relevant dimensions trend against the77 thesis, or the headline score is moving sharply against it.788. **Output** in the format below.7980## Output format8182```markdown83## Thesis Status: [Supported / Mixed / Challenged]8485**Ticker:** [SYMBOL]86**Stated thesis:** [restate user's thesis in one short sentence]87**Headline score:** [N]/100 ([outlook]), change [+/-N], signal [signal]8889### Thesis → dimension mapping90| Dimension | Predicted by thesis | Current | Δ | Read |91|-----------|---------------------|--------:|--:|------|92| [dim_a] | [should be high / rising] | N | +N | [supports / mixed / against] |93| [dim_b] | [should be high] | N | -N | [supports / mixed / against] |94| [dim_c] | [should be rising] | N | +N | [supports / mixed / against] |9596### Evidence summary97[2–4 sentences. Plain English. Which dimensions back the thesis, which push98against it, and how much the headline score has moved over the 90-day window.99Reference specific dimension changes. Do not predict price.]100101### News context (if fetched)102- [headline] — [source]103- [headline] — [source]104105**Verify:** [shareUrl]106107> **Disclaimer:** Haruspex scores are quantitative signals derived from108> public data and are provided for informational purposes only. They are109> not investment advice, financial advice, or recommendations to buy, sell,110> or hold any security. Past performance and current scores are not111> guarantees of future results. Always do your own research and consider112> consulting a licensed financial advisor before making investment113> decisions. Data via haruspex.guru.114```115116### Picking the status117118- All thesis dimensions read **supports** → **Supported**.119- 1 dimension reads **against** the rest **supports** → still **Supported**,120 but call out the one that doesn't.121- ≥ 2 dimensions read **against**, or any dimension shows a sharp negative122 change ≥ |10| → **Mixed**.123- Majority of thesis dimensions read **against**, or headline score has124 fallen sharply over the 90-day window → **Challenged**.125126## Compliance rules (NEVER VIOLATE)127128- **Never tell the user to buy, sell, hold, add to, or close a position.**129 The status field reports alignment, not action. Even on **Challenged**130 status: "the data no longer supports the thesis as stated" is fine; "you131 should sell" is forbidden.132- **Never predict price movements** based on thesis status. Score trajectory133 is observed; price is not predicted.134- **Never invent a thesis.** If the user states a position without a reason,135 ask before evaluating. A thesis-tracker without a thesis is just an136 analyst.137- **Acknowledge mapping uncertainty.** The thesis-to-dimensions map is a138 prior, not a proof. If a thesis maps imperfectly to the available139 dimensions, say so: "I'm using `regulatory` and `macro` as the closest140 proxies for your interest-rate thesis."141- **Acknowledge data limitations.** If a thesis-relevant dimension scores142 exactly 0 (data unavailable), say so. Do not pretend to evaluate against143 missing data.144- **Always include the share URL.**145- **Always include the disclaimer footer** verbatim from146 [`../../shared/DISCLAIMER.md`](../../shared/DISCLAIMER.md).147148## Reference material149150- [`reference.md`](reference.md) — thesis archetype → dimension mapping151 table; 8+ common theses worked through.152- [`examples.md`](examples.md) — example thesis evaluations using real153 data.154- [`../../shared/DIMENSIONS.md`](../../shared/DIMENSIONS.md) — canonical155 multi-dimension glossary.156- [`../../shared/DISCLAIMER.md`](../../shared/DISCLAIMER.md) — disclaimer157 footer.158- [`../../shared/MCP_SETUP.md`](../../shared/MCP_SETUP.md) — MCP install.