Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
alsk1992 avatar

Search Config

  • 12 installs
  • 610 repo stars
  • Updated June 26, 2026
  • alsk1992/cloddsbot

Search-config is a Claude Code skill for the clodds bot that configures full-text, semantic, and hybrid search indexing across pluggable backends.

About

Search-config is a clodds skill for configuring and managing search indexing over collections like memories and documents. Developers use it to pick a backend (SQLite, Elasticsearch, Typesense, Meilisearch), set full-text, semantic, or hybrid modes, tune weights, and index or rebuild documents. It matters when a bot needs to retrieve stored knowledge by keyword or meaning.

  • Configures full-text, semantic, and hybrid search over collections
  • Swaps backends: SQLite, Elasticsearch, Typesense, Meilisearch
  • Index management: rebuild, optimize, clear, and view stats

Search Config by the numbers

  • 12 all-time installs (skills.sh)
  • Ranked #3,541 of 4,347 Backend & APIs skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

search-config capabilities & compatibility

Capabilities
search indexing · semantic search · hybrid search
Works with
elasticsearch · openai
Use cases
web search · data analysis
Pricing
Bring your own API key
From the docs

What search-config says it does

Configure search indexing, manage search backends, and optimize full-text search.
SKILL.md
backend: 'sqlite', // 'sqlite' | 'elasticsearch' | 'typesense' | 'meilisearch'
SKILL.md
npx skills add https://github.com/alsk1992/cloddsbot --skill search-config

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs12
repo stars610
Last updatedJune 26, 2026
Repositoryalsk1992/cloddsbot

What it does

Configure hybrid full-text and semantic search over a bot's stored documents and memories.

Who is it for?

Bots that need to index documents and retrieve them by keyword, meaning, or a hybrid of both.

Skip if: Apps with no stored corpus to search or that use a managed search product directly.

When should I use this skill?

You need to set the search backend, tune semantic vs fulltext weights, or rebuild an index.

What you get

Collections are indexed and searchable via a chosen backend and mode.

  • configured search backend
  • indexed collections
  • hybrid search config

By the numbers

  • 4 supported backends
  • 3 search modes (fulltext, semantic, hybrid)

Files

SKILL.mdMarkdownGitHub ↗

Search Config - Complete API Reference

Configure search indexing, manage search backends, and optimize full-text search.

---

Chat Commands

View Status

/search-config                              Show search config
/search-config status                       Index status
/search-config stats                        Search statistics

Index Management

/search-config rebuild                      Rebuild all indexes
/search-config rebuild memories             Rebuild specific index
/search-config optimize                     Optimize indexes
/search-config clear <index>                Clear index

Configuration

/search-config backend sqlite               Set backend
/search-config backend elasticsearch        Use Elasticsearch
/search-config mode hybrid                  Set search mode
/search-config boost semantic 0.7           Set semantic weight

---

TypeScript API Reference

Create Search Service

import { createSearchService } from 'clodds/search';

const search = createSearchService({
  // Backend
  backend: 'sqlite',  // 'sqlite' | 'elasticsearch' | 'typesense' | 'meilisearch'

  // Search mode
  mode: 'hybrid',  // 'fulltext' | 'semantic' | 'hybrid'

  // Hybrid weights
  semanticWeight: 0.6,
  fulltextWeight: 0.4,

  // Embedding provider (for semantic)
  embeddings: {
    provider: 'openai',
    model: 'text-embedding-3-small',
  },

  // Storage
  dbPath: './search.db',
});

Index Documents

// Index single document
await search.index({
  collection: 'memories',
  id: 'mem-1',
  content: 'User prefers conservative trading',
  metadata: {
    type: 'preference',
    userId: 'user-123',
  },
});

// Index batch
await search.indexBatch({
  collection: 'documents',
  documents: [
    { id: 'doc-1', content: 'First document', metadata: {} },
    { id: 'doc-2', content: 'Second document', metadata: {} },
  ],
});

Search

// Full-text search
const results = await search.search({
  query: 'trading strategies',
  collection: 'documents',
  limit: 10,
});

for (const result of results) {
  console.log(`${result.id}: ${result.score}`);
  console.log(`  ${result.snippet}`);
}

// With filters
const results = await search.search({
  query: 'bitcoin',
  collection: 'news',
  filters: {
    date: { gte: '2024-01-01' },
    source: 'reuters',
  },
  limit: 20,
});

Hybrid Search

// Combine full-text and semantic
const results = await search.hybridSearch({
  query: 'how to manage risk in trading',
  collection: 'documents',
  semanticWeight: 0.7,
  fulltextWeight: 0.3,
  limit: 10,
});

Get Index Stats

const stats = await search.getStats();

console.log('Index Statistics:');
for (const [collection, info] of Object.entries(stats.collections)) {
  console.log(`${collection}:`);
  console.log(`  Documents: ${info.documentCount}`);
  console.log(`  Size: ${info.sizeMB} MB`);
  console.log(`  Last indexed: ${info.lastIndexed}`);
}

console.log(`\nSearch Stats:`);
console.log(`  Queries today: ${stats.queriesToday}`);
console.log(`  Avg latency: ${stats.avgLatencyMs}ms`);
console.log(`  Cache hit rate: ${stats.cacheHitRate}%`);

Rebuild Index

// Rebuild all indexes
await search.rebuildAll();

// Rebuild specific collection
await search.rebuild('memories');

// With progress callback
await search.rebuild('documents', {
  onProgress: (progress) => {
    console.log(`${progress.current}/${progress.total} (${progress.percent}%)`);
  },
});

Optimize Index

// Optimize for better performance
await search.optimize();

// Optimize specific collection
await search.optimize('documents');

Clear Index

// Clear specific collection
await search.clear('memories');

// Clear all
await search.clearAll();

Configure Backend

// Switch to Elasticsearch
await search.setBackend('elasticsearch', {
  url: process.env.ELASTICSEARCH_URL,
  index: 'clodds',
});

// Switch to Typesense
await search.setBackend('typesense', {
  url: process.env.TYPESENSE_URL,
  apiKey: process.env.TYPESENSE_API_KEY,
});

---

Search Backends

BackendBest ForFeatures
SQLiteDevelopment, small dataSimple, embedded
ElasticsearchProduction, large dataScalable, powerful
TypesenseFast searchTypo tolerance
MeilisearchInstant searchEasy setup

---

Search Modes

ModeDescription
fulltextTraditional keyword matching
semanticVector similarity search
hybridCombined (best of both)

---

Hybrid Search Weights

// More emphasis on meaning
const results = await search.hybridSearch({
  query: 'risk management',
  semanticWeight: 0.8,  // 80% semantic
  fulltextWeight: 0.2,  // 20% keyword
});

// More emphasis on exact matches
const results = await search.hybridSearch({
  query: 'BTCUSDT',
  semanticWeight: 0.2,  // 20% semantic
  fulltextWeight: 0.8,  // 80% keyword
});

---

Best Practices

1. Use hybrid search — Best results for most queries 2. Rebuild periodically — Keep indexes fresh 3. Optimize after bulk inserts — Improve performance 4. Monitor latency — Scale if too slow 5. Tune weights — Adjust semantic/fulltext balance

Related skills

FAQ

Which search backends are supported?

SQLite, Elasticsearch, Typesense, and Meilisearch.

What search modes exist?

Fulltext keyword matching, semantic vector search, and hybrid combining both.

Backend & APIsdatabasespipelines

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.