# SCIP Code Intelligence Protocol SCIP (pronunciation: "skip") is a language-agnostic protocol for indexing source code, which can be used to power code navigation functionality such as Go to definition, Find references, and Find implementations. This repository includes: - A [protobuf schema for SCIP](./scip.proto). - Rich Go and Rust bindings for SCIP: These include many utility functions to help build tooling on top of SCIP. - Auto-generated bindings for TypeScript and Haskell. - The [`scip` CLI](./docs/CLI.md), which makes SCIP indexes a breeze to work with. If you're interested in better understanding the motivation behind SCIP, check out the [announcement blog post](https://about.sourcegraph.com/blog/announcing-scip). If you're interested in writing a new indexer that emits SCIP, check out our documentation on [how to write an indexer](https://docs.sourcegraph.com/code_intelligence/explanations/writing_an_indexer). Also, check out the [Debugging section][] in the Development docs. If you're interested in consuming SCIP data, you can either use one of the [provided language bindings](https://github.com/sourcegraph/scip/tree/main/bindings), or generate code for the [SCIP protobuf schema](./scip.proto) using the protobuf toolchain for your language ecosystem. Also, check out the [Debugging section][] in the Development docs. [debugging section]: ./Development.md#debugging ## Tools using SCIP Several indexers currently emit SCIP data: - [scip-java](https://github.com/sourcegraph/scip-java): Java, Scala, Kotlin - [scip-typescript](https://github.com/sourcegraph/scip-typescript): TypeScript, JavaScript - [rust-analyzer](https://github.com/rust-lang/rust-analyzer): Rust - [scip-clang](https://github.com/sourcegraph/scip-clang): C++, C - [scip-ruby](https://github.com/sourcegraph/scip-ruby): Ruby - [scip-python](https://github.com/sourcegraph/scip-python): Python - [scip-dotnet](https://github.com/sourcegraph/scip-dotnet): C#, Visual Basic - [scip-dart](https://github.com/Workiva/scip-dart): Dart - [scip-php](https://github.com/davidrjenni/scip-php): PHP For more details about indexers, including LSIF-based indexers, see the [Sourcegraph documentation](https://docs.sourcegraph.com/code_navigation/references/indexers). Other tools which use SCIP include the [Sourcegraph CLI](https://github.com/sourcegraph/src-cli), and the SCIP CLI in this repo. ## Installing the `scip` CLI You can find binaries for the `scip` CLI tool [here](https://github.com/sourcegraph/scip/releases). You can also compile a binary locally using: ```sh git clone https://github.com/sourcegraph/scip.git --depth=1 cd scip go build ./cmd/scip ``` You can consult the [CLI reference](docs/CLI.md) or `--help` for usage information. ## Contributing We welcome questions, suggestions as well as code and docs contributions. For submitting contributions, check out [Development.md](./Development.md) to better understand project structure and common workflows. Contributors should abide by the [Sourcegraph Code of Conduct](https://handbook.sourcegraph.com/company-info-and-process/communication/code_of_conduct/).