| name | f1-data-platform |
| description | Use when working on connectors, ingestion jobs, Bronze/Silver/Gold storage, schema migrations, lineage, entity mapping, or data quality for F1 and Polymarket data. |
f1-data-platform
Use this skill for storage and ingestion changes.
Start here
- Read
README.md, docs/data-dictionary/core-tables.md, and db/ddl/schema-overview.md.
- Inspect the current SQLAlchemy models, Alembic migrations, worker pipeline, and connector code
before proposing changes.
Workflow
- Confirm the source contract from official docs before hardcoding endpoints, parameters, or
websocket payload assumptions.
- Keep ingestion split by concern: discovery, hydrate, normalize, reconcile, and quality checks.
- Preserve idempotency with cursor state, fetch logs, and object manifests.
- Store raw source payloads in Bronze as close to source format as practical.
- Keep Silver typed and normalized; do not silently coerce whole records to strings.
- When schema changes, update SQLAlchemy models, Alembic, docs, and tests together.
- Preserve Polymarket official API and documented websocket usage only; do not scrape the DOM.
Polymarket market discovery
- ์ฃผ ์ด๋ฒคํธ ๋ง์ผ(๋ ์ด์ค ์ฐ์น์, ํด ํฌ์ง์
๋ฑ ๊ณ ์ ๋์ฑ)์ Gamma API์
/markets ๋๋ /events ์๋ํฌ์ธํธ๋ก๋ ์กฐํ๋์ง ์์ ์ ์๋ค.
- ํญ์
https://polymarket.com/sports/f1/props ์นํ์ด์ง๋ฅผ ์ง์ ์กฐํํ์ฌ ์ด๋ฆฐ ๋ง์ผ ์ ์ฒด๋ฅผ ๋จผ์ ํ์
ํ๋ผ.
- ์ด๋ฒคํธ ์ฌ๋ฌ๊ทธ ํจํด ์์:
f1-japanese-grand-prix-winner-2026-03-29, f1-japanese-grand-prix-driver-pole-position-2026-03-28
- ์ฌ๋ฌ๊ทธ๋ฅผ ํ์ธํ ๋ค Gamma API
GET /markets?slug=<slug> ๋๋ GET /events?slug=<slug>๋ก ํ ํฐ ID์ ๊ฐ๊ฒฉ์ ์กฐํํ๋ค.
Validation
uv run ruff check .
uv run mypy apps py
uv run pytest
uv run alembic upgrade head when models or migrations change