From cocosearch
Quickstarts CocoSearch setup: checks PostgreSQL/pgvector and embedding provider (Ollama/OpenAI), indexes project codebase, verifies in under 2 minutes.
npx claudepluginhub violetcranberry/coco-search --plugin cocosearchThis skill uses the workspace's default tool permissions.
Get a project indexed and searchable in under 2 minutes. This skill checks prerequisites, indexes the codebase, and verifies everything works.
Guides onboarding to new or unfamiliar codebases by checking CocoSearch index, exploring architecture, key modules, and code patterns via semantic search.
Performs semantic code search across the codebase using ccc CLI, manages initialization, indexing freshness, path/language filtering, and pagination.
Manages SocratiCode codebase indexing: checks infrastructure health with Docker/Qdrant/Ollama, starts/stops indexing and file watching, builds code graphs, configures context artifacts.
Share bugs, ideas, or general feedback.
Get a project indexed and searchable in under 2 minutes. This skill checks prerequisites, indexes the codebase, and verifies everything works.
Before indexing, verify the required services are running. The checks depend on which embedding provider is configured.
First, determine the provider: Check cocosearch.yaml for embedding.provider (or the COCOSEARCH_EMBEDDING_PROVIDER env var). If neither is set, the default is ollama. Also check for embedding.baseUrl (or COCOSEARCH_EMBEDDING_BASE_URL).
All providers need PostgreSQL:
docker ps --filter "name=postgres" --format "{{.Names}} {{.Status}}"
docker compose up -d (from the CocoSearch project root)Then check the embedding provider:
2a. If provider is ollama (default):
curl -s http://localhost:11434/api/tags | head -c 200
docker compose --profile ollama up -d or ollama serveollama pull nomic-embed-textbaseUrl is set, check that URL instead of localhost:114342b. If provider is openai or openrouter:
baseUrl: Verify COCOSEARCH_EMBEDDING_API_KEY is set:
echo ${COCOSEARCH_EMBEDDING_API_KEY:+"API key is set"}
If not set: export COCOSEARCH_EMBEDDING_API_KEY=sk-...
No Ollama needed.baseUrl: Verify the custom endpoint is reachable:
curl -s <baseUrl>/v1/models | head -c 200
API key is not required (local OpenAI-compatible servers typically don't need one).If PostgreSQL + provider checks pass: Proceed to Step 2.
If nothing is running and user has CocoSearch cloned (Ollama provider):
cd /path/to/cocosearch && docker compose --profile ollama up -d
This starts both PostgreSQL and Ollama in one command.
Resolve index name (use the resolved name for all operations):
cocosearch.yaml for indexName field -- if found, use itlist_indexes() and match the current project's directory name against available indexes. The MCP tools auto-derive index names from directory paths (e.g., my-project/ -> my_project), so a match is likely if the repo was indexed without a config file.cocosearch.yaml is missing.Check if an index already exists for this project:
list_indexes()
If index exists:
index_stats(index_name="<resolved-name>") to check freshnessIf no index exists, create one:
index_codebase(path="<current-project-root>", index_name="<resolved-name>")
Indexing will:
Typical timing: ~30s for small projects (<100 files), 1-2 min for medium (100-500 files), 3-5 min for large (500+ files).
After indexing completes, verify it worked:
index_stats(index_name="<name>")
Check these indicators:
If parse health is low:
index_stats(index_name="<name>", include_failures=True) to see which files failedLinked index health (if cocosearch.yaml has linkedIndexes):
warnings array from index_stats() for entries starting with "Linked index"Run a quick semantic search to confirm results are meaningful:
search_code(query="main entry point", index_name="<name>")
Good result: Returns the project's main function, CLI entry point, or app initialization — something clearly relevant.
Bad result: Returns unrelated code or no results.
If results are poor:
curl -s http://localhost:11434/api/tags)COCOSEARCH_EMBEDDING_API_KEY is set correctlybaseUrl: Verify the custom endpoint is reachableindex_codebase(path="<path>", index_name="<configured-name>")Your project is indexed and ready for semantic search. Here's what you can do now:
From the CLI:
cocosearch search "your query" # Basic semantic search
cocosearch search "query" --hybrid # Hybrid (semantic + keyword)
cocosearch search "query" -i # Interactive REPL
cocosearch stats # Check index health
From MCP (Claude Code / OpenCode):
search_code(query="your query")
search_code(query="authenticate", symbol_type="function", use_hybrid_search=True)
search_code(query="error handling", language="python", smart_context=True)
Recommended next steps:
cocosearch-onboarding skill for a guided tour of the codebasecocosearch-debugging when investigating bugscocosearch-refactoring before large code changesFor installation instructions, see skills/README.md.