[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-algolia-algolia-data-modeling":3,"mdc-t9qsqz-key":36,"related-repo-algolia-algolia-data-modeling":854,"related-org-algolia-algolia-data-modeling":952},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":20,"repoUrl":21,"updatedAt":22,"license":23,"forks":24,"topics":25,"repo":31,"sourceUrl":34,"mdContent":35},"algolia-data-modeling","design Algolia data models and indices","Algolia data modeling and indexing guidance. Use before or alongside indexing records or building Algolia search UI for net-new search, browse, autocomplete, ecommerce, personalization, Dynamic Re-Ranking, recommendations, or analytics-aware implementations. Makes record shape, objectID, display fields, facets, ranking fields, and event attribution explicit decisions. Use for records, variants, SKUs, indices, replicas, searchable and faceting attributes, denormalization, merchandising fields, timestamps, inventory, event attribution, indexing pipelines, partial updates, secured data, multi-language or multi-region strategies, and migrations. Do NOT use for live imports, exports, record mutations, settings changes, or account actions; use algolia-cli or algolia-mcp. Do NOT use for frontend UI implementation; use algolia-instantsearch-ui, algolia-autocomplete, algolia-ui-libraries, or the official instantsearch skill.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"algolia","Algolia","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Falgolia.png",[12,14,17],{"name":9,"slug":8,"type":13},"tag",{"name":15,"slug":16,"type":13},"Data Modeling","data-modeling",{"name":18,"slug":19,"type":13},"Search","search",8,"https:\u002F\u002Fgithub.com\u002Falgolia\u002Fskills","2026-08-01T06:06:01.500756","MIT",2,[26,27,8,28,29,19,30],"agent","ai-assistant","mcp","recommendations","skills",{"repoUrl":21,"stars":20,"forks":24,"topics":32,"description":33},[26,27,8,28,29,19,30],"Algolia skills for AI Agents","https:\u002F\u002Fgithub.com\u002Falgolia\u002Fskills\u002Ftree\u002FHEAD\u002Fskills\u002Falgolia-data-modeling","---\nname: algolia-data-modeling\ndescription: >\n  Algolia data modeling and indexing guidance. Use before or alongside indexing records or building Algolia search UI for net-new search, browse, autocomplete, ecommerce, personalization, Dynamic Re-Ranking, recommendations, or analytics-aware implementations. Makes record shape, objectID, display fields, facets, ranking fields, and event attribution explicit decisions. Use for records, variants, SKUs, indices, replicas, searchable and faceting attributes, denormalization, merchandising fields, timestamps, inventory, event attribution, indexing pipelines, partial updates, secured data, multi-language or multi-region strategies, and migrations. Do NOT use for live imports, exports, record mutations, settings changes, or account actions; use algolia-cli or algolia-mcp. Do NOT use for frontend UI implementation; use algolia-instantsearch-ui, algolia-autocomplete, algolia-ui-libraries, or the official instantsearch skill.\nlicense: MIT\nmetadata:\n  author: algolia\n  version: \"0.5\"\n---\n\n# Algolia Data Modeling\n\nUse this skill to shape the data before code writes records to Algolia. Good relevance usually starts with records that match the user journey, not the source database schema.\n\n## Customer-Facing Standard\n\n- Ask for sample records and edge cases before making record-shape claims.\n- State assumptions plainly when source data is missing.\n- Use public `academy.algolia.com` for learning alignment and public `algolia.com\u002Fdoc` for current implementation guidance when source-backed context is needed.\n- When an Academy metadata reference pack is available, use only its `title`, `url`, `course`, `module`, `learning_objectives`, and `updated_at` fields for structure. If it is stale or no match exists, fall back to live Academy\u002Fdocs lookup. Do not treat cached metadata as course content or implementation authority.\n- Do not require custom Academy\u002Fdocs access; use customer-provided sources only as optional context.\n- When live Algolia data, analytics, index inspection, settings changes, or account actions are needed, use Algolia MCP, the Algolia CLI, or official Algolia skills for the live operation, then apply this skill to interpret results and validate the customer-ready implementation path.\n- Produce an indexing contract, validation queries, owner handoff, and reindex\u002Fupdate path.\n- For ecommerce catalogs, explicitly choose between variant-level, variation-group-level, and product-level record models before discussing merchandising or UI behavior.\n\n## Official Companion Skills\n\n- Use official `algolia-mcp` or `algolia-cli` when live sample records, existing index shape, object counts, imports, or exports need to be inspected.\n- Use this skill after the official tool call to turn findings into a customer-facing indexing contract, variant strategy, and validation plan.\n\n## Source-Of-Truth Rules\n\n- Do not infer a final record model from database tables alone. Require sample records, UI expectations, event needs, and update ownership.\n- Do not prescribe exact Algolia settings, API commands, or migration steps without routing live operations through official `algolia-cli`, `algolia-mcp`, or current docs.\n- Treat any schema without stable IDs, variant ownership, timestamp ownership, inventory strategy, and event identifiers as provisional.\n- Before indexing records or starting UI implementation, create or update an index contract when practical. If the user needs a quick prototype, proceed with a minimal provisional contract and list the assumptions to revisit.\n- Do not treat merchandising rules as a substitute for missing merchandising data. Newness, sale status, brand ownership, inventory, best-seller status, margin, and popularity must be explicit fields or documented upstream computations.\n\n## Index Contract Decision Point\n\nBefore indexing or UI work, create `algolia\u002Findex-contract.md` or an equivalent artifact when practical. If you proceed without a complete contract, call out which decisions are provisional:\n\n- Index names.\n- Record model: variant-level, variation-group-level, product-level, or non-commerce equivalent.\n- Record granularity.\n- `objectID` strategy.\n- Searchable attributes.\n- Displayed attributes.\n- Faceting attributes.\n- Ranking signals.\n- Ranking metric grain, order, direction, precision, and bucket logic.\n- Merchandising fields.\n- Inventory fields.\n- Event attribution fields.\n- Update owner and cadence.\n- Validation queries.\n\nFor demos and prototypes, produce a one-paragraph data contract, three validation queries, and explicit deferred production concerns.\n\n## Workflow\n\n1. Read `references\u002Fdata-modeling-guide.md` before making data-shape decisions.\n2. Read `references\u002Fexample-output.md` when producing a customer-facing indexing contract or showing what good output looks like.\n3. Ask for context if record granularity, business goal, or filtering requirements are unknown.\n4. Design the index contract first: index names, environments, objectID strategy, record shape, searchable attributes, faceting attributes, ranking signals, and update ownership.\n5. Choose the variant strategy before writing code: product record, variant record, grouped variants, or separate records by locale, region, tenant, channel, price list, or permission set.\n6. Run a merchandising data-gap check before indexing: schema clarity, timestamps\u002Fnewness, promo attributes, inventory buckets, best-seller buckets, margin\u002Fpopularity metrics, metric precision, and upstream ownership.\n7. Prefer denormalized, search-ready records. Avoid forcing the UI to join or infer critical ranking\u002Ffiltering fields at query time.\n8. Design custom ranking inputs as business tie-breakers, not raw database dumps. Decide which metrics matter first, whether higher or lower is better, and whether values should be rounded or bucketed so later ranking attributes can still influence ties.\n9. Include a migration and reindexing plan when changing objectIDs, record granularity, or settings that affect relevance.\n10. Teach business users that many merchandising issues are data readiness issues first. Rules and boosts cannot reliably promote new, sale, own-brand, high-inventory, high-margin, popular, or best-selling products if those concepts are not represented in the indexed records.\n\n## Questions To Ask\n\nAsk the smallest useful subset:\n\n- Can you share 5 normal records and 5 edge cases, including variants, unavailable items, restricted content, regional differences, or records that often search poorly?\n- What entity should a search result represent: product, variant, SKU, article, location, account, or another unit?\n- Should variants appear as separate hits, one hit per product, one hit per shared variation such as color, grouped choices inside one hit, or filtered silently by availability, channel, region, account, or permissions?\n- What attributes must users search, filter, sort, display, or use for ranking?\n- Which attributes must merchandising use to promote or suppress products: new, rating, sales, popularity, margin, on sale, own brand, high inventory, best seller, seasonal, campaign, or editorial priority?\n- How does the business define \"new\", \"high inventory\", and \"best selling\" per category, and where are those buckets calculated before indexing?\n- Which custom ranking metrics should act first, second, and third when text relevance ties: sales, margin, rating, popularity, freshness, inventory, or editorial priority?\n- Are ranking metrics too precise for useful tie-breaking, and should they be rounded or bucketed such as `sales_30d_bucket`, `margin_band`, or `freshness_bucket`?\n- Which attributes are stable identifiers versus volatile display or ranking fields?\n- What records should be hidden, delayed, or secured by user\u002Faccount\u002Fregion\u002Fchannel?\n- How often do records change, and which system owns those changes?\n- Does the same content need separate indices for locales, regions, tenants, environments, or user segments?\n\n## Implementation Standards\n\n- Treat `objectID` as a stable contract. Do not derive it from mutable display fields.\n- Make variant modeling explicit. Do not accidentally index one source row per SKU if users expect one product result, and do not collapse variants if color, size, availability, price, region, or permissions materially change search behavior.\n- Keep record size intentional: include fields needed for retrieval, ranking, faceting, display, analytics context, and event attribution.\n- Separate production, staging, and development indices. Do not test destructive indexing against production.\n- Use replicas for alternate sort orders and virtual replicas for relevant sorting when appropriate.\n- Preserve queryID\u002FobjectID\u002Fposition compatibility for events when shaping UI responses.\n- Do not require exact stock counts in Algolia for merchandising unless there is a clear operational reason. Prefer stable buckets or booleans such as `in_stock`, `stock_bucket`, or `high_inventory` so every sale does not force unnecessary reindexing.\n- Calculate category-specific freshness, high-inventory, sale, own-brand, and best-seller flags upstream before indexing. Do not expect Algolia rules to infer missing business definitions from incomplete records.\n- Explain continuous values versus buckets. Exact sales, margin, inventory, or timestamp values can be useful, but buckets often make merchandising and custom ranking easier to reason about and less noisy.\n- Treat custom ranking as ordered tie-breaking after textual relevance. If the first ranking metric is highly precise, later metrics may rarely matter; reduce precision or bucket values when the business expects a second or third metric to participate.\n- For ecommerce, preserve the difference between product identity, variation identity, and SKU identity. Use parent IDs and selected-variant fields when the UI must show one family result while events or filters still need variant-level truth.\n\n## Anti-Patterns\n\n- Indexing one row per SKU by default when the shopper expects one product family.\n- Collapsing variants when availability, price, permissions, color, size, or event attribution must differ by variant.\n- Using exact inventory counts as a merchandising input when buckets would satisfy the business need with fewer updates.\n- Promoting \"new\" products without a reliable timestamp or explicit newness attribute.\n- Promoting \"best sellers\" without a defined time window, category scope, and refresh owner.\n- Ranking by raw sales, margin, rating, or popularity without deciding the business order, direction, time window, category scope, and precision.\n- Using a highly precise first custom ranking metric that prevents later business metrics from resolving ties.\n- Adding display-only or internal fields to searchable text because they are convenient in the source system.\n- Designing events after the record contract, causing `objectID`, `index`, `queryID`, or variant aggregation problems later.\n\n## Pre-Indexing Checkpoints\n\nBefore indexing records, state whether these items are ready, provisional, or deferred:\n\n- `objectID` stability.\n- Facets used by the UI and their normalization.\n- Ranking fields and why they matter.\n- Ranking metric precision: raw, rounded, bucketed, or curated.\n- Retrievable display fields.\n- Image, URL, title, price, availability, or other UI-required fields.\n- Event attribution fields.\n- Inventory, availability, or permissions fields needed by the UI.\n- Update owner and cadence for volatile fields.\n\n## Ecommerce Record Model Strategy\n\nChoose one of these patterns and state the tradeoff:\n\n- Variant-level records: one record represents a specific sellable variation such as a color\u002Fsize SKU. Use when users search, filter, compare, price, or convert at the variant level; when color\u002Fsize\u002Favailability\u002Fimage must be exact; or when granular updates matter. Plan grouping or distinct behavior if the UI should show product families.\n- Variation-group-level records: one record groups variants that share a key attribute such as color. Use when the UI and merchandising usually operate at a product\u002Fcolor level, but filters and images still need more precision than a master product record.\n- Product-level or master-product records: one record represents the base product and contains all variants. Use when merchandising, analytics, and AI behavior should operate at product level and users expect one product result. Document any frontend work needed to show the right variant after filters.\n- Locale, region, channel, or account variants: split into separate records or indices when text, price, availability, permissions, or events differ enough to change search behavior.\n- Secured variants: never rely on UI hiding alone. Permission-sensitive variants need secured filters, separate indices, or record-level access strategy.\n\nFor each model, state the impact on textual relevance, faceting accuracy, merchandising control, AI\u002Fpersonalization behavior, analytics aggregation, update cost, record count, and UI complexity.\n\n## Academy And Customer Education Alignment\n\nWhen source-backed guidance is needed, search public Academy sources for indexing and data-readiness learning objectives and public Algolia docs for records, objectID, facets, replicas, and current implementation details. Map the customer to beginner implementation, production readiness, optimization, or AI readiness. Use source context to guide decisions and questions; do not paste long course or docs excerpts.\n\n## Maturity Behavior\n\n- Beginner implementation: produce the simplest correct record contract and ask only for sample records, source owner, objectID candidates, required filters, and primary ranking goals.\n- Production readiness: add environment naming, update ownership, secured fields, rollback\u002Freindex plan, and validation queries.\n- Optimization: add ranking signals, query analytics, replica strategy, and controlled relevance tests.\n- AI readiness: validate semantic fields, event attribution fields, permissions, noisy attributes, and whether NeuralSearch or Agent Studio prerequisites are met.\n\n## Deliverables\n\nFor design work, return a concise index contract with sample records, record model strategy, merchandising data-gap report, custom ranking metric map, and validation queries. For code work, implement the contract and include the reindex\u002Fupdate path plus validation commands or tests.\n",{"data":37,"body":40},{"name":4,"description":6,"license":23,"metadata":38},{"author":8,"version":39},"0.5",{"type":41,"children":42},"root",[43,51,57,64,171,177,206,212,253,259,272,351,356,362,431,437,442,528,534,621,627,696,702,707,759,765,770,798,803,809,814,820,843,849],{"type":44,"tag":45,"props":46,"children":47},"element","h1",{"id":4},[48],{"type":49,"value":50},"text","Algolia Data Modeling",{"type":44,"tag":52,"props":53,"children":54},"p",{},[55],{"type":49,"value":56},"Use this skill to shape the data before code writes records to Algolia. Good relevance usually starts with records that match the user journey, not the source database schema.",{"type":44,"tag":58,"props":59,"children":61},"h2",{"id":60},"customer-facing-standard",[62],{"type":49,"value":63},"Customer-Facing Standard",{"type":44,"tag":65,"props":66,"children":67},"ul",{},[68,74,79,101,151,156,161,166],{"type":44,"tag":69,"props":70,"children":71},"li",{},[72],{"type":49,"value":73},"Ask for sample records and edge cases before making record-shape claims.",{"type":44,"tag":69,"props":75,"children":76},{},[77],{"type":49,"value":78},"State assumptions plainly when source data is missing.",{"type":44,"tag":69,"props":80,"children":81},{},[82,84,91,93,99],{"type":49,"value":83},"Use public ",{"type":44,"tag":85,"props":86,"children":88},"code",{"className":87},[],[89],{"type":49,"value":90},"academy.algolia.com",{"type":49,"value":92}," for learning alignment and public ",{"type":44,"tag":85,"props":94,"children":96},{"className":95},[],[97],{"type":49,"value":98},"algolia.com\u002Fdoc",{"type":49,"value":100}," for current implementation guidance when source-backed context is needed.",{"type":44,"tag":69,"props":102,"children":103},{},[104,106,112,114,120,121,127,128,134,135,141,143,149],{"type":49,"value":105},"When an Academy metadata reference pack is available, use only its ",{"type":44,"tag":85,"props":107,"children":109},{"className":108},[],[110],{"type":49,"value":111},"title",{"type":49,"value":113},", ",{"type":44,"tag":85,"props":115,"children":117},{"className":116},[],[118],{"type":49,"value":119},"url",{"type":49,"value":113},{"type":44,"tag":85,"props":122,"children":124},{"className":123},[],[125],{"type":49,"value":126},"course",{"type":49,"value":113},{"type":44,"tag":85,"props":129,"children":131},{"className":130},[],[132],{"type":49,"value":133},"module",{"type":49,"value":113},{"type":44,"tag":85,"props":136,"children":138},{"className":137},[],[139],{"type":49,"value":140},"learning_objectives",{"type":49,"value":142},", and ",{"type":44,"tag":85,"props":144,"children":146},{"className":145},[],[147],{"type":49,"value":148},"updated_at",{"type":49,"value":150}," fields for structure. If it is stale or no match exists, fall back to live Academy\u002Fdocs lookup. Do not treat cached metadata as course content or implementation authority.",{"type":44,"tag":69,"props":152,"children":153},{},[154],{"type":49,"value":155},"Do not require custom Academy\u002Fdocs access; use customer-provided sources only as optional context.",{"type":44,"tag":69,"props":157,"children":158},{},[159],{"type":49,"value":160},"When live Algolia data, analytics, index inspection, settings changes, or account actions are needed, use Algolia MCP, the Algolia CLI, or official Algolia skills for the live operation, then apply this skill to interpret results and validate the customer-ready implementation path.",{"type":44,"tag":69,"props":162,"children":163},{},[164],{"type":49,"value":165},"Produce an indexing contract, validation queries, owner handoff, and reindex\u002Fupdate path.",{"type":44,"tag":69,"props":167,"children":168},{},[169],{"type":49,"value":170},"For ecommerce catalogs, explicitly choose between variant-level, variation-group-level, and product-level record models before discussing merchandising or UI behavior.",{"type":44,"tag":58,"props":172,"children":174},{"id":173},"official-companion-skills",[175],{"type":49,"value":176},"Official Companion Skills",{"type":44,"tag":65,"props":178,"children":179},{},[180,201],{"type":44,"tag":69,"props":181,"children":182},{},[183,185,191,193,199],{"type":49,"value":184},"Use official ",{"type":44,"tag":85,"props":186,"children":188},{"className":187},[],[189],{"type":49,"value":190},"algolia-mcp",{"type":49,"value":192}," or ",{"type":44,"tag":85,"props":194,"children":196},{"className":195},[],[197],{"type":49,"value":198},"algolia-cli",{"type":49,"value":200}," when live sample records, existing index shape, object counts, imports, or exports need to be inspected.",{"type":44,"tag":69,"props":202,"children":203},{},[204],{"type":49,"value":205},"Use this skill after the official tool call to turn findings into a customer-facing indexing contract, variant strategy, and validation plan.",{"type":44,"tag":58,"props":207,"children":209},{"id":208},"source-of-truth-rules",[210],{"type":49,"value":211},"Source-Of-Truth Rules",{"type":44,"tag":65,"props":213,"children":214},{},[215,220,238,243,248],{"type":44,"tag":69,"props":216,"children":217},{},[218],{"type":49,"value":219},"Do not infer a final record model from database tables alone. Require sample records, UI expectations, event needs, and update ownership.",{"type":44,"tag":69,"props":221,"children":222},{},[223,225,230,231,236],{"type":49,"value":224},"Do not prescribe exact Algolia settings, API commands, or migration steps without routing live operations through official ",{"type":44,"tag":85,"props":226,"children":228},{"className":227},[],[229],{"type":49,"value":198},{"type":49,"value":113},{"type":44,"tag":85,"props":232,"children":234},{"className":233},[],[235],{"type":49,"value":190},{"type":49,"value":237},", or current docs.",{"type":44,"tag":69,"props":239,"children":240},{},[241],{"type":49,"value":242},"Treat any schema without stable IDs, variant ownership, timestamp ownership, inventory strategy, and event identifiers as provisional.",{"type":44,"tag":69,"props":244,"children":245},{},[246],{"type":49,"value":247},"Before indexing records or starting UI implementation, create or update an index contract when practical. If the user needs a quick prototype, proceed with a minimal provisional contract and list the assumptions to revisit.",{"type":44,"tag":69,"props":249,"children":250},{},[251],{"type":49,"value":252},"Do not treat merchandising rules as a substitute for missing merchandising data. Newness, sale status, brand ownership, inventory, best-seller status, margin, and popularity must be explicit fields or documented upstream computations.",{"type":44,"tag":58,"props":254,"children":256},{"id":255},"index-contract-decision-point",[257],{"type":49,"value":258},"Index Contract Decision Point",{"type":44,"tag":52,"props":260,"children":261},{},[262,264,270],{"type":49,"value":263},"Before indexing or UI work, create ",{"type":44,"tag":85,"props":265,"children":267},{"className":266},[],[268],{"type":49,"value":269},"algolia\u002Findex-contract.md",{"type":49,"value":271}," or an equivalent artifact when practical. If you proceed without a complete contract, call out which decisions are provisional:",{"type":44,"tag":65,"props":273,"children":274},{},[275,280,285,290,301,306,311,316,321,326,331,336,341,346],{"type":44,"tag":69,"props":276,"children":277},{},[278],{"type":49,"value":279},"Index names.",{"type":44,"tag":69,"props":281,"children":282},{},[283],{"type":49,"value":284},"Record model: variant-level, variation-group-level, product-level, or non-commerce equivalent.",{"type":44,"tag":69,"props":286,"children":287},{},[288],{"type":49,"value":289},"Record granularity.",{"type":44,"tag":69,"props":291,"children":292},{},[293,299],{"type":44,"tag":85,"props":294,"children":296},{"className":295},[],[297],{"type":49,"value":298},"objectID",{"type":49,"value":300}," strategy.",{"type":44,"tag":69,"props":302,"children":303},{},[304],{"type":49,"value":305},"Searchable attributes.",{"type":44,"tag":69,"props":307,"children":308},{},[309],{"type":49,"value":310},"Displayed attributes.",{"type":44,"tag":69,"props":312,"children":313},{},[314],{"type":49,"value":315},"Faceting attributes.",{"type":44,"tag":69,"props":317,"children":318},{},[319],{"type":49,"value":320},"Ranking signals.",{"type":44,"tag":69,"props":322,"children":323},{},[324],{"type":49,"value":325},"Ranking metric grain, order, direction, precision, and bucket logic.",{"type":44,"tag":69,"props":327,"children":328},{},[329],{"type":49,"value":330},"Merchandising fields.",{"type":44,"tag":69,"props":332,"children":333},{},[334],{"type":49,"value":335},"Inventory fields.",{"type":44,"tag":69,"props":337,"children":338},{},[339],{"type":49,"value":340},"Event attribution fields.",{"type":44,"tag":69,"props":342,"children":343},{},[344],{"type":49,"value":345},"Update owner and cadence.",{"type":44,"tag":69,"props":347,"children":348},{},[349],{"type":49,"value":350},"Validation queries.",{"type":44,"tag":52,"props":352,"children":353},{},[354],{"type":49,"value":355},"For demos and prototypes, produce a one-paragraph data contract, three validation queries, and explicit deferred production concerns.",{"type":44,"tag":58,"props":357,"children":359},{"id":358},"workflow",[360],{"type":49,"value":361},"Workflow",{"type":44,"tag":363,"props":364,"children":365},"ol",{},[366,379,391,396,401,406,411,416,421,426],{"type":44,"tag":69,"props":367,"children":368},{},[369,371,377],{"type":49,"value":370},"Read ",{"type":44,"tag":85,"props":372,"children":374},{"className":373},[],[375],{"type":49,"value":376},"references\u002Fdata-modeling-guide.md",{"type":49,"value":378}," before making data-shape decisions.",{"type":44,"tag":69,"props":380,"children":381},{},[382,383,389],{"type":49,"value":370},{"type":44,"tag":85,"props":384,"children":386},{"className":385},[],[387],{"type":49,"value":388},"references\u002Fexample-output.md",{"type":49,"value":390}," when producing a customer-facing indexing contract or showing what good output looks like.",{"type":44,"tag":69,"props":392,"children":393},{},[394],{"type":49,"value":395},"Ask for context if record granularity, business goal, or filtering requirements are unknown.",{"type":44,"tag":69,"props":397,"children":398},{},[399],{"type":49,"value":400},"Design the index contract first: index names, environments, objectID strategy, record shape, searchable attributes, faceting attributes, ranking signals, and update ownership.",{"type":44,"tag":69,"props":402,"children":403},{},[404],{"type":49,"value":405},"Choose the variant strategy before writing code: product record, variant record, grouped variants, or separate records by locale, region, tenant, channel, price list, or permission set.",{"type":44,"tag":69,"props":407,"children":408},{},[409],{"type":49,"value":410},"Run a merchandising data-gap check before indexing: schema clarity, timestamps\u002Fnewness, promo attributes, inventory buckets, best-seller buckets, margin\u002Fpopularity metrics, metric precision, and upstream ownership.",{"type":44,"tag":69,"props":412,"children":413},{},[414],{"type":49,"value":415},"Prefer denormalized, search-ready records. Avoid forcing the UI to join or infer critical ranking\u002Ffiltering fields at query time.",{"type":44,"tag":69,"props":417,"children":418},{},[419],{"type":49,"value":420},"Design custom ranking inputs as business tie-breakers, not raw database dumps. Decide which metrics matter first, whether higher or lower is better, and whether values should be rounded or bucketed so later ranking attributes can still influence ties.",{"type":44,"tag":69,"props":422,"children":423},{},[424],{"type":49,"value":425},"Include a migration and reindexing plan when changing objectIDs, record granularity, or settings that affect relevance.",{"type":44,"tag":69,"props":427,"children":428},{},[429],{"type":49,"value":430},"Teach business users that many merchandising issues are data readiness issues first. Rules and boosts cannot reliably promote new, sale, own-brand, high-inventory, high-margin, popular, or best-selling products if those concepts are not represented in the indexed records.",{"type":44,"tag":58,"props":432,"children":434},{"id":433},"questions-to-ask",[435],{"type":49,"value":436},"Questions To Ask",{"type":44,"tag":52,"props":438,"children":439},{},[440],{"type":49,"value":441},"Ask the smallest useful subset:",{"type":44,"tag":65,"props":443,"children":444},{},[445,450,455,460,465,470,475,480,508,513,518,523],{"type":44,"tag":69,"props":446,"children":447},{},[448],{"type":49,"value":449},"Can you share 5 normal records and 5 edge cases, including variants, unavailable items, restricted content, regional differences, or records that often search poorly?",{"type":44,"tag":69,"props":451,"children":452},{},[453],{"type":49,"value":454},"What entity should a search result represent: product, variant, SKU, article, location, account, or another unit?",{"type":44,"tag":69,"props":456,"children":457},{},[458],{"type":49,"value":459},"Should variants appear as separate hits, one hit per product, one hit per shared variation such as color, grouped choices inside one hit, or filtered silently by availability, channel, region, account, or permissions?",{"type":44,"tag":69,"props":461,"children":462},{},[463],{"type":49,"value":464},"What attributes must users search, filter, sort, display, or use for ranking?",{"type":44,"tag":69,"props":466,"children":467},{},[468],{"type":49,"value":469},"Which attributes must merchandising use to promote or suppress products: new, rating, sales, popularity, margin, on sale, own brand, high inventory, best seller, seasonal, campaign, or editorial priority?",{"type":44,"tag":69,"props":471,"children":472},{},[473],{"type":49,"value":474},"How does the business define \"new\", \"high inventory\", and \"best selling\" per category, and where are those buckets calculated before indexing?",{"type":44,"tag":69,"props":476,"children":477},{},[478],{"type":49,"value":479},"Which custom ranking metrics should act first, second, and third when text relevance ties: sales, margin, rating, popularity, freshness, inventory, or editorial priority?",{"type":44,"tag":69,"props":481,"children":482},{},[483,485,491,492,498,500,506],{"type":49,"value":484},"Are ranking metrics too precise for useful tie-breaking, and should they be rounded or bucketed such as ",{"type":44,"tag":85,"props":486,"children":488},{"className":487},[],[489],{"type":49,"value":490},"sales_30d_bucket",{"type":49,"value":113},{"type":44,"tag":85,"props":493,"children":495},{"className":494},[],[496],{"type":49,"value":497},"margin_band",{"type":49,"value":499},", or ",{"type":44,"tag":85,"props":501,"children":503},{"className":502},[],[504],{"type":49,"value":505},"freshness_bucket",{"type":49,"value":507},"?",{"type":44,"tag":69,"props":509,"children":510},{},[511],{"type":49,"value":512},"Which attributes are stable identifiers versus volatile display or ranking fields?",{"type":44,"tag":69,"props":514,"children":515},{},[516],{"type":49,"value":517},"What records should be hidden, delayed, or secured by user\u002Faccount\u002Fregion\u002Fchannel?",{"type":44,"tag":69,"props":519,"children":520},{},[521],{"type":49,"value":522},"How often do records change, and which system owns those changes?",{"type":44,"tag":69,"props":524,"children":525},{},[526],{"type":49,"value":527},"Does the same content need separate indices for locales, regions, tenants, environments, or user segments?",{"type":44,"tag":58,"props":529,"children":531},{"id":530},"implementation-standards",[532],{"type":49,"value":533},"Implementation Standards",{"type":44,"tag":65,"props":535,"children":536},{},[537,549,554,559,564,569,574,601,606,611,616],{"type":44,"tag":69,"props":538,"children":539},{},[540,542,547],{"type":49,"value":541},"Treat ",{"type":44,"tag":85,"props":543,"children":545},{"className":544},[],[546],{"type":49,"value":298},{"type":49,"value":548}," as a stable contract. Do not derive it from mutable display fields.",{"type":44,"tag":69,"props":550,"children":551},{},[552],{"type":49,"value":553},"Make variant modeling explicit. Do not accidentally index one source row per SKU if users expect one product result, and do not collapse variants if color, size, availability, price, region, or permissions materially change search behavior.",{"type":44,"tag":69,"props":555,"children":556},{},[557],{"type":49,"value":558},"Keep record size intentional: include fields needed for retrieval, ranking, faceting, display, analytics context, and event attribution.",{"type":44,"tag":69,"props":560,"children":561},{},[562],{"type":49,"value":563},"Separate production, staging, and development indices. Do not test destructive indexing against production.",{"type":44,"tag":69,"props":565,"children":566},{},[567],{"type":49,"value":568},"Use replicas for alternate sort orders and virtual replicas for relevant sorting when appropriate.",{"type":44,"tag":69,"props":570,"children":571},{},[572],{"type":49,"value":573},"Preserve queryID\u002FobjectID\u002Fposition compatibility for events when shaping UI responses.",{"type":44,"tag":69,"props":575,"children":576},{},[577,579,585,586,592,593,599],{"type":49,"value":578},"Do not require exact stock counts in Algolia for merchandising unless there is a clear operational reason. Prefer stable buckets or booleans such as ",{"type":44,"tag":85,"props":580,"children":582},{"className":581},[],[583],{"type":49,"value":584},"in_stock",{"type":49,"value":113},{"type":44,"tag":85,"props":587,"children":589},{"className":588},[],[590],{"type":49,"value":591},"stock_bucket",{"type":49,"value":499},{"type":44,"tag":85,"props":594,"children":596},{"className":595},[],[597],{"type":49,"value":598},"high_inventory",{"type":49,"value":600}," so every sale does not force unnecessary reindexing.",{"type":44,"tag":69,"props":602,"children":603},{},[604],{"type":49,"value":605},"Calculate category-specific freshness, high-inventory, sale, own-brand, and best-seller flags upstream before indexing. Do not expect Algolia rules to infer missing business definitions from incomplete records.",{"type":44,"tag":69,"props":607,"children":608},{},[609],{"type":49,"value":610},"Explain continuous values versus buckets. Exact sales, margin, inventory, or timestamp values can be useful, but buckets often make merchandising and custom ranking easier to reason about and less noisy.",{"type":44,"tag":69,"props":612,"children":613},{},[614],{"type":49,"value":615},"Treat custom ranking as ordered tie-breaking after textual relevance. If the first ranking metric is highly precise, later metrics may rarely matter; reduce precision or bucket values when the business expects a second or third metric to participate.",{"type":44,"tag":69,"props":617,"children":618},{},[619],{"type":49,"value":620},"For ecommerce, preserve the difference between product identity, variation identity, and SKU identity. Use parent IDs and selected-variant fields when the UI must show one family result while events or filters still need variant-level truth.",{"type":44,"tag":58,"props":622,"children":624},{"id":623},"anti-patterns",[625],{"type":49,"value":626},"Anti-Patterns",{"type":44,"tag":65,"props":628,"children":629},{},[630,635,640,645,650,655,660,665,670],{"type":44,"tag":69,"props":631,"children":632},{},[633],{"type":49,"value":634},"Indexing one row per SKU by default when the shopper expects one product family.",{"type":44,"tag":69,"props":636,"children":637},{},[638],{"type":49,"value":639},"Collapsing variants when availability, price, permissions, color, size, or event attribution must differ by variant.",{"type":44,"tag":69,"props":641,"children":642},{},[643],{"type":49,"value":644},"Using exact inventory counts as a merchandising input when buckets would satisfy the business need with fewer updates.",{"type":44,"tag":69,"props":646,"children":647},{},[648],{"type":49,"value":649},"Promoting \"new\" products without a reliable timestamp or explicit newness attribute.",{"type":44,"tag":69,"props":651,"children":652},{},[653],{"type":49,"value":654},"Promoting \"best sellers\" without a defined time window, category scope, and refresh owner.",{"type":44,"tag":69,"props":656,"children":657},{},[658],{"type":49,"value":659},"Ranking by raw sales, margin, rating, or popularity without deciding the business order, direction, time window, category scope, and precision.",{"type":44,"tag":69,"props":661,"children":662},{},[663],{"type":49,"value":664},"Using a highly precise first custom ranking metric that prevents later business metrics from resolving ties.",{"type":44,"tag":69,"props":666,"children":667},{},[668],{"type":49,"value":669},"Adding display-only or internal fields to searchable text because they are convenient in the source system.",{"type":44,"tag":69,"props":671,"children":672},{},[673,675,680,681,687,688,694],{"type":49,"value":674},"Designing events after the record contract, causing ",{"type":44,"tag":85,"props":676,"children":678},{"className":677},[],[679],{"type":49,"value":298},{"type":49,"value":113},{"type":44,"tag":85,"props":682,"children":684},{"className":683},[],[685],{"type":49,"value":686},"index",{"type":49,"value":113},{"type":44,"tag":85,"props":689,"children":691},{"className":690},[],[692],{"type":49,"value":693},"queryID",{"type":49,"value":695},", or variant aggregation problems later.",{"type":44,"tag":58,"props":697,"children":699},{"id":698},"pre-indexing-checkpoints",[700],{"type":49,"value":701},"Pre-Indexing Checkpoints",{"type":44,"tag":52,"props":703,"children":704},{},[705],{"type":49,"value":706},"Before indexing records, state whether these items are ready, provisional, or deferred:",{"type":44,"tag":65,"props":708,"children":709},{},[710,720,725,730,735,740,745,749,754],{"type":44,"tag":69,"props":711,"children":712},{},[713,718],{"type":44,"tag":85,"props":714,"children":716},{"className":715},[],[717],{"type":49,"value":298},{"type":49,"value":719}," stability.",{"type":44,"tag":69,"props":721,"children":722},{},[723],{"type":49,"value":724},"Facets used by the UI and their normalization.",{"type":44,"tag":69,"props":726,"children":727},{},[728],{"type":49,"value":729},"Ranking fields and why they matter.",{"type":44,"tag":69,"props":731,"children":732},{},[733],{"type":49,"value":734},"Ranking metric precision: raw, rounded, bucketed, or curated.",{"type":44,"tag":69,"props":736,"children":737},{},[738],{"type":49,"value":739},"Retrievable display fields.",{"type":44,"tag":69,"props":741,"children":742},{},[743],{"type":49,"value":744},"Image, URL, title, price, availability, or other UI-required fields.",{"type":44,"tag":69,"props":746,"children":747},{},[748],{"type":49,"value":340},{"type":44,"tag":69,"props":750,"children":751},{},[752],{"type":49,"value":753},"Inventory, availability, or permissions fields needed by the UI.",{"type":44,"tag":69,"props":755,"children":756},{},[757],{"type":49,"value":758},"Update owner and cadence for volatile fields.",{"type":44,"tag":58,"props":760,"children":762},{"id":761},"ecommerce-record-model-strategy",[763],{"type":49,"value":764},"Ecommerce Record Model Strategy",{"type":44,"tag":52,"props":766,"children":767},{},[768],{"type":49,"value":769},"Choose one of these patterns and state the tradeoff:",{"type":44,"tag":65,"props":771,"children":772},{},[773,778,783,788,793],{"type":44,"tag":69,"props":774,"children":775},{},[776],{"type":49,"value":777},"Variant-level records: one record represents a specific sellable variation such as a color\u002Fsize SKU. Use when users search, filter, compare, price, or convert at the variant level; when color\u002Fsize\u002Favailability\u002Fimage must be exact; or when granular updates matter. Plan grouping or distinct behavior if the UI should show product families.",{"type":44,"tag":69,"props":779,"children":780},{},[781],{"type":49,"value":782},"Variation-group-level records: one record groups variants that share a key attribute such as color. Use when the UI and merchandising usually operate at a product\u002Fcolor level, but filters and images still need more precision than a master product record.",{"type":44,"tag":69,"props":784,"children":785},{},[786],{"type":49,"value":787},"Product-level or master-product records: one record represents the base product and contains all variants. Use when merchandising, analytics, and AI behavior should operate at product level and users expect one product result. Document any frontend work needed to show the right variant after filters.",{"type":44,"tag":69,"props":789,"children":790},{},[791],{"type":49,"value":792},"Locale, region, channel, or account variants: split into separate records or indices when text, price, availability, permissions, or events differ enough to change search behavior.",{"type":44,"tag":69,"props":794,"children":795},{},[796],{"type":49,"value":797},"Secured variants: never rely on UI hiding alone. Permission-sensitive variants need secured filters, separate indices, or record-level access strategy.",{"type":44,"tag":52,"props":799,"children":800},{},[801],{"type":49,"value":802},"For each model, state the impact on textual relevance, faceting accuracy, merchandising control, AI\u002Fpersonalization behavior, analytics aggregation, update cost, record count, and UI complexity.",{"type":44,"tag":58,"props":804,"children":806},{"id":805},"academy-and-customer-education-alignment",[807],{"type":49,"value":808},"Academy And Customer Education Alignment",{"type":44,"tag":52,"props":810,"children":811},{},[812],{"type":49,"value":813},"When source-backed guidance is needed, search public Academy sources for indexing and data-readiness learning objectives and public Algolia docs for records, objectID, facets, replicas, and current implementation details. Map the customer to beginner implementation, production readiness, optimization, or AI readiness. Use source context to guide decisions and questions; do not paste long course or docs excerpts.",{"type":44,"tag":58,"props":815,"children":817},{"id":816},"maturity-behavior",[818],{"type":49,"value":819},"Maturity Behavior",{"type":44,"tag":65,"props":821,"children":822},{},[823,828,833,838],{"type":44,"tag":69,"props":824,"children":825},{},[826],{"type":49,"value":827},"Beginner implementation: produce the simplest correct record contract and ask only for sample records, source owner, objectID candidates, required filters, and primary ranking goals.",{"type":44,"tag":69,"props":829,"children":830},{},[831],{"type":49,"value":832},"Production readiness: add environment naming, update ownership, secured fields, rollback\u002Freindex plan, and validation queries.",{"type":44,"tag":69,"props":834,"children":835},{},[836],{"type":49,"value":837},"Optimization: add ranking signals, query analytics, replica strategy, and controlled relevance tests.",{"type":44,"tag":69,"props":839,"children":840},{},[841],{"type":49,"value":842},"AI readiness: validate semantic fields, event attribution fields, permissions, noisy attributes, and whether NeuralSearch or Agent Studio prerequisites are met.",{"type":44,"tag":58,"props":844,"children":846},{"id":845},"deliverables",[847],{"type":49,"value":848},"Deliverables",{"type":44,"tag":52,"props":850,"children":851},{},[852],{"type":49,"value":853},"For design work, return a concise index contract with sample records, record model strategy, merchandising data-gap report, custom ranking metric map, and validation queries. For code work, implement the contract and include the reindex\u002Fupdate path plus validation commands or tests.",{"items":855,"total":951},[856,873,886,901,914,927,933],{"slug":857,"name":857,"fn":858,"description":859,"org":860,"tags":861,"stars":20,"repoUrl":21,"updatedAt":872},"algobot-cli","build conversational AI with Algolia","Use for anything AI\u002Fagent\u002Fconversational built on Algolia: algobot CLI, Agent Studio, RAG systems, conversational product discovery, genAI content generation from search results (carousels, descriptions, headers), chatbots or recommendation agents using Algolia as retrieval, config-as-code workflows, multi-environment deploy (dev\u002Fstaging\u002Fprod), memory and personalization, MCP tool integrations, conversation history \u002F GDPR retention, or adding a chat widget alongside InstantSearch. Trigger on: \"algobot\", \"Agent Studio\", \"RAG with Algolia\", \"conversational experience\", \"AI agent\" + Algolia, \"genAI carousel\", \"chat widget\", or building AI features on top of Algolia search. Do NOT use for raw index ops (records, synonyms, settings) — use algolia-cli. Do NOT use for pure frontend search UI (InstantSearch, autocomplete) with no AI\u002Fagent layer.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[862,865,868,871],{"name":863,"slug":864,"type":13},"Agents","agents",{"name":866,"slug":867,"type":13},"Automation","automation",{"name":869,"slug":870,"type":13},"LLM","llm",{"name":18,"slug":19,"type":13},"2026-07-12T08:27:37.649724",{"slug":874,"name":874,"fn":875,"description":876,"org":877,"tags":878,"stars":20,"repoUrl":21,"updatedAt":885},"algolia-agent-studio","build conversational agents with Algolia Agent Studio","Product-specific Algolia Agent Studio implementation, validation, and optimization guidance. Use when planning, building, integrating, or auditing Agent Studio agents, AI-powered conversational experiences, LLM provider setup, Algolia Search tools, client-side tools, MCP tools, memory, prompting, conversations, turn context, caching, analytics, feedback, authentication, approved domains, guardrails, or tool security. Do NOT use for live Agent Studio configuration, dry runs, publish\u002Fdeploy actions, or config-as-code operations; use the official algobot-cli skill instead. Do NOT use for generic non-Algolia RAG or chatbot architecture unless Agent Studio is the target product.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[879,880,883,884],{"name":863,"slug":864,"type":13},{"name":881,"slug":882,"type":13},"AI","ai",{"name":9,"slug":8,"type":13},{"name":18,"slug":19,"type":13},"2026-08-01T06:06:28.033767",{"slug":887,"name":887,"fn":888,"description":889,"org":890,"tags":891,"stars":20,"repoUrl":21,"updatedAt":900},"algolia-autocomplete","build Algolia autocomplete and query suggestions","Build and review Algolia Autocomplete and query suggestion experiences. Use when planning or implementing typeahead, query suggestions, recent searches, popular searches, federated autocomplete panels, product\u002Fcontent suggestions, detached mobile mode, plugins, keyboard navigation, insights events, or Autocomplete integration with InstantSearch. For net-new search or ecommerce builds, start with algolia-discovery-planning, which loads algolia-search-implementation so source strategy, data contract, and event taxonomy decisions are visible before autocomplete is marked ready. Do NOT use for full search results pages, browse pages, filters, pagination, or current refinements; use algolia-instantsearch-ui instead. Do NOT use for choosing between Algolia UI libraries; use algolia-ui-libraries. Do NOT use as the source of truth for current Autocomplete package APIs; use the official instantsearch skill and current docs alongside this customer-readiness skill.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[892,893,896,897],{"name":9,"slug":8,"type":13},{"name":894,"slug":895,"type":13},"Frontend","frontend",{"name":18,"slug":19,"type":13},{"name":898,"slug":899,"type":13},"UI Components","ui-components","2026-08-01T06:06:29.968123",{"slug":198,"name":198,"fn":902,"description":903,"org":904,"tags":905,"stars":20,"repoUrl":21,"updatedAt":913},"manage Algolia indices and accounts","Use this skill whenever a user wants to execute operations against Algolia indices or accounts — deleting records, copying\u002Fmigrating indices, backing up data, importing\u002Fexporting records, managing API keys, editing synonyms, configuring rules, changing settings like facets, clearing indices, or automating Algolia in CI\u002FCD pipelines. The key signal is that the user wants to *act on* their Algolia data or configuration (server-side \u002F backend \u002F admin operations), regardless of whether they mention \"CLI\" or \"command line.\" If someone names a specific Algolia index and wants to change, move, query, or manage it, use this skill. Do NOT use for frontend search UI work (InstantSearch, React components, autocomplete widgets), Algolia dashboard GUI questions, or evaluating Algolia vs. other providers.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[906,909,912],{"name":907,"slug":908,"type":13},"CLI","cli",{"name":910,"slug":911,"type":13},"Data Engineering","data-engineering",{"name":18,"slug":19,"type":13},"2026-07-12T08:27:35.085246",{"slug":915,"name":915,"fn":916,"description":917,"org":918,"tags":919,"stars":20,"repoUrl":21,"updatedAt":926},"algolia-crawler","crawl websites into Algolia indices","Use this skill whenever a user wants to crawl one or more web pages or a whole site and turn them into an Algolia index using the Algolia CLI — especially for RAG, AI search, semantic search, or Agent Studio retrieval. Triggers: \"index my website\u002Fdocs with Algolia\", \"set up the Algolia Crawler\", \"crawl this page for RAG\", \"scrape my site into Algolia\", \"build a knowledge base for my AI agent from these URLs\", writing or debugging a crawler recordExtractor, or handling JavaScript-rendered pages that won't index. It guides ingestion end-to-end with `algolia crawler` commands: inspect the page, write a RAG-optimized recordExtractor, validate with `algolia crawler test` BEFORE indexing, apply index settings explicitly, then reindex. Do NOT use for building the chatbot\u002Fagent layer itself (use algobot-cli), raw record\u002Fsynonym\u002Fsettings ops on an existing index (use algolia-cli), frontend search UI (use instantsearch), or read-only search\u002Fanalytics (use algolia-mcp).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[920,921,922,923],{"name":866,"slug":867,"type":13},{"name":910,"slug":911,"type":13},{"name":18,"slug":19,"type":13},{"name":924,"slug":925,"type":13},"Web Scraping","web-scraping","2026-07-12T08:27:40.981109",{"slug":4,"name":4,"fn":5,"description":6,"org":928,"tags":929,"stars":20,"repoUrl":21,"updatedAt":22},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[930,931,932],{"name":9,"slug":8,"type":13},{"name":15,"slug":16,"type":13},{"name":18,"slug":19,"type":13},{"slug":934,"name":934,"fn":935,"description":936,"org":937,"tags":938,"stars":20,"repoUrl":21,"updatedAt":950},"algolia-discovery-planning","plan and audit Algolia search implementations","START HERE for any non-trivial Algolia work — building, adding, migrating, redesigning, auditing, or configuring search, browse, autocomplete, indexing, relevance, recommendations, personalization, merchandising, events, or analytics. Invoke this FIRST even when the task already seems scoped or the user names one specific feature (e.g. \"add InstantSearch\", \"build a storefront search\"): its job is to map the request to the full Algolia implementation lifecycle and load every companion skill each in-scope phase needs (algolia-search-implementation, algolia-data-modeling, algolia-index-configuration, algolia-ui-libraries, algolia-instantsearch-ui, algolia-autocomplete, algolia-events-insights, algolia-neuralsearch, algolia-agent-studio, algolia-release-qa) rather than jumping straight into a single skill. This skill plans and orchestrates; the focused companion skills and the official Algolia skills execute. Do NOT use for live account inspection or write actions; use algolia-mcp or algolia-cli for those.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[939,940,943,946,949],{"name":9,"slug":8,"type":13},{"name":941,"slug":942,"type":13},"Analytics","analytics",{"name":944,"slug":945,"type":13},"Configuration","configuration",{"name":947,"slug":948,"type":13},"Personalization","personalization",{"name":18,"slug":19,"type":13},"2026-08-01T06:06:03.021452",18,{"items":953,"total":1074},[954,970,977,984,991,997,1004,1010,1018,1029,1040,1062],{"slug":955,"name":955,"fn":956,"description":957,"org":958,"tags":959,"stars":967,"repoUrl":968,"updatedAt":969},"algolia-docsearch-mcp","search developer documentation with Algolia","Use this skill when the user asks about public developer documentation, SDKs, APIs, libraries, frameworks, setup, configuration, or code examples. Fetch current docs from Algolia DocSearch MCP and cite source URLs.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[960,961,964,966],{"name":9,"slug":8,"type":13},{"name":962,"slug":963,"type":13},"Documentation","documentation",{"name":965,"slug":28,"type":13},"MCP",{"name":18,"slug":19,"type":13},4365,"https:\u002F\u002Fgithub.com\u002Falgolia\u002Fdocsearch","2026-08-01T06:06:11.572314",{"slug":857,"name":857,"fn":858,"description":859,"org":971,"tags":972,"stars":20,"repoUrl":21,"updatedAt":872},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[973,974,975,976],{"name":863,"slug":864,"type":13},{"name":866,"slug":867,"type":13},{"name":869,"slug":870,"type":13},{"name":18,"slug":19,"type":13},{"slug":874,"name":874,"fn":875,"description":876,"org":978,"tags":979,"stars":20,"repoUrl":21,"updatedAt":885},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[980,981,982,983],{"name":863,"slug":864,"type":13},{"name":881,"slug":882,"type":13},{"name":9,"slug":8,"type":13},{"name":18,"slug":19,"type":13},{"slug":887,"name":887,"fn":888,"description":889,"org":985,"tags":986,"stars":20,"repoUrl":21,"updatedAt":900},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[987,988,989,990],{"name":9,"slug":8,"type":13},{"name":894,"slug":895,"type":13},{"name":18,"slug":19,"type":13},{"name":898,"slug":899,"type":13},{"slug":198,"name":198,"fn":902,"description":903,"org":992,"tags":993,"stars":20,"repoUrl":21,"updatedAt":913},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[994,995,996],{"name":907,"slug":908,"type":13},{"name":910,"slug":911,"type":13},{"name":18,"slug":19,"type":13},{"slug":915,"name":915,"fn":916,"description":917,"org":998,"tags":999,"stars":20,"repoUrl":21,"updatedAt":926},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1000,1001,1002,1003],{"name":866,"slug":867,"type":13},{"name":910,"slug":911,"type":13},{"name":18,"slug":19,"type":13},{"name":924,"slug":925,"type":13},{"slug":4,"name":4,"fn":5,"description":6,"org":1005,"tags":1006,"stars":20,"repoUrl":21,"updatedAt":22},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1007,1008,1009],{"name":9,"slug":8,"type":13},{"name":15,"slug":16,"type":13},{"name":18,"slug":19,"type":13},{"slug":934,"name":934,"fn":935,"description":936,"org":1011,"tags":1012,"stars":20,"repoUrl":21,"updatedAt":950},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1013,1014,1015,1016,1017],{"name":9,"slug":8,"type":13},{"name":941,"slug":942,"type":13},{"name":944,"slug":945,"type":13},{"name":947,"slug":948,"type":13},{"name":18,"slug":19,"type":13},{"slug":1019,"name":1019,"fn":1020,"description":1021,"org":1022,"tags":1023,"stars":20,"repoUrl":21,"updatedAt":1028},"algolia-events-insights","instrument Algolia events for analytics","Algolia event instrumentation guidance for Insights, analytics, personalization, Dynamic Re-Ranking, Recommend, and merchandising feedback loops. Use for search, autocomplete, browse, ecommerce, personalization, recommendations, or analytics instrumentation. Makes event decisions explicit before an Algolia UI is considered ready. Use when implementing or auditing clickedObjectIDsAfterSearch, convertedObjectIDsAfterSearch, viewedObjectIDs, addedToCartObjectIDsAfterSearch, purchasedObjectIDsAfterSearch, userToken, queryID, eventName, eventSubtype, or frontend\u002Fbackend event pipelines. Do NOT use for live analytics retrieval, top-query inspection, or account-aware diagnostics; use algolia-mcp. Do NOT use for framework-specific InstantSearch or Autocomplete APIs; use the official instantsearch skill alongside this planning and validation skill.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1024,1025,1026,1027],{"name":9,"slug":8,"type":13},{"name":941,"slug":942,"type":13},{"name":947,"slug":948,"type":13},{"name":18,"slug":19,"type":13},"2026-08-01T06:06:02.009712",{"slug":1030,"name":1030,"fn":1031,"description":1032,"org":1033,"tags":1034,"stars":20,"repoUrl":21,"updatedAt":1039},"algolia-index-configuration","configure Algolia index settings and relevance","Algolia index settings and relevance configuration guidance. Use when configuring searchableAttributes, attributesForFaceting, customRanking, ranking, replicas, virtual replicas, rules, synonyms, typo tolerance, distinct, filters, optional filters, merchandising, browse\u002Fcategory relevance, or A\u002FB-testable relevance changes. Do NOT use for live settings writes, backups, copies, or operational account tasks; use algolia-cli or algolia-mcp instead. Do NOT use for record-shape or variant strategy; use algolia-data-modeling instead.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1035,1036,1037,1038],{"name":9,"slug":8,"type":13},{"name":944,"slug":945,"type":13},{"name":15,"slug":16,"type":13},{"name":18,"slug":19,"type":13},"2026-08-01T06:06:34.19163",{"slug":1041,"name":1041,"fn":1042,"description":1043,"org":1044,"tags":1045,"stars":20,"repoUrl":21,"updatedAt":1061},"algolia-instantsearch-ui","build Algolia InstantSearch frontend experiences","Build and review Algolia InstantSearch experiences in JavaScript, React, Vue, Angular (via InstantSearch.js; Angular InstantSearch is deprecated), or compatible frontend stacks. Use when planning or reviewing search results pages, browse\u002Fcategory pages, routing, widgets, filters, facets, sort-by, pagination, infinite hits, current refinements, insights middleware, SSR, or UI-state synchronization. For net-new search UI builds, start with algolia-discovery-planning, which loads algolia-search-implementation so data contract and event taxonomy decisions are visible before UI is marked ready. Do NOT use for autocomplete\u002Ftypeahead experiences before the user commits to a results page; use algolia-autocomplete instead. Do NOT use for choosing between Algolia UI libraries; use algolia-ui-libraries. Do NOT use as the source of truth for current framework APIs or code-level implementation details; use the official instantsearch skill and current docs alongside this customer-readiness skill.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1046,1047,1050,1051,1054,1057,1058],{"name":9,"slug":8,"type":13},{"name":1048,"slug":1049,"type":13},"Angular","angular",{"name":894,"slug":895,"type":13},{"name":1052,"slug":1053,"type":13},"JavaScript","javascript",{"name":1055,"slug":1056,"type":13},"React","react",{"name":18,"slug":19,"type":13},{"name":1059,"slug":1060,"type":13},"Vue","vue","2026-08-01T06:06:33.66513",{"slug":190,"name":190,"fn":1063,"description":1064,"org":1065,"tags":1066,"stars":20,"repoUrl":21,"updatedAt":1073},"search Algolia indices and retrieve analytics","Search Algolia indices via the Algolia MCP server, retrieve analytics (top searches, no-result rates, click positions, user counts), and get product recommendations (bought-together, related, trending). Triggers on search, indexing, analytics, Algolia, recommendations, MCP.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[1067,1068,1071,1072],{"name":941,"slug":942,"type":13},{"name":1069,"slug":1070,"type":13},"API Development","api-development",{"name":965,"slug":28,"type":13},{"name":18,"slug":19,"type":13},"2026-07-12T08:27:36.376387",19]