一键导入
iracing-telemetry
Use when looking up iRacing telemetry variable names, types, units, or descriptions, or when implementing actions that consume live telemetry data
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when looking up iRacing telemetry variable names, types, units, or descriptions, or when implementing actions that consume live telemetry data
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Use when looking up Stream Deck actions, sub-actions, modes, categories, or control counts, or when updating documentation and website content about available features
Use when modifying the iRaceDeck website, updating site content, changing styles, adding pages, or working with Firebase deployment. Also use when updating action counts, feature lists, or any public-facing content on iracedeck.com.
Use when preparing public release notes or a release announcement for a new iRaceDeck version. Produces four tailored versions — Discord, Reddit, Elgato Marketplace, and Mirabox Space — from the changelog, the commits/PRs/issues since the previous release, and the actual user-facing value of each change.
Use when working with native dependencies, handling platform differences, or when build/install/test issues arise on non-Windows platforms
| name | iracing-telemetry |
| description | Use when looking up iRacing telemetry variable names, types, units, or descriptions, or when implementing actions that consume live telemetry data |
Complete variable definitions (429 variables): docs/reference/telemetry-vars.json
Each variable entry:
"Speed": {
"description": "GPS vehicle speed",
"length": 1,
"countAsTime": false,
"unit": "m/s",
"type": "number"
}
When asked about telemetry variables:
docs/reference/telemetry-vars.json and search by variable name or description keywordpackages/iracing-native/src/defines.ts (TelemetryData interface)TelemetryData with the correct TypeScript typeThe canonical user-facing list of template variables (for Telemetry Display and Chat > Send Message) is at:
packages/website/src/content/docs/docs/features/template-variables.md
This is the source of truth for which variables are available in Mustache templates. When adding or modifying template variable support, update this file in the same change.
Templates also support {{= expression }} evaluation (arithmetic, comparisons, ternary, round/floor/ceil/abs/min/max), computed on raw full-precision values rather than the display-formatted strings plain placeholders show (#192). The evaluator lives in packages/iracing-sdk/src/expression-evaluator.ts; the user-facing syntax is documented in the website template-variables page above, which stays the canonical source.
| Length | Meaning | TypeScript Type |
|---|---|---|
| 1 | Scalar value | number or boolean |
| 64 | Per-car array (indexed by car index) | number[] or boolean[] |
| 6 | High-frequency 360Hz samples (countAsTime: true) | number[] |
| Category | Pattern | Count | Examples |
|---|---|---|---|
| Tire/Shock | LF*, RF*, LR*, RR*, CF*, CR* | 88 | LFtempCM, RRwearL, LFshockDefl |
| In-Car Adjustments | dc* | 42 | dcBrakeBias, dcTractionControl, dcDRSToggle. The setup-* actions' "View …" sub-modes (issue #541) consume these directly — see packages/iracing-actions/src/shared/setup-view.ts for the registry mapping each view-* setting to its dc* field. |
| Lap/Timing | Lap*, Race* | 28 | Lap, LapBestLapTime, LapDistPct |
| Per-Car Arrays | CarIdx* | 27 | CarIdxPosition, CarIdxLapDistPct, CarIdxGear |
| Pit Adjustments | dp* | 24 | dpFuelAddKg, dpRFTireChange, dpWingFront |
| Player Car | Player* | 22 | PlayerCarPosition, PlayerCarMyIncidentCount |
| High-Freq 360Hz | *_ST | 17 | LatAccel_ST, LFshockDefl_ST |
| Pit Service | Pit*, FastRepair* | 16 | PitSvFlags, PitSvFuel, PitRepairLeft |
| Steering/FFB | Steering* | 14 | SteeringWheelAngle, SteeringWheelTorque |
| Session | Session* | 14 | SessionFlags, SessionTimeRemain, SessionState |
| Environment | Air*, Wind*, Track*, Solar*, Fog* | 14 | AirTemp, TrackWetness, WindVel |
| Camera/Replay | Cam*, Replay* | 11 | CamCarIdx, ReplayPlaySpeed |
| Hybrid/ERS | Energy*, Power*, DRS_* | 10 | EnergyERSBatteryPct, PowerMGU_K |
| Other | Various | 102 | Speed, RPM, FuelLevel, Gear, Brake, Throttle |
Variables with irsdk_* unit values map to TypeScript enums in packages/iracing-native/src/defines.ts:
| JSON Unit | TypeScript Enum | Used By Variables |
|---|---|---|
irsdk_Flags | Flags | SessionFlags, CarIdxSessionFlags |
irsdk_EngineWarnings | EngineWarnings | EngineWarnings |
irsdk_PitSvFlags | PitSvFlags | PitSvFlags |
irsdk_PitSvStatus | PitSvStatus | PitSvStatus |
irsdk_SessionState | SessionState | SessionState |
irsdk_TrkLoc | TrkLoc | PlayerTrackSurface, CarIdxTrackSurface |
irsdk_TrkSurf | TrkSurf | PlayerTrackSurfaceMaterial, CarIdxTrackSurfaceMaterial |
irsdk_PaceMode | PaceMode | PaceMode |
irsdk_PaceFlags | PaceFlags | CarIdxPaceFlags |
irsdk_TrackWetness | TrackWetness | TrackWetness |
irsdk_CarLeftRight | CarLeftRight | CarLeftRight |
irsdk_CameraState | CameraState | CamCameraState |
irsdk_IncidentFlags | IncidentFlags | (per-car incident data) |
Use hasFlag() from @iracedeck/iracing-sdk to check bitfield values.
Not every classified value is a telemetry bitfield. WeekendInfo.TrackType is a session-YAML string (e.g. "road course", "dirt oval") resolved to the local TrackType enum via resolveTrackType in packages/sim-events-iracing/src/track-type.ts; unrecognized values map to Unknown. This enum is local to sim-events-iracing (it rides in no event payload and has a single consumer), not on the event-bus.
SessionFlags is a combined bitfield containing track flags, driver black flags, and start lights. Use the Flags enum from @iracedeck/iracing-native.
| Flag | Value | When it's set |
|---|---|---|
| Checkered | 0x01 | Race finished — client shown the checkered flag |
| White | 0x02 | 1 lap to go — can be withdrawn if you pass the leader before the timing line |
| Green | 0x04 | Start or restart flag |
| Yellow | 0x08 | Local yellow — sector-specific, shown to your car only |
| Red | 0x10 | Session stopped (rarely seen in normal racing) |
| Blue | 0x20 | Lapping car behind — you're about to be lapped |
| Debris | 0x40 | Debris on track — often accompanies caution on ovals |
| Crossed | 0x80 | Crossed flags — likely indicates start of race or an invalid pass |
| YellowWaving | 0x100 | Flashing local yellow — more severe local danger |
| OneLapToGreen | 0x200 | One pace lap remaining before restart |
| GreenHeld | 0x400 | Green flag is being held (restart delayed) |
| TenToGo | 0x800 | 10 laps remaining |
| FiveToGo | 0x1000 | 5 laps remaining |
| RandomWaving | 0x2000 | Random flag waving (cosmetic / marshal activity) |
| Caution | 0x4000 | Full course caution — the field is under yellow |
| CautionWaving | 0x8000 | Full course caution being established — initial waving period |
| Flag | Value | When it's set |
|---|---|---|
| Black | 0x10000 | Client has a black (penalty) flag — must pit to serve |
| Disqualify | 0x20000 | Client has been disqualified |
| Servicible | 0x40000 | Car is allowed pit service — not a visual flag |
| Furled | 0x80000 | Black flag furled (penalty acknowledged but not yet active) |
| Repair | 0x100000 | Meatball flag (black with orange circle) — mandatory damage repair |
| Flag | Value | When it's set |
|---|---|---|
| StartHidden | 0x10000000 | Start lights not visible |
| StartReady | 0x20000000 | Lights on, not yet set |
| StartSet | 0x40000000 | Red lights on (set position) |
| StartGo | 0x80000000 | Green lights — go |
telemetry.EngineWarnings is a single 16-bit bitfield. Use the EngineWarnings enum from @iracedeck/iracing-sdk (re-exported from @iracedeck/iracing-native).
| Flag | Value | When it's set |
|---|---|---|
| WaterTempWarning | 0x0001 | Coolant temperature above threshold |
| FuelPressureWarning | 0x0002 | Fuel pressure below threshold |
| OilPressureWarning | 0x0004 | Oil pressure below threshold |
| EngineStalled | 0x0008 | Engine has stalled |
| PitSpeedLimiter | 0x0010 | Pit speed limiter is engaged |
| RevLimiterActive | 0x0020 | Rev limiter is currently cutting |
| OilTempWarning | 0x0040 | Oil temperature above threshold |
| MandRepNeeded | 0x0080 | Mandatory damage repair required (driver must pit and repair to remain eligible) |
| OptRepNeeded | 0x0100 | Optional damage repair available (driver may pit to repair, but not required) |
Rising-edge of (EngineWarnings & (MandRepNeeded \| OptRepNeeded)) is consumed by sim-events-iracing/diff/damage.ts to publish damage.repairNeeded.raised after a 3000 ms debounce (issue #489). Pair with PitReadbackSnapshot.hasDamage (built from the same mask) for damage-aware readback gating.
iRacing only exposes a driver-control (dc*) field when the car actually has that control. So the presence of a dc* field — not its value — tells you whether the car has the feature; the value is just the current on/off state. This is the canonical way to ask "does this car have X?".
| Capability | Field(s) present ⇒ has feature | Notes |
|---|---|---|
| Pit limiter | dcPitSpeedLimiterToggle | A car without a pit limiter omits this field entirely. |
| Tear-off visor | dcTearOffVisor | Open-cockpit / visor cars expose this. |
| Windshield wipers | dcToggleWindshieldWipers / dcTriggerWindshieldWipers | Presence of either signals wipers. |
Tear-off visor and windshield wipers are mutually exclusive per car — a car with a visor does not expose the wiper fields and vice-versa — so "has visor" and "has wipers" are complementary.
Don't re-check these fields ad-hoc. The canonical helpers live in packages/iracing-sdk/src/telemetry-features.ts and are exported from @iracedeck/iracing-sdk:
import { hasPitLimiter, hasVisor, hasWipers } from "@iracedeck/iracing-sdk";
import { getLatestTelemetry } from "@iracedeck/sim-events-iracing";
if (!hasPitLimiter(getLatestTelemetry())) {
// car has no limiter — skip limiter callouts / grey out the limiter button
}
Each helper takes TelemetryData | null and returns false for null. Add new capability checks here rather than scattering dc*-presence tests across consumers.
| Unit | Meaning | Count |
|---|---|---|
| (empty) | Dimensionless / enum / boolean | 172 |
% | Percentage (0-1 or 0-100, check description) | 42 |
m | Meters | 37 |
m/s | Meters per second | 35 |
s | Seconds | 25 |
C | Celsius | 17 |
rad | Radians | 10 |
revs/min | RPM | 8 |
kPa | Kilopascals | 8 |
bar | Bar (pressure) | 7 |
| File | Role |
|---|---|
packages/iracing-native/src/defines.ts | TelemetryData interface, enums, bitfield definitions |
packages/iracing-sdk/src/IRacingSDK.ts | Parses telemetry from shared memory buffer |
packages/iracing-sdk/src/SDKController.ts | 10 ms polling loop deduped on iRacing's SessionTick (#493), subscription management |
packages/iracing-sdk/src/cli/telemetry-snapshot.ts | CLI tool to capture live telemetry (--vars=Speed,Gear); formatting utils in src/snapshot.ts |