[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-elastic-repo-discovery":3,"mdc-6mqk82-key":29,"related-org-elastic-repo-discovery":405,"related-repo-elastic-repo-discovery":579},{"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},"repo-discovery","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},"elastic","Elastic","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Felastic.png",[12,16],{"name":13,"slug":14,"type":15},"Git","git","tag",{"name":17,"slug":18,"type":15},"Code Analysis","code-analysis",2,"https:\u002F\u002Fgithub.com\u002Felastic\u002Fsourcerer","2026-08-07T05:03:32.314134",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\u002Frepo-discovery","---\nname: \"repo-discovery\"\ndescription: \"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).\"\n---\n\n## When this applies\n- **At the start of a question**: confirm which repos are indexed and plan where to look before issuing any content queries.\n- **Mid-investigation**: when the trail leads into a dependency, upstream library, or sibling repo - expand scope before drawing conclusions.\n- **When a dependency boundary is reached**: if the current repo's code delegates to an external dependency (e.g., an import resolves outside the repo, behavior is implemented in an upstream library), always check whether that dependency is indexed before concluding the answer can't be found. Never assume a dependency is unindexed without checking.\n\n## Tool\nUse `sourcerer.refs.list` with wildcard `git_repo` and `git_org` patterns. Each result row is one indexed ref; the distinct `git.repo` values in the results are the repos available to query.\n\n## Progressive disclosure - narrow first, expand only as needed\n\nStart with the most specific pattern likely to match the question. Broaden only if the result is empty or you need more coverage.\n\n| Scenario | Example call |\n|---|---|\n| Specific repo, confident | `git_org: elastic, git_repo: elasticsearch` |\n| Repo family in one org | `git_org: elastic, git_repo: elasticsearch*` |\n| All repos in one org | `git_org: elastic, git_repo: *` |\n| Different org or upstream | `git_org: apache, git_repo: lucene*` |\n| Cross-org fallback (expensive) | `git_repo: *` (no org filter) |\n\nAvoid `git_repo: *` without an org filter unless you genuinely need all orgs - it returns every indexed ref and consumes many tokens.\n\n## Interpreting results\nFrom the result rows:\n- **Distinct `git.repo` values** - the repos available to query.\n- **`git.ref_type`** - whether each repo has branches, tags, or both. Useful for knowing whether `ref-resolution` will find tags or needs to fall back to a branch.\n- **`status`** - a ref with status other than `ready` may have incomplete content.\n\n## Example: expanding scope mid-conversation\nA question about Elasticsearch's query parsing leads into how Lucene's `QueryParser` works underneath:\n1. Initial discovery: `refs.list(git_org: elastic, git_repo: elasticsearch)` - confirm the repo and plan the search.\n2. Answer the Elasticsearch side. When the trail leads to Lucene, expand:\n3. `refs.list(git_org: apache, git_repo: lucene*)` - discover which Lucene repos are indexed.\n4. Use `ref-resolution` on the relevant Lucene repo to pin a commit, then query content.\n\nEach discovery call should be targeted - retrieve only what you need to plan the next step.\n",{"data":30,"body":31},{"name":4,"description":6},{"type":32,"children":33},"root",[34,43,79,85,124,130,135,250,262,268,273,337,343,356,400],{"type":35,"tag":36,"props":37,"children":39},"element","h2",{"id":38},"when-this-applies",[40],{"type":41,"value":42},"text","When this applies",{"type":35,"tag":44,"props":45,"children":46},"ul",{},[47,59,69],{"type":35,"tag":48,"props":49,"children":50},"li",{},[51,57],{"type":35,"tag":52,"props":53,"children":54},"strong",{},[55],{"type":41,"value":56},"At the start of a question",{"type":41,"value":58},": confirm which repos are indexed and plan where to look before issuing any content queries.",{"type":35,"tag":48,"props":60,"children":61},{},[62,67],{"type":35,"tag":52,"props":63,"children":64},{},[65],{"type":41,"value":66},"Mid-investigation",{"type":41,"value":68},": when the trail leads into a dependency, upstream library, or sibling repo - expand scope before drawing conclusions.",{"type":35,"tag":48,"props":70,"children":71},{},[72,77],{"type":35,"tag":52,"props":73,"children":74},{},[75],{"type":41,"value":76},"When a dependency boundary is reached",{"type":41,"value":78},": if the current repo's code delegates to an external dependency (e.g., an import resolves outside the repo, behavior is implemented in an upstream library), always check whether that dependency is indexed before concluding the answer can't be found. Never assume a dependency is unindexed without checking.",{"type":35,"tag":36,"props":80,"children":82},{"id":81},"tool",[83],{"type":41,"value":84},"Tool",{"type":35,"tag":86,"props":87,"children":88},"p",{},[89,91,98,100,106,108,114,116,122],{"type":41,"value":90},"Use ",{"type":35,"tag":92,"props":93,"children":95},"code",{"className":94},[],[96],{"type":41,"value":97},"sourcerer.refs.list",{"type":41,"value":99}," with wildcard ",{"type":35,"tag":92,"props":101,"children":103},{"className":102},[],[104],{"type":41,"value":105},"git_repo",{"type":41,"value":107}," and ",{"type":35,"tag":92,"props":109,"children":111},{"className":110},[],[112],{"type":41,"value":113},"git_org",{"type":41,"value":115}," patterns. Each result row is one indexed ref; the distinct ",{"type":35,"tag":92,"props":117,"children":119},{"className":118},[],[120],{"type":41,"value":121},"git.repo",{"type":41,"value":123}," values in the results are the repos available to query.",{"type":35,"tag":36,"props":125,"children":127},{"id":126},"progressive-disclosure-narrow-first-expand-only-as-needed",[128],{"type":41,"value":129},"Progressive disclosure - narrow first, expand only as needed",{"type":35,"tag":86,"props":131,"children":132},{},[133],{"type":41,"value":134},"Start with the most specific pattern likely to match the question. Broaden only if the result is empty or you need more coverage.",{"type":35,"tag":136,"props":137,"children":138},"table",{},[139,158],{"type":35,"tag":140,"props":141,"children":142},"thead",{},[143],{"type":35,"tag":144,"props":145,"children":146},"tr",{},[147,153],{"type":35,"tag":148,"props":149,"children":150},"th",{},[151],{"type":41,"value":152},"Scenario",{"type":35,"tag":148,"props":154,"children":155},{},[156],{"type":41,"value":157},"Example call",{"type":35,"tag":159,"props":160,"children":161},"tbody",{},[162,180,197,214,231],{"type":35,"tag":144,"props":163,"children":164},{},[165,171],{"type":35,"tag":166,"props":167,"children":168},"td",{},[169],{"type":41,"value":170},"Specific repo, confident",{"type":35,"tag":166,"props":172,"children":173},{},[174],{"type":35,"tag":92,"props":175,"children":177},{"className":176},[],[178],{"type":41,"value":179},"git_org: elastic, git_repo: elasticsearch",{"type":35,"tag":144,"props":181,"children":182},{},[183,188],{"type":35,"tag":166,"props":184,"children":185},{},[186],{"type":41,"value":187},"Repo family in one org",{"type":35,"tag":166,"props":189,"children":190},{},[191],{"type":35,"tag":92,"props":192,"children":194},{"className":193},[],[195],{"type":41,"value":196},"git_org: elastic, git_repo: elasticsearch*",{"type":35,"tag":144,"props":198,"children":199},{},[200,205],{"type":35,"tag":166,"props":201,"children":202},{},[203],{"type":41,"value":204},"All repos in one org",{"type":35,"tag":166,"props":206,"children":207},{},[208],{"type":35,"tag":92,"props":209,"children":211},{"className":210},[],[212],{"type":41,"value":213},"git_org: elastic, git_repo: *",{"type":35,"tag":144,"props":215,"children":216},{},[217,222],{"type":35,"tag":166,"props":218,"children":219},{},[220],{"type":41,"value":221},"Different org or upstream",{"type":35,"tag":166,"props":223,"children":224},{},[225],{"type":35,"tag":92,"props":226,"children":228},{"className":227},[],[229],{"type":41,"value":230},"git_org: apache, git_repo: lucene*",{"type":35,"tag":144,"props":232,"children":233},{},[234,239],{"type":35,"tag":166,"props":235,"children":236},{},[237],{"type":41,"value":238},"Cross-org fallback (expensive)",{"type":35,"tag":166,"props":240,"children":241},{},[242,248],{"type":35,"tag":92,"props":243,"children":245},{"className":244},[],[246],{"type":41,"value":247},"git_repo: *",{"type":41,"value":249}," (no org filter)",{"type":35,"tag":86,"props":251,"children":252},{},[253,255,260],{"type":41,"value":254},"Avoid ",{"type":35,"tag":92,"props":256,"children":258},{"className":257},[],[259],{"type":41,"value":247},{"type":41,"value":261}," without an org filter unless you genuinely need all orgs - it returns every indexed ref and consumes many tokens.",{"type":35,"tag":36,"props":263,"children":265},{"id":264},"interpreting-results",[266],{"type":41,"value":267},"Interpreting results",{"type":35,"tag":86,"props":269,"children":270},{},[271],{"type":41,"value":272},"From the result rows:",{"type":35,"tag":44,"props":274,"children":275},{},[276,293,315],{"type":35,"tag":48,"props":277,"children":278},{},[279,291],{"type":35,"tag":52,"props":280,"children":281},{},[282,284,289],{"type":41,"value":283},"Distinct ",{"type":35,"tag":92,"props":285,"children":287},{"className":286},[],[288],{"type":41,"value":121},{"type":41,"value":290}," values",{"type":41,"value":292}," - the repos available to query.",{"type":35,"tag":48,"props":294,"children":295},{},[296,305,307,313],{"type":35,"tag":52,"props":297,"children":298},{},[299],{"type":35,"tag":92,"props":300,"children":302},{"className":301},[],[303],{"type":41,"value":304},"git.ref_type",{"type":41,"value":306}," - whether each repo has branches, tags, or both. Useful for knowing whether ",{"type":35,"tag":92,"props":308,"children":310},{"className":309},[],[311],{"type":41,"value":312},"ref-resolution",{"type":41,"value":314}," will find tags or needs to fall back to a branch.",{"type":35,"tag":48,"props":316,"children":317},{},[318,327,329,335],{"type":35,"tag":52,"props":319,"children":320},{},[321],{"type":35,"tag":92,"props":322,"children":324},{"className":323},[],[325],{"type":41,"value":326},"status",{"type":41,"value":328}," - a ref with status other than ",{"type":35,"tag":92,"props":330,"children":332},{"className":331},[],[333],{"type":41,"value":334},"ready",{"type":41,"value":336}," may have incomplete content.",{"type":35,"tag":36,"props":338,"children":340},{"id":339},"example-expanding-scope-mid-conversation",[341],{"type":41,"value":342},"Example: expanding scope mid-conversation",{"type":35,"tag":86,"props":344,"children":345},{},[346,348,354],{"type":41,"value":347},"A question about Elasticsearch's query parsing leads into how Lucene's ",{"type":35,"tag":92,"props":349,"children":351},{"className":350},[],[352],{"type":41,"value":353},"QueryParser",{"type":41,"value":355}," works underneath:",{"type":35,"tag":357,"props":358,"children":359},"ol",{},[360,373,378,389],{"type":35,"tag":48,"props":361,"children":362},{},[363,365,371],{"type":41,"value":364},"Initial discovery: ",{"type":35,"tag":92,"props":366,"children":368},{"className":367},[],[369],{"type":41,"value":370},"refs.list(git_org: elastic, git_repo: elasticsearch)",{"type":41,"value":372}," - confirm the repo and plan the search.",{"type":35,"tag":48,"props":374,"children":375},{},[376],{"type":41,"value":377},"Answer the Elasticsearch side. When the trail leads to Lucene, expand:",{"type":35,"tag":48,"props":379,"children":380},{},[381,387],{"type":35,"tag":92,"props":382,"children":384},{"className":383},[],[385],{"type":41,"value":386},"refs.list(git_org: apache, git_repo: lucene*)",{"type":41,"value":388}," - discover which Lucene repos are indexed.",{"type":35,"tag":48,"props":390,"children":391},{},[392,393,398],{"type":41,"value":90},{"type":35,"tag":92,"props":394,"children":396},{"className":395},[],[397],{"type":41,"value":312},{"type":41,"value":399}," on the relevant Lucene repo to pin a commit, then query content.",{"type":35,"tag":86,"props":401,"children":402},{},[403],{"type":41,"value":404},"Each discovery call should be targeted - retrieve only what you need to plan the next step.",{"items":406,"total":578},[407,426,443,458,477,489,499,514,526,541,552,565],{"slug":408,"name":408,"fn":409,"description":410,"org":411,"tags":412,"stars":423,"repoUrl":424,"updatedAt":425},"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},[413,416,419,420],{"name":414,"slug":415,"type":15},"Analytics","analytics",{"name":417,"slug":418,"type":15},"Data Analysis","data-analysis",{"name":9,"slug":8,"type":15},{"name":421,"slug":422,"type":15},"Performance","performance",2027,"https:\u002F\u002Fgithub.com\u002Felastic\u002Frally","2026-07-12T07:46:38.54144",{"slug":427,"name":427,"fn":428,"description":429,"org":430,"tags":431,"stars":423,"repoUrl":424,"updatedAt":442},"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},[432,435,436,439],{"name":433,"slug":434,"type":15},"Debugging","debugging",{"name":9,"slug":8,"type":15},{"name":437,"slug":438,"type":15},"Engineering","engineering",{"name":440,"slug":441,"type":15},"Local Development","local-development","2026-07-12T07:46:35.976807",{"slug":444,"name":444,"fn":445,"description":446,"org":447,"tags":448,"stars":423,"repoUrl":424,"updatedAt":457},"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},[449,450,453,454],{"name":9,"slug":8,"type":15},{"name":451,"slug":452,"type":15},"Elasticsearch","elasticsearch",{"name":421,"slug":422,"type":15},{"name":455,"slug":456,"type":15},"Testing","testing","2026-07-12T07:46:37.277964",{"slug":459,"name":459,"fn":460,"description":461,"org":462,"tags":463,"stars":474,"repoUrl":475,"updatedAt":476},"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},[464,467,468,471],{"name":465,"slug":466,"type":15},"Cloud","cloud",{"name":9,"slug":8,"type":15},{"name":469,"slug":470,"type":15},"Operations","operations",{"name":472,"slug":473,"type":15},"Permissions","permissions",531,"https:\u002F\u002Fgithub.com\u002Felastic\u002Fagent-skills","2026-07-12T07:46:44.946285",{"slug":478,"name":478,"fn":479,"description":480,"org":481,"tags":482,"stars":474,"repoUrl":475,"updatedAt":488},"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},[483,484,487],{"name":465,"slug":466,"type":15},{"name":485,"slug":486,"type":15},"Deployment","deployment",{"name":451,"slug":452,"type":15},"2026-07-12T07:46:42.353362",{"slug":490,"name":490,"fn":491,"description":492,"org":493,"tags":494,"stars":474,"repoUrl":475,"updatedAt":498},"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},[495,496,497],{"name":465,"slug":466,"type":15},{"name":451,"slug":452,"type":15},{"name":469,"slug":470,"type":15},"2026-07-12T07:46:41.097412",{"slug":500,"name":500,"fn":501,"description":502,"org":503,"tags":504,"stars":474,"repoUrl":475,"updatedAt":513},"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},[505,506,507,510],{"name":465,"slug":466,"type":15},{"name":451,"slug":452,"type":15},{"name":508,"slug":509,"type":15},"Networking","networking",{"name":511,"slug":512,"type":15},"Security","security","2026-07-12T07:46:43.675992",{"slug":515,"name":515,"fn":516,"description":517,"org":518,"tags":519,"stars":474,"repoUrl":475,"updatedAt":525},"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},[520,523,524],{"name":521,"slug":522,"type":15},"Authentication","authentication",{"name":465,"slug":466,"type":15},{"name":451,"slug":452,"type":15},"2026-07-12T07:46:39.783105",{"slug":527,"name":527,"fn":528,"description":529,"org":530,"tags":531,"stars":474,"repoUrl":475,"updatedAt":540},"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},[532,535,536,539],{"name":533,"slug":534,"type":15},"Audit","audit",{"name":451,"slug":452,"type":15},{"name":537,"slug":538,"type":15},"Logs","logs",{"name":511,"slug":512,"type":15},"2026-07-12T07:47:35.092599",{"slug":542,"name":542,"fn":543,"description":544,"org":545,"tags":546,"stars":474,"repoUrl":475,"updatedAt":551},"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},[547,548,549,550],{"name":521,"slug":522,"type":15},{"name":9,"slug":8,"type":15},{"name":451,"slug":452,"type":15},{"name":511,"slug":512,"type":15},"2026-07-12T07:47:41.474547",{"slug":553,"name":553,"fn":554,"description":555,"org":556,"tags":557,"stars":474,"repoUrl":475,"updatedAt":564},"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},[558,559,560,563],{"name":9,"slug":8,"type":15},{"name":451,"slug":452,"type":15},{"name":561,"slug":562,"type":15},"RBAC","rbac",{"name":511,"slug":512,"type":15},"2026-07-12T07:47:36.394177",{"slug":566,"name":566,"fn":567,"description":568,"org":569,"tags":570,"stars":474,"repoUrl":475,"updatedAt":577},"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},[571,572,573,574],{"name":414,"slug":415,"type":15},{"name":417,"slug":418,"type":15},{"name":451,"slug":452,"type":15},{"name":575,"slug":576,"type":15},"SQL","sql","2026-07-12T07:47:40.249533",90,{"items":580,"total":616},[581,592,603,611],{"slug":582,"name":582,"fn":583,"description":584,"org":585,"tags":586,"stars":19,"repoUrl":20,"updatedAt":591},"code-citations","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},[587,588],{"name":17,"slug":18,"type":15},{"name":589,"slug":590,"type":15},"Documentation","documentation","2026-08-07T05:03:32.676248",{"slug":593,"name":593,"fn":594,"description":595,"org":596,"tags":597,"stars":19,"repoUrl":20,"updatedAt":602},"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},[598,599],{"name":17,"slug":18,"type":15},{"name":600,"slug":601,"type":15},"Search","search","2026-08-07T05:03:33.027185",{"slug":312,"name":312,"fn":604,"description":605,"org":606,"tags":607,"stars":19,"repoUrl":20,"updatedAt":610},"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},[608,609],{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},"2026-08-07T05:03:35.874346",{"slug":4,"name":4,"fn":5,"description":6,"org":612,"tags":613,"stars":19,"repoUrl":20,"updatedAt":21},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[614,615],{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},4]