From ocpp
OCPP protocol reference for EV charging infrastructure covering OCPP 2.1, 2.0.1, and 1.6J. Use for OCPP messages, charging station code, CSMS backends, smart charging, and transaction handling.
How this skill is triggered — by the user, by Claude, or both
Slash command
/ocpp:ocpp [topic: smart-charging | authorize | transactions | schemas | sequences | 1.6 | 2.1 | ...][topic: smart-charging | authorize | transactions | schemas | sequences | 1.6 | 2.1 | ...]This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are assisting a developer working on EV charging infrastructure using OCPP.
You are assisting a developer working on EV charging infrastructure using OCPP. This skill covers OCPP 2.1, OCPP 2.0.1, and OCPP 1.6J. Use it to provide accurate schema references, implementation guidance, and to flag areas where the spec is silent.
Detect the OCPP version from the developer's code:
StartTransaction, StopTransaction, RemoteStartTransaction, RemoteStopTransaction, Charge Point, Central System, idTag (string), connectorId without evseId, .req / .conf namingTransactionEvent, RequestStartTransaction, RequestStopTransaction, Charging Station, CSMS, IdTokenType (object), evseId, Request / Response namingSetDERControl, GetTariffs, OpenPeriodicEventStream, BatterySwap, RequestBatterySwap, NotifyPeriodicEventStream, AFRRSignal, PullDynamicScheduleUpdate, UpdateDynamicSchedule, OCPP-J subprotocol string ocpp2.1, JSON schema $id URNs containing :2:2025: (e.g. urn:OCPP:Cp:2:2025:1:SetDERControlRequest)If unclear, ask the developer which version they're using.
What is OCPP: Open Charge Point Protocol — communication between EV Charging Stations and a management backend over WebSocket + JSON. The station initiates the connection. Both sides can send messages.
evseId=0 means the whole station.evseId and connectorId are 1-indexed. evseId=0 means the whole station.connectorId is 1-indexed. connectorId=0 means the whole Charge Point. No EVSE concept.Message Frame (both versions): JSON-RPC-like. Three types:
CALL — [2, messageId, action, payload]CALLRESULT — [3, messageId, payload]CALLERROR — [4, messageId, errorCode, errorDescription, errorDetails]BootNotification (CS→CSMS) — Station registers on connectHeartbeat (CS→CSMS) — KeepaliveStatusNotification (CS→CSMS) — Connector/EVSE status changesGetVariables (CSMS→CS) — Read configurationSetVariables (CSMS→CS) — Write configurationGetBaseReport (CSMS→CS) — Request full variable inventoryNotifyReport (CS→CSMS) — Variable inventory response (paginated)SetNetworkProfile (CSMS→CS) — Configure network connection profilesReset (CSMS→CS) — Reboot stationAuthorize (CS→CSMS) — Validate ID tokenClearCache (CSMS→CS) — Clear authorization cacheSendLocalList (CSMS→CS) — Push local auth listGetLocalListVersion (CSMS→CS) — Query local auth list versionTransactionEvent (CS→CSMS) — Started/Updated/Ended eventsRequestStartTransaction (CSMS→CS) — Remote startRequestStopTransaction (CSMS→CS) — Remote stopGetTransactionStatus (CSMS→CS) — Query outstanding transaction messagesMeterValues (CS→CSMS) — Send meter values outside transaction contextTriggerMessage (CSMS→CS) — Request CS to send a specific messageUnlockConnector (CSMS→CS) — Physically unlock connectorChangeAvailability (CSMS→CS) — Set EVSE operative/inoperativeSetChargingProfile (CSMS→CS) — Install charging profileGetChargingProfiles (CSMS→CS) — Query installed profilesClearChargingProfile (CSMS→CS) — Remove profilesClearedChargingLimit (CS→CSMS) — External limit clearedNotifyChargingLimit (CS→CSMS) — External limit notificationReportChargingProfiles (CS→CSMS) — Profile query responseGetCompositeSchedule (CSMS→CS) — Calculate effective scheduleNotifyEVChargingSchedule (CS→CSMS) — EV-proposed schedule (ISO 15118)NotifyEVChargingNeeds (CS→CSMS) — Report EV charging needs (ISO 15118)UpdateFirmware (CSMS→CS) — Trigger firmware updateFirmwareStatusNotification (CS→CSMS) — Update progressPublishFirmware (CSMS→CS) — Make firmware available to local networkPublishFirmwareStatusNotification (CS→CSMS) — Publish progressUnpublishFirmware (CSMS→CS) — Remove published firmwareGet15118EVCertificate (CS→CSMS) — EV certificate requestGetCertificateStatus (CS→CSMS) — OCSP status checkSignCertificate (CS→CSMS) — CSR for station certificateCertificateSigned (CSMS→CS) — Signed certificate deliveryInstallCertificate (CSMS→CS) — Install CA certificateDeleteCertificate (CSMS→CS) — Remove certificateGetInstalledCertificateIds (CSMS→CS) — List installed certsSecurityEventNotification (CS→CSMS) — Report security-related eventGetLog (CSMS→CS) — Request log uploadLogStatusNotification (CS→CSMS) — Log upload progressNotifyEvent (CS→CSMS) — Component/variable eventsSetMonitoringBase (CSMS→CS) — Set monitoring baselineSetVariableMonitoring (CSMS→CS) — Configure variable monitorsSetMonitoringLevel (CSMS→CS) — Set monitoring severity levelGetMonitoringReport (CSMS→CS) — Query active monitorsClearVariableMonitoring (CSMS→CS) — Remove monitorsNotifyMonitoringReport (CS→CSMS) — Monitor query responseCustomerInformation (CSMS→CS) — Request customer dataNotifyCustomerInformation (CS→CSMS) — Customer data responseCostUpdated (CSMS→CS) — Update displayed costSetDisplayMessage (CSMS→CS) — Show message on displayGetDisplayMessages (CSMS→CS) — Query displayed messagesClearDisplayMessage (CSMS→CS) — Remove displayed messageNotifyDisplayMessages (CS→CSMS) — Display message query responseReserveNow (CSMS→CS) — Create reservationCancelReservation (CSMS→CS) — Cancel reservationReservationStatusUpdate (CS→CSMS) — Reservation expired/removedDataTransfer (CS↔CSMS) — Bidirectional vendor extensionOCPP 2.1 retains all 64 OCPP 2.0.1 messages and adds the following 27. Headings match the functional block each message's schema lives under (see the schema file map below).
SetDERControl (CSMS→CS) — Install DER control setpoint (frequency response, power limits, reactive power)GetDERControl (CSMS→CS) — Query installed DER control settingsClearDERControl (CSMS→CS) — Remove DER control settingsReportDERControl (CS→CSMS) — DER control query responseNotifyDERAlarm (CS→CSMS) — Report DER-related alarm conditionNotifyDERStartStop (CS→CSMS) — Notify DER function start/stopNotifyAllowedEnergyTransfer (CSMS→CS) — Inform CS which energy transfer directions are allowedAFRRSignal (CSMS→CS) — Automatic Frequency Restoration Reserve signal (frequency support for V2X)BatterySwap (CS→CSMS) — Notify battery swap event at stationRequestBatterySwap (CSMS→CS) — Request battery swap operationGetTariffs (CSMS→CS) — Query tariffs installed on stationSetDefaultTariff (CSMS→CS) — Set the default tariff for an EVSEChangeTransactionTariff (CSMS→CS) — Change tariff mid-transactionClearTariffs (CSMS→CS) — Remove tariffs from stationNotifySettlement (CS→CSMS) — Notify settlement result for a paymentNotifyWebPaymentStarted (CS→CSMS) — Notify web-based payment initiationVatNumberValidation (CS→CSMS) — Request VAT number validationPullDynamicScheduleUpdate (CS→CSMS) — Request updated schedule for dynamic profileUpdateDynamicSchedule (CSMS→CS) — Push schedule update for dynamic profileNotifyPriorityCharging (CS→CSMS) — Notify that priority charging has started/stoppedUsePriorityCharging (CSMS→CS) — Request CS to use priority chargingOpenPeriodicEventStream (CSMS→CS) — Open a stream for periodic event reportingClosePeriodicEventStream (CSMS→CS) — Close a periodic event streamGetPeriodicEventStream (CSMS→CS) — Query open periodic event streamsAdjustPeriodicEventStream (CSMS→CS) — Modify parameters of an open streamNotifyPeriodicEventStream (CS→CSMS, one-way SEND) — Push periodic event data to CSMSGetCertificateChainStatus (CS→CSMS) — Query certificate chain OCSP statusAuthorize (CP→CS) — Validate idTagBootNotification (CP→CS) — Charge Point registers after (re)bootChangeAvailability (CS→CP) — Set connector operative/inoperativeChangeConfiguration (CS→CP) — Set a configuration keyClearCache (CS→CP) — Clear authorization cacheDataTransfer (CP↔CS) — Vendor-specific data exchangeGetConfiguration (CS→CP) — Read configuration keysHeartbeat (CP→CS) — KeepaliveMeterValues (CP→CS) — Periodic meter readingsRemoteStartTransaction (CS→CP) — Remote startRemoteStopTransaction (CS→CP) — Remote stopReset (CS→CP) — Reboot Charge PointStartTransaction (CP→CS) — Transaction startedStatusNotification (CP→CS) — Connector status/error changeStopTransaction (CP→CS) — Transaction endedUnlockConnector (CS→CP) — Physically unlock connectorSetChargingProfile (CS→CP) — Install charging profileClearChargingProfile (CS→CP) — Remove profilesGetCompositeSchedule (CS→CP) — Get effective scheduleGetDiagnostics (CS→CP) — Request diagnostic log uploadDiagnosticsStatusNotification (CP→CS) — Upload progressUpdateFirmware (CS→CP) — Trigger firmware updateFirmwareStatusNotification (CP→CS) — Update progressSendLocalList (CS→CP) — Push local authorization listGetLocalListVersion (CS→CP) — Query list versionReserveNow (CS→CP) — Reserve a connectorCancelReservation (CS→CP) — Cancel reservationTriggerMessage (CS→CP) — Request CP to send a specific messageWhen implementing OCPP behavior, you will encounter areas where the specification does not fully define what to do. These are categorized as:
The OCPP specification does not define behavior for this case. You MUST flag this to the developer. Do NOT silently pick a default.
Behavior depends on the Charging Station hardware or firmware. Ask which hardware/firmware is targeted.
Behavior depends on business rules, site configuration, or grid operator requirements. Ask about the business/operational context.
Check the developer's project CLAUDE.md for escalation preferences. They may write something like:
For OCPP: use pragmatic escalation mode.
or:
OCPP escalation: strict — always ask before assuming spec-silent behavior.
Two modes:
// OCPP SPEC-SILENT: [description of assumption]. Verify this matches your requirements.
If no escalation preference is found in CLAUDE.md, default to strict.
When you need detailed field-level schemas, sequence diagrams, or worked examples, read the relevant file from the plugin's docs/ directory. Use ${CLAUDE_PLUGIN_ROOT} to resolve the path.
| Topic | File to read |
|---|---|
| All shared data types (enums + composites) | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.0.1-DataTypes.md |
| Device model (components + variables catalog) | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.0.1-DeviceModel/OCPP-2.0.1-DeviceModel.md |
| Open enumerations (units, security events, reason codes) | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.0.1-Enumerations/OCPP-2.0.1-Enumerations.md |
| Authorization schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.0.1-Schemas/OCPP-2.0.1-Schemas-Authorization.md |
| Availability schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.0.1-Schemas/OCPP-2.0.1-Schemas-Availability.md |
| Diagnostics schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.0.1-Schemas/OCPP-2.0.1-Schemas-Diagnostics.md |
| Display schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.0.1-Schemas/OCPP-2.0.1-Schemas-Display.md |
| Firmware schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.0.1-Schemas/OCPP-2.0.1-Schemas-Firmware.md |
| Provisioning schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.0.1-Schemas/OCPP-2.0.1-Schemas-Provisioning.md |
| Reservation schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.0.1-Schemas/OCPP-2.0.1-Schemas-Reservation.md |
| Security schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.0.1-Schemas/OCPP-2.0.1-Schemas-Security.md |
| Smart Charging schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.0.1-Schemas/OCPP-2.0.1-Schemas-SmartCharging.md |
| Transaction schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.0.1-Schemas/OCPP-2.0.1-Schemas-Transactions.md |
| Boot, auth, transaction sequences | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.0.1-Sequences/OCPP-2.0.1-Sequences.md |
| Offline, firmware, diagnostics sequences | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.0.1-Sequences/OCPP-2.0.1-Sequences-Operational.md |
| Smart Charging deep-dive | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.0.1-SmartCharging/OCPP-2.0.1-SmartCharging.md |
| Smart Charging worked examples | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.0.1-SmartCharging/OCPP-2.0.1-SmartCharging-Examples.md |
| ISO 15118 + Smart Charging | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.0.1-SmartCharging/OCPP-2.0.1-SmartCharging-ISO15118.md |
| OCPP 2.0.1 overview + migration guide | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.0.1.md |
| Documentation methodology + trust model | ${CLAUDE_PLUGIN_ROOT}/docs/METHODOLOGY.md |
| OCPP 2.1 overview + migration from 2.0.1 | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1.md |
| OCPP 2.1 data types | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-DataTypes.md |
| OCPP 2.1 enumerations | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-Enumerations/OCPP-2.1-Enumerations.md |
| OCPP 2.1 device model | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-DeviceModel/OCPP-2.1-DeviceModel.md |
| OCPP 2.1 DER control deep-dive | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-DERControl/OCPP-2.1-DERControl.md |
| OCPP 2.1 bidirectional / V2X deep-dive | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-Bidirectional/OCPP-2.1-Bidirectional.md |
| OCPP 2.1 tariff & cost deep-dive | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-TariffCost/OCPP-2.1-TariffCost.md |
| OCPP 2.1 smart charging deep-dive | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-SmartCharging/OCPP-2.1-SmartCharging.md |
| OCPP 2.1 message sequences | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-Sequences/OCPP-2.1-Sequences.md |
| OCPP 2.1 use cases | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-UseCases/OCPP-2.1-UseCases.md |
| OCPP 2.1 certification | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-Certification/OCPP-2.1-Certification.md |
| OCPP 2.1 Authorization schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-Schemas/OCPP-2.1-Schemas-Authorization.md |
| OCPP 2.1 Availability schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-Schemas/OCPP-2.1-Schemas-Availability.md |
| OCPP 2.1 BatterySwap schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-Schemas/OCPP-2.1-Schemas-BatterySwap.md |
| OCPP 2.1 Bidirectional schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-Schemas/OCPP-2.1-Schemas-Bidirectional.md |
| OCPP 2.1 Certificates schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-Schemas/OCPP-2.1-Schemas-Certificates.md |
| OCPP 2.1 DERControl schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-Schemas/OCPP-2.1-Schemas-DERControl.md |
| OCPP 2.1 DataTransfer schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-Schemas/OCPP-2.1-Schemas-DataTransfer.md |
| OCPP 2.1 Diagnostics schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-Schemas/OCPP-2.1-Schemas-Diagnostics.md |
| OCPP 2.1 Display schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-Schemas/OCPP-2.1-Schemas-Display.md |
| OCPP 2.1 Firmware schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-Schemas/OCPP-2.1-Schemas-Firmware.md |
| OCPP 2.1 LocalAuthList schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-Schemas/OCPP-2.1-Schemas-LocalAuthList.md |
| OCPP 2.1 MeterValues schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-Schemas/OCPP-2.1-Schemas-MeterValues.md |
| OCPP 2.1 Provisioning schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-Schemas/OCPP-2.1-Schemas-Provisioning.md |
| OCPP 2.1 RemoteControl schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-Schemas/OCPP-2.1-Schemas-RemoteControl.md |
| OCPP 2.1 Reservation schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-Schemas/OCPP-2.1-Schemas-Reservation.md |
| OCPP 2.1 Security schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-Schemas/OCPP-2.1-Schemas-Security.md |
| OCPP 2.1 SmartCharging schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-Schemas/OCPP-2.1-Schemas-SmartCharging.md |
| OCPP 2.1 TariffAndCost schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-Schemas/OCPP-2.1-Schemas-TariffAndCost.md |
| OCPP 2.1 Transactions schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-2.1-Schemas/OCPP-2.1-Schemas-Transactions.md |
| OCPP 1.6J overview + config keys | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-1.6J.md |
| 1.6J Core schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-1.6J-Schemas/OCPP-1.6J-Schemas-Core.md |
| 1.6J Smart Charging schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-1.6J-Schemas/OCPP-1.6J-Schemas-SmartCharging.md |
| 1.6J Firmware schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-1.6J-Schemas/OCPP-1.6J-Schemas-Firmware.md |
| 1.6J Local Auth List schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-1.6J-Schemas/OCPP-1.6J-Schemas-LocalAuthList.md |
| 1.6J Reservation schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-1.6J-Schemas/OCPP-1.6J-Schemas-Reservation.md |
| 1.6J Remote Trigger schemas | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-1.6J-Schemas/OCPP-1.6J-Schemas-RemoteTrigger.md |
| 1.6J Message sequences | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-1.6J-Sequences/OCPP-1.6J-Sequences.md |
| 1.6J Smart Charging deep-dive | ${CLAUDE_PLUGIN_ROOT}/docs/OCPP-1.6J-SmartCharging/OCPP-1.6J-SmartCharging.md |
If invoked with /ocpp <topic>, immediately read the relevant files:
OCPP 2.1 topics:
/ocpp 2.1 or /ocpp 2.1 overview → read OCPP-2.1.md overview/ocpp 2.1 migration → read OCPP-2.1.md (contains migration guide from 2.0.1)/ocpp 2.1 der or /ocpp 2.1 der-control → read OCPP-2.1-DERControl/OCPP-2.1-DERControl.md + OCPP-2.1-Schemas/OCPP-2.1-Schemas-DERControl.md/ocpp 2.1 v2x or /ocpp 2.1 bidirectional → read OCPP-2.1-Bidirectional/OCPP-2.1-Bidirectional.md + OCPP-2.1-Schemas/OCPP-2.1-Schemas-Bidirectional.md/ocpp 2.1 tariff or /ocpp 2.1 cost → read OCPP-2.1-TariffCost/OCPP-2.1-TariffCost.md + OCPP-2.1-Schemas/OCPP-2.1-Schemas-TariffAndCost.md/ocpp 2.1 device-model → read OCPP-2.1-DeviceModel/OCPP-2.1-DeviceModel.md/ocpp 2.1 enums or /ocpp 2.1 enumerations → read OCPP-2.1-Enumerations/OCPP-2.1-Enumerations.md/ocpp 2.1 use-cases → read OCPP-2.1-UseCases/OCPP-2.1-UseCases.md/ocpp 2.1 certification → read OCPP-2.1-Certification/OCPP-2.1-Certification.md/ocpp 2.1 schemas → read all 19 files in OCPP-2.1-Schemas//ocpp 2.1 smart-charging → read OCPP-2.1-SmartCharging/OCPP-2.1-SmartCharging.md + OCPP-2.1-Schemas/OCPP-2.1-Schemas-SmartCharging.md/ocpp 2.1 sequences → read OCPP-2.1-Sequences/OCPP-2.1-Sequences.md/ocpp 2.1 types or /ocpp 2.1 data-types → read OCPP-2.1-DataTypes.mdOCPP 1.6J topics:
/ocpp 1.6 or /ocpp 1.6j → read OCPP-1.6J.md overview/ocpp 1.6 smart-charging → read 1.6J SmartCharging schemas + deep-dive/ocpp 1.6 schemas → read all 1.6J Schema files/ocpp 1.6 sequences → read 1.6J Sequences file/ocpp 1.6 core → read 1.6J Core schemas/ocpp 1.6 firmware → read 1.6J Firmware schemas/ocpp 1.6 auth-list → read 1.6J LocalAuthList schemas/ocpp 1.6 reservation → read 1.6J Reservation schemasOCPP 2.0.1 topics (default):
/ocpp smart-charging → read all 3 SmartCharging files/ocpp authorize or /ocpp authorization → read Authorization schemas/ocpp transactions → read Transaction schemas + Sequences/ocpp provisioning or /ocpp boot → read Provisioning schemas + Sequences/ocpp schemas → read all Schema files/ocpp sequences → read both Sequence files/ocpp types or /ocpp data-types → read DataTypes/ocpp device-model → read OCPP-2.0.1-DeviceModel/OCPP-2.0.1-DeviceModel.md/ocpp enums or /ocpp enumerations → read OCPP-2.0.1-Enumerations/OCPP-2.0.1-Enumerations.md/ocpp firmware → read Firmware schemas + Operational sequences/ocpp diagnostics → read Diagnostics schemas + Operational sequences/ocpp reservation → read Reservation schemas/ocpp display → read Display schemas/ocpp security or /ocpp certificates → read Security schemas/ocpp availability → read Availability schemasAlways cite the source. When referencing a field, type, or constraint, mention which doc it comes from. Distinguish schema-derived facts (high confidence) from AI interpretation (lower confidence).
Respect the escalation model. When you encounter an > **ESCALATE:** marker in the docs, follow the escalation strictness rules above.
Detect version from context. Use the version detection rules above. If the code uses StartTransaction/StopTransaction, it's 1.6J — read 1.6J docs. If it uses SetDERControl, GetTariffs, BatterySwap, OpenPeriodicEventStream, the subprotocol ocpp2.1, or schema URNs containing :2:2025:, it's 2.1 — read 2.1 docs. If it uses TransactionEvent without 2.1 indicators, it's 2.0.1. If no version indicators are present, assume 2.0.1 and mention the assumption.
Don't invent protocol behavior. If you're unsure whether something is spec-defined, check the docs first. If the docs don't cover it, say so explicitly rather than guessing.
Use the schemas for validation. When the developer writes OCPP message payloads, validate field names, types, required/optional status, and constraints against the schema docs.
npx claudepluginhub alexeimoisseev/ocpp.md --plugin ocppGuides selection of home EV charging equipment (Level 1 vs Level 2), electrical panel requirements, and NEC-compliant installation planning.
Queries grid electricity forecasts and submits load events via Apple's EnergyKit framework. Helps build smart home apps, EV charger controls, and energy management dashboards.