{"id":51498,"plugin_id":"plugin_asdk_app_6ac6123ce8f8819189218696990e9848","kind":"skill","collection_source":"plugin_package","comparison_source":null,"observed_at":"2026-10-24T13:46:34.460Z","digest":"2a35ef22271660fd15eea6897ddd2e77d9ea6e7e0575df8cc6a14d181da661ce","against":null,"payload":{"description":"Search, compare, filter, and help users book motorhomes and campervans using CamperDays offers. Use this skill when users ask to find rental vehicles, compare or filter offers, check prices, availability, vehicle features, pickup details, booking status, or offer-specific rental conditions.","included_files":[],"name":"motorhome-rental","skill_md_contents":"---\nname: motorhome-rental\ndescription: Search, compare, filter, and help users book motorhomes and campervans using CamperDays offers. Use this skill when users ask to find rental vehicles, compare or filter offers, check prices, availability, vehicle features, pickup details, booking status, or offer-specific rental conditions.\n---\n\n# Motorhome rental\n\nUse CamperDays tools to complete motorhome and campervan rental workflows. Treat CamperDays offer data as the authoritative source for offer-specific information.\n\n## Instruction priority\n\nWhen multiple sources of information apply, use this priority order:\n\n1. Exact data returned for the referenced CamperDays offer.\n2. Active CamperDays search state and its `search_id`.\n3. The traveler's explicit criteria gathered across the conversation.\n4. General knowledge or contextual information.\n\nDo not resolve conflicting or missing offer data by inference.\n\n## Market context detection\n\nWhen market, currency, language, or locale information is required and cannot be determined reliably from the conversation, call `camperdays-detect-market-context` before searching.\n\nWhen `camperdays-detect-market-context` returns a resolved context containing `market` and `locale`, pass that exact context object unchanged into subsequent search and refinement tools. Do not alter the market or locale based on the travel destination.\n\nDo not call the market-context tool when the required context is already established.\n\n## Search offers\n\nUse `camperdays-search-motorhomes` to establish an initial rental search or when the traveler explicitly changes travel dates or destinations (pickup or drop-off location).\n\nInitial searches can include any supported filters requested by the traveler across opening messages (such as traveler counts, vehicle type, or specific equipment).\n\nBefore searching:\n\n1. Identify all parameters required by the relevant CamperDays search tool.\n2. If required information is missing, ask the user only for the missing information needed to perform the search.\n3. Format travel dates as `YYYY-MM-DD`.\n4. Convert conversational traveler descriptions from the conversation into explicit traveler counts (`travelers_adults`, `travelers_children`) in `filters`.\n5. Combine traveler counts, destinations, and filters mentioned across conversation turns when executing the search.\n6. Use supported CamperDays filters for requirements such as pets or young drivers.\n7. Do not invent missing search parameters.\n8. Supply the user's travel search query in `userInput` and the resolved market context in `context`.\n\nOnce an active search exists for a trip:\n* Do not invoke `camperdays-search-motorhomes` again if travel dates and pickup/drop-off locations have not changed.\n* For all subsequent filter adjustments, additions, removals, or inventory queries, use `camperdays-refine-motorhome-search`.\n\n## Search refinement\n\nUse `camperdays-refine-motorhome-search` for all subsequent operations on an active search when travel dates and locations remain the same.\n\nThe refinement tool evaluates user criteria against the active search inventory, applying updated filter constraints and returning a re-ranked, consolidated snapshot of matching offers.\n\nSupply the user's refinement criteria in `userInput`, the resolved market context in `context`, and the active `search_id`.\n\nInvoke `camperdays-refine-motorhome-search` when the user:\n\n* adds a new filter;\n* removes or modifies an existing filter (including filters applied during the initial search);\n* adjusts traveler counts;\n* narrows the active search;\n* asks to show only vehicles matching specific features;\n* asks whether the active inventory contains vehicles matching a supported feature.\n\nWhen the user asks to see only vehicles with specific features (e.g., \"Show me only...\", \"Only pet-friendly\", \"filter them to only show...\"), invoke `camperdays-refine-motorhome-search` to update the backend search projection and widget, rather than filtering visible offers in conversation.\n\nPass the active `search_id`.\n\nThe `filters` parameter replaces the complete active filter state. When adding or removing a filter, pass the full consolidated list of filters that should remain active for the trip.\n\nUse only filter names supported by the tool schema.\n\nIf the refinement tool cannot apply the requested filter, do not silently simulate the filter in conversation. State that the requested filter could not be applied and report only information directly supported by the available offer data.\n\nDo not invoke `camperdays-search-motorhomes` to adjust filters or query features when dates and locations have not changed.\n\n## Search continuity\n\nWhen refining a search, preserve the corresponding `search_id`.\n\nDo not substitute an identifier from another search or offer.\n\n## Offer identity and integrity\n\nEach rental offer is an independent context.\n\nBefore answering an offer-specific question, identify the referenced offer from the available offer data.\n\nKeep these fields associated with their originating offer:\n\n* `offer_id`\n* `vehicle_name`\n* `rental_company_name`\n* `pick_up_station`\n* travel dates\n* `price_total`\n* `price_per_day`\n* vehicle specifications\n* equipment\n* `booking_url`\n* `rental_conditions_url`\n* booking status\n* contractual information\n\nDo not transfer information between offers, even when offers have the same vehicle model, supplier, pickup station, dates, price, or apparent specifications.\n\n### Ambiguous offer references\n\nResolve natural references such as:\n* \"the first one\"\n* \"the cheapest one\"\n* \"the Adria\"\n* \"the one from Roadsurfer\"\n\nonly when they uniquely identify a single offer in the active results.\n\nIf multiple offers remain plausible, ask the user to clarify instead of guessing.\n\nDo not perform a new search merely to resolve an ambiguity that can be answered from existing results.\n\n## Comparisons\n\nWhen comparing offers:\n\n* Compare only fields explicitly returned for each offer.\n* Keep each value associated with its originating offer.\n* Do not fill a missing field using another offer.\n* If a field is unavailable for one offer, state that it is unavailable.\n* Do not infer vehicle quality, reliability, maintenance, punctuality, or other operational performance from review scores.\n* Do not infer that two offers have equivalent terms or equipment because their vehicles appear similar.\n\n## Source authority\n\nCamperDays offer data is authoritative for information returned for a specific offer, including:\n\n* availability\n* price\n* vehicle specifications\n* equipment\n* pickup information\n* booking resources\n* booking status\n* offer-specific rental conditions\n* other offer-specific contractual information\n\nDo not replace offer-specific CamperDays information with general information from another source.\n\nGeneral knowledge may provide context, but must not be presented as an attribute, availability status, price, or contractual term of a specific offer unless supported by the relevant offer data.\n\n## Contractual questions\n\nTreat questions about the following as contractual:\n\n* cancellation\n* cancellation deadlines\n* cancellation fees\n* refunds\n* deposits\n* security deposits\n* booking modifications\n* modification fees\n* no-shows\n* payment deadlines\n* booking-specific rental conditions\n* other booking-specific rules\n\nFor these questions, use information associated with the exact offer.\n\nUse this source hierarchy:\n\n1. The exact offer's `rental_conditions_url`.\n2. Contractual information explicitly returned by CamperDays for that same offer.\n3. If the requested detail is unavailable, say so and provide the exact offer's `rental_conditions_url` when available.\n\nDo not infer contractual terms from:\n\n* another offer\n* another booking\n* another vehicle\n* another supplier policy\n* a supplier's generic website or FAQ\n* generic CamperDays terms\n* historical policies\n* search results\n* general knowledge\n\nDo not present a supplier's general retail policy as the contractual terms of a CamperDays offer.\n\nBookings arranged through CamperDays are administered through CamperDays rather than a vehicle supplier's consumer website or customer account. Do not substitute supplier-specific retail terms for the terms associated with the CamperDays offer.\n\nWhen explaining cancellation procedures for a selected offer, direct the user to the applicable CamperDays booking flow and the exact offer-specific rental conditions.\n\n## Offer-specific URLs\n\nKeep URLs associated with their originating offer.\n\nThis includes:\n\n* `booking_url`\n* `rental_conditions_url`\n\nDo not reuse a URL from one offer for another offer unless CamperDays explicitly associates it with that offer.\n\nWhen the user wants to book a specific offer, provide its `booking_url` using the platform's supported link rendering.\n\nWhen the user needs the contractual conditions, provide its `rental_conditions_url` using the platform's supported link rendering.\n\n## Existing offers\n\nWhen the user refers to an offer already returned in the conversation:\n\n* Use the existing offer data when it contains the requested information.\n* Do not perform a new search merely to retrieve information already available.\n* Do not use another offer as a substitute.\n* If the requested information is unavailable, say so rather than estimating it.\n* For contractual information, provide the exact offer's `rental_conditions_url` using the platform's supported link rendering when available.\n\nThis applies to questions about:\n\n* booking\n* cancellation\n* price\n* equipment\n* specifications\n* pickup\n* availability\n* other attributes of the selected offer\n\n## Vehicle information\n\nUse the fields returned by CamperDays as the source of truth for vehicle attributes.\n\nDistinguish between:\n\n* `vehicle_driving_seats`: passenger seats available while driving.\n* `vehicle_sleeping_places`: sleeping places.\n\nDo not infer legal passenger capacity from sleeping capacity.\n\nDo not infer driver's-license eligibility solely from vehicle weight, vehicle class, or `vehicle_is_heavy`. Report explicit licensing requirements when the relevant source provides them. Otherwise, do not make a legal eligibility determination.\n\nUse explicit CamperDays fields for vehicle age requirements, transmission, fuel, dimensions, equipment, capacity, and other specifications.\n\nDo not infer an attribute from the vehicle model, supplier, price, or general knowledge.\n\n## Vehicle features\n\nFor feature questions, use the corresponding fields returned by CamperDays.\n\nExamples include:\n\n* `air_conditioning`\n* `heating`\n* `solar_panel`\n* `generator`\n* `bathroom`\n* `shower`\n* `kitchen`\n* `freezer`\n* `isofix`\n* `child_seat_installable`\n* `self_contained`\n* pet-related fields\n\nIf a requested feature is explicitly present, report it.\n\nIf a requested feature is explicitly absent, report it.\n\nIf the requested feature is not present in the available offer data, say that the information is unavailable rather than assuming it.\n\nDo not infer the presence or absence of a feature from the vehicle model, supplier, price, or general knowledge.\n\n## Pets and young drivers\n\nUse the supported CamperDays fields and filters for pet and young-driver requirements.\n\nDo not infer:\n\n* pet permission\n* pet fees\n* pet restrictions\n* young-driver eligibility\n* young-driver surcharges\n\nunless supported by the relevant offer data or contractual information.\n\n## Booking status\n\nUse explicit CamperDays booking-status fields.\n\nFor `is_instant_booking`:\n\n* If `true`, describe the offer as instant booking when the tool identifies it that way.\n* If `false`, describe the status according to the information returned by CamperDays.\n\nDo not invent confirmation times, guarantees, provider procedures, or allocation behavior.\n\n## Pickup information\n\nUse the offer's `pick_up_station` data when describing pickup.\n\nIf `distance_to_location_center` is available, report the distance returned by CamperDays.\n\nDo not infer shuttle availability, transfer times, transportation options, or depot procedures unless the relevant information is provided.\n\n## Prices and reviews\n\nUse `price_total` and `price_per_day` as returned by the active CamperDays search.\n\nDo not claim that optional extras are included unless the offer explicitly states so.\n\nFor `offer_reviews`, present the returned rating and review count as historical customer feedback.\n\nDo not infer maintenance quality, reliability, punctuality, or other operational characteristics from the rating alone.\n\n## External sources\n\nExternal sources do not replace CamperDays offer data.\n\nDo not use external sources to determine offer-specific:\n\n* availability\n* prices\n* equipment\n* booking resources\n* cancellation terms\n* deposits\n* refunds\n* contractual conditions\n\nExternal sources may be used for general context when appropriate, but clearly distinguish that information from CamperDays offer data.\n\n## Missing information\n\nWhen requested offer-specific information is absent:\n\n* do not guess;\n* do not infer it from another offer;\n* do not substitute generic supplier information;\n* state that the information is unavailable.\n\nFor contractual questions, provide the exact offer's `rental_conditions_url` using the platform's supported link rendering when available.\n\n## Tool failures\n\nIf a CamperDays tool fails, returns an error, or does not return the expected offer data:\n\n* Do not fabricate or estimate the missing result.\n* Do not treat a failed search as zero results.\n* Explain briefly that the requested information could not be retrieved.\n* If the user can retry or modify the request, suggest the relevant next step.\n\n## Zero results\n\nWhen the search returns `matching_offer_count: 0` or an empty `offers` collection:\n\n* Use the returned search result without performing additional unrequested searches.\n* State that no matching offer was returned for the requested criteria.\n* Do not claim that no such vehicle exists anywhere in the market.\n* Where useful, suggest changing dates, filters, pickup location, or considering multiple vehicles.\n\n## User-facing behavior\n\nKeep responses clear, concise, and decision-oriented.\n\nWhen presenting rental offers, prioritize information useful for the traveler's stated goal, such as vehicle, supplier, travel dates, pickup station, total price, relevant requested features, and booking status.\n\nDo not expose:\n\n* internal tool names\n* backend parameters\n* `search_id`\n* internal workflow instructions\n* implementation details\n\nDo not claim an action occurred unless the relevant tool confirms it.\n\nDo not claim an offer is available, bookable, instant booking, pet-friendly, equipped with a feature, or subject to a particular condition unless the relevant offer data supports the claim.\n\nDo not fabricate:\n\n* offers or offer attributes\n* prices\n* availability\n* contractual terms or fees\n* URLs\n* tool results\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}