Search iFixit for repair guides by device model, brand, or category and return structured results — title, difficulty, time, step count, tools, parts, and direct guide URL — plus optional full step-by-step instructions with image URLs. Read-only.
Works with
AI-first code editor with Composer
Before installing skills in Cursor, ensure your development environment meets these requirements:
node --versionsearch-repair-guidesExecute the skills CLI command in your project's root directory to begin installation:
Fetches search-repair-guides from ifixit.com/search-repair-guides-utnh60 and configures it for Cursor.
The CLI shows a list of agents. Use arrow keys and space to select Cursor:
Confirm successful installation by checking the skill directory location:
Restart Cursor to activate search-repair-guides. Access via /search-repair-guides in your agent's command palette.
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your environment. Always review source, verify the publisher, and test in isolation before production.
Submit your Claude Code skill and start earning
Automate repetitive workflows and reduce manual effort
Example
Generate reports, summarize documents, draft communications
Save 3-5 hours per week on routine tasks
Learn new skills, understand complex topics, get expert guidance
Example
Explain concepts, provide examples, suggest learning resources
Accelerate learning and skill development by 2x
Enhance output quality through reviews, suggestions, and refinements
Example
Review drafts, suggest improvements, catch errors
Improve work quality by 30-40% with less effort
0
total installs
0
this week
0
upvotes
Run in your terminal
0
installs
0
this week
—
stars
| name | search-repair-guides |
| title | iFixit Search Repair Guides |
| description | >- Search iFixit for repair guides by device model, brand, or category and return structured results — title, difficulty, time, step count, tools, parts, and direct guide URL — plus optional full step-by-step instructions with image URLs. Read-only. |
| website | ifixit.com |
| category | repair |
| tags | - repair - guides - diy - electronics - read-only - public-api |
| source | 'browserbase: agent-runtime 2026-05-20' |
| updated | '2026-05-20' |
| recommended_method | api |
| alternative_methods | - method: browser rationale: >- iFixit's public site is a thin client over the same `/api/2.0/` endpoints used by this skill. The browser path costs ~10x more (one HTTP round-trip per page vs one for the entire structured envelope) and surfaces no extra data — use only as a backstop if the API is unreachable. Steps + tool list are accessible from the rendered guide page via `window.__INITIAL_STATE__.guide` or the embedded `script[type="application/ld+json"]` block. |
| verified | false |
| proxies | false |
Search iFixit for repair guides matching a device model, brand, or category (phone, laptop, desktop, printer, etc.) and return a structured list of guides with title, difficulty level, time required, step count, required tools, replacement parts, and direct guide URL. For any individual guide, return the full step-by-step instructions including step titles, bullet text, and per-step image URLs at multiple resolutions. Supports filtering by device type, brand, and difficulty. Read-only — never edits guides, never posts comments, never adds items to cart, never reaches checkout.
iFixit exposes a fully public REST API at https://www.ifixit.com/api/2.0/ — no authentication, no API key, no cookies, no anti-bot stealth, no residential proxy needed. The site's web search page is a thin client over the same API. Always lead with the API; the browser path exists only as a backstop if the API is ever rate-limited or temporarily unreachable (no evidence either has happened in normal use).
GET https://www.ifixit.com/api/2.0/search/{URL-encoded query}
?filter=guide
&limit={1-100}
&offset={N}
{query} is free text: device model (iPhone 14), brand + model (Dell Latitude 7420), part + device (MacBook Pro keyboard), or category (PC Laptop battery). URL-encode spaces as %20 or +.filter=guide is mandatory if you only want repair guides. Without it, the search mixes dataType: "guide", "wiki" (device taxonomy pages), "question" (community Q&A), and "page" (static content). Typical unfiltered mix observed: ~30% guides, ~50% wikis, ~15% questions, ~5% pages.limit defaults to 100; max practical value is 100. offset pages through additional results when moreResults: true is set on the response.Response shape — each result already contains everything the listing-card UI needs:
{
"search": "iphone 14 battery",
"offset": 0,
"limit": 5,
"totalResults": 4,
"moreResults": false,
"results": [
{
"dataType": "guide",
"guideid": 152966,
"title": "iPhone 14 Battery Replacement",
"subject": "Battery",
"category": "iPhone 14",
"type": "replacement",
"difficulty": "Moderate",
"time_required_max": 7200,
"summary": "Use this guide to replace a worn-out or dead…",
"url": "https://www.ifixit.com/Guide/iPhone+14+Battery+Replacement/152966",
"username": "Tobias Isakeit",
"flags": ["GUIDE_STARRED"],
"image": { "thumbnail": "...", "standard": "...", "large": "...", "original": "..." }
}
]
}
Important: this endpoint does NOT return the tools[], parts[], or steps[] arrays — those only come from the per-guide endpoint in step 3. Step count is also absent at search time. If the caller asked for "list of guides matching X" with no step-level detail, you can stop here.
The search endpoint has no native filter for device type, brand, or difficulty — fold them in after the response lands:
phone | laptop | desktop | printer | tablet | mac | game-console | ...): each result's category field is the canonical iFixit device-taxonomy node (e.g. "iPhone 14", "Dell Latitude 7420", "Brother HL-2270DW"). To filter by device type, walk the category against the iFixit category tree at GET /api/2.0/categories — Phone lives under Phone, laptops under PC > PC Laptop or Mac > Mac Laptop, desktops under PC > PC Desktop or Mac > Mac Desktop, and printers under Computer Hardware > Printer. For most use cases a simple substring match on category ("iPhone", "MacBook", "Latitude") is sufficient and avoids the extra request."Dell Latitude", "Brother HL", "Samsung Galaxy") — far simpler than post-filtering. Or post-filter on category containing the brand string.difficulty in {"Very easy", "Easy", "Moderate", "Difficult", "Very difficult"}. The set is closed-vocabulary.For each guideid of interest:
GET https://www.ifixit.com/api/2.0/guides/{guideid}
Returns the full guide envelope — fields used by this skill:
| Field | Type | Meaning |
|---|---|---|
guideid, title, url, category, subject, type | various | guide identity (type ∈ `replacement |
difficulty | string | `Very easy |
time_required | string | pretty-printed ("1 - 2 hours", "30 minutes - 1 hour") |
time_required_min, time_required_max | int | seconds — 3600/7200 for "1 - 2 hours" |
summary, introduction_raw, introduction_rendered, conclusion_raw, conclusion_rendered | string | preamble + closing (Markdown + HTML variants) |
tools | array | required tools — see below |
parts | array | replacement parts — see below |
steps | array | step-by-step procedure — see below |
image | object | hero image at `mini |
revisionid, modified_date, published_date, created_date | int | unix-seconds timestamps |
author, username | object/string | contributor |
flags | array | GUIDE_STARRED (verified by iFixit team), GUIDE_MISSING_IMAGES, GUIDE_LOUSY_PICTURES, GUIDE_USER_CONTRIBUTED, INTRODUCTION_ISSUES |
prerequisites | array | other guides that must be completed first |
Step count is simply steps.length. No top-level step_count field is exposed.
tools[] shape:
{ "text": "SIM Card Eject Tool", "quantity": 1, "isoptional": false, "type": "",
"url": "https://www.ifixit.com/products/sim-card-eject-tool",
"thumbnail": "https://cart-products.cdn.ifixit.com/cart-products/OKbwbsAqNCv4lWAP.thumbnail",
"notes": null }
parts[] shape (same shape as tools — iFixit treats them as cart products):
{ "text": "iPhone 12/12 Pro Battery", "quantity": 1, "isoptional": false, "type": "",
"url": "https://www.ifixit.com/products/iphone-12-12-pro-replacement-battery",
"thumbnail": "...", "notes": null }
steps[] shape:
{
"stepid": 280491,
"orderby": 1,
"title": "Eject the SIM card tray",
"lines": [
{ "text_raw": "Insert a SIM card eject tool …", "text_rendered": "…", "bullet": "black", "level": 0 },
{ "text_raw": "Press firmly to eject the tray.", "text_rendered": "…", "bullet": "black", "level": 0 }
],
"media": {
"type": "image",
"data": [
{ "id": 2328713, "guid": "3DrAgS2S2IaCnYj6",
"thumbnail": "...", "standard": "...", "medium": "...", "large": "...", "huge": "...", "original": "..." }
]
},
"comments": [...]
}
Each step has up to three images in its media.data[] array (the iFixit UI shows up to three side-by-side per step). media.type can also be "embed" (YouTube/Vimeo intro video) — those steps have data: [] and instead carry an embed_url field; rare.
Stitch the search result + per-guide detail responses into the final shape (see "Expected Output" below). For "list-only" queries skip step 3 entirely; for "list + step-by-step" queries fetch the per-guide detail for each guideid (parallelizable — the API is happy with concurrent reads, but keep ≤ 5 in-flight requests as a courtesy).
Only if the public API is unreachable. The HTML pages are stable, server-rendered (no SPA), and contain the same data as the API.
https://www.ifixit.com/Search?query={URL-encoded query}. Each result is an <a> whose href points to /Guide/<slug>/<guideid> and whose adjacent markup includes data-difficulty="...", data-time="...", plus the title text. Use browse get html body then regex-match /Guide/[^/"]+/(\d+) to pull guide IDs.https://www.ifixit.com/Guide/<slug>/<guideid>. The page has structured data at script[type="application/ld+json"] containing name, totalTime (ISO 8601 duration), step[] (each with name, text, image), and tool[]. iFixit also embeds a window.__INITIAL_STATE__ JSON blob in <script> with everything the API returns. Extract via browse eval "JSON.stringify(window.__INITIAL_STATE__.guide)".Cost premium for the browser path is ~10× (one HTTP round-trip per page vs one for the entire structured envelope) and offers no extra data. Use only as a backstop.
dataTypes — always pass ?filter=guide. Without the filter, ~70% of results are wikis (device taxonomy nodes), Q&A threads, and static pages — useless for a "repair guides" task. Other filter values exist (wiki, question, page, device, team) but this skill should always pin to guide.time_required_min/max are integer seconds, NOT minutes or ISO durations. Sample: 3600 / 7200 = "1 – 2 hours". A pretty-printed time_required string is also available, but use the integer fields for any arithmetic / sorting / comparison.parts[] are iFixit store SKUs, not OEM/manufacturer part numbers. The API exposes only iFixit's own commerce product (name, store URL, thumbnail, quantity). The original task description asks for "part numbers" — the closest stable identifier is the URL slug (e.g. iphone-12-12-pro-replacement-battery) or the product's text (display name). Canonical OEM part numbers (e.g. Apple's 661-19586) are not in the API and are not on the rendered guide page either — they live only in iFixit's commerce catalog for some SKUs and are surfaced inconsistently. Be explicit with downstream callers that "part number" = iFixit SKU URL/slug, not manufacturer part number.difficulty is a closed vocabulary: Very easy | Easy | Moderate | Difficult | Very difficult. Anything else means the field is null or the guide is malformed."brother hl-2270dw" → totalResults: 0. Drop the hyphen ("brother hl2270dw" or "brother hl 2270dw") for a chance at matches, or fall back to a broader query ("brother hl printer") and post-filter on category. Stop-words and case are normalized; punctuation is not./api/2.0/categories/<name>/guides endpoint does NOT exist — it 404s with {"message":"Endpoint not found"}. To enumerate guides for a whole device category, search for the category name itself (e.g. search/iPhone%2014%20Pro?filter=guide&limit=100) and post-filter on the category field. The category tree at /api/2.0/categories is for taxonomy navigation only./api/2.0/wikis/CATEGORY/<Title> returns the device-taxonomy node (description, ancestors, children, related parts/tools) but not the list of guides for that device — guides arrive only through the search endpoint or by enumerating known guideids. Spaces in titles become _ (e.g. MacBook_Pro, not MacBook%20Pro).guideid → HTTP 200 with {"message":"Guide not found"} (NOT a 4xx status). Always check for the message key before assuming the body is a guide envelope.offset is accepted but for small result sets (≤ limit) the API ignores it and returns the same first page. Trust totalResults and moreResults for paging logic — only request a non-zero offset if moreResults: true was on the prior response.en. Pass &langid=de (or any of available_langids on the guide envelope) to get a translated guide. Search results also vary by locale; for international device names ("iPhone 14" works in any locale, "PC Laptop" only in English) prefer the English query.Cache-Control: no-store — repeated identical requests are not cached client-side.--proxies or --verified flags are unnecessary cost — bare browse cloud fetch works./api/2.0/user/token, do not call /api/2.0/cart/*, and on the browser fallback never click "Add to cart", "Edit this guide", "Add a comment", or "Mark as done" — they all attempt to mutate state or open a paywall.The skill returns one of these JSON shapes:
// Success — list of guides matching the search (no step-by-step requested)
{
"success": true,
"query": "iPhone 14 battery",
"filters": { "device_type": "phone", "brand": "Apple", "difficulty": ["Easy", "Moderate"] },
"total_results": 4,
"more_results": false,
"guides": [
{
"guide_id": 152966,
"title": "iPhone 14 Battery Replacement",
"url": "https://www.ifixit.com/Guide/iPhone+14+Battery+Replacement/152966",
"category": "iPhone 14",
"subject": "Battery",
"type": "replacement",
"difficulty": "Moderate",
"time_required": "1 - 2 hours",
"time_required_seconds": { "min": 3600, "max": 7200 },
"summary": "Use this guide to replace a worn-out or dead…",
"hero_image_url": "https://guide-images.cdn.ifixit.com/igi/2qpgDse6XOHTCuJY.large",
"author": "Tobias Isakeit",
"flags": ["GUIDE_STARRED"]
}
]
}
// Success — single guide with full step-by-step + tools + parts
{
"success": true,
"guide": {
"guide_id": 152966,
"title": "iPhone 14 Battery Replacement",
"url": "https://www.ifixit.com/Guide/iPhone+14+Battery+Replacement/152966",
"category": "iPhone 14",
"subject": "Battery",
"type": "replacement",
"difficulty": "Moderate",
"time_required": "1 - 2 hours",
"time_required_seconds": { "min": 3600, "max": 7200 },
"step_count": 49,
"introduction": "iPhone batteries are rated to hold 80% of their capacity for up to 500 charge cycles…",
"tools": [
{
"name": "SIM Card Eject Tool",
"quantity": 1,
"optional": false,
"ifixit_product_url": "https://www.ifixit.com/products/sim-card-eject-tool",
"thumbnail": "https://cart-products.cdn.ifixit.com/cart-products/OKbwbsAqNCv4lWAP.thumbnail"
}
],
"parts": [
{
"name": "iPhone 14 Battery",
"quantity": 1,
"optional": false,
"ifixit_product_url": "https://www.ifixit.com/products/iphone-14-replacement-battery",
"ifixit_sku_slug": "iphone-14-replacement-battery",
"thumbnail": "https://cart-products.cdn.ifixit.com/cart-products/...thumbnail"
}
],
"steps": [
{
"step_number": 1,
"step_id": 280491,
"title": "Eject the SIM card tray",
"instructions": [
{ "text": "Insert a SIM card eject tool or a paperclip into the small hole in the SIM card tray.", "bullet": "black", "level": 0 },
{ "text": "Press firmly to eject the tray.", "bullet": "black", "level": 0 }
],
"images": [
"https://guide-images.cdn.ifixit.com/igi/3DrAgS2S2IaCnYj6.standard",
"https://guide-images.cdn.ifixit.com/igi/3DrAgS2S2IaCnYj6.large"
]
}
]
}
}
// No guides matched
{
"success": true,
"query": "brother hl-2270dw",
"total_results": 0,
"more_results": false,
"guides": [],
"note": "No guides matched. Try dropping hyphens from model numbers or broaden the query."
}
// Guide id not found (per-guide fetch)
{
"success": false,
"reason": "guide_not_found",
"guide_id": 99999999,
"message": "Guide not found"
}
// API unreachable (after retries) — fall back to browser path or surface the failure
{
"success": false,
"reason": "api_unreachable",
"details": "GET /api/2.0/search/... returned <status> after 3 retries; browser fallback also failed."
}
Prerequisites
Time Estimate
15-45 minutes depending on use case complexity
Steps
Common Pitfalls
✓ Do
✗ Don't
💡 Pro Tips
✓ Use when
Use when skill capabilities match your task, clear ROI on time saved, and you can validate outputs. Best for repetitive tasks, learning, and quality improvement.
✗ Avoid when
Avoid when task requires deep expertise you can't validate, involves sensitive decisions, or when learning process is more valuable than speed of completion.
hyf0/vue-skills
booking.com/search-hotels-asq6cc
aliexpress.com/search-product-p0h8a7
nav.com/get-smb-funding-2s1rpm
shopee.com.my/search-products-5epzg0
google.com/search-flights-ts4g1f
We added search-repair-guides from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
I recommend search-repair-guides for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
search-repair-guides fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.
search-repair-guides reduced setup friction for our internal harness; good balance of opinion and flexibility.
Registry listing for search-repair-guides matched our evaluation — installs cleanly and behaves as described in the markdown.
Useful defaults in search-repair-guides — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
I recommend search-repair-guides for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
Registry listing for search-repair-guides matched our evaluation — installs cleanly and behaves as described in the markdown.
search-repair-guides reduced setup friction for our internal harness; good balance of opinion and flexibility.
I recommend search-repair-guides for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.
showing 1-10 of 40