PluginBench
Skill
Pass
Audit score 90

ccc

cocoindex-io/cocoindex-code

Semantic code search and indexing for your codebase with CLI-based querying.

What is ccc?

ccc is a CLI tool for CocoIndex Code that enables semantic search across your codebase and manages the search index. Use it when you need to find code by concept or functionality, update the index after changes, or explore the codebase structure.

  • Search the codebase semantically by concept, functionality, or behavior rather than exact syntax
  • Filter search results by programming language using --lang flag
  • Restrict search to specific directory paths using --path glob patterns
  • Paginate through results with --offset and --limit for comprehensive exploration
  • Automatically initialize and manage the codebase index without user intervention
  • Keep the index fresh by re-indexing after significant code changes

How to install ccc

npx skills add https://github.com/cocoindex-io/cocoindex-code --skill ccc
Prerequisites
  • Node.js and npm installed
  • ccc CLI installed (via npx skills add or direct installation)
Claude Code
Cursor
Windsurf
Cline

How to use ccc

  1. 1.Run `ccc init` from the project root if this is the first time using ccc in this project
  2. 2.Run `ccc index` to build the initial semantic index of your codebase
  3. 3.Use `ccc search <query>` with natural language describing what you're looking for (e.g., 'database connection pooling')
  4. 4.Optionally filter results with `--lang python` or `--path 'src/api/*'` flags
  5. 5.Use `--offset` and `--limit` to paginate through additional results if needed
  6. 6.Re-run `ccc index` after making significant code changes to keep the index current

Use cases

Good for
  • Finding database connection pooling logic across a large codebase
  • Locating user authentication flows when implementing security features
  • Discovering error handling and retry logic patterns in existing code
  • Searching for API request validation code when building new endpoints
  • Exploring code organization and module structure during onboarding or refactoring
Who it's for
  • Developers working in large or unfamiliar codebases
  • Teams needing to understand code patterns and architecture
  • Engineers performing refactoring or feature implementation
  • Code reviewers searching for related implementations

ccc FAQ

What should I search for — exact code syntax or concepts?

Search by concept, functionality, or behavior (e.g., 'user authentication flow'), not exact syntax. The semantic search understands intent rather than literal code patterns.

When should I re-index the codebase?

Re-index after significant changes like adding new files, refactoring modules, or renaming components. There's no need to re-index between consecutive searches if no code changed.

How do I filter search results to a specific language or directory?

Use `--lang python` (repeatable) to filter by language and `--path 'src/api/*'` to restrict to a directory glob pattern.

What if ccc search fails with an initialization error?

Run `ccc init` from the project root, then `ccc index` to build the index, then retry your search command.

How do I explore a search result in detail?

Use your editor's file-reading tool to load the matched file, or use `sed -n '<start>,<end>p' <file>` in the terminal to extract the specific line range returned.

Full instructions (SKILL.md)

Source of truth, from cocoindex-io/cocoindex-code.


name: ccc description: "This skill should be used when code search is needed (whether explicitly requested or as part of completing a task), when indexing the codebase after changes, or when the user asks about ccc, cocoindex-code, or the codebase index. Trigger phrases include 'search the codebase', 'find code related to', 'update the index', 'ccc', 'cocoindex-code'."

ccc - Semantic Code Search & Indexing

ccc is the CLI for CocoIndex Code, providing semantic search over the current codebase and index management.

Ownership

The agent owns the ccc lifecycle for the current project — initialization, indexing, and searching. Do not ask the user to perform these steps; handle them automatically.

  • Initialization: If ccc search or ccc index fails with an initialization error (e.g., "Not in an initialized project directory"), run ccc init from the project root directory, then ccc index to build the index, then retry the original command.
  • Index freshness: Keep the index up to date by running ccc index (or ccc search --refresh) when the index may be stale — e.g., at the start of a session, or after making significant code changes (new files, refactors, renamed modules). There is no need to re-index between consecutive searches if no code was changed in between.
  • Installation: If ccc itself is not found (command not found), refer to management.md for installation instructions and inform the user.

Searching the Codebase

To perform a semantic search:

ccc search <query terms>

The query should describe the concept, functionality, or behavior to find, not exact code syntax. For example:

ccc search database connection pooling
ccc search user authentication flow
ccc search error handling retry logic

Filtering Results

  • By language (--lang, repeatable): restrict results to specific languages.

    ccc search --lang python --lang markdown database schema
    
  • By path (--path): restrict results to a glob pattern relative to project root. If omitted, defaults to the current working directory (only results under that subdirectory are returned).

    ccc search --path 'src/api/*' request validation
    

Pagination

Results default to the first page. To retrieve additional results:

ccc search --offset 5 --limit 5 database schema

If all returned results look relevant, use --offset to fetch the next page — there are likely more useful matches beyond the first page.

Working with Search Results

Search results include file paths and line ranges. To explore a result in more detail:

  • Use the editor's built-in file reading capabilities (e.g., the Read tool) to load the matched file and read lines around the returned range for full context.
  • When working in a terminal without a file-reading tool, use sed -n '<start>,<end>p' <file> to extract a specific line range.

Settings

To view or edit embedding model configuration, include/exclude patterns, or language overrides, see settings.md.

Management & Troubleshooting

For installation, initialization, daemon management, troubleshooting, and cleanup commands, see management.md.