Multi-school trading knowledge for AI coding agents — strict ICT/SMC market analysis by default
A SKILL.md-standard skill bringing 2008 curated knowledge cards, real-time
market data, technical indicators, and chart generation to
Claude Code, Codex, OpenClaw, Hermes, Cursor, and
WorkBuddy.
🤖 AI agents — when a user asks you to install this skill, follow
README_AGENT.mdfor the step-by-step procedure (pre-flight checks, install command, verification, error handling).
Drop this skill into your AI coding agent and ask trading questions in plain language. Knowledge Q&A is grounded inside the selected School/source scope. Supported current-market requests pass a capability gate before adding fresh, current-turn data and computed structure; unsupported routes stop instead of silently borrowing another School's analysis.
| You ask | The skill does |
|---|---|
| "What analysis models can I use?" | Reads the current capability registry and dynamically separates native market-analysis profiles, Q&A-only lenses, and knowledge categories; also reports strict / augment / compare, without fetching market data or presenting categories as analysis models |
| "What is Fair Value Gap, how to trade it?" | No selector means strict ICT/SMC; retrieves only attributable ICT/SMC knowledge and answers with cited rules |
| "Explain 中枢 using ChanLun only" | Uses the isolated 缠论 School projection; explicit selectors never silently fall back to ICT/SMC |
| "Explain Order Block using Wuyuan's SMC material only" | Hard-filters atomic evidence by both school=SMC and source=Teach-Wuyuan; an empty intersection fails closed |
| "Compare ICT and ChanLun definitions of market structure" | Runs separate, attributed Q&A branches; conflicting definitions remain separate |
| "Use SMC as primary and Wuyuan as a reference to analyze BTC 1h" | Uses augment: SMC alone controls bias and trade levels; Wuyuan evidence is clearly labelled supporting context |
| "Analyze BTC 1h using ChanLun" | Stops before market-data or chart work because no native ChanLun market analyzer exists; never relabels SMC output as ChanLun |
| Attach a BTCUSDT 1h chart + "analyze this" | After the route passes its capability gate, readable asset/timeframe data may be refreshed and cross-checked; if the supported route cannot identify them reliably, the result stays visual-only and discloses its limits |
| "How is BTC 1h looking?" (no chart) | Defaults to strict ICT/SMC, fetches current-turn data, runs the built-in SMC structural indicator, and generates a grounded chart unless the user opts out |
| "What's on BTC?" (user names a specific indicator) | Pass-through to the indicator API — no auto-fetch of indicators the user did not name |
| Paste a CSV of OHLCV | Preserves that snapshot, extracts structure locally, and never replaces it with a different live series merely to render a chart |
| "Generate a chart with my entry/SL/target" | Rendered chart via Playwright + lightweight-charts |
OPENMOBIUS_SRC="$(mktemp -d "${TMPDIR:-/tmp}/openmobius-src.XXXXXX")"
git clone https://github.com/MobiusQuant/OpenMobius-skill.git "$OPENMOBIUS_SRC"
cd "$OPENMOBIUS_SRC"
python3 install.py --platform claude-code # or codex / openclaw / hermes / cursor
# On Linux/macOS, `all` installs all five local-path hosts. WorkBuddy uses local ZIP import.
cd "${TMPDIR:-/tmp}"
rm -rf -- "$OPENMOBIUS_SRC" # ✓ exact mktemp directory onlyOn Windows, clone into a writable directory and run
py -3 install.py --platform claude-code (or use .\install.ps1).
The installer copies source files into ~/.claude/skills/openmobius-skill/
(or your chosen platform's skills dir), then in that directory:
- Creates
.venv/and installs dependencies - Downloads Playwright chromium (~280 MB, into your OS's user-global cache)
- Downloads the pinned
nomic-embed-text-v1.5weights (~547 MB / 522 MiB, into your HuggingFace cache) - Loads bundled canonical vectors and the verified release seed for independent School/evidence vectors, then builds and verifies all three collections. Only locally changed or missing documents are embedded and cached.
- Generates the platform-specific
SKILL.md - Runs a health check
Each installer-managed local copy is self-contained: it owns its own
.venv and _index. The clone is just a one-shot source bundle.
First run: dependency/model downloads plus seed-accelerated index build · Subsequent runs: unchanged records use the release seed or local embedding cache
After install, try capability discovery plus the default, scoped, and composed routes directly:
# Default: strict ICT/SMC
"What is Liquidity Sweep?"
"How is ETH 4h looking?"
# Discover the installed capabilities (no market-data request)
"What analysis models can I use?"
# Select an exact School or source
"Explain 中枢 using ChanLun only"
"Explain Order Block using Wuyuan's SMC material only"
# Compose or compare
"Compare ICT and ChanLun definitions of market structure"
"Use SMC as primary and Wuyuan as a reference to analyze BTC 1h"
Other Schools can scope knowledge Q&A when attributable material exists. Current-market analysis additionally requires a native analyzer; unsupported routes stop before market-data or chart work. Capability-discovery questions read the installed registry dynamically and report native market profiles, Q&A-only lenses, knowledge categories, and the available composition modes as separate concepts; they do not fetch market data or describe a category as an analysis model.
Prerequisites: Python 3.10+. See INSTALL.md for details.
The skill resolves both the user's intent and analysis route before knowledge retrieval, market-data calls, or drawing:
User request
→ choose intent: Q&A / chart analysis / annotation / K-line analysis
→ resolve mode + lens + School/source scope
→ capability gate
→ scoped knowledge retrieval
→ supported market analyzer and fresh data, when required
→ grounded answer and chart, or an explicit capability-gap response
Default: when neither the current request nor an established conversation
route supplies a lens, School, source, exclusion, or composition mode, the
route is strict ICT/SMC. A current explicit selector overrides an inherited
preference and is never silently widened or replaced.
| Dimension | What it controls | Example |
|---|---|---|
| Lens/profile | The methodology allowed to interpret structure and form market conclusions | ict_smc; future native analyzers may add other lenses |
| School | The attributable knowledge boundary | ICT, SMC, 缠论, Wyckoff, Price Action |
| Source | A teacher, course, or material collection | Teach-Wuyuan; a source does not select a lens |
| Mode | Meaning | Behavior |
|---|---|---|
strict |
Use only the selected boundary | A single explicit selector is strict by default; without one, use ICT/SMC |
augment |
Use A as primary and B as supporting context | The primary lens alone owns bias, entry, stop, targets, and the primary chart; secondary contributions are labelled confirmation, challenge, or risk context |
compare |
Compare A and B independently | Supported for Q&A only in Phase 1; branches use equal queries and remain separately attributed |
| Selection | Knowledge Q&A | Market/chart/annotation |
|---|---|---|
| ICT and/or SMC | Supported | Supported by the native ICT/SMC structural analyzer |
| Other registered Schools/categories | Supported when attributable knowledge exists | Unsupported unless that School has a native analyzer |
| Exact source | Supported as an exact evidence scope and may intersect a School | Requires a separately selected, supported primary lens |
Multi-School compare |
Supported as isolated Q&A branches | Not supported in Phase 1; stops before data or artifact generation |
The complete installed taxonomy is deliberately broader than the native market-analysis models:
- Native market-analysis lens:
ICT,SMC(oneict_smcanalyzer). - Q&A knowledge lenses:
缠论,Price Action,Order Flow,Volume Analysis,Elliott Wave,Wyckoff,The Strat. - Knowledge categories, not analysis models:
Indicator Based,Risk Management,General,On-chain,Market Structure. - Evidence-only category:
Scalping; it occurs in attributable source evidence but is not a top-level canonical-card School.
Unknown selectors, empty strict scopes, empty School/source intersections,
missing exact-filter support, missing native analyzers, and market compare
requests fail closed when they affect a required strict or primary branch:
the skill explains the gap and does not fall back to canonical, another
School/source, or default ICT/SMC. In augment, an unavailable secondary may
be omitted or labelled knowledge-only while a supported primary continues.
Follow-up annotation inherits the prior analysis route. A new explicit School/source/profile requires re-evaluating the analysis; existing levels are not merely relabelled. See the full route contract and capability matrix for aliases, precedence, partial-support rules, and exact failure behavior.
python3 install.py --platform <name>| Platform | Flag | Default path / setup route |
|---|---|---|
| Claude Code | --platform claude-code (default) |
~/.claude/skills/openmobius-skill/ |
| Codex | --platform codex |
~/.agents/skills/openmobius-skill/ |
| OpenClaw (Linux/macOS) | --platform openclaw |
<OPENCLAW_STATE_DIR or ~/.openclaw>/skills/openmobius-skill/ |
| Hermes (Linux/macOS) | --platform hermes |
<HERMES_HOME or ~/.hermes>/skills/market-data/openmobius-skill/ |
| Cursor | --platform cursor |
~/.cursor/skills/openmobius-skill/ |
| WorkBuddy | local ZIP import / marketplace | Skills → Add Skill → Upload Skill; published copies install from the marketplace |
| Auto-detect | --platform auto |
detects supported local host roots |
| All local hosts (Linux/macOS) | --platform all |
installs to the five local paths above; excludes WorkBuddy |
Each local-path platform install is fully self-contained (its own .venv,
its own _index). The nomic model and Playwright chromium live in your OS's
user-global cache, shared across platforms — so installing on N platforms
doesn't N× the download.
OPENCLAW_STATE_DIR and HERMES_HOME override the corresponding roots when
set. The current OpenClaw and Hermes adapters/manifests target Linux and
macOS; on Windows, select Claude Code, Codex, or Cursor explicitly instead of
using --platform all. Cursor Cloud Agents, remote SSH sessions, and other
remote environments do not receive local user skills from ~/.cursor/skills;
place the skill in the repository's .cursor/skills/openmobius-skill/ for
those environments.
WorkBuddy is not CodeBuddy. Its public documentation does not define a fixed
filesystem directory that a third-party installer can write to for automatic
discovery, so --platform all intentionally excludes it. Choose the workflow
that matches your goal:
| Goal | Official route |
|---|---|
| Import this repository's local package | In WorkBuddy, open Skills → Add Skill → Upload Skill, then drag or select the generated ZIP. WorkBuddy configures it after import. |
| Install a published Skill | Open Experts · Skills · Connectors → Skills → Skill Marketplace, then click the + on its card. |
| Publish a Skill for other users | Use the WorkBuddy Open Platform. Creation, ZIP parsing, review, and publication are separate from local import. |
Build this repository's local-import ZIP with:
python3 scripts/build_workbuddy_package.py \
--output /tmp/openmobius-skill-workbuddy.zipThe WorkBuddy Skill format currently accepts .zip packages up to 3 MB. The
builder uses the conservative 3,000,000-byte boundary and fails before
replacing an existing artifact if the package is too large. Local installation
is complete only when the import succeeds and the Skill appears under
Installed. A successful Open Platform parse or submission does not by
itself mean that the Skill is installed locally or published in the marketplace.
--platform workbuddy --target-dir <path> is available only for developer
staging and validation. It does not register a locally discoverable WorkBuddy
Skill and is not the normal installation route.
To fit that package-size boundary without discarding attributable knowledge, the ZIP uses a checksummed compact corpus that reconstructs all 2,144 School projections and all 18,645 exact-source evidence records. It supports lexical BM25/exact-alias retrieval with hard School and source filters using the system Python alone. A manifest binds the compact corpus, School registry, and alias map by size and SHA-256, allowing the standard retriever to run even when a read-only host forbids first-run lock-file creation. The canonical fused-card layer, vector index, embedding cache, and model seed are intentionally omitted; canonical and auto/hybrid/semantic routes fail closed in the WorkBuddy package. The ZIP does not bundle Python, create a virtual environment, or install packages. Script-backed features require Python 3.10+. WorkBuddy 4.6.3 and later can detect missing Python/Node.js from Settings and offer one-click installation; verify that the installed Python still meets this Skill's 3.10+ minimum. If no suitable Python launcher is available, script-backed knowledge/market operations must be reported unavailable. Q&A and text-market workflows need only the standard library, while PNG rendering and image annotation additionally require host-provided Playwright/Chromium or Pillow, respectively.
The implementation follows the common Agent Skills specification and each host's official documentation: Claude Code, Codex, OpenClaw, Hermes, Cursor, WorkBuddy local Skill guide, WorkBuddy Skill format/marketplace, WorkBuddy Open Platform, and WorkBuddy changelog.
Distilled from 300+ teaching videos and live lessons across 12 curated
source collections, cross-merged with model-audited term fusion and
content-level deduplication. Across concept and case cards there are 14
top-level School/category labels: ICT, SMC, Price Action, Indicator Based,
ChanLun (缠论), Risk Management, General, Order Flow, Volume Analysis/VSA,
Elliott Wave, Wyckoff, The Strat, On-chain, and Market Structure. The registry
exposes 15 retrievable labels in total: those 14 top-level labels plus the
non-canonical, source-evidence-derived Scalping category. Each concept card carries:
identification rules, trading
implications, common mistakes, related concepts, per-source definitions.
Each case card carries: market context, key observation, analysis steps,
lessons, and source time-range provenance. Retrieved via local ChromaDB +
multilingual nomic-embed-text-v1.5 — no API key needed for retrieval.
The index exposes three layers with different roles:
| Layer | Records | Role |
|---|---|---|
| Canonical | 2,008 | Backward-compatible fused exploration; never proof of strict School isolation |
| School | 2,144 | Exact School-scoped Q&A and grounding |
| Evidence | 18,645 | Atomic source scope and exact School/source/type intersections |
School and evidence content is included only when it can be safely attributed. Ambiguous cross-School fused rules are skipped and counted, not guessed. See knowledge-base architecture for the data model, registry, schemas, and rebuild process.
Each School/evidence record now has an embedding of its own scoped document;
vectors are cached by exact content hash and model identity, so incremental
updates embed only misses. v2 queries default to hybrid retrieval: BM25 and
semantic candidates are generated inside the hard-filtered scope and fused by
reciprocal rank, while exact canonical-term/alias matches remain first. Use
--search-mode lexical for a model-free search or --search-mode semantic for
the vector-only baseline.
Crypto (Binance, Bybit, OKX, Hyperliquid), China A-shares, Hong Kong stocks,
US stocks, forex. Each indicator carries built-in analysis dimensions
(summary_focus) that the agent reads to structure its answer rather than
dumping raw numbers.
| Path | Method | Output |
|---|---|---|
| Annotate user's image | PIL | Annotated copy preserving the original chart |
| Generate fresh chart | lightweight-charts in headless chromium | New K-lines + FVG/OB rectangles + sweep lines + swing markers |
The SKILL.md description field triggers on natural-language questions. The
skill first identifies the user's intent, then resolves the independently
selected analysis profile before executing the workflow.
| Intent | Typical trigger | Workflow |
|---|---|---|
| Knowledge Q&A | Concept, definition, rule, or comparison without a chart/data request | Q&A |
| Chart analysis | An attached trading chart plus a request to analyze it | Analyze |
| Annotation | An explicit request to draw, or an annotation follow-up | Annotate |
| K-line analysis | Pasted OHLCV, or an asset + timeframe market request | K-lines |
Intent and analysis profile are separate: the same Q&A workflow can run in
strict, augment, or compare mode, while the capability gate decides
whether a requested market workflow has a native analyzer. An annotation
follow-up inherits the prior route; changing a selector explicitly causes a
fresh analysis rather than relabeling the previous result.
Knowledge base
- ICT/SMC coverage completion — Rounds 1–2 distilled the ICT trunk plus SMC supplements from 300+ teaching videos; upcoming rounds complete ICT sub-schools (Inner Circle Mentorship, Silver Bullet, Power of 3 variants) and full SMC coverage.
- Fundamental knowledge base — interpretation methodologies for news, policy reads, economic releases (CPI / NFP / FOMC) and earnings seasons.
- Multi-school coverage deepening — Wyckoff, VSA/Volume Analysis, Price Action, ChanLun (缠论), and other Schools are already retrievable; upcoming rounds deepen their coverage, provenance, and attribution quality.
- Native multi-school analyzers — knowledge scope is not the same as a
market-analysis engine. New School-native profiles and overlays will be
added before market
compareexpands beyond Q&A.
Indicators & tools
- Expanded SMC indicator coverage — the built-in SMC structural indicator covers BOS/CHoCH, Order Blocks, FVGs, equal H/L, premium- discount zones and strong/weak pivot labels today. Upcoming: Killzone windows, Stop Run / Inducement events, and per-event probability scoring as computable signals.
Access surfaces
- Non-CLI entry points — chat-bot integrations for users who don't run a coding agent, so the knowledge base is reachable without the CLI.
OpenMobius-skill/
├── SKILL.md # main entry (LLM reads this)
├── SKILL.body.md # shared body (platform-neutral)
├── platforms/ # per-platform frontmatter
│ └── claude-code.yaml / codex.yaml / openclaw.yaml / hermes.yaml / cursor.yaml / workbuddy.yaml
├── agents/
│ └── openai.yaml # Codex UI and invocation metadata
├── workflows/
│ ├── qna.md / analyze.md / annotate.md / klines.md # intent workflows
│ └── analysis_profiles.md # route contract + capability gate
├── scripts/ # CLI tools
│ ├── kb_retrieve.py # hard-scoped hybrid retrieval
│ ├── kb_klines.py # API client + feature extraction
│ ├── kb_draw_annotation.py # PIL annotation
│ ├── kb_phase_b_to_c.py # analysis JSON → annotated PNG
│ ├── build_knowledge_v2.py # audit/export School + source-evidence records
│ ├── build_index.py # build all three vector collections
│ ├── export_v2_embedding_seed.py # publish verified native-vector shards
│ ├── build_workbuddy_package.py # deterministic WorkBuddy local-import ZIP builder
│ ├── evaluate_retrieval.py # reproducible retrieval benchmark
│ ├── kb_doctor.py # env health check
│ ├── chart_render/ # lightweight-charts + headless chromium
│ └── _lib/ # embedder + retriever
├── evals/ # versioned retrieval cases + baseline reports
├── knowledge_base/ # cards + registry + schemas + release seed
├── install.py # cross-platform installer
└── README.md / INSTALL.md
# Update
python3 install.py --update
python3 install.py --update --rebuild-index # also rebuild vector index
# Uninstall the entire self-contained platform install (.venv + index included)
python3 install.py --uninstall
python3 install.py --uninstall --platform all # Linux/macOS: all five local hosts
# Full purge (also delete shared chromium + nomic caches — these may be
# used by other projects on your machine, so confirm before running)
python3 install.py --uninstall --purge --yes-i-know--full is still accepted for backward compatibility, but is deprecated and
has no effect: standard uninstall already removes .venv and the vector index.
See INSTALL.md for all flags.
.venv/bin/python scripts/kb_doctor.pyReports the state of: venv, deps, nomic model, vector index, CJK fonts, skill registration, API connectivity.
Common issues:
| Symptom | Fix |
|---|---|
| Chinese labels render as boxes | Install fonts-noto-cjk (Linux); macOS/Windows usually bundled |
| API request fails | Check network; see api.mobiusquant.ai/api/health |
| Skill not auto-invoking in Claude Code | Check ~/.claude/skills/openmobius-skill exists. Claude Code watches an existing skills directory live; if that top-level directory was newly created, start a new session. |
| Skill missing in Codex | Check ~/.agents/skills/openmobius-skill exists; restart Codex |
| Skill missing in OpenClaw or Hermes | Check the effective OPENCLAW_STATE_DIR or HERMES_HOME, then run kb_doctor.py from that installed copy |
| Cursor Cloud/remote cannot see the user skill | Copy/install it under the repository's .cursor/skills/openmobius-skill/; local ~/.cursor/skills is not synchronized |
| WorkBuddy cannot discover a local folder | Do not guess a local path. Build the ZIP, then use Skills → Add Skill → Upload Skill and select it; confirm it appears under Installed |
chroma.sqlite3 not found |
.venv/bin/python scripts/build_index.py |
| ChanLun/Wyckoff market analysis stops | These Schools are retrievable for Q&A but do not yet have a native market analyzer; use Q&A or a supported lens |
Market compare stops before fetching data |
Phase 1 supports compare for Q&A only; this is the capability gate working as designed |
Apache 2.0 — see LICENSE. Third-party components: see ATTRIBUTION.md.
Issues and PRs welcome at https://github.com/MobiusQuant/OpenMobius-skill/issues.
