search-repair-guides

ifixit.com/search-repair-guides-utnh60 · updated May 21, 2026

MDX-style export adds YAML metadata + attribution linking explainx.ai and this canonical listing URL.

$browse install ifixit.com/search-repair-guides-utnh60
0 commentsdiscussion
summary

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.

skill.md
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

iFixit Search Repair Guides

Purpose

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.

When to Use

  • "Find iPhone 14 battery replacement guides and return tools + steps."
  • "List all laptop screen repair guides for Dell Latitude with difficulty Easy or Moderate."
  • "Get the full step-by-step (with image URLs) for guide #152966."
  • Enumerating repairability data for a device family for a downstream agent (product research, parts shopping, repairability scoring).
  • Bulk extraction of repair-procedure metadata across hundreds of devices — the API is faster, cheaper, and structurally more reliable than HTML scraping.

Workflow

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).

1. Search for guides

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.

2. Apply client-side filters

The search endpoint has no native filter for device type, brand, or difficulty — fold them in after the response lands:

  • Device type filter (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.
  • Brand filter: put the brand directly in the search query ("Dell Latitude", "Brother HL", "Samsung Galaxy") — far simpler than post-filtering. Or post-filter on category containing the brand string.
  • Difficulty filter: post-filter difficulty in {"Very easy", "Easy", "Moderate", "Difficult", "Very difficult"}. The set is closed-vocabulary.

3. Fetch full guide detail (tools, parts, steps with images)

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:

FieldTypeMeaning
guideid, title, url, category, subject, typevariousguide identity (type ∈ `replacement
difficultystring`Very easy
time_requiredstringpretty-printed ("1 - 2 hours", "30 minutes - 1 hour")
time_required_min, time_required_maxintseconds3600/7200 for "1 - 2 hours"
summary, introduction_raw, introduction_rendered, conclusion_raw, conclusion_renderedstringpreamble + closing (Markdown + HTML variants)
toolsarrayrequired tools — see below
partsarrayreplacement parts — see below
stepsarraystep-by-step procedure — see below
imageobjecthero image at `mini
revisionid, modified_date, published_date, created_dateintunix-seconds timestamps
author, usernameobject/stringcontributor
flagsarrayGUIDE_STARRED (verified by iFixit team), GUIDE_MISSING_IMAGES, GUIDE_LOUSY_PICTURES, GUIDE_USER_CONTRIBUTED, INTRODUCTION_ISSUES
prerequisitesarrayother 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.

4. Compose the structured output

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).

Browser fallback

Only if the public API is unreachable. The HTML pages are stable, server-rendered (no SPA), and contain the same data as the API.

  1. Search pagehttps://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.
  2. Guide pagehttps://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.

Site-Specific Gotchas

  • Search returns mixed 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.
  • Search is fuzzy but tokenizes oddly on hyphenated model numbers. "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.
  • The /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).
  • Invalid 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.
  • Pagination quirks: 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.
  • Locale: the API defaults to 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.
  • No rate-limiting observed during normal use, but keep concurrency ≤ 5 in-flight requests and overall ≤ 10 req/s to avoid tripping CloudFront's edge throttle. Responses carry Cache-Control: no-store — repeated identical requests are not cached client-side.
  • No anti-bot, no Cloudflare/Akamai interstitial, no captcha, no login wall. Sessions created with --proxies or --verified flags are unnecessary cost — bare browse cloud fetch works.
  • READ-ONLY discipline: do not POST to any endpoint, do not authenticate with /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.

Expected Output

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."
}
how to use search-repair-guides

How to use search-repair-guides on Cursor

AI-first code editor with Composer

1

Prerequisites

Before installing skills in Cursor, ensure your development environment meets these requirements:

  • Cursor installed and configured on your development machine
  • Node.js version 16.0+ with npm package manager (verify with node --version)
  • Active project directory or workspace where you want to add search-repair-guides
2

Execute installation command

Execute the skills CLI command in your project's root directory to begin installation:

$browse install ifixit.com/search-repair-guides-utnh60

The skills CLI fetches search-repair-guides from GitHub repository ifixit.com/search-repair-guides-utnh60 and configures it for Cursor.

3

Select Cursor when prompted

The CLI will show a list of available agents. Use arrow keys to navigate and space to select Cursor:

◆ Which agents do you want to install to?
│ ── Universal (.agents/skills) ── always included ────
│ • Amp
│ • Antigravity
│ • Cline
│ • Codex
│ ●Cursor(selected)
│ • Cursor
│ • Windsurf
4

Verify installation

Confirm successful installation by checking the skill directory location:

.cursor/skills/search-repair-guides

Reload or restart Cursor to activate search-repair-guides. Access the skill through slash commands (e.g., /search-repair-guides) or your agent's skill management interface.

Security & Verification Notice

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 development environment. Always verify the publisher's identity, review recent commits, and test in isolated environments before production deployment.

List & Monetize Your Skill

Submit your Claude Code skill and start earning

GET_STARTED →

Use Cases

Task Automation & Efficiency

Automate repetitive workflows and reduce manual effort

Example

Generate reports, summarize documents, draft communications

Save 3-5 hours per week on routine tasks

Knowledge Enhancement

Learn new skills, understand complex topics, get expert guidance

Example

Explain concepts, provide examples, suggest learning resources

Accelerate learning and skill development by 2x

Quality Improvement

Enhance output quality through reviews, suggestions, and refinements

Example

Review drafts, suggest improvements, catch errors

Improve work quality by 30-40% with less effort

Implementation Guide

Prerequisites

  • Claude Desktop or compatible AI client with skill support
  • Clear understanding of task or problem to solve
  • Willingness to iterate and refine outputs

Time Estimate

15-45 minutes depending on use case complexity

Installation Steps

  1. 1.Install skill using provided installation command
  2. 2.Test with simple use case relevant to your work
  3. 3.Evaluate output quality and relevance
  4. 4.Iterate on prompts to improve results
  5. 5.Integrate into regular workflow if valuable

Common Pitfalls

  • Expecting perfect results without iteration
  • Not providing enough context in prompts
  • Using skill for tasks outside its intended scope
  • Accepting outputs without review and validation

Best Practices

✓ Do

  • +Start with clear, specific prompts
  • +Provide relevant context and constraints
  • +Review and refine all outputs before using
  • +Iterate to improve output quality
  • +Document successful prompt patterns

✗ Don't

  • Don't use without understanding skill limitations
  • Don't skip validation of outputs
  • Don't share sensitive information in prompts
  • Don't expect skill to replace human judgment

💡 Pro Tips

  • Be specific about desired format and style
  • Ask for multiple options to choose from
  • Request explanations to understand reasoning
  • Combine AI efficiency with human expertise

When to Use This

✓ 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.

Learning Path

  1. 1Familiarize yourself with skill capabilities and limitations
  2. 2Start with low-risk, non-critical tasks
  3. 3Progress to more complex and valuable use cases
  4. 4Build expertise through regular use and experimentation

Discussion

Product Hunt–style comments (not star reviews)
  • No comments yet — start the thread.
general reviews

Ratings

4.540 reviews
  • Tariq Khan· Dec 28, 2024

    We added search-repair-guides from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.

  • Amelia Flores· Dec 24, 2024

    I recommend search-repair-guides for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.

  • Daniel Sanchez· Dec 20, 2024

    search-repair-guides fits our agent workflows well — practical, well scoped, and easy to wire into existing repos.

  • Aarav Patel· Nov 19, 2024

    search-repair-guides reduced setup friction for our internal harness; good balance of opinion and flexibility.

  • Neel Yang· Nov 11, 2024

    Registry listing for search-repair-guides matched our evaluation — installs cleanly and behaves as described in the markdown.

  • Sofia Farah· Nov 3, 2024

    Useful defaults in search-repair-guides — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.

  • Sofia Sethi· Oct 22, 2024

    I recommend search-repair-guides for anyone iterating fast on agent tooling; clear intent and a small, reviewable surface area.

  • Daniel Choi· Oct 10, 2024

    Registry listing for search-repair-guides matched our evaluation — installs cleanly and behaves as described in the markdown.

  • Aanya Sethi· Oct 2, 2024

    search-repair-guides reduced setup friction for our internal harness; good balance of opinion and flexibility.

  • Tariq Farah· Sep 21, 2024

    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

1 / 4