Search code across public repositories using Sourcegraph's GraphQL API. WHEN TO USE THIS TOOL: - Use when you need to find code examples or implementations across public repositories - Helpful for researching how others have solved similar problems - Useful for discovering patterns and best practices in open source code HOW TO USE: - Provide a search query using Sourcegraph's query syntax - Optionally specify the number of results to return (default: 10) - Optionally set a timeout for the request QUERY SYNTAX: - Basic search: "fmt.Println" searches for exact matches - File filters: "file:.go fmt.Println" limits to Go files - Repository filters: "repo:^github\.com/golang/go$ fmt.Println" limits to specific repos - Language filters: "lang:go fmt.Println" limits to Go code - Boolean operators: "fmt.Println AND log.Fatal" for combined terms - Regular expressions: "fmt\.(Print|Printf|Println)" for pattern matching - Quoted strings: "\"exact phrase\"" for exact phrase matching - Exclude filters: "-file:test" or "-repo:forks" to exclude matches ADVANCED FILTERS: - Repository filters: - "repo:name" - Match repositories with name containing "name" - "repo:^github\.com/org/repo$" - Exact repository match - "repo:org/repo@branch" - Search specific branch - "repo:org/repo rev:branch" - Alternative branch syntax - "-repo:name" - Exclude repositories - "fork:yes" or "fork:only" - Include or only show forks - "archived:yes" or "archived:only" - Include or only show archived repos - "visibility:public" or "visibility:private" - Filter by visibility - File filters: - "file:\.js$" - Files with .js extension - "file:internal/" - Files in internal directory - "-file:test" - Exclude test files - "file:has.content(Copyright)" - Files containing "Copyright" - "file:has.contributor([email protected])" - Files with specific contributor - Content filters: - "content:\"exact string\"" - Search for exact string - "-content:\"unwanted\"" - Exclude files with unwanted content - "case:yes" - Case-sensitive search - Type filters: - "type:symbol" - Search for symbols (functions, classes, etc.) - "type:file" - Search file content only - "type:path" - Search filenames only - "type:diff" - Search code changes - "type:commit" - Search commit messages - Commit/diff search: - "after:\"1 month ago\"" - Commits after date - "before:\"2023-01-01\"" - Commits before date - "author:name" - Commits by author - "message:\"fix bug\"" - Commits with message - Result selection: - "select:repo" - Show only repository names - "select:file" - Show only file paths - "select:content" - Show only matching content - "select:symbol" - Show only matching symbols - Result control: - "count:100" - Return up to 100 results - "count:all" - Return all results - "timeout:30s" - Set search timeout EXAMPLES: - "file:.go context.WithTimeout" - Find Go code using context.WithTimeout - "lang:typescript useState type:symbol" - Find TypeScript React useState hooks - "repo:^github\.com/kubernetes/kubernetes$ pod list type:file" - Find Kubernetes files related to pod listing - "repo:sourcegraph/sourcegraph$ after:\"3 months ago\" type:diff database" - Recent changes to database code - "file:Dockerfile (alpine OR ubuntu) -content:alpine:latest" - Dockerfiles with specific base images - "repo:has.path(\.py) file:requirements.txt tensorflow" - Python projects using TensorFlow BOOLEAN OPERATORS: - "term1 AND term2" - Results containing both terms - "term1 OR term2" - Results containing either term - "term1 NOT term2" - Results with term1 but not term2 - "term1 and (term2 or term3)" - Grouping with parentheses LIMITATIONS: - Only searches public repositories - Rate limits may apply - Complex queries may take longer to execute - Maximum of 20 results per query TIPS: - Use specific file extensions to narrow results - Add repo: filters for more targeted searches - Use type:symbol to find function/method definitions - Use type:file to find relevant files