pre-trade-discipline-gate — Claude Code skill: checklist before
Scores a local pre-trade checklist before manual order entry and blocks planless, oversized, or revenge-risk entries.
npx skills add tradermonty/claude-trading-skills --skill pre-trade-discipline-gate -a claude-codeWhat pre-trade-discipline-gate does
The skill reads a local JSON or YAML answers file with candidate-level checklist answers and decides whether a manual order may proceed. Only actionable intents are gated: ENTRY_READY, ACTIONABLE, ACTIONABLE_DAY1, MANUAL_ORDER. Watchlist and rejected ideas get journaled as NO_ACTIONABLE_ORDERS and never produce an order permission.
A candidate is blocked when the entry is not confirmed in the written plan, the stop is not predefined, the size is not within plan, or actual_risk_dollars exceeds planned_risk_dollars. Revenge risk is caught too: a losing exit or partial loss inside the revenge window stops the entry. So do REDUCE_ONLY and CASH_PRIORITY from exposure-coach, and COOLDOWN, HALTED, TRADING_HALTED from drawdown-circuit-breaker.
You need Python 3.9+ and both risk-dollar fields for every actionable candidate. Missing values, booleans, NaN, infinities, and negatives come back as REVIEW_REQUIRED — review them before placing anything. The gate is offline on purpose: it does not place or cancel orders, call a broker API, or fetch market data. Output is a JSON decision file, a matching markdown report, and a JSONL journal row; with --state-dir the report is linked into the thesis, and review dates stay where they were.
What it helps with
- check a manual entry against the written plan before the order goes out
- catch an entry whose actual risk dollars exceed the planned amount
- stop a trade during the cooldown window after a loss
- respect a
REDUCE_ONLYorCASH_PRIORITYrecommendation - journal each candidate decision for a later trader-memory-core review
Example prompts for the agent
- run the discipline gate on state/manual-entry-checklist.json before I place the order
- check my pre-trade checklist with --fail-on-non-go and show the decision per candidate
- link the report to thesis th_aapl_gm_20260703_0001 using --state-dir state/theses
How to install pre-trade-discipline-gate
1Skills CLI (Vercel)
npx skills add tradermonty/claude-trading-skills --skill pre-trade-discipline-gate -a claude-code2Manually: put the files in place
~/.claude/skills/pre-trade-discipline-gate/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/pre-trade-discipline-gate/
1Skills CLI (Vercel)
npx skills add tradermonty/claude-trading-skills --skill pre-trade-discipline-gate -a codex2Manually: put the files in place
.agents/skills/pre-trade-discipline-gate/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add tradermonty/claude-trading-skills --skill pre-trade-discipline-gate -a cursor2Manually: put the files in place
.cursor/skills/pre-trade-discipline-gate/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install tradermonty/claude-trading-skills pre-trade-discipline-gate2Manually: put the files in place
.github/skills/pre-trade-discipline-gate/SKILL.md1Skills CLI (Vercel)
npx skills add tradermonty/claude-trading-skills --skill pre-trade-discipline-gate -a gemini-cli2Platform CLI
gemini skills install https://github.com/tradermonty/claude-trading-skills --path skills/pre-trade-discipline-gateManually: put the files in place
.devin/skills/pre-trade-discipline-gate/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add tradermonty/claude-trading-skills --skill pre-trade-discipline-gate -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about pre-trade-discipline-gate
How do I install pre-trade-discipline-gate in Claude?
Run npx skills add tradermonty/claude-trading-skills --skill pre-trade-discipline-gate -a claude-code. The skill file then sits at ~/.claude/skills/pre-trade-discipline-gate/SKILL.md.
What does pre-trade-discipline-gate do?
It evaluates a local pre-trade checklist before manual order entry and returns GO, REVIEW_REQUIRED, NO_GO, or NO_ACTIONABLE_ORDERS. It never places orders or talks to a broker.
What do I need to run the gate?
Python 3.9+ and an answers file with candidate checklist answers in JSON or YAML. Market-regime and circuit-breaker artifacts are optional, but if they are missing or unreadable, actionable orders come back as REVIEW_REQUIRED.
Source text
SKILL.md · MIT
---
name: pre-trade-discipline-gate
description: Evaluate a local pre-trade checklist before manual order entry, blocking planless, oversized, revenge-risk, market-regime-blocked, or circuit-breaker-blocked entries while journaling the decision for trader-memory-core review.
---
# Pre-Trade Discipline Gate
## Overview
Evaluate whether a planned manual order should proceed before it is placed at the broker. This skill reads a local checklist plus optional market-regime, circuit-breaker, and trader-memory-core artifacts. It produces a `pre_trade_discipline_decision` artifact and can link that artifact back to the related thesis without changing the thesis review schedule.
The gate is intentionally offline. It does not place orders, cancel orders, call a broker API, or fetch market data.
## When to Use
- Immediately before placing any manual entry order
- When a candidate has passed chart validation and position sizing
- After a recent loss, to avoid revenge trades during the cooldown window
- When the workflow has an upstream `exposure_decision` and `circuit_breaker_decision`
- When you want checklist adherence to be visible in later trader-memory-core reviews
## Prerequisites
- Python 3.9+
- A local JSON or YAML answers file with candidate-level checklist answers
- Optional trader-memory-core thesis state under `state/theses/`
- Optional `exposure_decision` JSON from market-regime-daily / exposure-coach
- Optional `circuit_breaker_decision` JSON from drawdown-circuit-breaker
## Workflow
### Step 1: Prepare the Checklist
Create a JSON or YAML file with candidate answers. Only actionable manual-order intents are gated. Watchlist and ignore intents are journaled as `NO_ACTIONABLE_ORDERS`.
```json
{
"candidates": [
{
"symbol": "AAPL",
"thesis_id": "th_aapl_gm_20260703_0001",
"order_intent": "ENTRY_READY",
"entry_in_written_plan": true,
"stop_predefined": true,
"size_within_plan": true,
"planned_risk_dollars": 500,
"actual_risk_dollars": 500,
"notes": "Entry matches the journaled breakout plan."
}
]
}
```
Actionable intents are `ENTRY_READY`, `ACTIONABLE`, `ACTIONABLE_DAY1`, and `MANUAL_ORDER`. Non-actionable intents such as `WATCHLIST`, `DELAYED_EP_WATCH`, `PEAD_HANDOFF`, `IGNORE`, and `REJECTED` are recorded but do not create an order permission.
Provide both `planned_risk_dollars` and `actual_risk_dollars` for every actionable candidate. Use a finite, non-negative number or numeric string; zero is valid. Treat missing values, booleans, non-numeric strings, `NaN`, infinities, and negative values as `REVIEW_REQUIRED` inputs and review them before placing an order.
### Step 2: Run the Gate
```bash
python3 skills/pre-trade-discipline-gate/scripts/check_pre_trade_discipline.py \
--answers-file state/manual-entry-checklist.json \
--state-dir state/theses \
--market-regime-decision reports/exposure_decision_latest.json \
--circuit-breaker-decision reports/circuit_breaker_decision_latest.json \
--output-dir reports/pre-trade-discipline \
--journal-dir state/journal/pre-trade-discipline
```
Set `--as-of` for deterministic testing or backfills:
```bash
python3 skills/pre-trade-discipline-gate/scripts/check_pre_trade_discipline.py \
--answers-file state/manual-entry-checklist.json \
--as-of 2026-07-03T12:00:00-04:00
```
### Step 3: Interpret the Decision
| Decision | Meaning |
|---|---|
| `GO` | All actionable manual-order candidates passed the checklist and upstream gates |
| `REVIEW_REQUIRED` | Inputs are missing, unknown, or journaling failed; do not place orders until reviewed |
| `NO_GO` | At least one actionable candidate violated a discipline rule |
| `NO_ACTIONABLE_ORDERS` | The file contains no actionable manual orders; nothing should be placed |
By default the CLI exits `0` for every valid decision and exits `1` only for input or runtime errors. Use `--fail-on-non-go` when a shell pipeline should return `2` for any non-`GO` decision.
## Rules
The gate blocks an actionable candidate when:
- The entry is not confirmed in the written plan
- The stop is not predefined
- The size is not confirmed within plan
- Either risk-dollar field is missing or is not a finite, non-negative number (`REVIEW_REQUIRED`)
- `actual_risk_dollars` exceeds `planned_risk_dollars`
- trader-memory-core has a losing exit or partial loss inside the revenge window
- exposure-coach recommendation is `REDUCE_ONLY` or `CASH_PRIORITY`
- drawdown-circuit-breaker recommendation is `COOLDOWN`, `HALTED`, or `TRADING_HALTED`
Missing or unreadable market-regime or circuit-breaker artifacts produce `REVIEW_REQUIRED` for actionable orders. If no actionable order exists, the result remains `NO_ACTIONABLE_ORDERS`.
## Outputs
The script writes:
- `pre_trade_discipline_decision_YYYY-MM-DD_HHMMSS.json`
- A matching markdown report unless `--json-only` is set
- A JSONL journal row under `state/journal/pre-trade-discipline/` when `--journal-dir` is provided
Each candidate result includes a `checklist_answers` object with the written-plan, stop, size, risk-dollar, and notes answers used for the decision, so later reviews can audit what was answered at order time. Invalid risk-dollar values are stored as JSON `null`. Valid JSON decimals that cannot round-trip through a binary float are retained as numeric strings so underflow or precision loss cannot change the gate decision.
If a candidate includes `thesis_id` and `--state-dir` is provided, the JSON report is linked into the thesis `linked_reports` list using trader-memory-core `link_report`. The skill does not call `mark_reviewed` and does not change monitoring review dates.
## Resources
- `scripts/check_pre_trade_discipline.py` - Main CLI and rule engine
- `references/discipline_gate_framework.md` - Rule definitions and integration notes
- `skills/trader-memory-core/schemas/thesis.schema.json` - Thesis state schema
## Key Principles
1. **Manual execution only** - The output is a pre-broker checklist gate, not an order router.
2. **Written plan first** - No written entry plan, stop, or size confirmation means no manual entry.
3. **Producer-compatible state reading** - Revenge-risk detection follows trader-memory-core timestamp and outcome behavior.
4. **Journal without review side effects** - The gate links reports to theses without advancing review schedules.
© tradermonty · MIT · tradermonty/claude-trading-skills