Quarter-Ahead Scan (global, MCP-only)
Replaces the old project-local /quarter-start (now archived at
Journals/.claude/skills-legacy/quarter-start/). Same reasoning as week-start/SKILL.md's
header. CLAUDE.md at /Users/latuconsinafr/Personal/Trading/Journals/CLAUDE.md remains the
rulebook.
If anything this session suggests a rule should change, per CLAUDE.md §20.14: add it to
CLAUDE.md §21.3, do not act on it — this skill cannot adopt rule changes itself. That's
quarter-end's job alone, and only for items already sitting in §21.3 with evidence attached.
Context only, persists nothing to journal_rollups — same as month-start: checked the old
system first, it never wrote a file here either. It does, as of 2026-08-25, produce a real
quarterly fundamental digest (write_fundamental_digest, timeframe 1Q) — quarterly is
fundamental-only: there's no distinct "quarterly candle" chart resolution, so this session re-reads
the monthly chart and refreshes month-start's 1M technical score in place (an upsert, not a
new heatmap column) rather than producing a score of its own. As of 2026-08-30, the same re-read
also writes/refreshes validated levels (write_level, timeframe 1M) for any zone from Step 3.2
that clears §3.3's validation bar — same upsert-in-place framing as the technical score: a
quarterly pass can confirm, extend, or invalidate a level month-start already logged. Still no
verdict, thesis, or hypothetical — those only originate from /sod.
Step 0 — confirm the MCP server is reachable, then resolve the active set
Call get_account_state first. If it fails, stop and explain just run needs to be running. Then
call get_active_instruments — do not assume a fixed instrument set below.
Step 1 — resolve the quarter
Use the current YYYY-Qn, unless the pilot gives one explicitly.
Step 2 — get the required chart
Clean 1M (monthly) chart, per active instrument — required, same blocking pattern as
sod/SKILL.md Step 3. No distinct quarterly chart exists; this is a deliberate quarterly
re-examination of the same monthly resolution month-start and week-start already look at more
often. Check charts/[DATE]/quarter-start/ on disk first; ask only for what's missing.
Step 3 — run the scan
- Scan for major known macro events across the quarter — central bank calendars, known
geopolitical or election dates.
- Re-read the 1M chart with quarterly perspective — same §3 checklist rigor as
/sod, at
monthly resolution. This corrects/confirms the existing 1M cell in place (Step 4's
write_technical_score upserts by pair+date+timeframe) — it is not a new, separate quarterly
reading. Cross-check against get_journal_rollups (period: "monthly", recent limit) for
continuity.
- Quarterly fundamental digest, per active currency (§4, timeframe
1Q) — the broadest
research cadence short of yearly: multi-month policy trajectory, not just this quarter's
calendar. §19 sources only.
Step 4 — write through MCP
write_calendar_event — for each relevant event surfaced in Step 3.1. Leave timeUtc
unset and say so if unverified.
write_technical_score — once per active instrument, timeframe: "1M", from Step 3.2.
This upserts the same cell month-start/week-start's context reads point at — correcting it
in place with a quarterly perspective, not creating a 1Q row (no such technical timeframe
exists; see the header note).
write_level — timeframe: "1M", one per zone from Step 3.2 that clears §3.3's validation
bar: named prior turns, each with a date and a wick.
- The date must be exact, obtained by counting bars from the nearest labeled gridline — never
"approx," and sparse gridlines are never a reason to skip writing a level.
- Apply the same counting effort to every pair this session — do not verify one more
carefully than the others. But decide per pair, not for the session as a whole: if one
pair's turn can't be dated, that one is unvalidated — it does not mean skipping every other
pair that can be dated. Partial coverage is the normal, correct outcome, not a fallback.
- A stated tolerance ("±1-2 days") is not exact and does not pass; an unvalidated pair doesn't
get written with a hedge, it doesn't get written.
- Do this by reading the image and counting candles — never by writing or running a script,
pixel-measurement tool, or any automated axis calibration; that's a fragile detour, not
extra rigor, and a bug in one is never a reason to write zero levels instead.
- A zone without nameable turns stays prose-only in
write_technical_score's technicalBasis.
write_fundamental_digest — once per non-metal active currency only, timeframe: "1Q", from Step 3.3. Never call this for XAU/XAG — the tool itself rejects a metal
currency value now (a real mistake, happened more than once, now a hard schema error); it
forces a 0-10 currency-strength scale onto something §4 explicitly wants read on a different
-10..+10 risk-sentiment scale instead.
write_risk_sentiment, once per metal active currency, timeframe: "1Q", from Step
3.3 — as of 2026-09-03 this is the correct write for metals, not a prose-only fallback.
Same timeframe parameter as write_fundamental_digest, so a quarterly call no longer
collides with /sod's daily call for the same currency, and it auto-populates the metal's
heatmap cell the same way, once the paired currency has a score at this exact date+timeframe.
Nothing else gets written this session.
1---2name: quarter-start3description: Run the Quarter-Ahead Scan for the trading journal (CLAUDE.md Section 13, at /Users/latuconsinafr/Personal/Trading/Journals/CLAUDE.md). Global, MCP-only, context only. Invoke at the start of a new quarter.4---56# Quarter-Ahead Scan (global, MCP-only)78**Replaces the old project-local `/quarter-start`** (now archived at9`Journals/.claude/skills-legacy/quarter-start/`). Same reasoning as `week-start/SKILL.md`'s10header. `CLAUDE.md` at `/Users/latuconsinafr/Personal/Trading/Journals/CLAUDE.md` remains the11rulebook.1213**If anything this session suggests a rule should change**, per CLAUDE.md §20.14: add it to14CLAUDE.md §21.3, do not act on it — **this skill cannot adopt rule changes itself.** That's15`quarter-end`'s job alone, and only for items already sitting in §21.3 with evidence attached.1617**Context only, persists nothing to `journal_rollups`** — same as `month-start`: checked the old18system first, it never wrote a file here either. **It does, as of 2026-08-25, produce a real19quarterly fundamental digest** (`write_fundamental_digest`, timeframe `1Q`) — quarterly is20fundamental-only: there's no distinct "quarterly candle" chart resolution, so this session re-reads21the *monthly* chart and refreshes `month-start`'s `1M` technical score in place (an upsert, not a22new heatmap column) rather than producing a score of its own. **As of 2026-08-30, the same re-read23also writes/refreshes validated levels** (`write_level`, timeframe `1M`) for any zone from Step 3.224that clears §3.3's validation bar — same upsert-in-place framing as the technical score: a25quarterly pass can confirm, extend, or invalidate a level `month-start` already logged. Still no26verdict, thesis, or hypothetical — those only originate from `/sod`.2728## Step 0 — confirm the MCP server is reachable, then resolve the active set2930Call `get_account_state` first. If it fails, stop and explain `just run` needs to be running. Then31call **`get_active_instruments`** — do not assume a fixed instrument set below.3233## Step 1 — resolve the quarter3435Use the current `YYYY-Qn`, unless the pilot gives one explicitly.3637## Step 2 — get the required chart3839**Clean 1M (monthly) chart, per active instrument — required, same blocking pattern as40`sod/SKILL.md` Step 3.** No distinct quarterly chart exists; this is a deliberate quarterly41re-examination of the same monthly resolution `month-start` and `week-start` already look at more42often. Check `charts/[DATE]/quarter-start/` on disk first; ask only for what's missing.4344## Step 3 — run the scan45461. Scan for major known macro events across the quarter — central bank calendars, known47 geopolitical or election dates.482. **Re-read the 1M chart with quarterly perspective** — same §3 checklist rigor as `/sod`, at49 monthly resolution. This corrects/confirms the existing `1M` cell in place (Step 4's50 `write_technical_score` upserts by pair+date+timeframe) — it is not a new, separate quarterly51 reading. Cross-check against **`get_journal_rollups`** (`period: "monthly"`, recent `limit`) for52 continuity.533. **Quarterly fundamental digest, per active currency** (§4, timeframe `1Q`) — the broadest54 research cadence short of yearly: multi-month policy trajectory, not just this quarter's55 calendar. §19 sources only.5657## Step 4 — write through MCP58591. **`write_calendar_event`** — for each relevant event surfaced in Step 3.1. Leave `timeUtc`60 unset and say so if unverified.612. **`write_technical_score`** — once per active instrument, `timeframe: "1M"`, from Step 3.2.62 This upserts the same cell `month-start`/`week-start`'s context reads point at — correcting it63 in place with a quarterly perspective, not creating a `1Q` row (no such technical timeframe64 exists; see the header note).653. **`write_level`** — `timeframe: "1M"`, one per zone from Step 3.2 that clears §3.3's validation66 bar: named prior turns, each with a date and a wick.67 - The date must be exact, obtained by counting bars from the nearest labeled gridline — never68 "approx," and sparse gridlines are never a reason to skip writing a level.69 - Apply the same counting *effort* to every pair this session — do not verify one more70 carefully than the others. But decide *per pair, not for the session as a whole*: if one71 pair's turn can't be dated, that one is unvalidated — it does not mean skipping every other72 pair that *can* be dated. Partial coverage is the normal, correct outcome, not a fallback.73 - A stated tolerance ("±1-2 days") is not exact and does not pass; an unvalidated pair doesn't74 get written with a hedge, it doesn't get written.75 - Do this by reading the image and counting candles — never by writing or running a script,76 pixel-measurement tool, or any automated axis calibration; that's a fragile detour, not77 extra rigor, and a bug in one is never a reason to write zero levels instead.78 - A zone without nameable turns stays prose-only in `write_technical_score`'s `technicalBasis`.794. **`write_fundamental_digest`** — once per **non-metal** active currency only, `timeframe:80 "1Q"`, from Step 3.3. **Never call this for XAU/XAG** — the tool itself rejects a metal81 `currency` value now (a real mistake, happened more than once, now a hard schema error); it82 forces a 0-10 currency-strength scale onto something §4 explicitly wants read on a different83 -10..+10 risk-sentiment scale instead.84 - **`write_risk_sentiment`, once per metal active currency, `timeframe: "1Q"`, from Step85 3.3 — as of 2026-09-03 this is the correct write for metals, not a prose-only fallback.**86 Same `timeframe` parameter as `write_fundamental_digest`, so a quarterly call no longer87 collides with `/sod`'s daily call for the same currency, and it auto-populates the metal's88 heatmap cell the same way, once the paired currency has a score at this exact date+timeframe.89 Nothing else gets written this session.