watchlist-tracker

Activate when Cowork is opened and watchlist monitoring cadence has elapsed. Activate when user says "check my watchlist", "what's new on my watchlist", "run watchlist", "any updates", "watchlist digest", or configures monitoring via /curiosity-stack:watchlist command. ALSO activate immediately — opening the watchlist UI — when user says any of: "add to watchlist", "add this to watchlist", "watch this", "monitor this", "put this on my watchlist", "track this", "add [topic] to watchlist". When triggered by an add request, open the UI with the topic pre-filled. Do NOT activate on every session — check last_run date in local.md first.

13 stars

Best use case

watchlist-tracker is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Activate when Cowork is opened and watchlist monitoring cadence has elapsed. Activate when user says "check my watchlist", "what's new on my watchlist", "run watchlist", "any updates", "watchlist digest", or configures monitoring via /curiosity-stack:watchlist command. ALSO activate immediately — opening the watchlist UI — when user says any of: "add to watchlist", "add this to watchlist", "watch this", "monitor this", "put this on my watchlist", "track this", "add [topic] to watchlist". When triggered by an add request, open the UI with the topic pre-filled. Do NOT activate on every session — check last_run date in local.md first.

Teams using watchlist-tracker should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/watchlist-tracker/SKILL.md --create-dirs "https://raw.githubusercontent.com/ameya85/curiosity-stack/main/skills/watchlist-tracker/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/watchlist-tracker/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How watchlist-tracker Compares

Feature / Agentwatchlist-trackerStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Activate when Cowork is opened and watchlist monitoring cadence has elapsed. Activate when user says "check my watchlist", "what's new on my watchlist", "run watchlist", "any updates", "watchlist digest", or configures monitoring via /curiosity-stack:watchlist command. ALSO activate immediately — opening the watchlist UI — when user says any of: "add to watchlist", "add this to watchlist", "watch this", "monitor this", "put this on my watchlist", "track this", "add [topic] to watchlist". When triggered by an add request, open the UI with the topic pre-filled. Do NOT activate on every session — check last_run date in local.md first.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

## Design system — mandatory on all HTML artifacts

Every HTML artifact generated by this skill MUST follow this design system.
No exceptions. Never invent colours, never use dark backgrounds, never use
purple or blue as primary backgrounds.

**Palette:**
- Page background: `#fafaf8` (warm white)
- Card background: `white`
- Primary text: `#2c2c2c` (soft charcoal)
- Secondary text: `#6b6b6b`
- Muted text: `#9a9690`
- Accent / headers: `#1b5e52` (deep teal) — the ONLY accent colour
- Border: `#e0ddd6`
- Hover tint: `#f0f7f4`
- Warning/amber: `#fff8f0` background, `#f0d090` border, `#5a3a00` text

**Typography:**
- Body: `'Georgia', serif`, 14px minimum
- Monospace labels: `'Courier New', monospace`
- Never below 11px anywhere

**Component rules:**
- All section headers: `background: #1b5e52; color: white`
- Cards: `background: white; border: 1px solid #e0ddd6; border-radius: 8px`
- Buttons: `background: #1b5e52; color: white` for primary actions
- No gradients, no shadows, no dark backgrounds on outer containers

**Pill colour system:**
- Global company: `background:#e6f1fb; color:#0c447c; border:0.5px solid #85b7eb`
- India listed: `background:#eaf3de; color:#27500a; border:0.5px solid #97c459`
- India private: `background:#faeeda; color:#633806; border:0.5px solid #ef9f27`
- Flagged: `background:#fcebeb; color:#791f1f; border:0.5px solid #f09595`
- Neutral segment: `background:#f3f4f6; color:#374151; border:0.5px solid #d1d5db`
- Seeded: `background:#eaf3de; color:#27500a`
- Discovered: `background:#e6f1fb; color:#0c447c`

**Attribution footer — mandatory on every artifact:**
```html
<div style="margin-top:32px;padding-top:12px;border-top:1px solid #e0ddd6;
  display:flex;justify-content:space-between;align-items:center;
  font-family:'Courier New',monospace;font-size:10px;color:#9a9690">
  <span>Curiosity Stack is not a SEBI registered investment advisor · Not investment advice · Makers accept no liability · For research only</span>
  <a href="https://curiositystack.app" target="_blank"
    style="color:#1b5e52;font-weight:700;text-decoration:none">
    ⬡ curiositystack.app
  </a>
</div>
```

---


# Watchlist Tracker + Trigger Alerts

## Purpose

A scheduled research monitoring agent. Runs automatically when Cowork is opened and the user's set cadence has elapsed. Monitors every item on the watchlist for material developments, maps findings to value chain layers, scores materiality, and delivers a digest to email (default) and surfaces it in Cowork.

---

## IMPORTANT — local.md Write Constraint

This plugin cannot write directly to local.md during a session due to Cowork's file system sandbox. Instead, after any configuration change, generate the exact YAML block the user needs to paste and instruct them clearly:

```
Your watchlist has been configured. To save this permanently,
open curiosity-stack.local.md and paste the following under
watchlist_topics:

[exact YAML block]

Open the file with:
  Windows: notepad "C:\path\curiosity-stack.local.md"
  Mac: open -e ~/path/curiosity-stack.local.md

Save and close. I'll read it on your next session.
```

Always generate the complete YAML block — never partial. Never ask the user to write YAML manually.

---

## Step 0 — Cadence Check

Before doing anything, silently read local.md:
- Check `watchlist_last_run` date
- Check `watchlist_cadence` (daily / weekly / fortnightly)
- If cadence has NOT elapsed → do nothing, stay silent
- If cadence HAS elapsed → run the full digest flow below

---

## Step 1 — Research Each Watchlist Item

For each item in the user's watchlist, run parallel research across all signal types the user has prioritised:

**Signal types:**
- 📰 News — significant coverage, narrative shifts
- 🏛️ Regulatory — policy changes, government announcements
- 🏢 New entrants — companies entering or exiting this value chain layer
- 💰 Funding — rounds raised by companies in this space
- 📊 Earnings / results — for listed companies

**Research sources:**
- Web search (recent news, last 7/14/30 days depending on cadence)
- Inc42, Tracxn (India-specific)
- NASSCOM, Ministry announcements (regulatory)
- Screener.in (listed India companies)
- User's connected sources

**Per item, for each signal found:**
- Identify which value chain layer it affects (L0–L6)
- Assess materiality: HIGH / MEDIUM / LOW
- Write 2-3 line explanation of why it matters

---

## Step 2 — Trigger Alert Check

After broad research, check each item's specific triggers:

If a trigger condition is met:
- Flag as 🚨 TRIGGER FIRED at top of digest
- Include full detail and reasoning
- Always HIGH materiality regardless of agent's assessment

---

## Step 3 — Compile Digest

```
CURIOSITY STACK — WATCHLIST DIGEST
[Daily / Weekly / Fortnightly] | [Date]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

🚨 TRIGGERS FIRED
[Only if any triggers met]

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

[TOPIC 1] — [HIGH / MEDIUM / LOW]
Layer affected: L[X] — [layer name]
Signal type: [News / Regulatory / New Entrant / Funding]

What happened:
[2-3 lines — factual, specific]

Why it matters:
[2-3 lines — how this changes or doesn't change the thesis]

Thesis impact: [Strengthens / Weakens / Neutral / Watch]

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

[TOPIC with no material change]
No material developments this period. ⚪

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Open Cowork to go deeper → claude.ai/cowork
Plugin: Curiosity Stack

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
⬡ Curiosity Stack · #CuriosityStack
finstor85.substack.com
Curiosity Stack is not a SEBI registered investment advisor · Not investment advice · Makers accept no liability · For research only
```

---

## Step 4 — Deliver Digest

**Email delivery (default):**
Use Gmail MCP connector.
Subject: `Curiosity Stack — [Cadence] Digest | [Date] | [X] updates`
If triggers fired: prepend 🚨 to subject.

**Cowork surface (always):**
```
Watchlist digest ready — [X] updates, [Y] triggers fired.
[View digest] or [Skip for now]
```

---

## Step 5 — Generate YAML for local.md update

After running, generate the update block:

```
Update your curiosity-stack.local.md — paste this:

watchlist_last_run: [today's date]
```

---

## `/curiosity-stack:watchlist` Command

```
Your Watchlist

Monitoring: [cadence] | Last run: [date] | Next run: [date]
Email digest: [on/off] → [email]

Tracked topics:
  → [topic 1] — [X triggers set] — last: [HIGH/MEDIUM/LOW/none]
  → [topic 2] — [X triggers set] — last: [HIGH/MEDIUM/LOW/none]

Options:
1. Add topic
2. Remove topic
3. Add / edit trigger
4. Change cadence
5. Toggle email digest
6. View last digest
7. View digest archive
```

After any configuration change, generate the complete YAML block for the user to paste into local.md.

---

## local.md additions

```yaml
watchlist_cadence: daily / weekly / fortnightly
watchlist_last_run: [date]
watchlist_email: [email]
watchlist_email_enabled: true / false
watchlist_cowork_summary: true / false
session_count: 0

watchlist_topics:
  - name: [topic]
    added: [date]
    last_status: HIGH / MEDIUM / LOW / none
    signal_priorities:
      - news
      - regulatory
      - new_entrants
      - funding
    triggers:
      - layer: L[X]
        condition: "[plain language condition]"
        last_fired: [date or never]
```


---

## Watchlist UI — mandatory display format

Never show raw YAML to the user. Always render the watchlist as an
interactive HTML artifact. YAML is generated silently in the background
only when the user clicks "Generate YAML to save" or confirms changes.

### When to render the watchlist UI

- User says "show my watchlist" / "manage watchlist" / "open watchlist"
- User runs /curiosity-stack:watchlist
- User adds a topic — show the UI with the new topic expanded
- User sets a trigger — show the UI with that trigger already added
- After any watchlist change — re-render the UI to confirm the state

### UI structure — two tabs

**Tab 1 — Topics**
Each topic is a collapsible card showing:
- Topic name + category colour dot
- Badge: trigger count (green if >0, grey if 0)
- Badge: current cadence (Daily / Weekly / Fortnightly)
- Expanded state shows:
  - Active triggers list — each removable with ✕
  - "Add a trigger" text input + Add button
  - Cadence selector (segmented button: Daily / Weekly / Fortnightly)
  - Save button → fires sendPrompt() to confirm + generates YAML
  - Remove topic button

**Tab 2 — Schedule & delivery**
- Gmail connection status with live indicator dot
- Day-of-week selector for digest delivery
- Next scheduled run display
- Trigger alert status (count of active triggers across all topics)
- "Generate YAML to save →" button at bottom — only appears here,
  not in the topic flow

### Key interaction rules

1. "Add topic" button → fires sendPrompt('Add a new topic to my watchlist')
   Claude responds with topic confirmation, then re-renders the full UI
   with the new topic expanded

2. Adding a trigger inline → updates the UI immediately, no chat needed

3. Save button → fires sendPrompt() to confirm, then shows "Saved ✓"
   for 2.5 seconds. Also generates the YAML block silently.

4. YAML is NEVER shown unless user explicitly clicks "Generate YAML to save"
   on the Schedule tab. Even then, show it in a code block below the UI,
   not instead of it.

5. Removing a topic → removes the card immediately from UI, fires
   sendPrompt() to confirm removal

### Trigger alert flow (when a trigger fires)

When the watchlist agent detects a trigger condition:
- Send HIGH priority email digest immediately
- Re-render watchlist UI showing which trigger fired with timestamp
- Show badge: HIGH in red on the relevant topic card
- Never show YAML — email is the delivery mechanism

### Color coding for topic dots

Use the same category colours as the scenario library:
- India Themes: #1b5e52
- Geopolitics: #993c1d
- Global Trends: #185fa5
- AI — Global: #533ab7
- AI — India: #7c3aed
- Cybersecurity: #3b6d11
- Energy & Climate: #854f0b
- Custom / other: #6b726a

Related Skills

thesis-stress-test

13
from ameya85/curiosity-stack

Activate when user runs /curiosity-stack:stress-test or says "stress test this", "challenge this thesis", "what could go wrong", "bull vs bear", or after a decomposition output when user wants to pressure-test their conclusion.

source-guide

13
from ameya85/curiosity-stack

Activate when user asks where to find information at any layer, or when they are stuck and need pointers to go deeper. Always check connected personal sources first.

source-credibility

13
from ameya85/curiosity-stack

Activate at Layer 1 and Layer 5 of any decomposition to surface the user's highest-rated sources for the current sector and layer. Activate after any session to prompt source rating. Activate when user says "rate this source", "how good is [source]", "which sources should I use for [sector]", or "update my sources". Never activate mid-conversation unless at L1 or L5 transition.

setup

13
from ameya85/curiosity-stack

Activate on first use or when user says "setup", "configure", "connect my notes", "link my drive", "how do I connect", or on first session with no prior configuration. Also reads curiosity-stack.local.md if it exists — skip steps already answered there.

sebi-compliance

13
from ameya85/curiosity-stack

ALWAYS active. Apply to every single response, every output, every command in this plugin. This skill takes absolute priority over all other skills. Never disabled, never overridden. Intercept and redirect any request that crosses into investment advice territory.

scenario-library

13
from ameya85/curiosity-stack

Activate when user says "I don't know what to research", "give me ideas", "what can I decompose", "show me scenarios", "browse topics", "not sure where to start", "what topics are available", or runs /curiosity-stack:scenarios. Also activate on first session if local.md session_count is 0 or empty — surface the library automatically after the welcome message. Never activate mid-decomposition.

reading-list

13
from ameya85/curiosity-stack

Activate after every completed decomposition to generate 5 curated reading recommendations specific to the topic and layers explored. Also activate when user asks "what should I read", "where do I go deeper", "give me links", "reading list", or "resources on this".

output-generator

13
from ameya85/curiosity-stack

Activate when a user selects their output format after completing a decomposition. Generates exactly one of: Value Chain diagram, interactive Mindmap, Research Note, or Research Brief PDF. Never generate all — only what was selected. Always include SEBI disclaimer, attribution badge, and invisible source comment.

domain-knowledge

13
from ameya85/curiosity-stack

Manages the user's personal domain knowledge registry — company intelligence seeded per sector that the India Proxy Agent uses before searching. Activates when user runs /curiosity-stack:knowledge, says "manage my domain knowledge", "add company to my knowledge", or clicks the "missed company" add form after an India Proxy Agent run. Also activates after any India Proxy Agent output to surface the inline add prompt.

decomposition-library

13
from ameya85/curiosity-stack

Activate after every completed decomposition to offer saving. Activate when user says "save this", "add to library", "show my library", "what have I researched", "past decompositions", "have I done this before", or starts a decomposition on a topic that may already exist in the library. Always check library/ folder silently at the start of any new decomposition.

curiosity-framework

13
from ameya85/curiosity-stack

The core 6-layer decomposition framework. Activates when a user describes any topic, technology, market signal, or global event. Also activates when a scenario card is clicked via sendPrompt, or when /curiosity-stack:decompose is run. Guides the user through L0 to L6 using Socratic conversation — one layer at a time.

company-discovery

13
from ameya85/curiosity-stack

Activate when user wants to find actual companies in a value chain layer, especially Indian proxies for global themes. Always check connected sources first. Always apply SEBI compliance — research framing only.