[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-elastic-code-search":3,"mdc-w5zs9i-key":29,"related-repo-elastic-code-search":746,"related-org-elastic-code-search":782},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":19,"repoUrl":20,"updatedAt":21,"license":22,"forks":19,"topics":23,"repo":24,"sourceUrl":27,"mdContent":28},"code-search","search and explore repository code","Use when you need to find where something is defined, understand how a feature is implemented, or explore an unfamiliar repo. Guides which tools to use and in what order.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"elastic","Elastic","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Felastic.png",[12,16],{"name":13,"slug":14,"type":15},"Search","search","tag",{"name":17,"slug":18,"type":15},"Code Analysis","code-analysis",2,"https:\u002F\u002Fgithub.com\u002Felastic\u002Fsourcerer","2026-08-07T05:03:33.027185",null,[],{"repoUrl":20,"stars":19,"forks":19,"topics":25,"description":26},[],"Sourcerer answers questions about your software from the source.","https:\u002F\u002Fgithub.com\u002Felastic\u002Fsourcerer\u002Ftree\u002FHEAD\u002Fsrc\u002Fsourcerer\u002Fskills\u002Fcode-search","---\nname: \"code-search\"\ndescription: \"Use when you need to find where something is defined, understand how a feature is implemented, or explore an unfamiliar repo. Guides which tools to use and in what order.\"\n---\n\n## Repo discovery and ref resolution\n\nIf you don't know which repo or ref (branch, tag, or version) to search, use your `repo-discovery` or `ref-resolution` skills first.\n\n## Choosing the right tool\n\n### `code.search` - BM25 keyword\u002Fconcept search\nUse when you know *what* you're looking for but not *where*:\n- Concept or feature names (\"circuit breaker\", \"token refresh\", \"shard allocation\")\n- Natural-language descriptions of behavior\n- When exact spelling is uncertain (BM25 scores partial matches)\n\nReturns the top-N highest-scoring lines. Default n=10; increase to 25-50 for broader coverage. Results are ranked by relevance, not by file or line order.\n\n### `code.grep` - regex search\nUse when you know the exact identifier or pattern:\n- Symbol definitions: class names, function names, constants, config keys\n- Import statements, annotation usages, string literals\n- Structural patterns (`public.*interface.*Service`, `@Override`)\n\nReturns all matching lines up to n. Default n=100; lower for focused lookups, raise if you expect many matches. Results are in file\u002Fline order.\n\n### `files.ls` - directory listing\nUse to orient yourself or confirm a path before reading:\n- Explore an unfamiliar repo's top-level structure\n- Find which subdirectory contains a feature (e.g. `src\u002Fmain\u002Fjava\u002Forg\u002Felasticsearch\u002F*\u002F`)\n- Verify a file path exists before passing it to cat\u002Fhead\u002Fgrep\n\nSupports `*` (one path segment) and `**` (recursive) glob patterns. A bare `*` lists the top level.\n\n### `files.cat` - full file contents\nUse for small, complete files where you need all the context:\n- Config files, build descriptors, short modules\n- Avoid on large source files - use grep\u002Fsearch with a narrow `file_path` instead\n\nReturns the entire file; no line limit.\n\n### `files.head` - first N lines of a file\nUse when the top of the file is sufficient:\n- Package\u002Fmodule declarations, imports, class-level structure\n- File headers\n\nDefault n=10; increase for longer preambles.\n\n### `files.tail` - last N lines of a file\nUse when the bottom of the file is what matters:\n- Closing blocks, trailing configuration entries\n\nDefault n=10.\n\n## Iterating toward an answer\n\n**Pattern 1 - concept → file → definition:**\n1. `code.search` on the concept to identify candidate files\n2. `files.ls` on a promising directory to confirm the layout\n3. `code.grep` with a specific symbol pattern (e.g. `.*class CircuitBreaker.*`) to find the definition\n4. `files.cat` or `files.head` for surrounding context\n\n**Pattern 2 - known symbol → definition:**\n1. `code.grep` with an anchored regex scoped to `**` or a known subdirectory\n2. If context is needed beyond the match lines, `files.cat` the file or widen the grep pattern\n\n**Pattern 3 - explore unfamiliar repo:**\n1. `files.ls` at `*` to see the top-level structure\n2. `files.ls` into the relevant subdirectory\n3. `files.head` on key files (entry points, primary config)\n4. `code.search` or `code.grep` to locate the specific feature\n\n## Narrowing with `file_path`\nAll content tools accept a `file_path` glob. Narrowing it cuts noise and speeds results:\n- `**\u002F*.java` - all Java files\n- `src\u002Fmain\u002F**` - source tree only, excluding tests\n- `src\u002Fmain\u002Fjava\u002Forg\u002Felasticsearch\u002Findex\u002F**` - one subsystem\n- `config\u002Felasticsearch.yml` - a specific file (exact match)\n\nA bare `*` matches a single path segment, so it lists only top-level files (no `\u002F` in the path). Use `**` to recurse.\n\n## Reading for citation\nWhen you read to cite a specific line or range, follow each tool's own citation guidance in its description, and see the `code-citations` skill for the full rules:\n- `code.grep` \u002F `code.search` return one row per line, each with an authoritative `line.number` - cite single lines and never merge separate rows into a range.\n- `files.cat` \u002F `files.head` \u002F `files.tail` \u002F `files.read_lines` prefix each returned line with its 1-indexed number by default (grep -n style, `\u003Cline>:\u003Ccontent>`) - read the number off the first and last lines to cite a range. Pass `show_line_numbers=false` when you want raw, unprefixed text.\n- Never derive a line position by counting lines inside returned content - read it from the per-line prefix.\n\n## Parallel calls\nWhen two searches are independent, issue them in the same turn. For example, grep for a class definition and search for its concept simultaneously, then synthesize the results.",{"data":30,"body":31},{"name":4,"description":6},{"type":32,"children":33},"root",[34,43,66,72,85,105,125,130,142,147,181,186,198,203,228,256,268,273,294,299,311,316,329,334,346,351,359,364,370,379,437,445,477,485,541,552,564,611,638,644,657,735,741],{"type":35,"tag":36,"props":37,"children":39},"element","h2",{"id":38},"repo-discovery-and-ref-resolution",[40],{"type":41,"value":42},"text","Repo discovery and ref resolution",{"type":35,"tag":44,"props":45,"children":46},"p",{},[47,49,56,58,64],{"type":41,"value":48},"If you don't know which repo or ref (branch, tag, or version) to search, use your ",{"type":35,"tag":50,"props":51,"children":53},"code",{"className":52},[],[54],{"type":41,"value":55},"repo-discovery",{"type":41,"value":57}," or ",{"type":35,"tag":50,"props":59,"children":61},{"className":60},[],[62],{"type":41,"value":63},"ref-resolution",{"type":41,"value":65}," skills first.",{"type":35,"tag":36,"props":67,"children":69},{"id":68},"choosing-the-right-tool",[70],{"type":41,"value":71},"Choosing the right tool",{"type":35,"tag":73,"props":74,"children":76},"h3",{"id":75},"codesearch-bm25-keywordconcept-search",[77,83],{"type":35,"tag":50,"props":78,"children":80},{"className":79},[],[81],{"type":41,"value":82},"code.search",{"type":41,"value":84}," - BM25 keyword\u002Fconcept search",{"type":35,"tag":44,"props":86,"children":87},{},[88,90,96,98,103],{"type":41,"value":89},"Use when you know ",{"type":35,"tag":91,"props":92,"children":93},"em",{},[94],{"type":41,"value":95},"what",{"type":41,"value":97}," you're looking for but not ",{"type":35,"tag":91,"props":99,"children":100},{},[101],{"type":41,"value":102},"where",{"type":41,"value":104},":",{"type":35,"tag":106,"props":107,"children":108},"ul",{},[109,115,120],{"type":35,"tag":110,"props":111,"children":112},"li",{},[113],{"type":41,"value":114},"Concept or feature names (\"circuit breaker\", \"token refresh\", \"shard allocation\")",{"type":35,"tag":110,"props":116,"children":117},{},[118],{"type":41,"value":119},"Natural-language descriptions of behavior",{"type":35,"tag":110,"props":121,"children":122},{},[123],{"type":41,"value":124},"When exact spelling is uncertain (BM25 scores partial matches)",{"type":35,"tag":44,"props":126,"children":127},{},[128],{"type":41,"value":129},"Returns the top-N highest-scoring lines. Default n=10; increase to 25-50 for broader coverage. Results are ranked by relevance, not by file or line order.",{"type":35,"tag":73,"props":131,"children":133},{"id":132},"codegrep-regex-search",[134,140],{"type":35,"tag":50,"props":135,"children":137},{"className":136},[],[138],{"type":41,"value":139},"code.grep",{"type":41,"value":141}," - regex search",{"type":35,"tag":44,"props":143,"children":144},{},[145],{"type":41,"value":146},"Use when you know the exact identifier or pattern:",{"type":35,"tag":106,"props":148,"children":149},{},[150,155,160],{"type":35,"tag":110,"props":151,"children":152},{},[153],{"type":41,"value":154},"Symbol definitions: class names, function names, constants, config keys",{"type":35,"tag":110,"props":156,"children":157},{},[158],{"type":41,"value":159},"Import statements, annotation usages, string literals",{"type":35,"tag":110,"props":161,"children":162},{},[163,165,171,173,179],{"type":41,"value":164},"Structural patterns (",{"type":35,"tag":50,"props":166,"children":168},{"className":167},[],[169],{"type":41,"value":170},"public.*interface.*Service",{"type":41,"value":172},", ",{"type":35,"tag":50,"props":174,"children":176},{"className":175},[],[177],{"type":41,"value":178},"@Override",{"type":41,"value":180},")",{"type":35,"tag":44,"props":182,"children":183},{},[184],{"type":41,"value":185},"Returns all matching lines up to n. Default n=100; lower for focused lookups, raise if you expect many matches. Results are in file\u002Fline order.",{"type":35,"tag":73,"props":187,"children":189},{"id":188},"filesls-directory-listing",[190,196],{"type":35,"tag":50,"props":191,"children":193},{"className":192},[],[194],{"type":41,"value":195},"files.ls",{"type":41,"value":197}," - directory listing",{"type":35,"tag":44,"props":199,"children":200},{},[201],{"type":41,"value":202},"Use to orient yourself or confirm a path before reading:",{"type":35,"tag":106,"props":204,"children":205},{},[206,211,223],{"type":35,"tag":110,"props":207,"children":208},{},[209],{"type":41,"value":210},"Explore an unfamiliar repo's top-level structure",{"type":35,"tag":110,"props":212,"children":213},{},[214,216,222],{"type":41,"value":215},"Find which subdirectory contains a feature (e.g. ",{"type":35,"tag":50,"props":217,"children":219},{"className":218},[],[220],{"type":41,"value":221},"src\u002Fmain\u002Fjava\u002Forg\u002Felasticsearch\u002F*\u002F",{"type":41,"value":180},{"type":35,"tag":110,"props":224,"children":225},{},[226],{"type":41,"value":227},"Verify a file path exists before passing it to cat\u002Fhead\u002Fgrep",{"type":35,"tag":44,"props":229,"children":230},{},[231,233,239,241,247,249,254],{"type":41,"value":232},"Supports ",{"type":35,"tag":50,"props":234,"children":236},{"className":235},[],[237],{"type":41,"value":238},"*",{"type":41,"value":240}," (one path segment) and ",{"type":35,"tag":50,"props":242,"children":244},{"className":243},[],[245],{"type":41,"value":246},"**",{"type":41,"value":248}," (recursive) glob patterns. A bare ",{"type":35,"tag":50,"props":250,"children":252},{"className":251},[],[253],{"type":41,"value":238},{"type":41,"value":255}," lists the top level.",{"type":35,"tag":73,"props":257,"children":259},{"id":258},"filescat-full-file-contents",[260,266],{"type":35,"tag":50,"props":261,"children":263},{"className":262},[],[264],{"type":41,"value":265},"files.cat",{"type":41,"value":267}," - full file contents",{"type":35,"tag":44,"props":269,"children":270},{},[271],{"type":41,"value":272},"Use for small, complete files where you need all the context:",{"type":35,"tag":106,"props":274,"children":275},{},[276,281],{"type":35,"tag":110,"props":277,"children":278},{},[279],{"type":41,"value":280},"Config files, build descriptors, short modules",{"type":35,"tag":110,"props":282,"children":283},{},[284,286,292],{"type":41,"value":285},"Avoid on large source files - use grep\u002Fsearch with a narrow ",{"type":35,"tag":50,"props":287,"children":289},{"className":288},[],[290],{"type":41,"value":291},"file_path",{"type":41,"value":293}," instead",{"type":35,"tag":44,"props":295,"children":296},{},[297],{"type":41,"value":298},"Returns the entire file; no line limit.",{"type":35,"tag":73,"props":300,"children":302},{"id":301},"fileshead-first-n-lines-of-a-file",[303,309],{"type":35,"tag":50,"props":304,"children":306},{"className":305},[],[307],{"type":41,"value":308},"files.head",{"type":41,"value":310}," - first N lines of a file",{"type":35,"tag":44,"props":312,"children":313},{},[314],{"type":41,"value":315},"Use when the top of the file is sufficient:",{"type":35,"tag":106,"props":317,"children":318},{},[319,324],{"type":35,"tag":110,"props":320,"children":321},{},[322],{"type":41,"value":323},"Package\u002Fmodule declarations, imports, class-level structure",{"type":35,"tag":110,"props":325,"children":326},{},[327],{"type":41,"value":328},"File headers",{"type":35,"tag":44,"props":330,"children":331},{},[332],{"type":41,"value":333},"Default n=10; increase for longer preambles.",{"type":35,"tag":73,"props":335,"children":337},{"id":336},"filestail-last-n-lines-of-a-file",[338,344],{"type":35,"tag":50,"props":339,"children":341},{"className":340},[],[342],{"type":41,"value":343},"files.tail",{"type":41,"value":345}," - last N lines of a file",{"type":35,"tag":44,"props":347,"children":348},{},[349],{"type":41,"value":350},"Use when the bottom of the file is what matters:",{"type":35,"tag":106,"props":352,"children":353},{},[354],{"type":35,"tag":110,"props":355,"children":356},{},[357],{"type":41,"value":358},"Closing blocks, trailing configuration entries",{"type":35,"tag":44,"props":360,"children":361},{},[362],{"type":41,"value":363},"Default n=10.",{"type":35,"tag":36,"props":365,"children":367},{"id":366},"iterating-toward-an-answer",[368],{"type":41,"value":369},"Iterating toward an answer",{"type":35,"tag":44,"props":371,"children":372},{},[373],{"type":35,"tag":374,"props":375,"children":376},"strong",{},[377],{"type":41,"value":378},"Pattern 1 - concept → file → definition:",{"type":35,"tag":380,"props":381,"children":382},"ol",{},[383,393,403,421],{"type":35,"tag":110,"props":384,"children":385},{},[386,391],{"type":35,"tag":50,"props":387,"children":389},{"className":388},[],[390],{"type":41,"value":82},{"type":41,"value":392}," on the concept to identify candidate files",{"type":35,"tag":110,"props":394,"children":395},{},[396,401],{"type":35,"tag":50,"props":397,"children":399},{"className":398},[],[400],{"type":41,"value":195},{"type":41,"value":402}," on a promising directory to confirm the layout",{"type":35,"tag":110,"props":404,"children":405},{},[406,411,413,419],{"type":35,"tag":50,"props":407,"children":409},{"className":408},[],[410],{"type":41,"value":139},{"type":41,"value":412}," with a specific symbol pattern (e.g. ",{"type":35,"tag":50,"props":414,"children":416},{"className":415},[],[417],{"type":41,"value":418},".*class CircuitBreaker.*",{"type":41,"value":420},") to find the definition",{"type":35,"tag":110,"props":422,"children":423},{},[424,429,430,435],{"type":35,"tag":50,"props":425,"children":427},{"className":426},[],[428],{"type":41,"value":265},{"type":41,"value":57},{"type":35,"tag":50,"props":431,"children":433},{"className":432},[],[434],{"type":41,"value":308},{"type":41,"value":436}," for surrounding context",{"type":35,"tag":44,"props":438,"children":439},{},[440],{"type":35,"tag":374,"props":441,"children":442},{},[443],{"type":41,"value":444},"Pattern 2 - known symbol → definition:",{"type":35,"tag":380,"props":446,"children":447},{},[448,465],{"type":35,"tag":110,"props":449,"children":450},{},[451,456,458,463],{"type":35,"tag":50,"props":452,"children":454},{"className":453},[],[455],{"type":41,"value":139},{"type":41,"value":457}," with an anchored regex scoped to ",{"type":35,"tag":50,"props":459,"children":461},{"className":460},[],[462],{"type":41,"value":246},{"type":41,"value":464}," or a known subdirectory",{"type":35,"tag":110,"props":466,"children":467},{},[468,470,475],{"type":41,"value":469},"If context is needed beyond the match lines, ",{"type":35,"tag":50,"props":471,"children":473},{"className":472},[],[474],{"type":41,"value":265},{"type":41,"value":476}," the file or widen the grep pattern",{"type":35,"tag":44,"props":478,"children":479},{},[480],{"type":35,"tag":374,"props":481,"children":482},{},[483],{"type":41,"value":484},"Pattern 3 - explore unfamiliar repo:",{"type":35,"tag":380,"props":486,"children":487},{},[488,505,515,525],{"type":35,"tag":110,"props":489,"children":490},{},[491,496,498,503],{"type":35,"tag":50,"props":492,"children":494},{"className":493},[],[495],{"type":41,"value":195},{"type":41,"value":497}," at ",{"type":35,"tag":50,"props":499,"children":501},{"className":500},[],[502],{"type":41,"value":238},{"type":41,"value":504}," to see the top-level structure",{"type":35,"tag":110,"props":506,"children":507},{},[508,513],{"type":35,"tag":50,"props":509,"children":511},{"className":510},[],[512],{"type":41,"value":195},{"type":41,"value":514}," into the relevant subdirectory",{"type":35,"tag":110,"props":516,"children":517},{},[518,523],{"type":35,"tag":50,"props":519,"children":521},{"className":520},[],[522],{"type":41,"value":308},{"type":41,"value":524}," on key files (entry points, primary config)",{"type":35,"tag":110,"props":526,"children":527},{},[528,533,534,539],{"type":35,"tag":50,"props":529,"children":531},{"className":530},[],[532],{"type":41,"value":82},{"type":41,"value":57},{"type":35,"tag":50,"props":535,"children":537},{"className":536},[],[538],{"type":41,"value":139},{"type":41,"value":540}," to locate the specific feature",{"type":35,"tag":36,"props":542,"children":544},{"id":543},"narrowing-with-file_path",[545,547],{"type":41,"value":546},"Narrowing with ",{"type":35,"tag":50,"props":548,"children":550},{"className":549},[],[551],{"type":41,"value":291},{"type":35,"tag":44,"props":553,"children":554},{},[555,557,562],{"type":41,"value":556},"All content tools accept a ",{"type":35,"tag":50,"props":558,"children":560},{"className":559},[],[561],{"type":41,"value":291},{"type":41,"value":563}," glob. Narrowing it cuts noise and speeds results:",{"type":35,"tag":106,"props":565,"children":566},{},[567,578,589,600],{"type":35,"tag":110,"props":568,"children":569},{},[570,576],{"type":35,"tag":50,"props":571,"children":573},{"className":572},[],[574],{"type":41,"value":575},"**\u002F*.java",{"type":41,"value":577}," - all Java files",{"type":35,"tag":110,"props":579,"children":580},{},[581,587],{"type":35,"tag":50,"props":582,"children":584},{"className":583},[],[585],{"type":41,"value":586},"src\u002Fmain\u002F**",{"type":41,"value":588}," - source tree only, excluding tests",{"type":35,"tag":110,"props":590,"children":591},{},[592,598],{"type":35,"tag":50,"props":593,"children":595},{"className":594},[],[596],{"type":41,"value":597},"src\u002Fmain\u002Fjava\u002Forg\u002Felasticsearch\u002Findex\u002F**",{"type":41,"value":599}," - one subsystem",{"type":35,"tag":110,"props":601,"children":602},{},[603,609],{"type":35,"tag":50,"props":604,"children":606},{"className":605},[],[607],{"type":41,"value":608},"config\u002Felasticsearch.yml",{"type":41,"value":610}," - a specific file (exact match)",{"type":35,"tag":44,"props":612,"children":613},{},[614,616,621,623,629,631,636],{"type":41,"value":615},"A bare ",{"type":35,"tag":50,"props":617,"children":619},{"className":618},[],[620],{"type":41,"value":238},{"type":41,"value":622}," matches a single path segment, so it lists only top-level files (no ",{"type":35,"tag":50,"props":624,"children":626},{"className":625},[],[627],{"type":41,"value":628},"\u002F",{"type":41,"value":630}," in the path). Use ",{"type":35,"tag":50,"props":632,"children":634},{"className":633},[],[635],{"type":41,"value":246},{"type":41,"value":637}," to recurse.",{"type":35,"tag":36,"props":639,"children":641},{"id":640},"reading-for-citation",[642],{"type":41,"value":643},"Reading for citation",{"type":35,"tag":44,"props":645,"children":646},{},[647,649,655],{"type":41,"value":648},"When you read to cite a specific line or range, follow each tool's own citation guidance in its description, and see the ",{"type":35,"tag":50,"props":650,"children":652},{"className":651},[],[653],{"type":41,"value":654},"code-citations",{"type":41,"value":656}," skill for the full rules:",{"type":35,"tag":106,"props":658,"children":659},{},[660,685,730],{"type":35,"tag":110,"props":661,"children":662},{},[663,668,670,675,677,683],{"type":35,"tag":50,"props":664,"children":666},{"className":665},[],[667],{"type":41,"value":139},{"type":41,"value":669}," \u002F ",{"type":35,"tag":50,"props":671,"children":673},{"className":672},[],[674],{"type":41,"value":82},{"type":41,"value":676}," return one row per line, each with an authoritative ",{"type":35,"tag":50,"props":678,"children":680},{"className":679},[],[681],{"type":41,"value":682},"line.number",{"type":41,"value":684}," - cite single lines and never merge separate rows into a range.",{"type":35,"tag":110,"props":686,"children":687},{},[688,693,694,699,700,705,706,712,714,720,722,728],{"type":35,"tag":50,"props":689,"children":691},{"className":690},[],[692],{"type":41,"value":265},{"type":41,"value":669},{"type":35,"tag":50,"props":695,"children":697},{"className":696},[],[698],{"type":41,"value":308},{"type":41,"value":669},{"type":35,"tag":50,"props":701,"children":703},{"className":702},[],[704],{"type":41,"value":343},{"type":41,"value":669},{"type":35,"tag":50,"props":707,"children":709},{"className":708},[],[710],{"type":41,"value":711},"files.read_lines",{"type":41,"value":713}," prefix each returned line with its 1-indexed number by default (grep -n style, ",{"type":35,"tag":50,"props":715,"children":717},{"className":716},[],[718],{"type":41,"value":719},"\u003Cline>:\u003Ccontent>",{"type":41,"value":721},") - read the number off the first and last lines to cite a range. Pass ",{"type":35,"tag":50,"props":723,"children":725},{"className":724},[],[726],{"type":41,"value":727},"show_line_numbers=false",{"type":41,"value":729}," when you want raw, unprefixed text.",{"type":35,"tag":110,"props":731,"children":732},{},[733],{"type":41,"value":734},"Never derive a line position by counting lines inside returned content - read it from the per-line prefix.",{"type":35,"tag":36,"props":736,"children":738},{"id":737},"parallel-calls",[739],{"type":41,"value":740},"Parallel calls",{"type":35,"tag":44,"props":742,"children":743},{},[744],{"type":41,"value":745},"When two searches are independent, issue them in the same turn. For example, grep for a class definition and search for its concept simultaneously, then synthesize the results.",{"items":747,"total":781},[748,758,763,773],{"slug":654,"name":654,"fn":749,"description":750,"org":751,"tags":752,"stars":19,"repoUrl":20,"updatedAt":757},"cite code symbols and repository claims","Use whenever an answer names a code symbol, class, function, config key, endpoint, file, directory, or file extension - or makes any checkable claim about repository behavior (a default value, a version, a recall\u002Flatency figure, a behavioral guarantee). This is nearly every substantive answer this agent produces, so treat it as the default path, not an edge case reserved for explicit \"cite your sources\" requests.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[753,754],{"name":17,"slug":18,"type":15},{"name":755,"slug":756,"type":15},"Documentation","documentation","2026-08-07T05:03:32.676248",{"slug":4,"name":4,"fn":5,"description":6,"org":759,"tags":760,"stars":19,"repoUrl":20,"updatedAt":21},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[761,762],{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"slug":63,"name":63,"fn":764,"description":765,"org":766,"tags":767,"stars":19,"repoUrl":20,"updatedAt":772},"resolve ambiguous repository references","Use any time a branch, tag, or version in the user's question is ambiguous or unspecified - whether at the start of a question or mid-conversation (e.g. when comparing behavior across versions).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[768,769],{"name":17,"slug":18,"type":15},{"name":770,"slug":771,"type":15},"Git","git","2026-08-07T05:03:35.874346",{"slug":55,"name":55,"fn":774,"description":775,"org":776,"tags":777,"stars":19,"repoUrl":20,"updatedAt":780},"discover indexed repositories","Use at the start of most questions to identify which repos are indexed before querying content. Also use mid-conversation when an answer may require expanding into a related or upstream repo (e.g. tracing from an application repo into a lower-level dependency).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[778,779],{"name":17,"slug":18,"type":15},{"name":770,"slug":771,"type":15},"2026-08-07T05:03:32.314134",4,{"items":783,"total":955},[784,803,820,835,854,866,876,891,903,918,929,942],{"slug":785,"name":785,"fn":786,"description":787,"org":788,"tags":789,"stars":800,"repoUrl":801,"updatedAt":802},"accessing-benchmark-results","retrieve and analyze Rally benchmark results","Retrieve Rally benchmark results from an external Elasticsearch metrics store. Use to list past races, get a single race's overall (per-task) results, chart a metric's trend across multiple runs, compare two races, or check whether a run converged — e.g. \"show me recent geonames races\", \"what's the service_time trend for nyc_taxis over the last 30 days?\", \"compare these two race-ids\". Applies when datastore.type = elasticsearch is set in ~\u002F.rally\u002Frally.ini.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[790,793,796,797],{"name":791,"slug":792,"type":15},"Analytics","analytics",{"name":794,"slug":795,"type":15},"Data Analysis","data-analysis",{"name":9,"slug":8,"type":15},{"name":798,"slug":799,"type":15},"Performance","performance",2027,"https:\u002F\u002Fgithub.com\u002Felastic\u002Frally","2026-07-12T07:46:38.54144",{"slug":804,"name":804,"fn":805,"description":806,"org":807,"tags":808,"stars":800,"repoUrl":801,"updatedAt":819},"developing-rally","develop and debug Rally source code","Work on Rally's own codebase, not running benchmarks with it. Use when setting up the dev environment, running Rally's tests or linters, navigating its source, debugging Rally's own code, or making changes to Rally itself.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[809,812,813,816],{"name":810,"slug":811,"type":15},"Debugging","debugging",{"name":9,"slug":8,"type":15},{"name":814,"slug":815,"type":15},"Engineering","engineering",{"name":817,"slug":818,"type":15},"Local Development","local-development","2026-07-12T07:46:35.976807",{"slug":821,"name":821,"fn":822,"description":823,"org":824,"tags":825,"stars":800,"repoUrl":801,"updatedAt":834},"running-benchmarks","run Rally benchmarks against Elasticsearch","Run Rally benchmarks (races) against Elasticsearch — an existing\u002Fexternal cluster or a Rally-provisioned distribution — and read the summary report. Use when running a race (any pipeline, track, challenge, target-hosts, or auth) or when interpreting throughput, latency, and service_time results.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[826,827,830,831],{"name":9,"slug":8,"type":15},{"name":828,"slug":829,"type":15},"Elasticsearch","elasticsearch",{"name":798,"slug":799,"type":15},{"name":832,"slug":833,"type":15},"Testing","testing","2026-07-12T07:46:37.277964",{"slug":836,"name":836,"fn":837,"description":838,"org":839,"tags":840,"stars":851,"repoUrl":852,"updatedAt":853},"cloud-access-management","manage Elastic Cloud organization access","Manage Elastic Cloud organization access: invite users, assign roles to Serverless projects, and create or revoke Cloud API keys. Use when granting, modifying, or auditing user access.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[841,844,845,848],{"name":842,"slug":843,"type":15},"Cloud","cloud",{"name":9,"slug":8,"type":15},{"name":846,"slug":847,"type":15},"Operations","operations",{"name":849,"slug":850,"type":15},"Permissions","permissions",531,"https:\u002F\u002Fgithub.com\u002Felastic\u002Fagent-skills","2026-07-12T07:46:44.946285",{"slug":855,"name":855,"fn":856,"description":857,"org":858,"tags":859,"stars":851,"repoUrl":852,"updatedAt":865},"cloud-create-project","create Elastic Cloud Serverless projects","Creates Elastic Cloud Serverless projects (Elasticsearch, Observability, or Security) via the REST API, saves credentials to file, and bootstraps a scoped Elasticsearch API key. Use when creating a new serverless project, provisioning a search or observability environment, or spinning up a new Elastic Cloud project.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[860,861,864],{"name":842,"slug":843,"type":15},{"name":862,"slug":863,"type":15},"Deployment","deployment",{"name":828,"slug":829,"type":15},"2026-07-12T07:46:42.353362",{"slug":867,"name":867,"fn":868,"description":869,"org":870,"tags":871,"stars":851,"repoUrl":852,"updatedAt":875},"cloud-manage-project","manage Elastic Cloud Serverless projects","Manages existing Elastic Cloud Serverless projects: list, get, update, delete, reset credentials, resume, and load saved credentials. Connects to existing projects by resolving endpoints and acquiring scoped Elasticsearch API keys. Use when performing day-2 operations on serverless projects, connecting to an existing project, loading or resetting project credentials, or looking up project details.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[872,873,874],{"name":842,"slug":843,"type":15},{"name":828,"slug":829,"type":15},{"name":846,"slug":847,"type":15},"2026-07-12T07:46:41.097412",{"slug":877,"name":877,"fn":878,"description":879,"org":880,"tags":881,"stars":851,"repoUrl":852,"updatedAt":890},"cloud-network-security","manage Elastic Cloud network security","Manage Serverless network security (traffic filters): create, update, and delete IP filters and AWS PrivateLink VPC filters. Use when restricting network access or configuring private connectivity.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[882,883,884,887],{"name":842,"slug":843,"type":15},{"name":828,"slug":829,"type":15},{"name":885,"slug":886,"type":15},"Networking","networking",{"name":888,"slug":889,"type":15},"Security","security","2026-07-12T07:46:43.675992",{"slug":892,"name":892,"fn":893,"description":894,"org":895,"tags":896,"stars":851,"repoUrl":852,"updatedAt":902},"cloud-setup","configure Elastic Cloud authentication","Configures Elastic Cloud authentication and environment defaults. Use when setting up EC_API_KEY, configuring Cloud API access, or when another cloud skill requires credentials.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[897,900,901],{"name":898,"slug":899,"type":15},"Authentication","authentication",{"name":842,"slug":843,"type":15},{"name":828,"slug":829,"type":15},"2026-07-12T07:46:39.783105",{"slug":904,"name":904,"fn":905,"description":906,"org":907,"tags":908,"stars":851,"repoUrl":852,"updatedAt":917},"elasticsearch-audit","configure Elasticsearch security audit logs","Enable, configure, and query Elasticsearch security audit logs. Use when the task involves audit logging setup, event filtering, or investigating security incidents like failed logins.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[909,912,913,916],{"name":910,"slug":911,"type":15},"Audit","audit",{"name":828,"slug":829,"type":15},{"name":914,"slug":915,"type":15},"Logs","logs",{"name":888,"slug":889,"type":15},"2026-07-12T07:47:35.092599",{"slug":919,"name":919,"fn":920,"description":921,"org":922,"tags":923,"stars":851,"repoUrl":852,"updatedAt":928},"elasticsearch-authn","configure Elasticsearch authentication realms","Authenticate to Elasticsearch using native, file-based, LDAP\u002FAD, SAML, OIDC, Kerberos, JWT, or certificate realms. Use when connecting with credentials, choosing a realm, or managing API keys. Assumes the target realms are already configured.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[924,925,926,927],{"name":898,"slug":899,"type":15},{"name":9,"slug":8,"type":15},{"name":828,"slug":829,"type":15},{"name":888,"slug":889,"type":15},"2026-07-12T07:47:41.474547",{"slug":930,"name":930,"fn":931,"description":932,"org":933,"tags":934,"stars":851,"repoUrl":852,"updatedAt":941},"elasticsearch-authz","manage Elasticsearch RBAC and security roles","Manage Elasticsearch RBAC: native users, roles, role mappings, document- and field-level security. Use when creating users or roles, assigning privileges, or mapping external realms like LDAP\u002FSAML.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[935,936,937,940],{"name":9,"slug":8,"type":15},{"name":828,"slug":829,"type":15},{"name":938,"slug":939,"type":15},"RBAC","rbac",{"name":888,"slug":889,"type":15},"2026-07-12T07:47:36.394177",{"slug":943,"name":943,"fn":944,"description":945,"org":946,"tags":947,"stars":851,"repoUrl":852,"updatedAt":954},"elasticsearch-esql","query Elasticsearch data with ES|QL","Execute ES|QL (Elasticsearch Query Language) queries, use when the user wants to query Elasticsearch data, analyze logs, aggregate metrics, explore data, or create charts and dashboards from ES|QL results.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[948,949,950,951],{"name":791,"slug":792,"type":15},{"name":794,"slug":795,"type":15},{"name":828,"slug":829,"type":15},{"name":952,"slug":953,"type":15},"SQL","sql","2026-07-12T07:47:40.249533",90]