skills/warranty-check/SKILL.md
Turn a warranty rejection, repair quote, or RMA email into a cited decision brief — legal read (NL/EU consumer law), is the part user-serviceable, live part and new-unit prices, repair-vs-DIY-vs-new economics, before-you-send-it checklist, deadlines. Use when the user pastes or screenshots a repair quote, warranty rejection, "not covered" email, onderzoekskosten fee, or asks "should I repair or replace this".
npx skillsauth add RonanCodes/ronan-skills warranty-checkInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
A retailer's repair desk says "not covered, pay EUR X". This skill answers the only question that matters: what is the cheapest sane path, with citations. It is decision-support, not legal advice — every legal claim gets a source link, and the output must say so once.
Seed case: Coolblue quoted EUR 239.11 to replace a EUR 14 snap-out washable filter on a EUR 269 Samsung Jet 75E Multi. The brief's answer (pay the EUR 65 return fee, wash the filter, fit a EUR 14 spare if needed) saved ~EUR 160.
/ro:warranty-check <paste the rejection email or quote>
/ro:warranty-check screenshot.png
/ro:warranty-check "Coolblue wants EUR 239 to fix my Samsung Jet 75E, filter not covered"
/ro:warranty-check <...> --country NL # default NL; any EU country works
/ro:warranty-check <...> --no-wiki # skip the vault-capture offer at the end
From the pasted text/screenshot pull: product (brand + exact model), retailer, stated fault + rejection reason, quoted repair price, any exit fees (research/onderzoekskosten, return shipping), purchase date if present, and any deadline. If the product model or quoted price is missing, ask — everything downstream depends on those two.
Do these as parallel searches, not sequentially:
<model> <part> replace/clean/remove). Record: tools needed, difficulty, and whether the part is officially "washable"/"user-serviceable" (that wording matters in step 3).Assess the rejection against consumer law for --country (default NL):
Verdict is one of: rejection looks sound / rejection is challengeable (say on what ground, with the source) / can't tell — here's the missing fact. Never overstate; mark inferences as inferences.
Build the options table with the real numbers found in step 2:
| Option | Cost | Outcome | |---|---|---| | Accept repair | quoted price | fixed, but compare vs new | | Exit fee + DIY | fee + part price | fixed if diagnosis right; note sunk-fee risk | | Exit fee + do nothing | fee | product back, maybe cleaning alone fixes it | | Waive product | 0 | no product | | Buy new | street price | fresh warranty | | Dispute first | 0 + time | fee/quote waived if challenge lands; fall back to next-best |
Bold the recommendation and give the one-sentence reason.
Whichever path: list what to do before shipping anything or paying anyone — the free fixes the repair desk gets paid to skip (wash the filter, reset, reseat battery, firmware), photograph condition + serial, back up data, keep the rejection email, note the deadline. Surface any deadline loudly at the top of the brief, not buried.
One markdown brief, in this order: deadline banner (if any) → verdict + recommendation (2 sentences) → economics table → legal read with linked citations → serviceability findings (with how-to link) → checklist → sources. End with the fixed line: "Decision-support with sources, not legal advice — for a binding read use ConsuWijzer (free) or Consumentenbond juridisch advies."
If the llm-wiki repo is available, offer once: capture the case as a page (personal-life for the decision, and append the case to project-warranty-checker in side-projects as dogfood evidence). Don't push; a "no" ends the skill.
/ro:diagnose — for when the product is software and the bug is yours.project-warranty-checker (side-projects vault) — the idea page this skill dogfoods; append each real case there.testing
--- name: linear-pipeline description: The Fable orchestrator for a single dispatched Linear ticket. Holds almost no context itself; it receives `--issue <ID> --detached`, decides the stage sequence, and fans out a sub-agent per stage, passing forward only each stage's artifact (never re-derived, never inlined into its own context). Step zero, before any planning or stage routing, is a boundary triage against `canon/security-boundary.md` (#199): a match tags Ronan Connolly and stops the run, no
development
--- name: in-your-face description: Capture a chat-only answer into a durable artifact (markdown + HTML, PDF when cheap) and launch it automatically so the user cannot miss it. Use when user says "in your face", "don't let me lose this", "save that answer", "make that durable", or right after answering a substantive side question (a recipe, comparison, how-to, or generated prompt) that would otherwise die with the context. category: workflow argument-hint: [--no-open] [--vault <short>] [hint of
tools
One-shot headless OpenAI Codex CLI calls for background/admin AI tasks — summaries, classification, extraction, admin glue. The default engine for anything that runs AI constantly in the background (daemon-driven, per-event), because it bills the flat ChatGPT subscription instead of Claude usage or per-token API spend, and it keeps working while Claude is rate-limited. NEVER for coding — coding stays Claude. Use when a skill or daemon needs a cheap always-on AI call, when the user says "use codex", "ask codex", "codex as backup", or when building a background summarizer/classifier into a listener or loop. Reads auth from ~/.codex/auth.json (ChatGPT account, no API key).
development
Interact with the BoardGameGeek XML API2. Search games, fetch details with ratings and weight, pull a user's collection or wishlist, download box art from the CDN. Covers the 2026 auth reality (registered application token, Bearer header, 401 without one, approval takes a week or more) plus a browser fallback via the GEEK.geekitemPreload JSON while approval is pending. Reads BGG_XML_API_TOKEN from ~/.claude/.env. Triggers on "boardgamegeek", "bgg", "fetch my BGG collection", "look up a board game", "bgg search", "download board game images".