Free SKILL.md scraped from GitHub. Clone the repo or copy the file directly into your Claude Code skills directory.
npx versuz@latest install jeremylongshore-claude-code-plugins-plus-skills-plugins-saas-packs-algolia-pack-skills-algolia-install-authgit clone https://github.com/jeremylongshore/claude-code-plugins-plus-skills.gitcp claude-code-plugins-plus-skills/SKILL.MD ~/.claude/skills/jeremylongshore-claude-code-plugins-plus-skills-plugins-saas-packs-algolia-pack-skills-algolia-install-auth/SKILL.md---
name: algolia-install-auth
description: 'Install and configure the Algolia JavaScript v5 client with proper API
key management.
Use when setting up a new Algolia integration, configuring Application ID and API
keys,
or initializing the algoliasearch client in a Node.js/TypeScript project.
Trigger: "install algolia", "setup algolia", "algolia auth", "configure algolia
keys".
'
allowed-tools: Read, Write, Edit, Bash(npm:*), Bash(pnpm:*), Bash(npx:*), Grep
version: 1.0.0
license: MIT
author: Jeremy Longshore <jeremy@intentsolutions.io>
tags:
- saas
- search
- algolia
compatibility: Designed for Claude Code
---
# Algolia Install & Auth
## Overview
Set up the `algoliasearch` v5 JavaScript client with Application ID and API key authentication. Algolia uses a two-key system: an **Application ID** (identifies your app) and an **API key** (controls permissions). Every Algolia account has three default keys: Search-Only, Admin, and Monitoring.
## Prerequisites
- Node.js 18+ with npm, pnpm, or yarn
- Algolia account at [dashboard.algolia.com](https://dashboard.algolia.com)
- Application ID and API key from dashboard > Settings > API Keys
## Instructions
### Step 1: Install the Client
```bash
# Full client (Search + Analytics + Recommend + A/B Testing + Personalization)
npm install algoliasearch
# Or search-only (lighter bundle, frontend use)
npm install algoliasearch # then import { liteClient } from 'algoliasearch/lite'
# Or individual API clients if you only need one
npm install @algolia/client-search
npm install @algolia/client-analytics
npm install @algolia/recommend
```
### Step 2: Configure Environment Variables
```bash
# .env (NEVER commit — add to .gitignore)
ALGOLIA_APP_ID=YourApplicationID
ALGOLIA_ADMIN_KEY=your_admin_api_key
ALGOLIA_SEARCH_KEY=your_search_only_api_key
# .gitignore
.env
.env.local
.env.*.local
```
**Key types and when to use them:**
| Key Type | ACL Permissions | Use In |
|----------|----------------|--------|
| Search-Only | `search` | Frontend, mobile apps |
| Admin | All operations | Backend only, never expose |
| Monitoring | `GET /1/status` | Health checks |
| Custom | You define ACL | Scoped backend services |
### Step 3: Initialize the Client
```typescript
// src/algolia/client.ts
import { algoliasearch } from 'algoliasearch';
// Backend — Admin client for indexing operations
const client = algoliasearch(
process.env.ALGOLIA_APP_ID!,
process.env.ALGOLIA_ADMIN_KEY!
);
// Frontend — Search-only client (safe to expose)
import { liteClient } from 'algoliasearch/lite';
const searchClient = liteClient(
process.env.NEXT_PUBLIC_ALGOLIA_APP_ID!,
process.env.NEXT_PUBLIC_ALGOLIA_SEARCH_KEY!
);
```
### Step 4: Verify Connection
```typescript
// Quick verification: list indices
async function verifyAlgoliaConnection() {
try {
const { items } = await client.listIndices();
console.log(`Connected. Found ${items.length} indices.`);
return true;
} catch (error) {
console.error('Algolia connection failed:', error);
return false;
}
}
await verifyAlgoliaConnection();
```
## Error Handling
| Error | HTTP Code | Cause | Solution |
|-------|-----------|-------|----------|
| `Invalid Application-ID or API key` | 403 | Wrong App ID or key | Copy fresh values from dashboard > Settings > API Keys |
| `Index does not exist` | 404 | Querying non-existent index | Create index first with `saveObjects` |
| `Method not allowed` | 405 | Search-only key used for write op | Use Admin key for indexing operations |
| `RetryError: Unreachable hosts` | N/A | Network/DNS issue | Check firewall allows `*.algolia.net` and `*.algolianet.com` |
| `Record quota exceeded` | 429 | Plan limit hit | Upgrade plan or delete unused records |
## Examples
### Singleton Pattern (Recommended)
```typescript
// src/algolia/client.ts
import { algoliasearch, type Algoliasearch } from 'algoliasearch';
let _client: Algoliasearch | null = null;
export function getAlgoliaClient(): Algoliasearch {
if (!_client) {
const appId = process.env.ALGOLIA_APP_ID;
const apiKey = process.env.ALGOLIA_ADMIN_KEY;
if (!appId || !apiKey) {
throw new Error('Missing ALGOLIA_APP_ID or ALGOLIA_ADMIN_KEY env vars');
}
_client = algoliasearch(appId, apiKey);
}
return _client;
}
```
### Generate Scoped API Key (Secured API Key)
```typescript
import { algoliasearch } from 'algoliasearch';
// Generate a secured API key that restricts search to specific filters
const client = algoliasearch(appId, adminKey);
const securedKey = client.generateSecuredApiKey({
parentApiKey: searchOnlyKey,
restrictions: {
filters: 'tenant_id:acme_corp',
validUntil: Math.floor(Date.now() / 1000) + 3600, // 1 hour
restrictIndices: ['products_acme'],
},
});
```
## Resources
- [Algolia JavaScript v5 Client](https://www.algolia.com/doc/libraries/javascript/v5/methods/search/)
- [API Keys Guide](https://www.algolia.com/doc/guides/security/api-keys/)
- [Secured API Keys](https://www.algolia.com/doc/guides/security/api-keys/in-depth/secured-api-keys/)
- [Algolia Dashboard](https://dashboard.algolia.com)
## Next Steps
After successful auth, proceed to `algolia-hello-world` for your first index and search.