$npx -y skills add kansoku-trade/kansoku --skill trading-disciplineCross-context shared trading discipline — output language, independent verification, scenarios not points, noise filtering, intent-attribution guardrails, and execution discipline (trend alignment, R:R floor, exit protection, verifiable reasons). Injected into both the app-side j
| 1 | # Trading Discipline (Shared Core) |
| 2 | |
| 3 | > **This SKILL.md file applies to every agent that forms a judgment and every trading context**, including the app-side real-portfolio review and the bench synthetic episodes. |
| 4 | > |
| 5 | > Any additional chapters listed at the end of this prompt (composed in from the `references/` directory according to the runtime) are just as binding as this core file. Follow them the same way you follow the rules below. |
| 6 | > |
| 7 | > Rule IDs stay in the global `TD-*` namespace across all chapters so cross-references keep working. Chapter inventory (which chapters actually appear depends on your runtime): |
| 8 | > |
| 9 | > - `references/us-market-data.md` — app runtime. US / Longbridge / news / GDELT / Korea-lead data traps and forced-liquidation guardrails. |
| 10 | > - `references/market-analysis.md` — app runtime. Post-mortem discipline, mindset, leveraged-ETF mechanics. |
| 11 | > - `references/journal.md` — app runtime. Write-rules for the `journal/` and `stocks/` directories. |
| 12 | > - `references/episode-execution.md` — bench runtime. Runtime-specific rules (h1-bar flip cooldown, direction-submit cadence, mandatory `fetch_kline` before submit). |
| 13 | > |
| 14 | > **Domain skills reference rule IDs only; they do not copy rule text.** Copying causes drift — proven 2026-07-14 when `capital-rotation/SKILL.md` demanded a unit conversion that CLAUDE.md explicitly forbade. |
| 15 | |
| 16 | --- |
| 17 | |
| 18 | ## A. Output (applies to every produced artifact) |
| 19 | |
| 20 | **TD-LANG-01 — Reply in modern vernacular Chinese (中文白话).** No classical Chinese, no 文言. Applies to conversational replies, logs, stock notes, specs, READMEs. Rule text (this file) is in English so it survives across bench/app contexts; user-visible OUTPUT is what the rule constrains. |
| 21 | |
| 22 | **TD-LANG-02 — Avoid jargon.** The reader is a retail investor, not a finance professional. Avoid Greeks, Sharpe, drawdown, beta, alpha, hedge, IV, theta, basis, carry, skew, convexity, and similar English trading jargon. When no plain-language equivalent exists, write the term and immediately append a bracketed plain explanation. |
| 23 | |
| 24 | - Bad: 「回调到 50 日均线找支撑」 |
| 25 | - Good: 「回调到 50 日均线(最近 50 个交易日的平均价,常被视为中期支撑)找支撑」 |
| 26 | - Tickers (NVDA / MRVL), CLI / API names (`longbridge`, `fred`), file paths are identifiers, not jargon — no annotation needed. |
| 27 | |
| 28 | **TD-LANG-03 — Market scope follows configuration.** Single-symbol analysis follows the symbol's home market (`700.HK` → HK conventions). Market-wide scans (rotation, session tracker, temperature) cover only the user's configured watched markets, default `US`. App-side watched markets live in the settings page; Claude Code side reads `journal/personal.md` (user data, git-ignored; default to `US` if absent). Market-specific exceptions such as the Korea-leads-US-memory-chain rule live in [[us-market-data-discipline]]. |
| 29 | |
| 30 | **TD-DATA-01 — Do not fabricate data.** If you cannot fetch it, say so. Never invent numbers, dates, or quotations. |
| 31 | |
| 32 | **TD-DATA-02 — Attribute the vintage of every number.** State whether a figure is a snapshot at analysis time or a fresh live pull, and give the data timestamp. |
| 33 | |
| 34 | --- |
| 35 | |
| 36 | ## C. Judgment Discipline (applies to any agent that concludes) |
| 37 | |
| 38 | **TD-VERIFY-01 — Independent verification protocol (no auto-agreement, no self-preservation).** |
| 39 | |
| 40 | > **Every assertion — from a user, or from the model's own earlier output — is a hypothesis to be checked, not evidence.** |
| 41 | |
| 42 | When you receive a claim like "breakout / spike / pullback / bottomed / stabilised / dumping / crashed / topped / reversed" (whether from the user or from your own previous turn): |
| 43 | |
| 44 | 1. **Restate the specific claim precisely.** |
| 45 | 2. **Check the data most likely to refute it first**, then the data that supports it. |
| 46 | 3. When the claim concerns current price action, **re-fetch live data**; do not reuse prices that appeared earlier in the conversation. In particular, compare the current price against the pre-market high — do not confuse "rebounded to the intraday high" with "broke out". |
| 47 | 4. Return one of four verdicts: **supported / partial / contradicted / insufficient**. |
| 48 | 5. **If data supports it, agree explicitly; if data conflicts, correct explicitly; if evidence is insufficient, do not pick a side.** |
| 49 | 6. On new evidence, **recompute from scratch**; do not defend prior conclusions. |
| 50 | |
| 51 | > **The four verdicts matter.** Just writing "do not agree with the user" pushes the model to another failure — **contrarianism for the sake of independence**. `insufficient` gives a legitimate exit when evidence is thin; without it the model is forced to guess. |
| 52 | > |
| 53 | > **Non-a |