Human-written economic calendar event descriptions for a global calendar with XAUUSD relevance and impact rules.
Generate concise, human-readable descriptions for economic calendar events in a global calendar, with optional impact notes only when relevant to XAUUSD.
Do not reuse a generic explanation across multiple events (for example, "CPI measures inflation") unless you verified it for that exact event.
Minimum bar per event:
Source preference order:
Goal: keep the "one-by-one" evidence standard while reducing repeated web searches and minimizing token usage.
Principles:
If you cannot use multiple agents (quota constraints), do not switch to generic template notes. Keep the same per-event evidence bar and make research faster by:
tmp/sources/).site: (for example, site:bls.gov, site:bea.gov, site:census.gov).When following this skill in this repository, the expected workflow is:
USD::pce deflator::m/m).tmp/ (gitignored), extract a one-line excerpt, and record it in tmp/event_notes_research_log.md (do not commit).event_notes.json in natural English (1-2 sentences).python scripts/calendar/build_event_notes.py) and rewrite if it flags anything.Use r.jina.ai for both search and fetching readable page text, then cache locally:
$ProgressPreference = 'SilentlyContinue'
New-Item -ItemType Directory -Force tmp/sources | Out-Null
# 1) Search (DuckDuckGo HTML via r.jina.ai)
$q = [uri]::EscapeDataString('BLS CPI definition prices paid by urban consumers market basket')
(Invoke-WebRequest -UseBasicParsing "https://r.jina.ai/http://duckduckgo.com/html/?q=$q").Content |
Set-Content -Encoding utf8 tmp/sources/ddg_cpi.md
# 2) Fetch the best official hit (again via r.jina.ai) and cache it
$url = 'https://www.bls.gov/cpi/'
(Invoke-WebRequest -UseBasicParsing "https://r.jina.ai/$url").Content |
Set-Content -Encoding utf8 tmp/sources/bls_cpi.md
# 3) Extract one supporting excerpt line for evidence
Select-String -Path tmp/sources/bls_cpi.md -Pattern 'average change over time' | Select-Object -First 1
You can also use the helper script for one event id:
python scripts/calendar/research_event_note_sources.py --event-id "USD::pce deflator::m/m"
It does not edit JSON; it only helps you find/copy evidence lines faster.
Some official sites are hard to fetch from a CLI (CloudFront 403, "Request Rejected", single-page apps). Do not fall back to generic template notes.
Use this order:
Append one short block per event to tmp/event_notes_research_log.md:
EVENT: USD::cpi::m/m
SOURCE: https://www.bls.gov/cpi/
EXCERPT: "The Consumer Price Index (CPI) is a measure of the average change over time in the prices paid by urban consumers for a market basket..."
NOTE: (paste your final 1-2 sentence note)
This repo enforces a couple of non-obvious checks via python scripts/calendar/build_event_notes.py:
tracks or growth indicator anywhere in notes.. ! ? as sentence endings.U.S. because they can be miscounted as extra sentences.US instead of U.S. and keep punctuation minimal.' instead of ’) so JSON stays clean and consistent.Recommended workflow:
tmp/ (gitignored) so you can extract excerpts offline for many events.tmp/event_notes_research_log.md (do not commit).Optional helper script:
scripts/calendar/research_event_note_sources.py to quickly collect candidate sources and
definition-like excerpt lines for one event id.tmp/sources/ and prints
copy-paste evidence candidates.Examples:
python scripts/calendar/research_event_note_sources.py --event-id "USD::m2 money supply::m/m"
python scripts/calendar/research_event_note_sources.py --event-id "USD::opec monthly report::none" --max-results 8
python scripts/calendar/research_event_note_sources.py --event-id "EUR::cpi::y/y" --query "site:ec.europa.eu HICP year-on-year change definition"
PowerShell caching pattern:
$ProgressPreference = 'SilentlyContinue'
New-Item -ItemType Directory -Force tmp/sources | Out-Null
# Cache an official hub page once
$url = 'https://www.abs.gov.au/statistics/economy/price-indexes-and-inflation/consumer-price-index-australia/latest-release'
$cache = 'tmp/sources/abs_cpi_latest_release.md'
(Invoke-WebRequest -UseBasicParsing ("https://r.jina.ai/$url")).Content | Set-Content -Encoding utf8 $cache
# For each event, extract a supporting excerpt from the cached file
Get-Content $cache | Select-String -Pattern 'measures household inflation' -Context 0,0 | Select-Object -First 1
Search strategy (high signal, low noise):
site:<official-domain> <indicator name> definition queries.https://r.jina.ai/http://duckduckgo.com/html/?q=... for search when direct access is blocked.Keep diffusion-index thresholds:
50 = expansion).
Do not delete this detail just to shorten the note; it materially improves usability for non-specialists.Add an impact sentence only if at least one condition is true:
Default behavior: If uncertain, omit Sentence 2 (definition-only is always acceptable).
Impact must be conditional and relative to expectations:
Impact must explain through one primary channel (pick the most relevant, do not stack multiple):
Keep it realistic: use can / may / often, not absolute "will".
{Country} / {Period} / bracketed template fields).If you must mention impact but relevance is low, use one restrained line only:
Fail if:
For each economic calendar event, write a short human-readable description for XAUUSD.
Use at most two sentences. The first sentence must define what the event measures or decides using precise measurement terms (rate/index/diffusion index/weekly number/% change/balance/statement/minutes/auction).
Before writing, do per-event web research: find at least one credible source for that exact event (prefer official publishers), extract a short supporting excerpt, and only then write the note. Do not reuse identical wording across countries unless the source supports that similarity.
Use caching for efficiency: prefer official hub pages, save them under tmp/, and extract per-event excerpts from cached sources. This reduces search overhead without lowering the evidence standard.
Only add a second sentence if the event is meaningfully relevant to XAUUSD (major central bank policy/guidance, major inflation, major labor, or major activity/risk indicators from widely watched economies, or anything that can shift global USD and yield expectations or risk sentiment).
If you add impact, it must be conditional and relative to expectations: use "higher-than-expected / lower-than-expected (vs forecast)" or "hawkish/dovish surprise", and explain via USD, yields/real yields, rate expectations, or risk sentiment/safe-haven demand.
Never use "tracks", never call everything a "growth indicator", never repeat the event name as its own definition, and never prefix events with currency codes as if currency = country.
For PMI-style diffusion indexes, keep the threshold explanation when relevant (for example, 50 = expansion).
If relevance is low, write only the definition (or optionally one very restrained line saying direct impact is usually limited). After writing, self-check and rewrite if any rule is violated.
Do not output any code, placeholders, or batch-template text. Each description must read like it was individually written.