{"id":"algolia","kind":"sdk","name":"Algolia","slug":"algolia","description":"Search and discovery API clients.","vendor":"Algolia","languages":["javascript","typescript","nodejs","python","php","ruby","java","csharp","go","kotlin","swift","dart"],"categories":["devtools","database"],"homepage":"https://www.algolia.com","docsUrl":"https://www.algolia.com/doc/","githubUrl":"https://github.com/algolia","packages":[{"registry":"npm","name":"algoliasearch","url":"https://www.npmjs.com/package/algoliasearch"},{"registry":"pypi","name":"algoliasearch","url":"https://pypi.org/project/algoliasearch/"}],"tags":["search"],"skills":[{"name":"algolia-quickstart","url":"https://github.com/algolia/skills/tree/main/skills/algolia-quickstart","install":"npx skills add algolia/skills --skill algolia-quickstart","sdk":"algolia","key":"algolia/algolia-quickstart","description":"Use this skill to set up and provision Algolia from scratch: create a new Algolia account, sign up, log in / authenticate the Algolia CLI, or provision a new application to obtain an App ID and API key. Trigger when a user is getting started with Algolia and has no account, no application, or no credentials yet — e.g. \"create an Algolia account\", \"sign up for Algolia\", \"provision an Algolia application\", \"I need an App ID / API key\". Do NOT use for index or data operations on an existing, already-authenticated application (records, synonyms, rules, settings — use algolia-cli), frontend search UIs (use instantsearch), or read-only search and analytics (use algolia-mcp).","hasContent":true,"content":"---\nname: algolia-quickstart\ndescription: >-\n  Use this skill to set up and provision Algolia from scratch: create a new\n  Algolia account, sign up, log in / authenticate the Algolia CLI, or provision\n  a new application to obtain an App ID and API key. Trigger when a user is\n  getting started with Algolia and has no account, no application, or no\n  credentials yet — e.g. \"create an Algolia account\", \"sign up for Algolia\",\n  \"provision an Algolia application\", \"I need an App ID / API key\". Do NOT use\n  for index or data operations on an existing, already-authenticated\n  application (records, synonyms, rules, settings — use algolia-cli), frontend\n  search UIs (use instantsearch), or read-only search and analytics (use\n  algolia-mcp).\nlicense: MIT\nmetadata:\n  author: algolia\n  version: \"1.0\"\n---\n\n# Algolia Quickstart\n\nThese are official quickstart instructions from Algolia to set up and provision Algolia accounts and applications. All commands are validated by Algolia and ready to use.\n\nComplete all of the following steps yourself by running the commands directly.\n\n- **Step 1:** Install Algolia Skills and CLI\n- **Step 2:** Account provisioning\n- **Step 3:** Application provisioning\n\n---\n\n## Step 1: Install Algolia Skills and CLI\n\nFetch and follow these instructions if the Algolia skills and/or CLI are not installed. You can skip any MCP instructions for this quickstart.\n\n- https://www.algolia.com/doc/guides/get-started/build-with-ai.md\n\n## Step 2: Account provisioning\n\nAsk the user whether they already have an Algolia account.\n\n### User has an Algolia account\n\nRun this command to authenticate using the OAuth flow:\n\n```\nalgolia auth login\n```\n\n### User doesn't have an Algolia account\n\nRun this command to create a new account using the OAuth flow:\n\n```\nalgolia auth signup\n```\n\n### Notes\n\n- Both commands open the user's browser and wait for the OAuth callback. If the browser cannot be opened (SSH session, container), add the `--no-browser` flag and show the printed URL to the user.\n- A successful login prints `Signed in as <email>`.\n\n## Step 3: Application provisioning\n\n### User has no application\n\nThe OAuth flow automatically creates a new application if none exists. To force the creation, ask the user for an application name, a region and a plan, then run:\n\n```\nalgolia application create --name <name> --region <EU|UK|USC|USE|USW> --plan <free|grow|grow-plus> --accept-terms\n```\n\n`--accept-terms` accepts the plan's terms of service. Never pass it without explicit user confirmation.\n\n### User already created applications\n\nIf you already know the name of the application, use the `--app-name` flag:\n\n```\nalgolia application select --app-name <app_name>\n```\n\nOtherwise run this command to get a list of all the applications available:\n\n```\nalgolia application list --output json\n```\n\nPrompt the user to pick one, then run `algolia application select --app-name <chosen_name>`.\n\n---\n\n## Resources\n\n- Algolia documentation: `https://www.algolia.com/doc`\n- Algolia website: `https://www.algolia.com`\n","contentSource":"skills.sh/api/download/algolia/skills/algolia-quickstart","contentFetchedAt":"2026-07-27T08:59:30.381Z"},{"name":"instantsearch","url":"https://skills.sh/algolia/skills/instantsearch","install":"npx skills add algolia/skills --skill instantsearch","sdk":"algolia","key":"algolia/instantsearch","description":"Build production-quality search experiences (autocomplete, search results pages, faceted search) using InstantSearch. Use when user asks to add search, autocomplete, search-as-you-type, faceted filtering, or a search results page to a React, Vue, or vanilla JS application, or mentions Algolia, InstantSearch, or react-instantsearch. Do NOT use for backend index operations (records, synonyms, settings, API keys), use algolia-cli instead. Do NOT use for analytics, recommendations, or MCP server queries, use algolia-mcp instead. Do NOT use for AI/agent/conversational search, use algobot-cli instead.","hasContent":true,"content":"---\nname: instantsearch\ndescription: >-\n  Build production-quality search experiences (autocomplete, search results pages, faceted search) using InstantSearch.\n  Use when user asks to add search, autocomplete, search-as-you-type, faceted filtering, or a search results page\n  to a React, Vue, or vanilla JS application, or mentions Algolia, InstantSearch, or react-instantsearch.\n  Do NOT use for backend index operations (records, synonyms, settings, API keys), use algolia-cli instead.\n  Do NOT use for analytics, recommendations, or MCP server queries, use algolia-mcp instead.\n  Do NOT use for AI/agent/conversational search, use algobot-cli instead.\nlicense: MIT\nmetadata:\n  author: algolia\n  version: '1.1'\n---\n\n# InstantSearch\n\nBuild production-quality search experiences with InstantSearch. Follow the workflow below in order. Do not skip steps.\n\n## Supported libraries\n\nInstantSearch comes in three libraries. Detect which one applies from the project's dependencies or framework, or ask the user.\n\n| Library             | Package               | When to use                                              |\n| ------------------- | --------------------- | -------------------------------------------------------- |\n| React InstantSearch | `react-instantsearch` | React, Next.js, Remix                                    |\n| Vue InstantSearch   | `vue-instantsearch`   | Vue, Nuxt                                                |\n| InstantSearch.js    | `instantsearch.js`    | Vanilla JS, or any framework without a dedicated library |\n\nOnce identified, use the matching reference directory (e.g., `references/react/`) for all technology rules, anti-patterns, styling, glossary, and pattern-specific guidance.\n\n> **Note:** Coverage by library:\n>\n> - **React InstantSearch**: full coverage (autocomplete, search results page, custom widgets, middleware, SSR).\n> - **Vue InstantSearch** and **InstantSearch.js**: library-level rules and autocomplete only. For other patterns, follow the [Source-of-truth check](#2-source-of-truth-check) and ask the user before scaffolding non-trivial flows.\n\n## Workflow\n\n### 1. Discover\n\nBefore writing any code, gather context. First check if InstantSearch is already set up in the codebase (search client, provider, existing widgets). If so, read the existing configuration instead of re-asking.\n\nIf starting fresh, go step by step, waiting for the user's answer before moving on.\n\n- **Credentials**: Ask the user for their Algolia app ID, search-only API key, and index name.\n- **Query Suggestions**: Ask the user if they have a Query Suggestions index.\n- **Schema**: Once you have credentials, fetch a few records from the main index to discover the available attributes and their shape. Confirm with the user rather than asking them to list everything. The schema is needed before you can propose rendering options. No need to fetch from the Query Suggestions index: its shape is standard and handled by the widget.\n\n  ```bash\n  curl -s -X POST \\\n    \"https://${APP_ID}.algolia.net/1/indexes/${INDEX_NAME}/query\" \\\n    -H \"x-algolia-api-key: ${API_KEY}\" \\\n    -H \"x-algolia-application-id: ${APP_ID}\" \\\n    -H \"content-type: application/json\" \\\n    -d '{\"params\": \"hitsPerPage=5\"}'\n  ```\n\n- **Project inspection**: Read the project's existing styling approach, breakpoints, layout, responsive patterns, component library, and framework details. Identify which InstantSearch library to use (see table above).\n- **Routes**: Find the detail page route pattern (e.g., `/products/[id]`, `/articles/[slug]`) and look for an existing listing or search results page. If one is found, verify it actually reads query parameters and renders dynamic results (not just a static listing). If none is found or the page is static, ask the user: \"What page should search redirect to when a query is submitted? Or is there no results page?\"\n- **Placement**: Find where the search experience should live in the UI. Refer to the pattern's features reference for guidance, or ask the user.\n- **Rendering**: Present the user with concrete, numbered options for how results should appear. These depend on the schema (what attributes are available) and the project's design. Refer to the pattern's features reference for options to present.\n\nDo not proceed until you have credentials, schema, rendering preferences, and an understanding of the project's design.\n\n### 2. Source-of-truth check\n\nThis skill bakes guidance for the highest-value patterns only. Whenever you need a widget, hook, connector, prop, middleware, future flag, or API that is **not explicitly documented in this skill**, you must consult the source of truth before writing code. Training data is stale, lossy, and frequently wrong on prop shapes.\n\nFollow the library's source-of-truth reference for the exact commands and URL patterns:\n\n| Library | Reference                                                  |\n| ------- | ---------------------------------------------------------- |\n| React   | [source-of-truth.md](references/react/source-of-truth.md)  |\n| Vue     | [source-of-truth.md](references/vue/source-of-truth.md)    |\n| JS      | [source-of-truth.md](references/js/source-of-truth.md)     |\n\nThe reference always covers, in order:\n\n1. **Read installed types** in `node_modules` for prop shapes, renderState, and connector contracts.\n2. **Fetch the live Algolia docs** at the canonical URL pattern.\n3. **Grep installed CSS / source** for class names you intend to style.\n4. **Only then write code.** If a step fails (offline, 404, missing types), ask the user before guessing.\n\nDo this even when a pattern reference exists, if you need any prop or behavior the pattern reference does not explicitly cover.\n\n### 3. Build\n\nPick the matching pattern reference for the library and the user's request. If no pattern reference exists for what the user asked for, fall back on the source-of-truth check (Step 2) and ask the user before scaffolding speculative widget trees.\n\nPatterns available for each library:\n\n| Pattern                                                      | React                                                                                                                                                                                            | Vue                                                                                                                                                                  | JS                                                                                                                                                                  |\n| ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Autocomplete                                                 | [features](references/react/autocomplete/features.md), [styling](references/react/autocomplete/styling.md), [anti-patterns](references/react/autocomplete/anti-patterns.md)                      | [features](references/vue/autocomplete/features.md), [styling](references/vue/autocomplete/styling.md), [anti-patterns](references/vue/autocomplete/anti-patterns.md) | [features](references/js/autocomplete/features.md), [styling](references/js/autocomplete/styling.md), [anti-patterns](references/js/autocomplete/anti-patterns.md) |\n| Search results page (incl. faceted search, sort, pagination) | [features](references/react/search-results-page/features.md), [styling](references/react/search-results-page/styling.md), [anti-patterns](references/react/search-results-page/anti-patterns.md) | —                                                                                                                                                                    | —                                                                                                                                                                  |\n\nAlso read and apply the library-level references (apply regardless of pattern):\n\n| Reference        | React                                                       | Vue                                                       | JS                                                       |\n| ---------------- | ----------------------------------------------------------- | --------------------------------------------------------- | -------------------------------------------------------- |\n| Technology rules | [technology-rules.md](references/react/technology-rules.md) | [technology-rules.md](references/vue/technology-rules.md) | [technology-rules.md](references/js/technology-rules.md) |\n| Anti-patterns    | [anti-patterns.md](references/react/anti-patterns.md)       | [anti-patterns.md](references/vue/anti-patterns.md)       | [anti-patterns.md](references/js/anti-patterns.md)       |\n| Styling          | [styling.md](references/react/styling.md)                   | [styling.md](references/vue/styling.md)                   | [styling.md](references/js/styling.md)                   |\n| Glossary         | [glossary.md](references/react/glossary.md)                 | [glossary.md](references/vue/glossary.md)                 | [glossary.md](references/js/glossary.md)                 |\n| Source of truth  | [source-of-truth.md](references/react/source-of-truth.md)   | [source-of-truth.md](references/vue/source-of-truth.md)   | [source-of-truth.md](references/js/source-of-truth.md)   |\n| Custom widgets   | [custom-widgets.md](references/react/custom-widgets.md)     | —                                                         | —                                                        |\n| Middleware       | [middleware.md](references/react/middleware.md)             | —                                                         | —                                                        |\n| SSR              | [ssr.md](references/react/ssr.md)                           | —                                                         | —                                                        |\n| Pattern                                                      | React                                                                                                                                                                                            | Vue | JS  |\n| ------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --- | --- |\n| Autocomplete                                                 | [features](references/react/autocomplete/features.md), [styling](references/react/autocomplete/styling.md), [anti-patterns](references/react/autocomplete/anti-patterns.md)                      | —   | —   |\n| Search results page (incl. faceted search, sort, pagination) | [features](references/react/search-results-page/features.md), [styling](references/react/search-results-page/styling.md), [anti-patterns](references/react/search-results-page/anti-patterns.md) | —   | —   |\n\nAlso read and apply the library-level references (apply regardless of pattern):\n\n| Reference        | React                                                       | Vue | JS  |\n| ---------------- | ----------------------------------------------------------- | --- | --- |\n| Technology rules | [technology-rules.md](references/react/technology-rules.md) | —   | —   |\n| Anti-patterns    | [anti-patterns.md](references/react/anti-patterns.md)       | —   | —   |\n| Styling          | [styling.md](references/react/styling.md)                   | —   | —   |\n| Glossary         | [glossary.md](references/react/glossary.md)                 | —   | —   |\n| Source of truth  | [source-of-truth.md](references/react/source-of-truth.md)   | —   | —   |\n| Custom widgets   | [custom-widgets.md](references/react/custom-widgets.md)     | —   | —   |\n| Middleware       | [middleware.md](references/react/middleware.md)             | —   | —   |\n| SSR              | [ssr.md](references/react/ssr.md)                           | —   | —   |\n\nConsult types and live docs first (Step 2). Ask the user only if both fail. Never fall back to legacy libraries or guessed APIs.\n\n### 4. Style\n\nFollow the library's styling guide step by step, then apply the pattern-specific styling guide. Match the site's existing CSS methodology, color scheme, typography, spacing, and component patterns.\n\n### 5. Review\n\nReview your work against the library's anti-patterns, the pattern-specific anti-patterns, and the features checklist. Fix any violations.\n","contentSource":"skills.sh/api/download/algolia/skills/instantsearch","contentFetchedAt":"2026-07-27T08:59:30.553Z"},{"name":"algolia-cli","url":"https://skills.sh/algolia/skills/algolia-cli","install":"npx skills add algolia/skills --skill algolia-cli","sdk":"algolia","key":"algolia/algolia-cli","description":"Use this skill whenever a user wants to execute operations against Algolia indices or accounts — deleting records, copying/migrating indices, backing up data, importing/exporting records, managing API keys, editing synonyms, configuring rules, changing settings like facets, clearing indices, or automating Algolia in CI/CD pipelines. The key signal is that the user wants to *act on* their Algolia data or configuration (server-side / backend / 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.","hasContent":true,"content":"---\nname: algolia-cli\ndescription: >-\n  Use this skill whenever a user wants to execute operations against Algolia\n  indices or accounts — deleting records, copying/migrating indices, backing up\n  data, importing/exporting records, managing API keys, editing synonyms,\n  configuring rules, changing settings like facets, clearing indices, or\n  automating Algolia in CI/CD pipelines. The key signal is that the user wants\n  to *act on* their Algolia data or configuration (server-side / backend /\n  admin operations), regardless of whether they mention \"CLI\" or \"command\n  line.\" If someone names a specific Algolia index and wants to change, move,\n  query, or manage it, use this skill. Do NOT use for frontend search UI work\n  (InstantSearch, React components, autocomplete widgets), Algolia dashboard\n  GUI questions, or evaluating Algolia vs. other providers.\nlicense: MIT\nmetadata:\n  author: algolia\n  version: \"1.0\"\n---\n\n# Algolia CLI\n\nManage Algolia search infrastructure from the terminal using the `algolia` CLI.\n\n## When to Use This Skill vs. algolia-mcp\n\n| Need | Use |\n|------|-----|\n| Write/modify data (import, delete, update records) | **algolia-cli** (this skill) |\n| Manage configuration (settings, rules, synonyms) | **algolia-cli** (this skill) |\n| Auth (login, logout, signup via OAuth)                 | **algolia-cli** (this skill) |\n| Admin operations (API keys, profiles, index copy/move) | **algolia-cli** (this skill) |\n| Backup/restore indices | **algolia-cli** (this skill) |\n| Search queries and view results | **algolia-mcp** |\n| Analytics (top searches, click rates, no-results) | **algolia-mcp** |\n| Recommendations (related products, trending) | **algolia-mcp** |\n\n**Rule of thumb:** If the user wants to *read or analyze* data → algolia-mcp. If they want to *change, move, or manage* data → algolia-cli.\n\n## Setup\n\nRun `/algolia-cli:cli-setup` to install the CLI and configure a profile, or follow [Getting Started](references/getting-started.md).\n\n**Tip:** `algolia auth login` is the easiest way to set up credentials — it handles OAuth sign-in and profile creation in one step. Use `algolia profile add` for non-interactive / CI setups where you already have an API key.\n\n## Command Quick Reference\n\n### Auth\n\n| Task                        | Command                                            |\n|-----------------------------|----------------------------------------------------|\n| Sign in (opens browser)     | `algolia auth login`                               |\n| Sign in (select app by name)| `algolia auth login --app-name \"My App\" --default` |\n| Sign in (no browser / SSH)  | `algolia auth login --no-browser`                  |\n| Sign out                    | `algolia auth logout`                              |\n| Create new account          | `algolia auth signup`                              |\n\n### Profile\n\n| Task                          | Command                                                                            |\n|-------------------------------|------------------------------------------------------------------------------------|\n| Add profile (non-interactive) | `algolia profile add --name \"default\" --app-id \"<ID>\" --api-key \"<KEY>\" --default` |\n| List profiles                 | `algolia profile list`                                                             |\n| Remove a profile              | `algolia profile remove \"<name>\" -y`                                               |\n| Set default profile           | `algolia profile setdefault \"<name>\"`                                              |\n\n### Application\n\n| Task                              | Command                                                          |\n|-----------------------------------|------------------------------------------------------------------|\n| List applications                 | `algolia application list`                                       |\n| Create application                | `algolia application create --name \"My App\" --region CA`         |\n| Create (non-interactive, dry-run) | `algolia application create --name \"My App\" --region CA --dry-run` |\n| Switch active application         | `algolia application select --app-name \"My App\"`                 |\n\n### API Keys\n\n| Task             | Command                                                                              |\n|------------------|--------------------------------------------------------------------------------------|\n| List API keys    | `algolia apikeys list`                                                               |\n| Create API key   | `algolia apikeys create --acl search,browse --description \"...\" --indices \"idx1,idx2\"` |\n| Get API key      | `algolia apikeys get <key>`                                                          |\n| Delete API key   | `algolia apikeys delete <key> -y`                                                    |\n\n### Search\n\n| Task                | Command                                                              |\n|---------------------|----------------------------------------------------------------------|\n| Search an index     | `algolia search <index> --query \"<query>\"`                           |\n| Search with filters | `algolia search <index> --query \"<query>\" --filters \"<filter>\"`      |\n| Paginated search    | `algolia search <index> --query \"<query>\" --hitsPerPage 10 --page 2` |\n\n### Indices\n\n| Task                          | Command                                                |\n|-------------------------------|--------------------------------------------------------|\n| List all indices              | `algolia indices list`                                 |\n| Delete an index               | `algolia indices delete <index> -y`                    |\n| Clear records (keep settings) | `algolia indices clear <index> -y`                     |\n| Copy index                    | `algolia indices copy <src> <dst> -y`                  |\n| Copy only settings            | `algolia indices copy <src> <dst> --scope settings -y` |\n| Move/rename index             | `algolia indices move <src> <dst> -y`                  |\n\n### Objects (Records)\n\n| Task                       | Command                                                             |\n|----------------------------|---------------------------------------------------------------------|\n| Browse all records         | `algolia objects browse <index>`                                    |\n| Browse specific attributes | `algolia objects browse <index> --attributesToRetrieve title,price` |\n| Import records from file   | `algolia objects import <index> -F data.ndjson`                     |\n| Import from stdin          | `cat data.ndjson \\| algolia objects import <index> -F -`            |\n| Delete by IDs              | `algolia objects delete <index> --object-ids id1,id2 -y`            |\n| Delete by filter           | `algolia objects delete <index> --filters \"type:obsolete\" -y`       |\n| Partial update             | `algolia objects update <index> -F updates.ndjson`                  |\n\n### Settings\n\n| Task                           | Command                                                |\n|--------------------------------|--------------------------------------------------------|\n| Get settings                   | `algolia settings get <index>`                         |\n| Set a setting                  | `algolia settings set <index> --typoTolerance=\"false\"` |\n| Import settings from file      | `algolia settings import <index> -F settings.json`     |\n| Import and forward to replicas | `algolia settings import <index> -F settings.json -f`  |\n\n### Rules\n\n| Task               | Command                                              |\n|--------------------|------------------------------------------------------|\n| Browse all rules   | `algolia rules browse <index>`                       |\n| Import rules       | `algolia rules import <index> -F rules.ndjson -y`    |\n| Replace all rules  | `algolia rules import <index> -F rules.ndjson -c -y` |\n| Delete rules by ID | `algolia rules delete <index> --rule-ids id1,id2 -y` |\n\n### Synonyms\n\n| Task                  | Command                                                        |\n|-----------------------|----------------------------------------------------------------|\n| Browse all synonyms   | `algolia synonyms browse <index>`                              |\n| Import synonyms       | `algolia synonyms import <index> -F synonyms.ndjson`           |\n| Replace all synonyms  | `algolia synonyms import <index> -F synonyms.ndjson -r`        |\n| Delete synonyms by ID | `algolia synonyms delete <index> --synonym-ids id1,id2 -y`     |\n| Save a single synonym | `algolia synonyms save <index> --id my-syn --synonyms foo,bar` |\n\n### Crawler\n\n| Task                          | Command                                                                 |\n|-------------------------------|-------------------------------------------------------------------------|\n| List crawlers                 | `algolia crawler list`                                                  |\n| List by app                   | `algolia crawler list --app-id <app-id>`                                |\n| Get crawler details           | `algolia crawler get <id>`                                              |\n| Get config only               | `algolia crawler get <id> --config-only`                                |\n| Create crawler                | `algolia crawler create <name> -F config.json`                          |\n| Start/resume crawler          | `algolia crawler run <id>`                                              |\n| Pause crawler(s)              | `algolia crawler pause <id> [<id2> ...]`                                |\n| Reindex crawler(s)            | `algolia crawler reindex <id> [<id2> ...]`                              |\n| Unblock crawler               | `algolia crawler unblock <id> -y`                                       |\n| Crawl specific URLs           | `algolia crawler crawl <id> --urls url1,url2`                           |\n| Test URL against crawler      | `algolia crawler test <id> --url <url>`                                 |\n| Test with config override     | `algolia crawler test <id> --url <url> -F config.json`                  |\n| Get crawl statistics          | `algolia crawler stats <id>`                                            |\n\nMost crawler commands support `--dry-run` to preview the request without sending it: `create`, `run`, `pause`, `reindex`, `unblock`, `test`.\n\n**Auth:** Crawler commands require `ALGOLIA_CRAWLER_USER_ID` and `ALGOLIA_CRAWLER_API_KEY` env vars, or `crawler_user_id`/`crawler_api_key` in the profile config file.\n\n## Synonym Type Guide\n\nChoosing the right synonym type matters for search quality:\n\n- **`synonym` (regular/two-way):** All terms are interchangeable. Use when the words truly mean the same thing in both directions.\n  Example: \"sneakers\" ↔ \"trainers\" — searching either should find the other.\n- **`oneWaySynonym`:** Only the `input` term expands to include the `synonyms`, not the reverse. Use when a short/abbreviated term should match longer/specific terms, but not vice versa.\n  Example: \"TV\" → \"television\", \"flat screen\" — searching \"TV\" finds \"television\" results, but searching \"television\" does NOT return \"TV\" results.\n\n**Rule of thumb:** If the user says \"searching X should *also match* Y\", that's one-way (`input: X`, `synonyms: [Y]`). If they say \"X and Y should be equivalent/interchangeable\", that's two-way.\n\n### Describe\n\n| Task                       | Command                          |\n|----------------------------|----------------------------------|\n| Describe root command tree | `algolia describe`               |\n| Describe a command         | `algolia describe search`        |\n| Describe a subcommand      | `algolia describe objects browse` |\n\n## Key Conventions\n\n1. **Always use non-interactive mode.** Destructive commands need `-y` (or `--confirm`) to skip confirmation prompts. This includes `objects delete`, `indices delete/clear/copy/move`, `rules import/delete`, `synonyms delete`, and `apikeys delete`. Without `-y`, the CLI will hang waiting for user input. Note: `objects import`, `objects update`, and `synonyms import` do **not** have a `-y` flag — they run non-interactively by default.\n2. **ndjson format.** `objects browse`, `objects import`, `rules browse/import`, and `synonyms browse/import` use newline-delimited JSON (one JSON object per line), **not** JSON arrays.\n3. **Profile flag.** Use `-p <profile>` to target a non-default profile. Omit it to use the default.\n4. **Credential precedence.** Environment variables override all other configuration. The resolution order is: **env vars** > **CLI flags** (`--application-id`, `--api-key`) > **profile config file** > **default profile**. Supported env vars: `ALGOLIA_APPLICATION_ID`, `ALGOLIA_API_KEY`, `ALGOLIA_ADMIN_API_KEY`, `ALGOLIA_SEARCH_HOSTS`, `ALGOLIA_CRAWLER_USER_ID`, `ALGOLIA_CRAWLER_API_KEY`. If env vars are set, `--profile`/`-p` is ignored for those credentials.\n5. **Wait flag.** Use `-w` (or `--wait`) when subsequent commands depend on the operation completing (e.g., import then search).\n6. **Pipe between commands.** Copy data across indices: `algolia objects browse SRC | algolia objects import DST -F -`\n7. **JSON output.** Use `--output json` (or `-o json`) when you need machine-readable output.\n\n## Common Workflows\n\n### Migrate records between indices (with field filtering)\n```bash\nalgolia objects browse SOURCE --attributesToRetrieve objectID,title,price \\\n  | algolia objects import DEST -F - -w\n```\n\n### Full index backup\n```bash\nalgolia objects browse MY_INDEX > my_index_records.ndjson\nalgolia settings get MY_INDEX > my_index_settings.json\nalgolia rules browse MY_INDEX > my_index_rules.ndjson\nalgolia synonyms browse MY_INDEX > my_index_synonyms.ndjson\n```\nNote: settings use `.json` (standard JSON), everything else uses `.ndjson` (newline-delimited JSON).\n\n### Restore from backup\n```bash\nalgolia objects import MY_INDEX -F my_index_records.ndjson -w\nalgolia settings import MY_INDEX -F my_index_settings.json -w\nalgolia rules import MY_INDEX -F my_index_rules.ndjson -c -y -w\nalgolia synonyms import MY_INDEX -F my_index_synonyms.ndjson -r -w\n```\n\n## Direct Invocation\n\nIf the skill doesn't trigger automatically, users can invoke it directly:\n\n- **`/algolia-cli`** — Load the full skill into context for any Algolia CLI task\n- **`/algolia-cli:cli-setup`** — Install the CLI and configure a profile\n\nThis is useful when the request is brief (e.g., \"import my data into Algolia\") and the skill might not auto-trigger.\n\n## Reference Docs\n\n- [Getting Started](references/getting-started.md) — Installation and profile setup\n- [Command Reference](references/commands.md) — Full syntax, flags, and examples for every command\n","contentSource":"skills.sh/api/download/algolia/skills/algolia-cli","contentFetchedAt":"2026-07-27T08:59:31.006Z"}],"official":true,"generatedAt":"2026-07-27T09:02:29.956Z"}