Skip to content
Back to skills

Watchlist

ASecurity

Create, update, inspect, and validate persistent watchlists stored as JSON files. Triggers on "自选股", "watchlist", "监控清单", "add to my list", "把XX加入监控", "建一个组合清单".

  • 6 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 7, 2026
ai-agents

Security analysis

A100/100

Scanned November 7, 2026

npx -y skills add MuLiuSaMa/MeowCode --skill watchlist --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Watchlist?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Watchlist
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/muliusama-watchlist/badge)](https://www.skillsdirectory.com/skills/muliusama-watchlist)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: watchlist
description: Create, update, inspect, and validate persistent watchlists stored as JSON files. Triggers on "自选股", "watchlist", "监控清单", "add to my list", "把XX加入监控", "建一个组合清单".
---

# Watchlist Management

Watchlists live in `watchlists/<list-name>.json` in the working directory. One list per file.

## Workflow

### Step 1: Resolve the operation

Create / add names / remove names / show / rename. If the user names a list that doesn't exist and the operation is "add", create it and say so.

### Step 2: Resolve every name to a windcode

- Accept tickers in the vendor's suffixed form — 沪深 `.SH` / `.SZ`, 港股 `.HK`, 美股 `.O` / `.N` — or company names/aliases.
- For names or aliases, resolve via 同花顺 `hexin-stock.search_stocks` (query = 简称/名称); if a name is ambiguous (multiple listings, A/H dual listing), ask which one before writing.
- Never guess a code from memory — always confirm the resolved code and label against a live lookup.

### Step 3: Write the file

Schema:

```json
{
  "name": "<list-name>",
  "updated": "<YYYY-MM-DD, today>",
  "positions": [
    {"windcode": "[证券代码]", "label": "[证券简称]", "weight": null, "cost": null, "notes": ""}
  ]
}
```

- Preserve existing `weight` / `cost` / `notes` on names you are not touching.
- `weight` is a decimal fraction (0.05 = 5%); `cost` is per-share in listing currency. Only set them when the user supplies them.
- Validate JSON after writing.

### Step 4: Confirm back — and hand over the file

Show the resulting list as a short table (windcode, label, weight if any) and cite the JSON deliverable exactly once with `::zcode-file-citation{path="..." purpose="output"}` inline in prose. Do not add a separate raw path, Markdown link, or trailing citation list. If the list exceeds ~30 names, warn that recap and event scans will be slower and suggest splitting.

**The written JSON is the deliverable, so deliver it.** This skill's product is a
saved file, not a message about one: put `watchlists/<list-name>.json` where the
user collects output, the same as any other artifact, rather than leaving it only
in the working directory. A run that resolved every code correctly and handed back
nothing looks identical to a run that did no work — and the list is what the user
will point `close-recap`, `intraday-watch`, and `event-monitor` at next.

Read the file back after writing and show the parsed contents, so the codes the
user confirms are the ones actually on disk rather than the ones you intended to
write.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.