From ngv-dev
Detect real (non-anonymized) Interactive Brokers data in files before it gets committed. Use when the user asks to "review staged files for IBKR data", "check for IBKR leaks", "scan for real account data", or before committing changes that touch IBKR sample data, schema docs, fixtures, or anything generated from TWS/Flex Query exports. Applies the NGV IBKR anonymization conventions: account IDs, contract/trade/exec IDs, API tokens, and trading dates must match documented anonymized shapes, not real values.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ngv-dev:ibkr-data-protectionThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill helps quant devs avoid committing real Interactive Brokers (IBKR) account data. It applies a **denylist of suspicious shapes** against staged content and prints offending lines so the dev can fix them (or delegate the fix back to Claude).
This skill helps quant devs avoid committing real Interactive Brokers (IBKR) account data. It applies a denylist of suspicious shapes against staged content and prints offending lines so the dev can fix them (or delegate the fix back to Claude).
Activate when the user:
/ngv-ibkr-check command.This skill is review-on-demand only. It does not block commits. The workflow is: dev asks → Claude scans → Claude prints file:line offending entries with the anonymized pattern to use → dev fixes or asks Claude to fix.
git diff --cached to get staged content. If nothing is staged, fall back to git diff (unstaged) and tell the user that's what you scanned.path:line <category> <offending value> → suggested anonymized form.Scan all staged file types (code, docs, csv, json, yaml, notebooks). Skip binary/lockfiles only if they're clearly noise.
A value is "suspicious" if it looks real — i.e. it matches an IBKR shape but does not match the documented anonymized patterns. When in doubt, flag it; the dev decides.
\bU\d{7}\b (live) or \bDU\d{7}\b (paper).U1234567, U9999999, and other obvious placeholders (U0000000, U1111111, sequential repeats).U\d{7} / DU\d{7} that isn't an obvious placeholder.U1234567 or U9999999.conId, underlyingConId, fillContractId, column headers with "conid").123456789, 234567890, 345678901, 400000001, 111111111, 222222222, 333333333, 600000001.0-style.123456789 (sequential range) or 400000001 (round-million range).tradeID, transactionID, ibOrderID, permId.1000000001+5000000001+9000000001+7777777, 8888888, 9999999[0-9a-f]{8}\.[0-9a-f]{8}\.\d{2}\.\d{2} for ibExecID, or 00[a-f0-9]{6}\.00[a-f0-9]{6}\.\d{8}\.\d{3} for brokerage IDs.0000abcd.12345678.01.01, 0000efgh.23456789.01.01, 00aabbcc.00ddeeff.11223344.000, etc. — values using only abcd/efgh/ijkl/wxyz letter sequences or repeating digits.0000abcd.12345678.01.01 (execID) or 00aabbcc.00ddeeff.11223344.000 (brokerage).extExecID context.ABC123XYZ000001, DEF456UVW000002, GHI789RST000003 — letter triplets + sequential trailing digits.ABC123XYZ000001.token, flex, FLEX_TOKEN.IBKR_PASSWORD, IB_PASSWORD, CP_API_KEY, client_portal_key, flex_token, etc..env, config, or notebook cell."REDACTED", "xxx", "your-token-here", "")..env.example with a placeholder.14:23:17, 09:47:32) in trade-data context.2025-01-15, 2025-01-16, 2025-01-20), round times (10:30:00, 11:45:00, 15:30:00, 16:15:00).2025-01-15 10:30:00-05:00.Do not flag these — they're meant to be realistic:
BABA, MES, MNQ, MCL, SPY, etc.).CBOE, CME, NYMEX, NYSE, MEMX, SMART, etc.).OPT, FUT, STK, CASH).USD, EUR, etc.).LMT, MKT, STP), actions (BUY, SELL), TIF (DAY, GTC), statuses (Filled, Cancelled).US/Eastern, UTC).Found N suspicious IBKR values in M files:
path/to/file.md:42 account-id U8675309 → U1234567
path/to/file.md:58 exec-id 0000f1a2.b3c4d5e6.01.01 → 0000abcd.12345678.01.01
samples/trades.csv:7 date 2024-11-18 14:23:17-05:00 → 2025-01-15 10:30:00-05:00
.env.sample:3 credential FLEX_TOKEN=8472619384726193 → FLEX_TOKEN=<placeholder, move real value to local .env>
Summary: 2 account-id, 1 exec-id, 1 date, 1 credential.
If no matches: No suspicious IBKR shapes found in N staged files.
Ask the user: "Want me to apply these anonymizations to the staged files?" — don't auto-edit. The dev may want to fix manually or scope which findings to address.
Provides behavioral guidelines to reduce common LLM coding mistakes, focusing on simplicity, surgical changes, assumption surfacing, and verifiable success criteria.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Creates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.
npx claudepluginhub westonplatter/ngv-plugins --plugin ngv-dev