# Schwab Marketdata Workflows En

> |

- **Type:** Skill
- **Install:** `agentstack add skill-kevinkda-schwab-marketdata-skill-schwab-marketdata-workflows-en`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [kevinkda](https://agentstack.voostack.com/s/kevinkda)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [kevinkda](https://github.com/kevinkda)
- **Source:** https://github.com/kevinkda/schwab-marketdata-skill/tree/main/schwab-marketdata-workflows-en

## Install

```sh
agentstack add skill-kevinkda-schwab-marketdata-skill-schwab-marketdata-workflows-en
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# schwab-marketdata-workflows-en

> **License & ToS reminder** — Schwab Market Data is **non-redistributable**.
> Every markdown file written by this skill **must** stay inside the
> `kevinkda/stock-personal` private repository. Each playbook automatically
> verifies `isPrivate == true` against the locally authenticated `gh` CLI
> before writing; if the check fails, the write is refused.

## First step on activation (mandatory)

```text
1. get_server_info()  — verify server_version falls within compatible_mcp_version
2. Check the relationship between cwd and required_workspace:
   - cwd is inside the required_workspace subtree → read + write allowed
   - otherwise → only read of target_files; writes refused (prevents
     accidentally writing data into another repository)
3. gh repo view kevinkda/stock-personal --json isPrivate -q .isPrivate
   - If it returns false / no gh CLI / not logged in → strongly
     encourage manual user confirmation; in non-interactive contexts,
     stop without writing.
```

## Playbook selection

| User intent                                | Playbook                                      |
| ------------------------------------------ | --------------------------------------------- |
| Refresh VOO/QQQ tracker                    | `playbooks/voo-qqq-tracker-update.md`         |
| Refresh watchlist snapshot (monthly/event) | `playbooks/watchlist-snapshot.md`             |
| Rewrite summary `summary.md`               | `playbooks/summary-md-refresh.md`             |
| Option-chain research (one-off deep dive)  | `playbooks/option-chain-research.md`          |
| Shakeout 8-signal scan + AI weekly report  | `playbooks/shakeout-analysis-v2.md`           |

## Universal constraints (every playbook must follow)

- **Commit prefix**: every commit message produced by this skill must
  start with `data(schwab):` for audit traceability.
- **Never commit directly to main**: commit on the current `feature/data`
  branch; if the current cwd is on the main branch, first run
  `git switch -c data/schwab-YYYYMMDD`.
- **Never push to public**: a failed `gh repo view --json isPrivate`
  check stops the playbook.
- **Never `push --force`**: especially never force-push to main /
  mainline.
- **Data freshness**: when `health_check()` returns
  `token_state != "valid"` or `token_expires_in_days .md` (running again the same day overwrites it) | Typically run once a month; if you need to re-run on the same day → tell the user that today's history snapshot will be overwritten and obtain consent first |
| `option-chain-research` | **Fully repeatable** | Each run produces a **new** `docs/option-research/-.md` (named by today's date); re-running the same symbol on the same day overwrites that day's snapshot but does not pollute prior days | Same symbol same day → ask the user whether to overwrite today's snapshot; different symbol or different day → run directly |
| `shakeout-analysis-v2` | **Once per day** | Each run writes `research/shakeout-YYYY-MM-DD.md`; running again the same day overwrites that report (the optional §10.4 row append is decided manually) | If `research/shakeout-$(date +%Y-%m-%d).md` already exists → ask the user whether to overwrite; default = skip |

The agent decides immediately after the playbook's pre-flight; when
skipping, it **calls no Schwab tools** (to protect the quota) and only
explains why it skipped.

## Reference

- `playbooks/voo-qqq-tracker-update.md`
- `playbooks/watchlist-snapshot.md`
- `playbooks/summary-md-refresh.md`
- `playbooks/option-chain-research.md`
- `playbooks/shakeout-analysis-v2.md`

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [kevinkda](https://github.com/kevinkda)
- **Source:** [kevinkda/schwab-marketdata-skill](https://github.com/kevinkda/schwab-marketdata-skill)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-kevinkda-schwab-marketdata-skill-schwab-marketdata-workflows-en
- Seller: https://agentstack.voostack.com/s/kevinkda
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
