Driving license booker
Neutral workflow skill for Israeli driving-license renewal, Licensing Bureau appointment preparation, and practical driving-test coordination.From its SKILL.md
npx -y skills add skillim-hub/skills --skill driving-license-bookerAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
12.0 KB, ~2.5k tokens by cl100k_base, as published. Nobody here has run it
Driving Test & License Renewal Booker
Use this skill to prepare, validate, coordinate, schedule eligible appointment handoffs, and track Israeli driving-license renewal and driving-test workflows. Apply it for individual consumers, freelancers who drive for work, driving teachers, delivery businesses, tradespeople with service vehicles, and office administrators responsible for staff license follow-up.
The skill supports three workflow families:
- License renewal through official Ministry of Transport and Road Safety services.
- Licensing Bureau appointment preparation when self-service renewal is blocked or an in-person service is required.
- Practical driving-test coordination with an authorized driving teacher and candidate availability.
Final submission, identity verification, payment, and official appointment confirmation must happen only through official services. Practical driving-test dates are requested by the authorized teacher or driving school through the official process; do not represent a local draft as a confirmed government test date. Do not store passwords or bypass identity checks.
Web-validated boundaries
Use these validated boundaries in production:
| Area | Current verified rule |
|---|---|
| Driver-license renewal payment | Use the driver-license payment route, not the vehicle-license payment route. The corrected payment handoff is https://ecom.gov.il/voucherspa/input/209. |
| Practical-test fee payment | Use https://ecom.gov.il/voucherspa/input/427 for practical driving-test fee payment handoff. Confirm mutable fee amounts at payment time. |
| Licensing Bureau appointments | Use the Ministry of Transport appointment service and GoVisit. Appointment availability for licensing services is published as up to 30 days ahead. |
| Practical test scheduling | Coordinate with the authorized driving teacher or school. The candidate does not directly book the official test in this package. |
| Private service VAT | If a VAT-registered business charges a private service fee, apply the current Israeli VAT rate only after confirming it. As validated on 04/06/2026, the standard rate is 18%. |
| Webhooks and public APIs | No public official webhook event names or public booking API contract are referenced by the official sources used here. Treat integrations as browser handoff or approved private adapter only. |
Intake checklist
Collect the minimum required details before starting:
| Field | Required for renewal | Required for bureau appointment | Required for practical test | Notes |
|---|---|---|---|---|
| Full name | Yes | Yes | Yes | Match official records. |
| Israeli ID | Yes | Yes | Yes | Validate checksum before handoff. |
| Mobile phone | Yes | Yes | Yes | Prefer Israeli mobile number for SMS. |
| License number | Recommended | Recommended | Optional | Missing value may require manual lookup. |
| License class | Yes | Yes | Yes | Common classes: A, A1, A2, B, C1, C, D. |
| Expiry date | Yes | Optional | No | Store as DD/MM/YYYY in customer-facing notes. |
| Medical declaration status | Conditional | Conditional | No | Required for some renewals and status changes. |
| Payment status | Yes | No | No | Use official payment page only. |
| Preferred dates and city | Optional | Yes | Yes | Keep at least two alternatives for appointments. |
| Accessibility requirement | Conditional | Conditional | Conditional | Record only operational need, not sensitive medical detail. |
| Customer consent | Yes | Yes | Yes | Record consent before handling personal data. |
Decision tree
flowchart TD
A[Start: customer needs license or driving-test help] --> B{Need practical driving test?}
B -->|Yes| C[Collect candidate, teacher, license class, pickup city, preferred dates]
C --> D{Teacher confirms availability?}
D -->|Yes| E[Record test date and reminder]
D -->|No| F[Ask for alternative windows]
B -->|No| G{License renewal?}
G -->|Yes| H[Validate ID, phone, license number, expiry date]
H --> I{Self-service renewal eligible?}
I -->|Yes| J[Prepare official renewal and payment handoff]
I -->|No| K[Prepare Licensing Bureau appointment]
G -->|No| L[Classify service need and prepare bureau appointment]
J --> M[Save official confirmation and receipt]
K --> N[Save appointment reference and documents checklist]
E --> O[Close workflow after confirmation]
M --> O
N --> O
Renewal workflow
- Validate the Israeli ID checksum and normalize the phone number.
- Confirm the license expiry date and current license class.
- Check whether a medical declaration, eyesight test, fee payment, or bureau visit is required.
- Prepare a renewal payload with the official service links.
- Open the official renewal service and complete identity verification with the customer present or through an approved customer-side process.
- Pay the renewal fee only through an official payment page. Record the ₪ amount, receipt number, and payment date in DD/MM/YYYY format.
- Store the confirmation number, receipt, and next reminder date.
- Send the customer a neutral summary that includes the official confirmation, not a promise of government approval before confirmation exists.
Renewal example
import datetime as dt
from driving_license_booker import Applicant, DrivingLicenseBookerClient
client = DrivingLicenseBookerClient(environment="sandbox", state_path="state.json")
applicant = Applicant(
full_name="Dana Levi",
national_id="039456785",
phone="0501234567",
license_number="1234567",
)
readiness = client.check_renewal_readiness(
applicant=applicant,
expiry_date=dt.date(2026, 8, 31),
has_paid_fee=False,
medical_declaration_required=True,
medical_declaration_done=False,
)
print(client.serialize(readiness))
Expected result: ready is false because fee payment and medical declaration are unresolved.
Licensing Bureau appointment workflow
Use this path when online renewal is blocked, the customer needs an in-person service, identity details do not match, documents must be reviewed, or accessibility coordination is needed.
- Confirm that an office visit is actually required.
- Collect city, branch preference, preferred date windows, and accessibility needs.
- Create a local handoff record.
- Open the official appointment system and select the Licensing Bureau service.
- Save the appointment reference, branch, date, time, and reminder schedule.
- Send the customer a document checklist and arrival instructions.
Appointment example
driving-license-booker create-office --env sandbox --state office-state.json --name "Moshe Cohen" --national-id 123456782 --phone 0527654321 --license-number 7654321 --date 2026-07-15 --city "Haifa" --accessibility-needed
Practical driving-test workflow
Use this path for learners, re-test cases, or license-class upgrades that require coordination with an authorized driving teacher.
- Collect candidate name, Israeli ID, phone, license class, pickup city, and preferred dates.
- Confirm that the teacher can coordinate the test and the appropriate vehicle class.
- Send a structured message to the teacher.
- Record the confirmed test date only after teacher confirmation.
- Add reminders for candidate documents, arrival time, and payment or lesson balance if applicable.
- Keep cancellation and rescheduling notes in the local record.
Teacher message example
import datetime as dt
from driving_license_booker import Applicant, DrivingLicenseBookerClient, TimeWindow
client = DrivingLicenseBookerClient()
message = client.make_teacher_message(
applicant=Applicant("Noa Israeli", "039456785", "0501234567", license_class="B"),
windows=[TimeWindow(dt.date(2026, 7, 20), city="Rishon LeZion")],
teacher_name="Avi",
pickup_city="Rishon LeZion",
)
print(message)
Edge cases
| Case | Action |
|---|---|
| Expired license | Continue intake, mark warning, prioritize official renewal check, and avoid telling the customer to drive until validity is confirmed. |
| Invalid Israeli ID checksum | Stop before handoff and request corrected ID. |
| Foreign license conversion | Treat as bureau appointment or dedicated conversion workflow, not a standard renewal. |
| Medical declaration required | Add blocker until declaration completion is confirmed. |
| Customer lacks digital access | Prepare bureau appointment or assisted official-service session with consent. |
| Payment failed but card charged | Do not retry blindly. Check official receipt status and payment provider confirmation. |
| Appointment unavailable in preferred city | Offer nearby cities and document customer approval. |
| Accessibility request | Record operational requirements and avoid unnecessary medical detail. |
| Name mismatch | Escalate to official service or bureau appointment. Do not edit identity details casually. |
| Practical test teacher unavailable | Keep request in draft and collect alternative windows. |
Anti-patterns
Do not do the following:
- Scrape protected government pages or automate CAPTCHA, SMS, national ID, or password steps.
- Store government login credentials in notes, spreadsheets, scripts, or environment variables.
- Charge a service fee before explaining what is official fee and what is private service fee.
- Promise a license renewal, test date, or appointment before official confirmation exists.
- Mix customers in a shared browser session.
- Keep scans of identity documents longer than necessary.
- Use a practical-test workflow as a substitute for teacher confirmation.
- Translate a Hebrew official term into an invented English label when customer communication needs the exact government wording.
Troubleshooting overview
| Symptom | Likely cause | Fix |
|---|---|---|
| ID rejected | Checksum or typo | Normalize and validate nine digits. |
| Phone rejected | Country code or missing leading zero | Normalize +972 to 0 format. |
| Renewal blocked | Medical declaration, eyesight test, debt, or data mismatch | Use readiness check and prepare bureau path. |
| No appointments | High demand or wrong service type | Search other cities and later dates. |
| Receipt missing | Payment not completed or delayed | Check official payment result before retrying. |
| Teacher cannot confirm | Vehicle or schedule conflict | Request new windows and keep draft state. |
Production checklist
Before using the package in production:
- Install with
pip install -e .and run the test suite. - Configure a separate local state file for each branch or business unit.
- Store only necessary personal data and define retention periods.
- Log customer consent and the exact official confirmation reference.
- Separate official fee, private service fee, VAT where applicable, and ₪ receipt details.
- For VAT-registered service providers, verify the current VAT rate before issuing an invoice; the web-validated rate on 04/06/2026 is 18%.
- Use
--env productiononly when real customers and official services are involved. - Keep sandbox examples out of customer records.
- Train staff to stop at identity-verification and payment screens unless the customer is present or an approved consent process exists.
- Verify Hebrew templates before sending customer-facing messages.
- Review
references/troubleshooting.mdandreferences/test-scenarios.mdbefore launch.
CLI command map
| Command | Purpose |
|---|---|
service-links | Print official-service links. |
create-renewal | Create a local renewal handoff record. |
create-office | Create a Licensing Bureau appointment handoff record. |
create-practical | Create a practical-test coordination record. |
get | Fetch a local record by request id. |
cancel | Mark a local record as cancelled. |
list | List local records, optionally by status. |
readiness | Check renewal blockers and warnings. |
teacher-message | Generate a Hebrew teacher coordination message. |
What ships with it: 26 files
123.8 KB alongside SKILL.md, 12 of them executable
references/
- api-reference.md8.7 KB
- hebrew-qa-log.md2.4 KB
- migration-checklist.md2.5 KB
- test-scenarios.md3.4 KB
- troubleshooting.md2.9 KB
- verification-log.md6.4 KB
- workflow-guide.md3.3 KB
scripts/
- driving_license_booker_client.pyruns20.7 KB
- driving_license_booker_cli.pyruns83 B
- examples/consumer_renewal.pyruns1.2 KB
- examples/expired_license_escalation.pyruns1.4 KB
- examples/freelancer_license_reminder.pyruns1.4 KB
- examples/office_appointment_accessibility.pyruns1.4 KB
- examples/practical_test_teacher_message.pyruns1.4 KB
- examples/small_business_driver_roster.pyruns1.3 KB
- test_driving_license_booker_client.pyruns10.4 KB
src/
- driving_license_booker/client.pyruns20.7 KB
- driving_license_booker/cli.pyruns9.3 KB
- driving_license_booker/__init__.pyruns572 B
- CHANGELOG.md3.0 KB
- LICENSE1.0 KB
- metadata.json1.2 KB
- pyproject.toml636 B
- README.md3.9 KB
- requirements-dev.txt44 B
- SKILL_HE.md14.6 KB