[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-elastic-cloud-create-project":3,"mdc-31zj84-key":33,"related-org-elastic-cloud-create-project":3008,"related-repo-elastic-cloud-create-project":3166},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":22,"repoUrl":23,"updatedAt":24,"license":25,"forks":26,"topics":27,"repo":28,"sourceUrl":31,"mdContent":32},"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},"elastic","Elastic","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Felastic.png",[12,16,19],{"name":13,"slug":14,"type":15},"Deployment","deployment","tag",{"name":17,"slug":18,"type":15},"Cloud","cloud",{"name":20,"slug":21,"type":15},"Elasticsearch","elasticsearch",531,"https:\u002F\u002Fgithub.com\u002Felastic\u002Fagent-skills","2026-07-12T07:46:42.353362",null,41,[],{"repoUrl":23,"stars":22,"forks":26,"topics":29,"description":30},[],"Official Elastic Skills","https:\u002F\u002Fgithub.com\u002Felastic\u002Fagent-skills\u002Ftree\u002FHEAD\u002Fskills\u002Fcloud\u002Fcreate-project","---\nname: cloud-create-project\ndescription: >\n  Creates Elastic Cloud Serverless projects (Elasticsearch, Observability, or Security)\n  via the REST API, saves credentials to file, and bootstraps a scoped Elasticsearch\n  API key. Use when creating a new serverless project, provisioning a search or observability\n  environment, or spinning up a new Elastic Cloud project.\ncompatibility: >\n  Requires Python 3.8+, network access to the Elastic Cloud API (api.elastic-cloud.com).\n  Environment variables: EC_API_KEY (required, set by cloud-setup).\nmetadata:\n  author: elastic\n  version: 0.1.0\n---\n\n# Create Serverless Project\n\nCreate Elastic Cloud Serverless projects using the Serverless REST API. Use the `cloud-manage-project` skill for day-2\noperations like listing, updating, or deleting projects.\n\n## Prerequisites and permissions\n\n- Ensure `EC_API_KEY` is configured. If not, run `cloud-setup` skill first.\n- Creating projects requires a Cloud API key with **Admin** or **Organization owner** role.\n- This skill does not perform a separate role pre-check. Attempt the requested operation and let the API enforce\n  authorization. If the API returns an authorization error (for example, `403 Forbidden`), stop and ask the user to\n  verify the provided API key permissions.\n\n### Manual setup fallback (when `cloud-setup` is unavailable)\n\nIf this skill is installed standalone and `cloud-setup` is not available, instruct the user to configure Cloud\nenvironment variables manually before running commands. Never ask the user to paste API keys in chat.\n\n| Variable      | Required | Description                                                    |\n| ------------- | -------- | -------------------------------------------------------------- |\n| `EC_API_KEY`  | Yes      | Elastic Cloud API key used for project creation operations.    |\n| `EC_BASE_URL` | No       | Cloud API base URL (default: `https:\u002F\u002Fapi.elastic-cloud.com`). |\n\n> **Note:** If `EC_API_KEY` is missing, or the user does not have a Cloud API key yet, first check whether the user has\n> an Elastic Cloud account. If not, propose starting a free trial at\n> [Elastic Cloud free trial](https:\u002F\u002Fcloud.elastic.co\u002Fregistration) — 14 days of full access with no credit card\n> required. Once registered, direct the user to generate a key at\n> [Elastic Cloud API keys](https:\u002F\u002Fcloud.elastic.co\u002Faccount\u002Fkeys), then configure it locally using the steps below.\n\nPreferred method (agent-friendly): create a `.env` file in the project root:\n\n```bash\nEC_API_KEY=your-api-key\nEC_BASE_URL=https:\u002F\u002Fapi.elastic-cloud.com\n```\n\nAll `cloud\u002F*` scripts auto-load `.env` from the working directory.\n\nAlternative: export directly in the terminal:\n\n```bash\nexport EC_API_KEY=\"\u003Cyour-cloud-api-key>\"\nexport EC_BASE_URL=\"https:\u002F\u002Fapi.elastic-cloud.com\"\n```\n\nTerminal exports may not be visible to sandboxed agents running in separate shell sessions, so prefer `.env` when using\nan agent.\n\n## Critical principles\n\n- **Never display secrets in chat.** Do not echo, log, or repeat API keys, passwords, or credentials in conversation\n  messages or agent thinking. Direct the user to the `.elastic-credentials` file instead. The admin password must\n  **never** appear in chat history, thinking traces, or agent output.\n- **Confirm before creating.** Always present the project configuration to the user and ask for confirmation before\n  running the creation script.\n- **Admin credentials are for API key creation only.** The script saves the `admin` password to `.elastic-credentials`\n  for bootstrapping a scoped API key. The `admin` user has full privileges and cannot be modified in serverless. Never\n  use admin credentials for direct Elasticsearch operations (querying, indexing, etc.) — always create a scoped API key\n  first (see Step 8). The `load-credentials` command excludes admin credentials by default — use `--include-admin`\n  **only** during Step 7\u002F8, then reload without it once the API key is created. Never read or display the contents of\n  `.elastic-credentials` in chat.\n- **Recover lost credentials.** If the script fails to write `.elastic-credentials` (disk full, permissions, etc.), the\n  save may be incomplete. Check `.elastic-credentials` for the password first. If missing, use the\n  `cloud-manage-project` skill's `reset-credentials` command to generate a new password.\n- **Region is permanent.** A project's region cannot be changed after creation.\n- **Prefer automatic readiness checks.** Pass `--wait` to the creation script so it polls until the phase changes from\n  `initializing` to `initialized`. Only fall back to manually polling the status endpoint if `--wait` is unavailable.\n\n## Project types\n\n| Type            | Description                               | Key endpoints                    |\n| --------------- | ----------------------------------------- | -------------------------------- |\n| `elasticsearch` | Search, analytics, and vector workloads   | Elasticsearch, Kibana            |\n| `observability` | Logs, metrics, traces, and APM            | Elasticsearch, Kibana, APM, OTLP |\n| `security`      | SIEM, endpoint protection, cloud security | Elasticsearch, Kibana, OTLP      |\n\n### Project type inference\n\nMap the user's request to the correct `--type` value:\n\n| User says                                                   | `--type`        |\n| ----------------------------------------------------------- | --------------- |\n| \"search project\", \"elasticsearch project\", vector search    | `elasticsearch` |\n| \"observability project\", \"o11y\", logs, metrics, traces, APM | `observability` |\n| \"security project\", \"SIEM\", detections, endpoint protection | `security`      |\n\nDo **not** silently default to any type. If the user does not specify a type, infer it from the conversation context\n(for example, discussing log ingestion suggests `observability`, discussing detections or SIEM suggests `security`,\ndiscussing search or vector workloads suggests `elasticsearch`). Always present the inferred type to the user and ask\nfor confirmation before proceeding. If context is insufficient to infer a type, ask the user to choose.\n\n### Product tiers\n\nObservability and security projects support a `--product-tier` flag. Default to `complete` unless the user explicitly\nrequests a different tier.\n\n| Project type    | Tier              | Description                                           |\n| --------------- | ----------------- | ----------------------------------------------------- |\n| `observability` | `complete`        | Full observability suite (logs, metrics, traces, APM) |\n| `observability` | `logs_essentials` | Log management only                                   |\n| `security`      | `complete`        | Full security suite (SIEM, cloud, endpoint)           |\n| `security`      | `essentials`      | Core SIEM only                                        |\n\nElasticsearch projects do not have a product tier — use `--optimized-for` instead.\n\n## Sensible defaults\n\nPresent these defaults to the user before creation. Ask if they want to use or change them:\n\n| Setting | Default           |\n| ------- | ----------------- |\n| Region  | `gcp-us-central1` |\n\nProject type must be confirmed with the user — do not assume a default. See \"Project type inference\" above.\n\nAlways use `--optimized-for general_purpose` unless the user explicitly requests `vector`. Do not proactively offer the\n`vector` option.\n\nIf the user does not specify a name, ask for one — it is required.\n\n## Workflow: Create a project\n\n```text\nProject Creation:\n- [ ] Step 1: Verify API key is set\n- [ ] Step 2: Present defaults and confirm with user\n- [ ] Step 3: List available regions (optional)\n- [ ] Step 4: Create the project\n- [ ] Step 5: Save credentials and endpoints\n- [ ] Step 6: Wait for project to initialize\n- [ ] Step 7: Set environment variables\n- [ ] Step 8: Recommend creating a scoped API key\n```\n\n### Step 1: Verify API key is set\n\n```bash\necho \"${EC_API_KEY:?Not set}\"\n```\n\nIf `EC_API_KEY` is not set, run the `cloud-setup` skill first to configure authentication and defaults.\n\n### Step 2: Present summary and confirm with user\n\nBefore presenting the summary, ensure the project type has been explicitly confirmed by the user. If no type was\nspecified, infer one from the conversation context and propose it. If the context is ambiguous, ask the user to choose\nfrom `elasticsearch`, `observability`, or `security`.\n\nAlways show a confirmation summary before creating. Include different fields depending on project type:\n\n**Elasticsearch project:**\n\n```text\nProject Summary:\n  Type:          elasticsearch\n  Name:          my-project\n  Region:        gcp-us-central1\n```\n\n**Observability project:**\n\n```text\nProject Summary:\n  Type:          observability\n  Name:          my-project\n  Region:        gcp-us-central1\n  Product tier:  complete\n```\n\n**Security project:**\n\n```text\nProject Summary:\n  Type:          security\n  Name:          my-project\n  Region:        gcp-us-central1\n  Product tier:  complete\n```\n\nAsk the user to confirm or override any values before proceeding.\n\n### Step 3: List available regions (optional)\n\n```bash\npython3 skills\u002Fcloud\u002Fcreate-project\u002Fscripts\u002Fcreate-project.py list-regions\n```\n\nThe output is grouped by cloud provider (AWS, Azure, GCP) and sorted alphabetically. Regions marked with `*` do not\nsupport project creation.\n\n### Step 4: Create the project\n\n```bash\npython3 skills\u002Fcloud\u002Fcreate-project\u002Fscripts\u002Fcreate-project.py create \\\n  --type elasticsearch \\\n  --name \"my-project\" \\\n  --region gcp-us-central1 \\\n  --optimized-for general_purpose \\\n  --wait\n```\n\nAlways pass `--optimized-for general_purpose` for Elasticsearch projects. Only use `vector` if the user explicitly\nrequests it.\n\nFor observability and security projects, pass `--product-tier complete` unless the user explicitly requests a different\ntier.\n\nAlways pass `--wait` so the script automatically polls until the project is ready.\n\n### Step 5: Save credentials and endpoints\n\nThe script automatically writes credentials to `.elastic-credentials` in the working directory. The password is redacted\nfrom the JSON output on stdout.\n\n**If saving succeeds**, tell the user:\n\n```text\nCredentials saved to .elastic-credentials — open that file to retrieve your password.\n```\n\nDo **not** read, cat, or display the contents of `.elastic-credentials` in chat.\n\n**If saving fails**, the script prints an error to stderr. Check whether `.elastic-credentials` exists and contains a\npassword (a partial write is possible). If the password is missing or the file does not exist, immediately run the\n`cloud-manage-project` skill's `reset-credentials` command to generate a new password.\n\nThe creation response also contains:\n\n- **Project ID** — needed for all subsequent operations\n- **Cloud ID** — for client libraries\n- **Elasticsearch and Kibana endpoints** — safe to display in chat\n\nThe admin credentials are for initial bootstrap only. Recommend creating a scoped API key for ongoing access (Step 8).\n\n### Step 6: Wait for project to initialize\n\nWhen `--wait` is passed (recommended), the script polls automatically until the project phase becomes `initialized`. No\nmanual polling is needed.\n\nIf the agent ran without `--wait`, poll manually:\n\n```bash\npython3 skills\u002Fcloud\u002Fcreate-project\u002Fscripts\u002Fcreate-project.py status \\\n  --type elasticsearch \\\n  --id \u003Cproject-id>\n```\n\nRepeat until `phase` changes from `initializing` to `initialized`.\n\n### Step 7: Set environment variables\n\nThe creation script saves credentials and endpoints to `.elastic-credentials` with the project name in the header. Load\nthem into the current shell **with `--include-admin`** so admin credentials are available for API key creation in Step\n8:\n\n```bash\neval $(python3 skills\u002Fcloud\u002Fmanage-project\u002Fscripts\u002Fmanage-project.py load-credentials \\\n  --name \"\u003Cproject-name>\" --include-admin)\n```\n\nThis sets `ELASTICSEARCH_URL`, `KIBANA_URL`, any project-type specific endpoints (`APM_URL`, `INGEST_URL`), and the\nadmin `ELASTICSEARCH_USERNAME`\u002F`ELASTICSEARCH_PASSWORD` needed to bootstrap an API key.\n\n### Step 8: Create a scoped API key\n\nThe `admin` user has full privileges and cannot be modified in serverless projects. **Do not proceed with Elasticsearch\noperations using admin credentials.** Create a scoped Elasticsearch API key with only the permissions the user needs.\n\nIf the `elasticsearch-authn` skill is available, use it for API key creation — it covers the full lifecycle (create,\ngrant, invalidate, query) and handles scoping privileges correctly. If the skill is not installed, ask the user to\neither install it or create the API key manually through **Kibana > Stack Management > API keys**. After creation, save\nthe API key to `.elastic-credentials` using the project-specific header format (see `manage-project` skill's \"Credential\nfile format\" section), then reload **without `--include-admin`** to drop admin credentials from the environment:\n\n```bash\neval $(python3 skills\u002Fcloud\u002Fmanage-project\u002Fscripts\u002Fmanage-project.py load-credentials \\\n  --name \"\u003Cproject-name>\")\n```\n\n## Examples\n\n### Create an Elasticsearch project with defaults\n\n```bash\npython3 skills\u002Fcloud\u002Fcreate-project\u002Fscripts\u002Fcreate-project.py create \\\n  --type elasticsearch \\\n  --name \"my-search-project\" \\\n  --region gcp-us-central1 \\\n  --optimized-for general_purpose \\\n  --wait\n```\n\n### Create an observability project\n\n```bash\npython3 skills\u002Fcloud\u002Fcreate-project\u002Fscripts\u002Fcreate-project.py create \\\n  --type observability \\\n  --name \"prod-o11y\" \\\n  --region aws-eu-west-1 \\\n  --product-tier complete \\\n  --wait\n```\n\n### Create a security project\n\n```bash\npython3 skills\u002Fcloud\u002Fcreate-project\u002Fscripts\u002Fcreate-project.py create \\\n  --type security \\\n  --name \"siem-prod\" \\\n  --region gcp-us-central1 \\\n  --product-tier complete \\\n  --wait\n```\n\n## Guidelines\n\n- Run the `cloud-setup` skill first if `EC_API_KEY` is not set.\n- Always confirm the project configuration with the user before creating.\n- Never display passwords or API keys in chat. Direct the user to `.elastic-credentials`.\n- Never silently default to a project type. Infer from context and confirm with the user.\n- Default to `general_purpose` optimization. Only use `vector` if the user explicitly requests it.\n- Default to `complete` product tier for observability and security projects. Only use `logs_essentials` or `essentials`\n  if the user explicitly requests it.\n- Always pass `--wait` so the script polls until the project is ready.\n- If credential saving fails, immediately reset credentials using the `cloud-manage-project` skill.\n- After creation, recommend creating a scoped API key instead of relying on admin credentials.\n- Region cannot be changed after creation — confirm the choice before proceeding.\n\n## Script reference\n\n| Command        | Description                       |\n| -------------- | --------------------------------- |\n| `create`       | Create a new serverless project   |\n| `status`       | Get project initialization status |\n| `list-regions` | List available regions            |\n\n| Flag              | Commands       | Description                                                |\n| ----------------- | -------------- | ---------------------------------------------------------- |\n| `--type`          | create, status | Project type: `elasticsearch`, `observability`, `security` |\n| `--name`          | create         | Project name (required)                                    |\n| `--region`        | create         | Region ID (default: `gcp-us-central1`)                     |\n| `--id`            | status         | Project ID                                                 |\n| `--optimized-for` | create         | Elasticsearch subtype: `general_purpose` or `vector`       |\n| `--product-tier`  | create         | Observability\u002Fsecurity tier (see \"Product tiers\" section)  |\n| `--wait`          | create         | Poll until project is initialized before exiting           |\n\n## Environment variables\n\n| Variable                | Required | Description                                                              |\n| ----------------------- | -------- | ------------------------------------------------------------------------ |\n| `EC_API_KEY`            | Yes      | Elastic Cloud API key                                                    |\n| `EC_BASE_URL`           | No       | Cloud API base URL (default: `https:\u002F\u002Fapi.elastic-cloud.com`)            |\n| `ELASTICSEARCH_URL`     | Output   | Elasticsearch URL (loaded via `load-credentials` after creation)         |\n| `KIBANA_URL`            | Output   | Kibana URL (loaded via `load-credentials` after creation)                |\n| `APM_URL`               | Output   | APM endpoint (observability projects only)                               |\n| `INGEST_URL`            | Output   | OTLP ingest endpoint (observability and security projects)               |\n| `ELASTICSEARCH_API_KEY` | Output   | Elasticsearch API key (created in Step 8, loaded via `load-credentials`) |\n\n## Additional resources\n\n- For full API details, request\u002Fresponse schemas, and project-type options, see\n  [references\u002Fapi-reference.md](references\u002Fapi-reference.md)\n",{"data":34,"body":38},{"name":4,"description":6,"compatibility":35,"metadata":36},"Requires Python 3.8+, network access to the Elastic Cloud API (api.elastic-cloud.com). Environment variables: EC_API_KEY (required, set by cloud-setup).\n",{"author":8,"version":37},"0.1.0",{"type":39,"children":40},"root",[41,50,65,72,131,145,157,241,282,295,346,366,371,439,451,457,645,651,742,748,761,834,867,873,894,1018,1031,1037,1042,1081,1086,1114,1119,1125,1135,1141,1186,1205,1211,1237,1242,1250,1259,1267,1276,1284,1293,1298,1304,1330,1343,1349,1466,1485,1498,1509,1515,1527,1537,1546,1562,1591,1596,1629,1634,1640,1659,1671,1741,1766,1772,1796,1864,1915,1921,1940,1987,2044,2050,2056,2158,2164,2270,2276,2379,2385,2505,2511,2583,2787,2793,2983,2989,3002],{"type":42,"tag":43,"props":44,"children":46},"element","h1",{"id":45},"create-serverless-project",[47],{"type":48,"value":49},"text","Create Serverless Project",{"type":42,"tag":51,"props":52,"children":53},"p",{},[54,56,63],{"type":48,"value":55},"Create Elastic Cloud Serverless projects using the Serverless REST API. Use the ",{"type":42,"tag":57,"props":58,"children":60},"code",{"className":59},[],[61],{"type":48,"value":62},"cloud-manage-project",{"type":48,"value":64}," skill for day-2\noperations like listing, updating, or deleting projects.",{"type":42,"tag":66,"props":67,"children":69},"h2",{"id":68},"prerequisites-and-permissions",[70],{"type":48,"value":71},"Prerequisites and permissions",{"type":42,"tag":73,"props":74,"children":75},"ul",{},[76,98,118],{"type":42,"tag":77,"props":78,"children":79},"li",{},[80,82,88,90,96],{"type":48,"value":81},"Ensure ",{"type":42,"tag":57,"props":83,"children":85},{"className":84},[],[86],{"type":48,"value":87},"EC_API_KEY",{"type":48,"value":89}," is configured. If not, run ",{"type":42,"tag":57,"props":91,"children":93},{"className":92},[],[94],{"type":48,"value":95},"cloud-setup",{"type":48,"value":97}," skill first.",{"type":42,"tag":77,"props":99,"children":100},{},[101,103,109,111,116],{"type":48,"value":102},"Creating projects requires a Cloud API key with ",{"type":42,"tag":104,"props":105,"children":106},"strong",{},[107],{"type":48,"value":108},"Admin",{"type":48,"value":110}," or ",{"type":42,"tag":104,"props":112,"children":113},{},[114],{"type":48,"value":115},"Organization owner",{"type":48,"value":117}," role.",{"type":42,"tag":77,"props":119,"children":120},{},[121,123,129],{"type":48,"value":122},"This skill does not perform a separate role pre-check. Attempt the requested operation and let the API enforce\nauthorization. If the API returns an authorization error (for example, ",{"type":42,"tag":57,"props":124,"children":126},{"className":125},[],[127],{"type":48,"value":128},"403 Forbidden",{"type":48,"value":130},"), stop and ask the user to\nverify the provided API key permissions.",{"type":42,"tag":132,"props":133,"children":135},"h3",{"id":134},"manual-setup-fallback-when-cloud-setup-is-unavailable",[136,138,143],{"type":48,"value":137},"Manual setup fallback (when ",{"type":42,"tag":57,"props":139,"children":141},{"className":140},[],[142],{"type":48,"value":95},{"type":48,"value":144}," is unavailable)",{"type":42,"tag":51,"props":146,"children":147},{},[148,150,155],{"type":48,"value":149},"If this skill is installed standalone and ",{"type":42,"tag":57,"props":151,"children":153},{"className":152},[],[154],{"type":48,"value":95},{"type":48,"value":156}," is not available, instruct the user to configure Cloud\nenvironment variables manually before running commands. Never ask the user to paste API keys in chat.",{"type":42,"tag":158,"props":159,"children":160},"table",{},[161,185],{"type":42,"tag":162,"props":163,"children":164},"thead",{},[165],{"type":42,"tag":166,"props":167,"children":168},"tr",{},[169,175,180],{"type":42,"tag":170,"props":171,"children":172},"th",{},[173],{"type":48,"value":174},"Variable",{"type":42,"tag":170,"props":176,"children":177},{},[178],{"type":48,"value":179},"Required",{"type":42,"tag":170,"props":181,"children":182},{},[183],{"type":48,"value":184},"Description",{"type":42,"tag":186,"props":187,"children":188},"tbody",{},[189,211],{"type":42,"tag":166,"props":190,"children":191},{},[192,201,206],{"type":42,"tag":193,"props":194,"children":195},"td",{},[196],{"type":42,"tag":57,"props":197,"children":199},{"className":198},[],[200],{"type":48,"value":87},{"type":42,"tag":193,"props":202,"children":203},{},[204],{"type":48,"value":205},"Yes",{"type":42,"tag":193,"props":207,"children":208},{},[209],{"type":48,"value":210},"Elastic Cloud API key used for project creation operations.",{"type":42,"tag":166,"props":212,"children":213},{},[214,223,228],{"type":42,"tag":193,"props":215,"children":216},{},[217],{"type":42,"tag":57,"props":218,"children":220},{"className":219},[],[221],{"type":48,"value":222},"EC_BASE_URL",{"type":42,"tag":193,"props":224,"children":225},{},[226],{"type":48,"value":227},"No",{"type":42,"tag":193,"props":229,"children":230},{},[231,233,239],{"type":48,"value":232},"Cloud API base URL (default: ",{"type":42,"tag":57,"props":234,"children":236},{"className":235},[],[237],{"type":48,"value":238},"https:\u002F\u002Fapi.elastic-cloud.com",{"type":48,"value":240},").",{"type":42,"tag":242,"props":243,"children":244},"blockquote",{},[245],{"type":42,"tag":51,"props":246,"children":247},{},[248,253,255,260,262,271,273,280],{"type":42,"tag":104,"props":249,"children":250},{},[251],{"type":48,"value":252},"Note:",{"type":48,"value":254}," If ",{"type":42,"tag":57,"props":256,"children":258},{"className":257},[],[259],{"type":48,"value":87},{"type":48,"value":261}," is missing, or the user does not have a Cloud API key yet, first check whether the user has\nan Elastic Cloud account. If not, propose starting a free trial at\n",{"type":42,"tag":263,"props":264,"children":268},"a",{"href":265,"rel":266},"https:\u002F\u002Fcloud.elastic.co\u002Fregistration",[267],"nofollow",[269],{"type":48,"value":270},"Elastic Cloud free trial",{"type":48,"value":272}," — 14 days of full access with no credit card\nrequired. Once registered, direct the user to generate a key at\n",{"type":42,"tag":263,"props":274,"children":277},{"href":275,"rel":276},"https:\u002F\u002Fcloud.elastic.co\u002Faccount\u002Fkeys",[267],[278],{"type":48,"value":279},"Elastic Cloud API keys",{"type":48,"value":281},", then configure it locally using the steps below.",{"type":42,"tag":51,"props":283,"children":284},{},[285,287,293],{"type":48,"value":286},"Preferred method (agent-friendly): create a ",{"type":42,"tag":57,"props":288,"children":290},{"className":289},[],[291],{"type":48,"value":292},".env",{"type":48,"value":294}," file in the project root:",{"type":42,"tag":296,"props":297,"children":302},"pre",{"className":298,"code":299,"language":300,"meta":301,"style":301},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","EC_API_KEY=your-api-key\nEC_BASE_URL=https:\u002F\u002Fapi.elastic-cloud.com\n","bash","",[303],{"type":42,"tag":57,"props":304,"children":305},{"__ignoreMap":301},[306,329],{"type":42,"tag":307,"props":308,"children":311},"span",{"class":309,"line":310},"line",1,[312,317,323],{"type":42,"tag":307,"props":313,"children":315},{"style":314},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[316],{"type":48,"value":87},{"type":42,"tag":307,"props":318,"children":320},{"style":319},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[321],{"type":48,"value":322},"=",{"type":42,"tag":307,"props":324,"children":326},{"style":325},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[327],{"type":48,"value":328},"your-api-key\n",{"type":42,"tag":307,"props":330,"children":332},{"class":309,"line":331},2,[333,337,341],{"type":42,"tag":307,"props":334,"children":335},{"style":314},[336],{"type":48,"value":222},{"type":42,"tag":307,"props":338,"children":339},{"style":319},[340],{"type":48,"value":322},{"type":42,"tag":307,"props":342,"children":343},{"style":325},[344],{"type":48,"value":345},"https:\u002F\u002Fapi.elastic-cloud.com\n",{"type":42,"tag":51,"props":347,"children":348},{},[349,351,357,359,364],{"type":48,"value":350},"All ",{"type":42,"tag":57,"props":352,"children":354},{"className":353},[],[355],{"type":48,"value":356},"cloud\u002F*",{"type":48,"value":358}," scripts auto-load ",{"type":42,"tag":57,"props":360,"children":362},{"className":361},[],[363],{"type":48,"value":292},{"type":48,"value":365}," from the working directory.",{"type":42,"tag":51,"props":367,"children":368},{},[369],{"type":48,"value":370},"Alternative: export directly in the terminal:",{"type":42,"tag":296,"props":372,"children":374},{"className":298,"code":373,"language":300,"meta":301,"style":301},"export EC_API_KEY=\"\u003Cyour-cloud-api-key>\"\nexport EC_BASE_URL=\"https:\u002F\u002Fapi.elastic-cloud.com\"\n",[375],{"type":42,"tag":57,"props":376,"children":377},{"__ignoreMap":301},[378,411],{"type":42,"tag":307,"props":379,"children":380},{"class":309,"line":310},[381,387,392,396,401,406],{"type":42,"tag":307,"props":382,"children":384},{"style":383},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[385],{"type":48,"value":386},"export",{"type":42,"tag":307,"props":388,"children":389},{"style":314},[390],{"type":48,"value":391}," EC_API_KEY",{"type":42,"tag":307,"props":393,"children":394},{"style":319},[395],{"type":48,"value":322},{"type":42,"tag":307,"props":397,"children":398},{"style":319},[399],{"type":48,"value":400},"\"",{"type":42,"tag":307,"props":402,"children":403},{"style":325},[404],{"type":48,"value":405},"\u003Cyour-cloud-api-key>",{"type":42,"tag":307,"props":407,"children":408},{"style":319},[409],{"type":48,"value":410},"\"\n",{"type":42,"tag":307,"props":412,"children":413},{"class":309,"line":331},[414,418,423,427,431,435],{"type":42,"tag":307,"props":415,"children":416},{"style":383},[417],{"type":48,"value":386},{"type":42,"tag":307,"props":419,"children":420},{"style":314},[421],{"type":48,"value":422}," EC_BASE_URL",{"type":42,"tag":307,"props":424,"children":425},{"style":319},[426],{"type":48,"value":322},{"type":42,"tag":307,"props":428,"children":429},{"style":319},[430],{"type":48,"value":400},{"type":42,"tag":307,"props":432,"children":433},{"style":325},[434],{"type":48,"value":238},{"type":42,"tag":307,"props":436,"children":437},{"style":319},[438],{"type":48,"value":410},{"type":42,"tag":51,"props":440,"children":441},{},[442,444,449],{"type":48,"value":443},"Terminal exports may not be visible to sandboxed agents running in separate shell sessions, so prefer ",{"type":42,"tag":57,"props":445,"children":447},{"className":446},[],[448],{"type":48,"value":292},{"type":48,"value":450}," when using\nan agent.",{"type":42,"tag":66,"props":452,"children":454},{"id":453},"critical-principles",[455],{"type":48,"value":456},"Critical principles",{"type":42,"tag":73,"props":458,"children":459},{},[460,485,495,555,594,604],{"type":42,"tag":77,"props":461,"children":462},{},[463,468,470,476,478,483],{"type":42,"tag":104,"props":464,"children":465},{},[466],{"type":48,"value":467},"Never display secrets in chat.",{"type":48,"value":469}," Do not echo, log, or repeat API keys, passwords, or credentials in conversation\nmessages or agent thinking. Direct the user to the ",{"type":42,"tag":57,"props":471,"children":473},{"className":472},[],[474],{"type":48,"value":475},".elastic-credentials",{"type":48,"value":477}," file instead. The admin password must\n",{"type":42,"tag":104,"props":479,"children":480},{},[481],{"type":48,"value":482},"never",{"type":48,"value":484}," appear in chat history, thinking traces, or agent output.",{"type":42,"tag":77,"props":486,"children":487},{},[488,493],{"type":42,"tag":104,"props":489,"children":490},{},[491],{"type":48,"value":492},"Confirm before creating.",{"type":48,"value":494}," Always present the project configuration to the user and ask for confirmation before\nrunning the creation script.",{"type":42,"tag":77,"props":496,"children":497},{},[498,503,505,511,513,518,520,525,527,533,535,541,546,548,553],{"type":42,"tag":104,"props":499,"children":500},{},[501],{"type":48,"value":502},"Admin credentials are for API key creation only.",{"type":48,"value":504}," The script saves the ",{"type":42,"tag":57,"props":506,"children":508},{"className":507},[],[509],{"type":48,"value":510},"admin",{"type":48,"value":512}," password to ",{"type":42,"tag":57,"props":514,"children":516},{"className":515},[],[517],{"type":48,"value":475},{"type":48,"value":519},"\nfor bootstrapping a scoped API key. The ",{"type":42,"tag":57,"props":521,"children":523},{"className":522},[],[524],{"type":48,"value":510},{"type":48,"value":526}," user has full privileges and cannot be modified in serverless. Never\nuse admin credentials for direct Elasticsearch operations (querying, indexing, etc.) — always create a scoped API key\nfirst (see Step 8). The ",{"type":42,"tag":57,"props":528,"children":530},{"className":529},[],[531],{"type":48,"value":532},"load-credentials",{"type":48,"value":534}," command excludes admin credentials by default — use ",{"type":42,"tag":57,"props":536,"children":538},{"className":537},[],[539],{"type":48,"value":540},"--include-admin",{"type":42,"tag":104,"props":542,"children":543},{},[544],{"type":48,"value":545},"only",{"type":48,"value":547}," during Step 7\u002F8, then reload without it once the API key is created. Never read or display the contents of\n",{"type":42,"tag":57,"props":549,"children":551},{"className":550},[],[552],{"type":48,"value":475},{"type":48,"value":554}," in chat.",{"type":42,"tag":77,"props":556,"children":557},{},[558,563,565,570,572,577,579,584,586,592],{"type":42,"tag":104,"props":559,"children":560},{},[561],{"type":48,"value":562},"Recover lost credentials.",{"type":48,"value":564}," If the script fails to write ",{"type":42,"tag":57,"props":566,"children":568},{"className":567},[],[569],{"type":48,"value":475},{"type":48,"value":571}," (disk full, permissions, etc.), the\nsave may be incomplete. Check ",{"type":42,"tag":57,"props":573,"children":575},{"className":574},[],[576],{"type":48,"value":475},{"type":48,"value":578}," for the password first. If missing, use the\n",{"type":42,"tag":57,"props":580,"children":582},{"className":581},[],[583],{"type":48,"value":62},{"type":48,"value":585}," skill's ",{"type":42,"tag":57,"props":587,"children":589},{"className":588},[],[590],{"type":48,"value":591},"reset-credentials",{"type":48,"value":593}," command to generate a new password.",{"type":42,"tag":77,"props":595,"children":596},{},[597,602],{"type":42,"tag":104,"props":598,"children":599},{},[600],{"type":48,"value":601},"Region is permanent.",{"type":48,"value":603}," A project's region cannot be changed after creation.",{"type":42,"tag":77,"props":605,"children":606},{},[607,612,614,620,622,628,630,636,638,643],{"type":42,"tag":104,"props":608,"children":609},{},[610],{"type":48,"value":611},"Prefer automatic readiness checks.",{"type":48,"value":613}," Pass ",{"type":42,"tag":57,"props":615,"children":617},{"className":616},[],[618],{"type":48,"value":619},"--wait",{"type":48,"value":621}," to the creation script so it polls until the phase changes from\n",{"type":42,"tag":57,"props":623,"children":625},{"className":624},[],[626],{"type":48,"value":627},"initializing",{"type":48,"value":629}," to ",{"type":42,"tag":57,"props":631,"children":633},{"className":632},[],[634],{"type":48,"value":635},"initialized",{"type":48,"value":637},". Only fall back to manually polling the status endpoint if ",{"type":42,"tag":57,"props":639,"children":641},{"className":640},[],[642],{"type":48,"value":619},{"type":48,"value":644}," is unavailable.",{"type":42,"tag":66,"props":646,"children":648},{"id":647},"project-types",[649],{"type":48,"value":650},"Project types",{"type":42,"tag":158,"props":652,"children":653},{},[654,674],{"type":42,"tag":162,"props":655,"children":656},{},[657],{"type":42,"tag":166,"props":658,"children":659},{},[660,665,669],{"type":42,"tag":170,"props":661,"children":662},{},[663],{"type":48,"value":664},"Type",{"type":42,"tag":170,"props":666,"children":667},{},[668],{"type":48,"value":184},{"type":42,"tag":170,"props":670,"children":671},{},[672],{"type":48,"value":673},"Key endpoints",{"type":42,"tag":186,"props":675,"children":676},{},[677,698,720],{"type":42,"tag":166,"props":678,"children":679},{},[680,688,693],{"type":42,"tag":193,"props":681,"children":682},{},[683],{"type":42,"tag":57,"props":684,"children":686},{"className":685},[],[687],{"type":48,"value":21},{"type":42,"tag":193,"props":689,"children":690},{},[691],{"type":48,"value":692},"Search, analytics, and vector workloads",{"type":42,"tag":193,"props":694,"children":695},{},[696],{"type":48,"value":697},"Elasticsearch, Kibana",{"type":42,"tag":166,"props":699,"children":700},{},[701,710,715],{"type":42,"tag":193,"props":702,"children":703},{},[704],{"type":42,"tag":57,"props":705,"children":707},{"className":706},[],[708],{"type":48,"value":709},"observability",{"type":42,"tag":193,"props":711,"children":712},{},[713],{"type":48,"value":714},"Logs, metrics, traces, and APM",{"type":42,"tag":193,"props":716,"children":717},{},[718],{"type":48,"value":719},"Elasticsearch, Kibana, APM, OTLP",{"type":42,"tag":166,"props":721,"children":722},{},[723,732,737],{"type":42,"tag":193,"props":724,"children":725},{},[726],{"type":42,"tag":57,"props":727,"children":729},{"className":728},[],[730],{"type":48,"value":731},"security",{"type":42,"tag":193,"props":733,"children":734},{},[735],{"type":48,"value":736},"SIEM, endpoint protection, cloud security",{"type":42,"tag":193,"props":738,"children":739},{},[740],{"type":48,"value":741},"Elasticsearch, Kibana, OTLP",{"type":42,"tag":132,"props":743,"children":745},{"id":744},"project-type-inference",[746],{"type":48,"value":747},"Project type inference",{"type":42,"tag":51,"props":749,"children":750},{},[751,753,759],{"type":48,"value":752},"Map the user's request to the correct ",{"type":42,"tag":57,"props":754,"children":756},{"className":755},[],[757],{"type":48,"value":758},"--type",{"type":48,"value":760}," value:",{"type":42,"tag":158,"props":762,"children":763},{},[764,783],{"type":42,"tag":162,"props":765,"children":766},{},[767],{"type":42,"tag":166,"props":768,"children":769},{},[770,775],{"type":42,"tag":170,"props":771,"children":772},{},[773],{"type":48,"value":774},"User says",{"type":42,"tag":170,"props":776,"children":777},{},[778],{"type":42,"tag":57,"props":779,"children":781},{"className":780},[],[782],{"type":48,"value":758},{"type":42,"tag":186,"props":784,"children":785},{},[786,802,818],{"type":42,"tag":166,"props":787,"children":788},{},[789,794],{"type":42,"tag":193,"props":790,"children":791},{},[792],{"type":48,"value":793},"\"search project\", \"elasticsearch project\", vector search",{"type":42,"tag":193,"props":795,"children":796},{},[797],{"type":42,"tag":57,"props":798,"children":800},{"className":799},[],[801],{"type":48,"value":21},{"type":42,"tag":166,"props":803,"children":804},{},[805,810],{"type":42,"tag":193,"props":806,"children":807},{},[808],{"type":48,"value":809},"\"observability project\", \"o11y\", logs, metrics, traces, APM",{"type":42,"tag":193,"props":811,"children":812},{},[813],{"type":42,"tag":57,"props":814,"children":816},{"className":815},[],[817],{"type":48,"value":709},{"type":42,"tag":166,"props":819,"children":820},{},[821,826],{"type":42,"tag":193,"props":822,"children":823},{},[824],{"type":48,"value":825},"\"security project\", \"SIEM\", detections, endpoint protection",{"type":42,"tag":193,"props":827,"children":828},{},[829],{"type":42,"tag":57,"props":830,"children":832},{"className":831},[],[833],{"type":48,"value":731},{"type":42,"tag":51,"props":835,"children":836},{},[837,839,844,846,851,853,858,860,865],{"type":48,"value":838},"Do ",{"type":42,"tag":104,"props":840,"children":841},{},[842],{"type":48,"value":843},"not",{"type":48,"value":845}," silently default to any type. If the user does not specify a type, infer it from the conversation context\n(for example, discussing log ingestion suggests ",{"type":42,"tag":57,"props":847,"children":849},{"className":848},[],[850],{"type":48,"value":709},{"type":48,"value":852},", discussing detections or SIEM suggests ",{"type":42,"tag":57,"props":854,"children":856},{"className":855},[],[857],{"type":48,"value":731},{"type":48,"value":859},",\ndiscussing search or vector workloads suggests ",{"type":42,"tag":57,"props":861,"children":863},{"className":862},[],[864],{"type":48,"value":21},{"type":48,"value":866},"). Always present the inferred type to the user and ask\nfor confirmation before proceeding. If context is insufficient to infer a type, ask the user to choose.",{"type":42,"tag":132,"props":868,"children":870},{"id":869},"product-tiers",[871],{"type":48,"value":872},"Product tiers",{"type":42,"tag":51,"props":874,"children":875},{},[876,878,884,886,892],{"type":48,"value":877},"Observability and security projects support a ",{"type":42,"tag":57,"props":879,"children":881},{"className":880},[],[882],{"type":48,"value":883},"--product-tier",{"type":48,"value":885}," flag. Default to ",{"type":42,"tag":57,"props":887,"children":889},{"className":888},[],[890],{"type":48,"value":891},"complete",{"type":48,"value":893}," unless the user explicitly\nrequests a different tier.",{"type":42,"tag":158,"props":895,"children":896},{},[897,917],{"type":42,"tag":162,"props":898,"children":899},{},[900],{"type":42,"tag":166,"props":901,"children":902},{},[903,908,913],{"type":42,"tag":170,"props":904,"children":905},{},[906],{"type":48,"value":907},"Project type",{"type":42,"tag":170,"props":909,"children":910},{},[911],{"type":48,"value":912},"Tier",{"type":42,"tag":170,"props":914,"children":915},{},[916],{"type":48,"value":184},{"type":42,"tag":186,"props":918,"children":919},{},[920,944,969,993],{"type":42,"tag":166,"props":921,"children":922},{},[923,931,939],{"type":42,"tag":193,"props":924,"children":925},{},[926],{"type":42,"tag":57,"props":927,"children":929},{"className":928},[],[930],{"type":48,"value":709},{"type":42,"tag":193,"props":932,"children":933},{},[934],{"type":42,"tag":57,"props":935,"children":937},{"className":936},[],[938],{"type":48,"value":891},{"type":42,"tag":193,"props":940,"children":941},{},[942],{"type":48,"value":943},"Full observability suite (logs, metrics, traces, APM)",{"type":42,"tag":166,"props":945,"children":946},{},[947,955,964],{"type":42,"tag":193,"props":948,"children":949},{},[950],{"type":42,"tag":57,"props":951,"children":953},{"className":952},[],[954],{"type":48,"value":709},{"type":42,"tag":193,"props":956,"children":957},{},[958],{"type":42,"tag":57,"props":959,"children":961},{"className":960},[],[962],{"type":48,"value":963},"logs_essentials",{"type":42,"tag":193,"props":965,"children":966},{},[967],{"type":48,"value":968},"Log management only",{"type":42,"tag":166,"props":970,"children":971},{},[972,980,988],{"type":42,"tag":193,"props":973,"children":974},{},[975],{"type":42,"tag":57,"props":976,"children":978},{"className":977},[],[979],{"type":48,"value":731},{"type":42,"tag":193,"props":981,"children":982},{},[983],{"type":42,"tag":57,"props":984,"children":986},{"className":985},[],[987],{"type":48,"value":891},{"type":42,"tag":193,"props":989,"children":990},{},[991],{"type":48,"value":992},"Full security suite (SIEM, cloud, endpoint)",{"type":42,"tag":166,"props":994,"children":995},{},[996,1004,1013],{"type":42,"tag":193,"props":997,"children":998},{},[999],{"type":42,"tag":57,"props":1000,"children":1002},{"className":1001},[],[1003],{"type":48,"value":731},{"type":42,"tag":193,"props":1005,"children":1006},{},[1007],{"type":42,"tag":57,"props":1008,"children":1010},{"className":1009},[],[1011],{"type":48,"value":1012},"essentials",{"type":42,"tag":193,"props":1014,"children":1015},{},[1016],{"type":48,"value":1017},"Core SIEM only",{"type":42,"tag":51,"props":1019,"children":1020},{},[1021,1023,1029],{"type":48,"value":1022},"Elasticsearch projects do not have a product tier — use ",{"type":42,"tag":57,"props":1024,"children":1026},{"className":1025},[],[1027],{"type":48,"value":1028},"--optimized-for",{"type":48,"value":1030}," instead.",{"type":42,"tag":66,"props":1032,"children":1034},{"id":1033},"sensible-defaults",[1035],{"type":48,"value":1036},"Sensible defaults",{"type":42,"tag":51,"props":1038,"children":1039},{},[1040],{"type":48,"value":1041},"Present these defaults to the user before creation. Ask if they want to use or change them:",{"type":42,"tag":158,"props":1043,"children":1044},{},[1045,1061],{"type":42,"tag":162,"props":1046,"children":1047},{},[1048],{"type":42,"tag":166,"props":1049,"children":1050},{},[1051,1056],{"type":42,"tag":170,"props":1052,"children":1053},{},[1054],{"type":48,"value":1055},"Setting",{"type":42,"tag":170,"props":1057,"children":1058},{},[1059],{"type":48,"value":1060},"Default",{"type":42,"tag":186,"props":1062,"children":1063},{},[1064],{"type":42,"tag":166,"props":1065,"children":1066},{},[1067,1072],{"type":42,"tag":193,"props":1068,"children":1069},{},[1070],{"type":48,"value":1071},"Region",{"type":42,"tag":193,"props":1073,"children":1074},{},[1075],{"type":42,"tag":57,"props":1076,"children":1078},{"className":1077},[],[1079],{"type":48,"value":1080},"gcp-us-central1",{"type":42,"tag":51,"props":1082,"children":1083},{},[1084],{"type":48,"value":1085},"Project type must be confirmed with the user — do not assume a default. See \"Project type inference\" above.",{"type":42,"tag":51,"props":1087,"children":1088},{},[1089,1091,1097,1099,1105,1107,1112],{"type":48,"value":1090},"Always use ",{"type":42,"tag":57,"props":1092,"children":1094},{"className":1093},[],[1095],{"type":48,"value":1096},"--optimized-for general_purpose",{"type":48,"value":1098}," unless the user explicitly requests ",{"type":42,"tag":57,"props":1100,"children":1102},{"className":1101},[],[1103],{"type":48,"value":1104},"vector",{"type":48,"value":1106},". Do not proactively offer the\n",{"type":42,"tag":57,"props":1108,"children":1110},{"className":1109},[],[1111],{"type":48,"value":1104},{"type":48,"value":1113}," option.",{"type":42,"tag":51,"props":1115,"children":1116},{},[1117],{"type":48,"value":1118},"If the user does not specify a name, ask for one — it is required.",{"type":42,"tag":66,"props":1120,"children":1122},{"id":1121},"workflow-create-a-project",[1123],{"type":48,"value":1124},"Workflow: Create a project",{"type":42,"tag":296,"props":1126,"children":1130},{"className":1127,"code":1129,"language":48,"meta":301},[1128],"language-text","Project Creation:\n- [ ] Step 1: Verify API key is set\n- [ ] Step 2: Present defaults and confirm with user\n- [ ] Step 3: List available regions (optional)\n- [ ] Step 4: Create the project\n- [ ] Step 5: Save credentials and endpoints\n- [ ] Step 6: Wait for project to initialize\n- [ ] Step 7: Set environment variables\n- [ ] Step 8: Recommend creating a scoped API key\n",[1131],{"type":42,"tag":57,"props":1132,"children":1133},{"__ignoreMap":301},[1134],{"type":48,"value":1129},{"type":42,"tag":132,"props":1136,"children":1138},{"id":1137},"step-1-verify-api-key-is-set",[1139],{"type":48,"value":1140},"Step 1: Verify API key is set",{"type":42,"tag":296,"props":1142,"children":1144},{"className":298,"code":1143,"language":300,"meta":301,"style":301},"echo \"${EC_API_KEY:?Not set}\"\n",[1145],{"type":42,"tag":57,"props":1146,"children":1147},{"__ignoreMap":301},[1148],{"type":42,"tag":307,"props":1149,"children":1150},{"class":309,"line":310},[1151,1157,1162,1166,1171,1176,1181],{"type":42,"tag":307,"props":1152,"children":1154},{"style":1153},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[1155],{"type":48,"value":1156},"echo",{"type":42,"tag":307,"props":1158,"children":1159},{"style":319},[1160],{"type":48,"value":1161}," \"${",{"type":42,"tag":307,"props":1163,"children":1164},{"style":314},[1165],{"type":48,"value":87},{"type":42,"tag":307,"props":1167,"children":1168},{"style":319},[1169],{"type":48,"value":1170},":?",{"type":42,"tag":307,"props":1172,"children":1173},{"style":314},[1174],{"type":48,"value":1175},"Not",{"type":42,"tag":307,"props":1177,"children":1178},{"style":314},[1179],{"type":48,"value":1180}," set",{"type":42,"tag":307,"props":1182,"children":1183},{"style":319},[1184],{"type":48,"value":1185},"}\"\n",{"type":42,"tag":51,"props":1187,"children":1188},{},[1189,1191,1196,1198,1203],{"type":48,"value":1190},"If ",{"type":42,"tag":57,"props":1192,"children":1194},{"className":1193},[],[1195],{"type":48,"value":87},{"type":48,"value":1197}," is not set, run the ",{"type":42,"tag":57,"props":1199,"children":1201},{"className":1200},[],[1202],{"type":48,"value":95},{"type":48,"value":1204}," skill first to configure authentication and defaults.",{"type":42,"tag":132,"props":1206,"children":1208},{"id":1207},"step-2-present-summary-and-confirm-with-user",[1209],{"type":48,"value":1210},"Step 2: Present summary and confirm with user",{"type":42,"tag":51,"props":1212,"children":1213},{},[1214,1216,1221,1223,1228,1230,1235],{"type":48,"value":1215},"Before presenting the summary, ensure the project type has been explicitly confirmed by the user. If no type was\nspecified, infer one from the conversation context and propose it. If the context is ambiguous, ask the user to choose\nfrom ",{"type":42,"tag":57,"props":1217,"children":1219},{"className":1218},[],[1220],{"type":48,"value":21},{"type":48,"value":1222},", ",{"type":42,"tag":57,"props":1224,"children":1226},{"className":1225},[],[1227],{"type":48,"value":709},{"type":48,"value":1229},", or ",{"type":42,"tag":57,"props":1231,"children":1233},{"className":1232},[],[1234],{"type":48,"value":731},{"type":48,"value":1236},".",{"type":42,"tag":51,"props":1238,"children":1239},{},[1240],{"type":48,"value":1241},"Always show a confirmation summary before creating. Include different fields depending on project type:",{"type":42,"tag":51,"props":1243,"children":1244},{},[1245],{"type":42,"tag":104,"props":1246,"children":1247},{},[1248],{"type":48,"value":1249},"Elasticsearch project:",{"type":42,"tag":296,"props":1251,"children":1254},{"className":1252,"code":1253,"language":48,"meta":301},[1128],"Project Summary:\n  Type:          elasticsearch\n  Name:          my-project\n  Region:        gcp-us-central1\n",[1255],{"type":42,"tag":57,"props":1256,"children":1257},{"__ignoreMap":301},[1258],{"type":48,"value":1253},{"type":42,"tag":51,"props":1260,"children":1261},{},[1262],{"type":42,"tag":104,"props":1263,"children":1264},{},[1265],{"type":48,"value":1266},"Observability project:",{"type":42,"tag":296,"props":1268,"children":1271},{"className":1269,"code":1270,"language":48,"meta":301},[1128],"Project Summary:\n  Type:          observability\n  Name:          my-project\n  Region:        gcp-us-central1\n  Product tier:  complete\n",[1272],{"type":42,"tag":57,"props":1273,"children":1274},{"__ignoreMap":301},[1275],{"type":48,"value":1270},{"type":42,"tag":51,"props":1277,"children":1278},{},[1279],{"type":42,"tag":104,"props":1280,"children":1281},{},[1282],{"type":48,"value":1283},"Security project:",{"type":42,"tag":296,"props":1285,"children":1288},{"className":1286,"code":1287,"language":48,"meta":301},[1128],"Project Summary:\n  Type:          security\n  Name:          my-project\n  Region:        gcp-us-central1\n  Product tier:  complete\n",[1289],{"type":42,"tag":57,"props":1290,"children":1291},{"__ignoreMap":301},[1292],{"type":48,"value":1287},{"type":42,"tag":51,"props":1294,"children":1295},{},[1296],{"type":48,"value":1297},"Ask the user to confirm or override any values before proceeding.",{"type":42,"tag":132,"props":1299,"children":1301},{"id":1300},"step-3-list-available-regions-optional",[1302],{"type":48,"value":1303},"Step 3: List available regions (optional)",{"type":42,"tag":296,"props":1305,"children":1307},{"className":298,"code":1306,"language":300,"meta":301,"style":301},"python3 skills\u002Fcloud\u002Fcreate-project\u002Fscripts\u002Fcreate-project.py list-regions\n",[1308],{"type":42,"tag":57,"props":1309,"children":1310},{"__ignoreMap":301},[1311],{"type":42,"tag":307,"props":1312,"children":1313},{"class":309,"line":310},[1314,1320,1325],{"type":42,"tag":307,"props":1315,"children":1317},{"style":1316},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[1318],{"type":48,"value":1319},"python3",{"type":42,"tag":307,"props":1321,"children":1322},{"style":325},[1323],{"type":48,"value":1324}," skills\u002Fcloud\u002Fcreate-project\u002Fscripts\u002Fcreate-project.py",{"type":42,"tag":307,"props":1326,"children":1327},{"style":325},[1328],{"type":48,"value":1329}," list-regions\n",{"type":42,"tag":51,"props":1331,"children":1332},{},[1333,1335,1341],{"type":48,"value":1334},"The output is grouped by cloud provider (AWS, Azure, GCP) and sorted alphabetically. Regions marked with ",{"type":42,"tag":57,"props":1336,"children":1338},{"className":1337},[],[1339],{"type":48,"value":1340},"*",{"type":48,"value":1342}," do not\nsupport project creation.",{"type":42,"tag":132,"props":1344,"children":1346},{"id":1345},"step-4-create-the-project",[1347],{"type":48,"value":1348},"Step 4: Create the project",{"type":42,"tag":296,"props":1350,"children":1352},{"className":298,"code":1351,"language":300,"meta":301,"style":301},"python3 skills\u002Fcloud\u002Fcreate-project\u002Fscripts\u002Fcreate-project.py create \\\n  --type elasticsearch \\\n  --name \"my-project\" \\\n  --region gcp-us-central1 \\\n  --optimized-for general_purpose \\\n  --wait\n",[1353],{"type":42,"tag":57,"props":1354,"children":1355},{"__ignoreMap":301},[1356,1377,1394,1421,1439,1457],{"type":42,"tag":307,"props":1357,"children":1358},{"class":309,"line":310},[1359,1363,1367,1372],{"type":42,"tag":307,"props":1360,"children":1361},{"style":1316},[1362],{"type":48,"value":1319},{"type":42,"tag":307,"props":1364,"children":1365},{"style":325},[1366],{"type":48,"value":1324},{"type":42,"tag":307,"props":1368,"children":1369},{"style":325},[1370],{"type":48,"value":1371}," create",{"type":42,"tag":307,"props":1373,"children":1374},{"style":314},[1375],{"type":48,"value":1376}," \\\n",{"type":42,"tag":307,"props":1378,"children":1379},{"class":309,"line":331},[1380,1385,1390],{"type":42,"tag":307,"props":1381,"children":1382},{"style":325},[1383],{"type":48,"value":1384},"  --type",{"type":42,"tag":307,"props":1386,"children":1387},{"style":325},[1388],{"type":48,"value":1389}," elasticsearch",{"type":42,"tag":307,"props":1391,"children":1392},{"style":314},[1393],{"type":48,"value":1376},{"type":42,"tag":307,"props":1395,"children":1397},{"class":309,"line":1396},3,[1398,1403,1408,1413,1417],{"type":42,"tag":307,"props":1399,"children":1400},{"style":325},[1401],{"type":48,"value":1402},"  --name",{"type":42,"tag":307,"props":1404,"children":1405},{"style":319},[1406],{"type":48,"value":1407}," \"",{"type":42,"tag":307,"props":1409,"children":1410},{"style":325},[1411],{"type":48,"value":1412},"my-project",{"type":42,"tag":307,"props":1414,"children":1415},{"style":319},[1416],{"type":48,"value":400},{"type":42,"tag":307,"props":1418,"children":1419},{"style":314},[1420],{"type":48,"value":1376},{"type":42,"tag":307,"props":1422,"children":1424},{"class":309,"line":1423},4,[1425,1430,1435],{"type":42,"tag":307,"props":1426,"children":1427},{"style":325},[1428],{"type":48,"value":1429},"  --region",{"type":42,"tag":307,"props":1431,"children":1432},{"style":325},[1433],{"type":48,"value":1434}," gcp-us-central1",{"type":42,"tag":307,"props":1436,"children":1437},{"style":314},[1438],{"type":48,"value":1376},{"type":42,"tag":307,"props":1440,"children":1442},{"class":309,"line":1441},5,[1443,1448,1453],{"type":42,"tag":307,"props":1444,"children":1445},{"style":325},[1446],{"type":48,"value":1447},"  --optimized-for",{"type":42,"tag":307,"props":1449,"children":1450},{"style":325},[1451],{"type":48,"value":1452}," general_purpose",{"type":42,"tag":307,"props":1454,"children":1455},{"style":314},[1456],{"type":48,"value":1376},{"type":42,"tag":307,"props":1458,"children":1460},{"class":309,"line":1459},6,[1461],{"type":42,"tag":307,"props":1462,"children":1463},{"style":325},[1464],{"type":48,"value":1465},"  --wait\n",{"type":42,"tag":51,"props":1467,"children":1468},{},[1469,1471,1476,1478,1483],{"type":48,"value":1470},"Always pass ",{"type":42,"tag":57,"props":1472,"children":1474},{"className":1473},[],[1475],{"type":48,"value":1096},{"type":48,"value":1477}," for Elasticsearch projects. Only use ",{"type":42,"tag":57,"props":1479,"children":1481},{"className":1480},[],[1482],{"type":48,"value":1104},{"type":48,"value":1484}," if the user explicitly\nrequests it.",{"type":42,"tag":51,"props":1486,"children":1487},{},[1488,1490,1496],{"type":48,"value":1489},"For observability and security projects, pass ",{"type":42,"tag":57,"props":1491,"children":1493},{"className":1492},[],[1494],{"type":48,"value":1495},"--product-tier complete",{"type":48,"value":1497}," unless the user explicitly requests a different\ntier.",{"type":42,"tag":51,"props":1499,"children":1500},{},[1501,1502,1507],{"type":48,"value":1470},{"type":42,"tag":57,"props":1503,"children":1505},{"className":1504},[],[1506],{"type":48,"value":619},{"type":48,"value":1508}," so the script automatically polls until the project is ready.",{"type":42,"tag":132,"props":1510,"children":1512},{"id":1511},"step-5-save-credentials-and-endpoints",[1513],{"type":48,"value":1514},"Step 5: Save credentials and endpoints",{"type":42,"tag":51,"props":1516,"children":1517},{},[1518,1520,1525],{"type":48,"value":1519},"The script automatically writes credentials to ",{"type":42,"tag":57,"props":1521,"children":1523},{"className":1522},[],[1524],{"type":48,"value":475},{"type":48,"value":1526}," in the working directory. The password is redacted\nfrom the JSON output on stdout.",{"type":42,"tag":51,"props":1528,"children":1529},{},[1530,1535],{"type":42,"tag":104,"props":1531,"children":1532},{},[1533],{"type":48,"value":1534},"If saving succeeds",{"type":48,"value":1536},", tell the user:",{"type":42,"tag":296,"props":1538,"children":1541},{"className":1539,"code":1540,"language":48,"meta":301},[1128],"Credentials saved to .elastic-credentials — open that file to retrieve your password.\n",[1542],{"type":42,"tag":57,"props":1543,"children":1544},{"__ignoreMap":301},[1545],{"type":48,"value":1540},{"type":42,"tag":51,"props":1547,"children":1548},{},[1549,1550,1554,1556,1561],{"type":48,"value":838},{"type":42,"tag":104,"props":1551,"children":1552},{},[1553],{"type":48,"value":843},{"type":48,"value":1555}," read, cat, or display the contents of ",{"type":42,"tag":57,"props":1557,"children":1559},{"className":1558},[],[1560],{"type":48,"value":475},{"type":48,"value":554},{"type":42,"tag":51,"props":1563,"children":1564},{},[1565,1570,1572,1577,1579,1584,1585,1590],{"type":42,"tag":104,"props":1566,"children":1567},{},[1568],{"type":48,"value":1569},"If saving fails",{"type":48,"value":1571},", the script prints an error to stderr. Check whether ",{"type":42,"tag":57,"props":1573,"children":1575},{"className":1574},[],[1576],{"type":48,"value":475},{"type":48,"value":1578}," exists and contains a\npassword (a partial write is possible). If the password is missing or the file does not exist, immediately run the\n",{"type":42,"tag":57,"props":1580,"children":1582},{"className":1581},[],[1583],{"type":48,"value":62},{"type":48,"value":585},{"type":42,"tag":57,"props":1586,"children":1588},{"className":1587},[],[1589],{"type":48,"value":591},{"type":48,"value":593},{"type":42,"tag":51,"props":1592,"children":1593},{},[1594],{"type":48,"value":1595},"The creation response also contains:",{"type":42,"tag":73,"props":1597,"children":1598},{},[1599,1609,1619],{"type":42,"tag":77,"props":1600,"children":1601},{},[1602,1607],{"type":42,"tag":104,"props":1603,"children":1604},{},[1605],{"type":48,"value":1606},"Project ID",{"type":48,"value":1608}," — needed for all subsequent operations",{"type":42,"tag":77,"props":1610,"children":1611},{},[1612,1617],{"type":42,"tag":104,"props":1613,"children":1614},{},[1615],{"type":48,"value":1616},"Cloud ID",{"type":48,"value":1618}," — for client libraries",{"type":42,"tag":77,"props":1620,"children":1621},{},[1622,1627],{"type":42,"tag":104,"props":1623,"children":1624},{},[1625],{"type":48,"value":1626},"Elasticsearch and Kibana endpoints",{"type":48,"value":1628}," — safe to display in chat",{"type":42,"tag":51,"props":1630,"children":1631},{},[1632],{"type":48,"value":1633},"The admin credentials are for initial bootstrap only. Recommend creating a scoped API key for ongoing access (Step 8).",{"type":42,"tag":132,"props":1635,"children":1637},{"id":1636},"step-6-wait-for-project-to-initialize",[1638],{"type":48,"value":1639},"Step 6: Wait for project to initialize",{"type":42,"tag":51,"props":1641,"children":1642},{},[1643,1645,1650,1652,1657],{"type":48,"value":1644},"When ",{"type":42,"tag":57,"props":1646,"children":1648},{"className":1647},[],[1649],{"type":48,"value":619},{"type":48,"value":1651}," is passed (recommended), the script polls automatically until the project phase becomes ",{"type":42,"tag":57,"props":1653,"children":1655},{"className":1654},[],[1656],{"type":48,"value":635},{"type":48,"value":1658},". No\nmanual polling is needed.",{"type":42,"tag":51,"props":1660,"children":1661},{},[1662,1664,1669],{"type":48,"value":1663},"If the agent ran without ",{"type":42,"tag":57,"props":1665,"children":1667},{"className":1666},[],[1668],{"type":48,"value":619},{"type":48,"value":1670},", poll manually:",{"type":42,"tag":296,"props":1672,"children":1674},{"className":298,"code":1673,"language":300,"meta":301,"style":301},"python3 skills\u002Fcloud\u002Fcreate-project\u002Fscripts\u002Fcreate-project.py status \\\n  --type elasticsearch \\\n  --id \u003Cproject-id>\n",[1675],{"type":42,"tag":57,"props":1676,"children":1677},{"__ignoreMap":301},[1678,1698,1713],{"type":42,"tag":307,"props":1679,"children":1680},{"class":309,"line":310},[1681,1685,1689,1694],{"type":42,"tag":307,"props":1682,"children":1683},{"style":1316},[1684],{"type":48,"value":1319},{"type":42,"tag":307,"props":1686,"children":1687},{"style":325},[1688],{"type":48,"value":1324},{"type":42,"tag":307,"props":1690,"children":1691},{"style":325},[1692],{"type":48,"value":1693}," status",{"type":42,"tag":307,"props":1695,"children":1696},{"style":314},[1697],{"type":48,"value":1376},{"type":42,"tag":307,"props":1699,"children":1700},{"class":309,"line":331},[1701,1705,1709],{"type":42,"tag":307,"props":1702,"children":1703},{"style":325},[1704],{"type":48,"value":1384},{"type":42,"tag":307,"props":1706,"children":1707},{"style":325},[1708],{"type":48,"value":1389},{"type":42,"tag":307,"props":1710,"children":1711},{"style":314},[1712],{"type":48,"value":1376},{"type":42,"tag":307,"props":1714,"children":1715},{"class":309,"line":1396},[1716,1721,1726,1731,1736],{"type":42,"tag":307,"props":1717,"children":1718},{"style":325},[1719],{"type":48,"value":1720},"  --id",{"type":42,"tag":307,"props":1722,"children":1723},{"style":319},[1724],{"type":48,"value":1725}," \u003C",{"type":42,"tag":307,"props":1727,"children":1728},{"style":325},[1729],{"type":48,"value":1730},"project-i",{"type":42,"tag":307,"props":1732,"children":1733},{"style":314},[1734],{"type":48,"value":1735},"d",{"type":42,"tag":307,"props":1737,"children":1738},{"style":319},[1739],{"type":48,"value":1740},">\n",{"type":42,"tag":51,"props":1742,"children":1743},{},[1744,1746,1752,1754,1759,1760,1765],{"type":48,"value":1745},"Repeat until ",{"type":42,"tag":57,"props":1747,"children":1749},{"className":1748},[],[1750],{"type":48,"value":1751},"phase",{"type":48,"value":1753}," changes from ",{"type":42,"tag":57,"props":1755,"children":1757},{"className":1756},[],[1758],{"type":48,"value":627},{"type":48,"value":629},{"type":42,"tag":57,"props":1761,"children":1763},{"className":1762},[],[1764],{"type":48,"value":635},{"type":48,"value":1236},{"type":42,"tag":132,"props":1767,"children":1769},{"id":1768},"step-7-set-environment-variables",[1770],{"type":48,"value":1771},"Step 7: Set environment variables",{"type":42,"tag":51,"props":1773,"children":1774},{},[1775,1777,1782,1784,1794],{"type":48,"value":1776},"The creation script saves credentials and endpoints to ",{"type":42,"tag":57,"props":1778,"children":1780},{"className":1779},[],[1781],{"type":48,"value":475},{"type":48,"value":1783}," with the project name in the header. Load\nthem into the current shell ",{"type":42,"tag":104,"props":1785,"children":1786},{},[1787,1789],{"type":48,"value":1788},"with ",{"type":42,"tag":57,"props":1790,"children":1792},{"className":1791},[],[1793],{"type":48,"value":540},{"type":48,"value":1795}," so admin credentials are available for API key creation in Step\n8:",{"type":42,"tag":296,"props":1797,"children":1799},{"className":298,"code":1798,"language":300,"meta":301,"style":301},"eval $(python3 skills\u002Fcloud\u002Fmanage-project\u002Fscripts\u002Fmanage-project.py load-credentials \\\n  --name \"\u003Cproject-name>\" --include-admin)\n",[1800],{"type":42,"tag":57,"props":1801,"children":1802},{"__ignoreMap":301},[1803,1834],{"type":42,"tag":307,"props":1804,"children":1805},{"class":309,"line":310},[1806,1811,1816,1820,1825,1830],{"type":42,"tag":307,"props":1807,"children":1808},{"style":1153},[1809],{"type":48,"value":1810},"eval",{"type":42,"tag":307,"props":1812,"children":1813},{"style":319},[1814],{"type":48,"value":1815}," $(",{"type":42,"tag":307,"props":1817,"children":1818},{"style":1316},[1819],{"type":48,"value":1319},{"type":42,"tag":307,"props":1821,"children":1822},{"style":325},[1823],{"type":48,"value":1824}," skills\u002Fcloud\u002Fmanage-project\u002Fscripts\u002Fmanage-project.py",{"type":42,"tag":307,"props":1826,"children":1827},{"style":325},[1828],{"type":48,"value":1829}," load-credentials",{"type":42,"tag":307,"props":1831,"children":1832},{"style":314},[1833],{"type":48,"value":1376},{"type":42,"tag":307,"props":1835,"children":1836},{"class":309,"line":331},[1837,1841,1845,1850,1854,1859],{"type":42,"tag":307,"props":1838,"children":1839},{"style":325},[1840],{"type":48,"value":1402},{"type":42,"tag":307,"props":1842,"children":1843},{"style":319},[1844],{"type":48,"value":1407},{"type":42,"tag":307,"props":1846,"children":1847},{"style":325},[1848],{"type":48,"value":1849},"\u003Cproject-name>",{"type":42,"tag":307,"props":1851,"children":1852},{"style":319},[1853],{"type":48,"value":400},{"type":42,"tag":307,"props":1855,"children":1856},{"style":325},[1857],{"type":48,"value":1858}," --include-admin",{"type":42,"tag":307,"props":1860,"children":1861},{"style":319},[1862],{"type":48,"value":1863},")\n",{"type":42,"tag":51,"props":1865,"children":1866},{},[1867,1869,1875,1876,1882,1884,1890,1891,1897,1899,1905,1907,1913],{"type":48,"value":1868},"This sets ",{"type":42,"tag":57,"props":1870,"children":1872},{"className":1871},[],[1873],{"type":48,"value":1874},"ELASTICSEARCH_URL",{"type":48,"value":1222},{"type":42,"tag":57,"props":1877,"children":1879},{"className":1878},[],[1880],{"type":48,"value":1881},"KIBANA_URL",{"type":48,"value":1883},", any project-type specific endpoints (",{"type":42,"tag":57,"props":1885,"children":1887},{"className":1886},[],[1888],{"type":48,"value":1889},"APM_URL",{"type":48,"value":1222},{"type":42,"tag":57,"props":1892,"children":1894},{"className":1893},[],[1895],{"type":48,"value":1896},"INGEST_URL",{"type":48,"value":1898},"), and the\nadmin ",{"type":42,"tag":57,"props":1900,"children":1902},{"className":1901},[],[1903],{"type":48,"value":1904},"ELASTICSEARCH_USERNAME",{"type":48,"value":1906},"\u002F",{"type":42,"tag":57,"props":1908,"children":1910},{"className":1909},[],[1911],{"type":48,"value":1912},"ELASTICSEARCH_PASSWORD",{"type":48,"value":1914}," needed to bootstrap an API key.",{"type":42,"tag":132,"props":1916,"children":1918},{"id":1917},"step-8-create-a-scoped-api-key",[1919],{"type":48,"value":1920},"Step 8: Create a scoped API key",{"type":42,"tag":51,"props":1922,"children":1923},{},[1924,1926,1931,1933,1938],{"type":48,"value":1925},"The ",{"type":42,"tag":57,"props":1927,"children":1929},{"className":1928},[],[1930],{"type":48,"value":510},{"type":48,"value":1932}," user has full privileges and cannot be modified in serverless projects. ",{"type":42,"tag":104,"props":1934,"children":1935},{},[1936],{"type":48,"value":1937},"Do not proceed with Elasticsearch\noperations using admin credentials.",{"type":48,"value":1939}," Create a scoped Elasticsearch API key with only the permissions the user needs.",{"type":42,"tag":51,"props":1941,"children":1942},{},[1943,1945,1951,1953,1958,1960,1965,1967,1973,1975,1985],{"type":48,"value":1944},"If the ",{"type":42,"tag":57,"props":1946,"children":1948},{"className":1947},[],[1949],{"type":48,"value":1950},"elasticsearch-authn",{"type":48,"value":1952}," skill is available, use it for API key creation — it covers the full lifecycle (create,\ngrant, invalidate, query) and handles scoping privileges correctly. If the skill is not installed, ask the user to\neither install it or create the API key manually through ",{"type":42,"tag":104,"props":1954,"children":1955},{},[1956],{"type":48,"value":1957},"Kibana > Stack Management > API keys",{"type":48,"value":1959},". After creation, save\nthe API key to ",{"type":42,"tag":57,"props":1961,"children":1963},{"className":1962},[],[1964],{"type":48,"value":475},{"type":48,"value":1966}," using the project-specific header format (see ",{"type":42,"tag":57,"props":1968,"children":1970},{"className":1969},[],[1971],{"type":48,"value":1972},"manage-project",{"type":48,"value":1974}," skill's \"Credential\nfile format\" section), then reload ",{"type":42,"tag":104,"props":1976,"children":1977},{},[1978,1980],{"type":48,"value":1979},"without ",{"type":42,"tag":57,"props":1981,"children":1983},{"className":1982},[],[1984],{"type":48,"value":540},{"type":48,"value":1986}," to drop admin credentials from the environment:",{"type":42,"tag":296,"props":1988,"children":1990},{"className":298,"code":1989,"language":300,"meta":301,"style":301},"eval $(python3 skills\u002Fcloud\u002Fmanage-project\u002Fscripts\u002Fmanage-project.py load-credentials \\\n  --name \"\u003Cproject-name>\")\n",[1991],{"type":42,"tag":57,"props":1992,"children":1993},{"__ignoreMap":301},[1994,2021],{"type":42,"tag":307,"props":1995,"children":1996},{"class":309,"line":310},[1997,2001,2005,2009,2013,2017],{"type":42,"tag":307,"props":1998,"children":1999},{"style":1153},[2000],{"type":48,"value":1810},{"type":42,"tag":307,"props":2002,"children":2003},{"style":319},[2004],{"type":48,"value":1815},{"type":42,"tag":307,"props":2006,"children":2007},{"style":1316},[2008],{"type":48,"value":1319},{"type":42,"tag":307,"props":2010,"children":2011},{"style":325},[2012],{"type":48,"value":1824},{"type":42,"tag":307,"props":2014,"children":2015},{"style":325},[2016],{"type":48,"value":1829},{"type":42,"tag":307,"props":2018,"children":2019},{"style":314},[2020],{"type":48,"value":1376},{"type":42,"tag":307,"props":2022,"children":2023},{"class":309,"line":331},[2024,2028,2032,2036,2040],{"type":42,"tag":307,"props":2025,"children":2026},{"style":325},[2027],{"type":48,"value":1402},{"type":42,"tag":307,"props":2029,"children":2030},{"style":319},[2031],{"type":48,"value":1407},{"type":42,"tag":307,"props":2033,"children":2034},{"style":325},[2035],{"type":48,"value":1849},{"type":42,"tag":307,"props":2037,"children":2038},{"style":319},[2039],{"type":48,"value":400},{"type":42,"tag":307,"props":2041,"children":2042},{"style":319},[2043],{"type":48,"value":1863},{"type":42,"tag":66,"props":2045,"children":2047},{"id":2046},"examples",[2048],{"type":48,"value":2049},"Examples",{"type":42,"tag":132,"props":2051,"children":2053},{"id":2052},"create-an-elasticsearch-project-with-defaults",[2054],{"type":48,"value":2055},"Create an Elasticsearch project with defaults",{"type":42,"tag":296,"props":2057,"children":2059},{"className":298,"code":2058,"language":300,"meta":301,"style":301},"python3 skills\u002Fcloud\u002Fcreate-project\u002Fscripts\u002Fcreate-project.py create \\\n  --type elasticsearch \\\n  --name \"my-search-project\" \\\n  --region gcp-us-central1 \\\n  --optimized-for general_purpose \\\n  --wait\n",[2060],{"type":42,"tag":57,"props":2061,"children":2062},{"__ignoreMap":301},[2063,2082,2097,2121,2136,2151],{"type":42,"tag":307,"props":2064,"children":2065},{"class":309,"line":310},[2066,2070,2074,2078],{"type":42,"tag":307,"props":2067,"children":2068},{"style":1316},[2069],{"type":48,"value":1319},{"type":42,"tag":307,"props":2071,"children":2072},{"style":325},[2073],{"type":48,"value":1324},{"type":42,"tag":307,"props":2075,"children":2076},{"style":325},[2077],{"type":48,"value":1371},{"type":42,"tag":307,"props":2079,"children":2080},{"style":314},[2081],{"type":48,"value":1376},{"type":42,"tag":307,"props":2083,"children":2084},{"class":309,"line":331},[2085,2089,2093],{"type":42,"tag":307,"props":2086,"children":2087},{"style":325},[2088],{"type":48,"value":1384},{"type":42,"tag":307,"props":2090,"children":2091},{"style":325},[2092],{"type":48,"value":1389},{"type":42,"tag":307,"props":2094,"children":2095},{"style":314},[2096],{"type":48,"value":1376},{"type":42,"tag":307,"props":2098,"children":2099},{"class":309,"line":1396},[2100,2104,2108,2113,2117],{"type":42,"tag":307,"props":2101,"children":2102},{"style":325},[2103],{"type":48,"value":1402},{"type":42,"tag":307,"props":2105,"children":2106},{"style":319},[2107],{"type":48,"value":1407},{"type":42,"tag":307,"props":2109,"children":2110},{"style":325},[2111],{"type":48,"value":2112},"my-search-project",{"type":42,"tag":307,"props":2114,"children":2115},{"style":319},[2116],{"type":48,"value":400},{"type":42,"tag":307,"props":2118,"children":2119},{"style":314},[2120],{"type":48,"value":1376},{"type":42,"tag":307,"props":2122,"children":2123},{"class":309,"line":1423},[2124,2128,2132],{"type":42,"tag":307,"props":2125,"children":2126},{"style":325},[2127],{"type":48,"value":1429},{"type":42,"tag":307,"props":2129,"children":2130},{"style":325},[2131],{"type":48,"value":1434},{"type":42,"tag":307,"props":2133,"children":2134},{"style":314},[2135],{"type":48,"value":1376},{"type":42,"tag":307,"props":2137,"children":2138},{"class":309,"line":1441},[2139,2143,2147],{"type":42,"tag":307,"props":2140,"children":2141},{"style":325},[2142],{"type":48,"value":1447},{"type":42,"tag":307,"props":2144,"children":2145},{"style":325},[2146],{"type":48,"value":1452},{"type":42,"tag":307,"props":2148,"children":2149},{"style":314},[2150],{"type":48,"value":1376},{"type":42,"tag":307,"props":2152,"children":2153},{"class":309,"line":1459},[2154],{"type":42,"tag":307,"props":2155,"children":2156},{"style":325},[2157],{"type":48,"value":1465},{"type":42,"tag":132,"props":2159,"children":2161},{"id":2160},"create-an-observability-project",[2162],{"type":48,"value":2163},"Create an observability project",{"type":42,"tag":296,"props":2165,"children":2167},{"className":298,"code":2166,"language":300,"meta":301,"style":301},"python3 skills\u002Fcloud\u002Fcreate-project\u002Fscripts\u002Fcreate-project.py create \\\n  --type observability \\\n  --name \"prod-o11y\" \\\n  --region aws-eu-west-1 \\\n  --product-tier complete \\\n  --wait\n",[2168],{"type":42,"tag":57,"props":2169,"children":2170},{"__ignoreMap":301},[2171,2190,2206,2230,2246,2263],{"type":42,"tag":307,"props":2172,"children":2173},{"class":309,"line":310},[2174,2178,2182,2186],{"type":42,"tag":307,"props":2175,"children":2176},{"style":1316},[2177],{"type":48,"value":1319},{"type":42,"tag":307,"props":2179,"children":2180},{"style":325},[2181],{"type":48,"value":1324},{"type":42,"tag":307,"props":2183,"children":2184},{"style":325},[2185],{"type":48,"value":1371},{"type":42,"tag":307,"props":2187,"children":2188},{"style":314},[2189],{"type":48,"value":1376},{"type":42,"tag":307,"props":2191,"children":2192},{"class":309,"line":331},[2193,2197,2202],{"type":42,"tag":307,"props":2194,"children":2195},{"style":325},[2196],{"type":48,"value":1384},{"type":42,"tag":307,"props":2198,"children":2199},{"style":325},[2200],{"type":48,"value":2201}," observability",{"type":42,"tag":307,"props":2203,"children":2204},{"style":314},[2205],{"type":48,"value":1376},{"type":42,"tag":307,"props":2207,"children":2208},{"class":309,"line":1396},[2209,2213,2217,2222,2226],{"type":42,"tag":307,"props":2210,"children":2211},{"style":325},[2212],{"type":48,"value":1402},{"type":42,"tag":307,"props":2214,"children":2215},{"style":319},[2216],{"type":48,"value":1407},{"type":42,"tag":307,"props":2218,"children":2219},{"style":325},[2220],{"type":48,"value":2221},"prod-o11y",{"type":42,"tag":307,"props":2223,"children":2224},{"style":319},[2225],{"type":48,"value":400},{"type":42,"tag":307,"props":2227,"children":2228},{"style":314},[2229],{"type":48,"value":1376},{"type":42,"tag":307,"props":2231,"children":2232},{"class":309,"line":1423},[2233,2237,2242],{"type":42,"tag":307,"props":2234,"children":2235},{"style":325},[2236],{"type":48,"value":1429},{"type":42,"tag":307,"props":2238,"children":2239},{"style":325},[2240],{"type":48,"value":2241}," aws-eu-west-1",{"type":42,"tag":307,"props":2243,"children":2244},{"style":314},[2245],{"type":48,"value":1376},{"type":42,"tag":307,"props":2247,"children":2248},{"class":309,"line":1441},[2249,2254,2259],{"type":42,"tag":307,"props":2250,"children":2251},{"style":325},[2252],{"type":48,"value":2253},"  --product-tier",{"type":42,"tag":307,"props":2255,"children":2256},{"style":325},[2257],{"type":48,"value":2258}," complete",{"type":42,"tag":307,"props":2260,"children":2261},{"style":314},[2262],{"type":48,"value":1376},{"type":42,"tag":307,"props":2264,"children":2265},{"class":309,"line":1459},[2266],{"type":42,"tag":307,"props":2267,"children":2268},{"style":325},[2269],{"type":48,"value":1465},{"type":42,"tag":132,"props":2271,"children":2273},{"id":2272},"create-a-security-project",[2274],{"type":48,"value":2275},"Create a security project",{"type":42,"tag":296,"props":2277,"children":2279},{"className":298,"code":2278,"language":300,"meta":301,"style":301},"python3 skills\u002Fcloud\u002Fcreate-project\u002Fscripts\u002Fcreate-project.py create \\\n  --type security \\\n  --name \"siem-prod\" \\\n  --region gcp-us-central1 \\\n  --product-tier complete \\\n  --wait\n",[2280],{"type":42,"tag":57,"props":2281,"children":2282},{"__ignoreMap":301},[2283,2302,2318,2342,2357,2372],{"type":42,"tag":307,"props":2284,"children":2285},{"class":309,"line":310},[2286,2290,2294,2298],{"type":42,"tag":307,"props":2287,"children":2288},{"style":1316},[2289],{"type":48,"value":1319},{"type":42,"tag":307,"props":2291,"children":2292},{"style":325},[2293],{"type":48,"value":1324},{"type":42,"tag":307,"props":2295,"children":2296},{"style":325},[2297],{"type":48,"value":1371},{"type":42,"tag":307,"props":2299,"children":2300},{"style":314},[2301],{"type":48,"value":1376},{"type":42,"tag":307,"props":2303,"children":2304},{"class":309,"line":331},[2305,2309,2314],{"type":42,"tag":307,"props":2306,"children":2307},{"style":325},[2308],{"type":48,"value":1384},{"type":42,"tag":307,"props":2310,"children":2311},{"style":325},[2312],{"type":48,"value":2313}," security",{"type":42,"tag":307,"props":2315,"children":2316},{"style":314},[2317],{"type":48,"value":1376},{"type":42,"tag":307,"props":2319,"children":2320},{"class":309,"line":1396},[2321,2325,2329,2334,2338],{"type":42,"tag":307,"props":2322,"children":2323},{"style":325},[2324],{"type":48,"value":1402},{"type":42,"tag":307,"props":2326,"children":2327},{"style":319},[2328],{"type":48,"value":1407},{"type":42,"tag":307,"props":2330,"children":2331},{"style":325},[2332],{"type":48,"value":2333},"siem-prod",{"type":42,"tag":307,"props":2335,"children":2336},{"style":319},[2337],{"type":48,"value":400},{"type":42,"tag":307,"props":2339,"children":2340},{"style":314},[2341],{"type":48,"value":1376},{"type":42,"tag":307,"props":2343,"children":2344},{"class":309,"line":1423},[2345,2349,2353],{"type":42,"tag":307,"props":2346,"children":2347},{"style":325},[2348],{"type":48,"value":1429},{"type":42,"tag":307,"props":2350,"children":2351},{"style":325},[2352],{"type":48,"value":1434},{"type":42,"tag":307,"props":2354,"children":2355},{"style":314},[2356],{"type":48,"value":1376},{"type":42,"tag":307,"props":2358,"children":2359},{"class":309,"line":1441},[2360,2364,2368],{"type":42,"tag":307,"props":2361,"children":2362},{"style":325},[2363],{"type":48,"value":2253},{"type":42,"tag":307,"props":2365,"children":2366},{"style":325},[2367],{"type":48,"value":2258},{"type":42,"tag":307,"props":2369,"children":2370},{"style":314},[2371],{"type":48,"value":1376},{"type":42,"tag":307,"props":2373,"children":2374},{"class":309,"line":1459},[2375],{"type":42,"tag":307,"props":2376,"children":2377},{"style":325},[2378],{"type":48,"value":1465},{"type":42,"tag":66,"props":2380,"children":2382},{"id":2381},"guidelines",[2383],{"type":48,"value":2384},"Guidelines",{"type":42,"tag":73,"props":2386,"children":2387},{},[2388,2407,2412,2423,2428,2448,2472,2483,2495,2500],{"type":42,"tag":77,"props":2389,"children":2390},{},[2391,2393,2398,2400,2405],{"type":48,"value":2392},"Run the ",{"type":42,"tag":57,"props":2394,"children":2396},{"className":2395},[],[2397],{"type":48,"value":95},{"type":48,"value":2399}," skill first if ",{"type":42,"tag":57,"props":2401,"children":2403},{"className":2402},[],[2404],{"type":48,"value":87},{"type":48,"value":2406}," is not set.",{"type":42,"tag":77,"props":2408,"children":2409},{},[2410],{"type":48,"value":2411},"Always confirm the project configuration with the user before creating.",{"type":42,"tag":77,"props":2413,"children":2414},{},[2415,2417,2422],{"type":48,"value":2416},"Never display passwords or API keys in chat. Direct the user to ",{"type":42,"tag":57,"props":2418,"children":2420},{"className":2419},[],[2421],{"type":48,"value":475},{"type":48,"value":1236},{"type":42,"tag":77,"props":2424,"children":2425},{},[2426],{"type":48,"value":2427},"Never silently default to a project type. Infer from context and confirm with the user.",{"type":42,"tag":77,"props":2429,"children":2430},{},[2431,2433,2439,2441,2446],{"type":48,"value":2432},"Default to ",{"type":42,"tag":57,"props":2434,"children":2436},{"className":2435},[],[2437],{"type":48,"value":2438},"general_purpose",{"type":48,"value":2440}," optimization. Only use ",{"type":42,"tag":57,"props":2442,"children":2444},{"className":2443},[],[2445],{"type":48,"value":1104},{"type":48,"value":2447}," if the user explicitly requests it.",{"type":42,"tag":77,"props":2449,"children":2450},{},[2451,2452,2457,2459,2464,2465,2470],{"type":48,"value":2432},{"type":42,"tag":57,"props":2453,"children":2455},{"className":2454},[],[2456],{"type":48,"value":891},{"type":48,"value":2458}," product tier for observability and security projects. Only use ",{"type":42,"tag":57,"props":2460,"children":2462},{"className":2461},[],[2463],{"type":48,"value":963},{"type":48,"value":110},{"type":42,"tag":57,"props":2466,"children":2468},{"className":2467},[],[2469],{"type":48,"value":1012},{"type":48,"value":2471},"\nif the user explicitly requests it.",{"type":42,"tag":77,"props":2473,"children":2474},{},[2475,2476,2481],{"type":48,"value":1470},{"type":42,"tag":57,"props":2477,"children":2479},{"className":2478},[],[2480],{"type":48,"value":619},{"type":48,"value":2482}," so the script polls until the project is ready.",{"type":42,"tag":77,"props":2484,"children":2485},{},[2486,2488,2493],{"type":48,"value":2487},"If credential saving fails, immediately reset credentials using the ",{"type":42,"tag":57,"props":2489,"children":2491},{"className":2490},[],[2492],{"type":48,"value":62},{"type":48,"value":2494}," skill.",{"type":42,"tag":77,"props":2496,"children":2497},{},[2498],{"type":48,"value":2499},"After creation, recommend creating a scoped API key instead of relying on admin credentials.",{"type":42,"tag":77,"props":2501,"children":2502},{},[2503],{"type":48,"value":2504},"Region cannot be changed after creation — confirm the choice before proceeding.",{"type":42,"tag":66,"props":2506,"children":2508},{"id":2507},"script-reference",[2509],{"type":48,"value":2510},"Script reference",{"type":42,"tag":158,"props":2512,"children":2513},{},[2514,2529],{"type":42,"tag":162,"props":2515,"children":2516},{},[2517],{"type":42,"tag":166,"props":2518,"children":2519},{},[2520,2525],{"type":42,"tag":170,"props":2521,"children":2522},{},[2523],{"type":48,"value":2524},"Command",{"type":42,"tag":170,"props":2526,"children":2527},{},[2528],{"type":48,"value":184},{"type":42,"tag":186,"props":2530,"children":2531},{},[2532,2549,2566],{"type":42,"tag":166,"props":2533,"children":2534},{},[2535,2544],{"type":42,"tag":193,"props":2536,"children":2537},{},[2538],{"type":42,"tag":57,"props":2539,"children":2541},{"className":2540},[],[2542],{"type":48,"value":2543},"create",{"type":42,"tag":193,"props":2545,"children":2546},{},[2547],{"type":48,"value":2548},"Create a new serverless project",{"type":42,"tag":166,"props":2550,"children":2551},{},[2552,2561],{"type":42,"tag":193,"props":2553,"children":2554},{},[2555],{"type":42,"tag":57,"props":2556,"children":2558},{"className":2557},[],[2559],{"type":48,"value":2560},"status",{"type":42,"tag":193,"props":2562,"children":2563},{},[2564],{"type":48,"value":2565},"Get project initialization status",{"type":42,"tag":166,"props":2567,"children":2568},{},[2569,2578],{"type":42,"tag":193,"props":2570,"children":2571},{},[2572],{"type":42,"tag":57,"props":2573,"children":2575},{"className":2574},[],[2576],{"type":48,"value":2577},"list-regions",{"type":42,"tag":193,"props":2579,"children":2580},{},[2581],{"type":48,"value":2582},"List available regions",{"type":42,"tag":158,"props":2584,"children":2585},{},[2586,2606],{"type":42,"tag":162,"props":2587,"children":2588},{},[2589],{"type":42,"tag":166,"props":2590,"children":2591},{},[2592,2597,2602],{"type":42,"tag":170,"props":2593,"children":2594},{},[2595],{"type":48,"value":2596},"Flag",{"type":42,"tag":170,"props":2598,"children":2599},{},[2600],{"type":48,"value":2601},"Commands",{"type":42,"tag":170,"props":2603,"children":2604},{},[2605],{"type":48,"value":184},{"type":42,"tag":186,"props":2607,"children":2608},{},[2609,2647,2668,2696,2716,2747,2767],{"type":42,"tag":166,"props":2610,"children":2611},{},[2612,2620,2625],{"type":42,"tag":193,"props":2613,"children":2614},{},[2615],{"type":42,"tag":57,"props":2616,"children":2618},{"className":2617},[],[2619],{"type":48,"value":758},{"type":42,"tag":193,"props":2621,"children":2622},{},[2623],{"type":48,"value":2624},"create, status",{"type":42,"tag":193,"props":2626,"children":2627},{},[2628,2630,2635,2636,2641,2642],{"type":48,"value":2629},"Project type: ",{"type":42,"tag":57,"props":2631,"children":2633},{"className":2632},[],[2634],{"type":48,"value":21},{"type":48,"value":1222},{"type":42,"tag":57,"props":2637,"children":2639},{"className":2638},[],[2640],{"type":48,"value":709},{"type":48,"value":1222},{"type":42,"tag":57,"props":2643,"children":2645},{"className":2644},[],[2646],{"type":48,"value":731},{"type":42,"tag":166,"props":2648,"children":2649},{},[2650,2659,2663],{"type":42,"tag":193,"props":2651,"children":2652},{},[2653],{"type":42,"tag":57,"props":2654,"children":2656},{"className":2655},[],[2657],{"type":48,"value":2658},"--name",{"type":42,"tag":193,"props":2660,"children":2661},{},[2662],{"type":48,"value":2543},{"type":42,"tag":193,"props":2664,"children":2665},{},[2666],{"type":48,"value":2667},"Project name (required)",{"type":42,"tag":166,"props":2669,"children":2670},{},[2671,2680,2684],{"type":42,"tag":193,"props":2672,"children":2673},{},[2674],{"type":42,"tag":57,"props":2675,"children":2677},{"className":2676},[],[2678],{"type":48,"value":2679},"--region",{"type":42,"tag":193,"props":2681,"children":2682},{},[2683],{"type":48,"value":2543},{"type":42,"tag":193,"props":2685,"children":2686},{},[2687,2689,2694],{"type":48,"value":2688},"Region ID (default: ",{"type":42,"tag":57,"props":2690,"children":2692},{"className":2691},[],[2693],{"type":48,"value":1080},{"type":48,"value":2695},")",{"type":42,"tag":166,"props":2697,"children":2698},{},[2699,2708,2712],{"type":42,"tag":193,"props":2700,"children":2701},{},[2702],{"type":42,"tag":57,"props":2703,"children":2705},{"className":2704},[],[2706],{"type":48,"value":2707},"--id",{"type":42,"tag":193,"props":2709,"children":2710},{},[2711],{"type":48,"value":2560},{"type":42,"tag":193,"props":2713,"children":2714},{},[2715],{"type":48,"value":1606},{"type":42,"tag":166,"props":2717,"children":2718},{},[2719,2727,2731],{"type":42,"tag":193,"props":2720,"children":2721},{},[2722],{"type":42,"tag":57,"props":2723,"children":2725},{"className":2724},[],[2726],{"type":48,"value":1028},{"type":42,"tag":193,"props":2728,"children":2729},{},[2730],{"type":48,"value":2543},{"type":42,"tag":193,"props":2732,"children":2733},{},[2734,2736,2741,2742],{"type":48,"value":2735},"Elasticsearch subtype: ",{"type":42,"tag":57,"props":2737,"children":2739},{"className":2738},[],[2740],{"type":48,"value":2438},{"type":48,"value":110},{"type":42,"tag":57,"props":2743,"children":2745},{"className":2744},[],[2746],{"type":48,"value":1104},{"type":42,"tag":166,"props":2748,"children":2749},{},[2750,2758,2762],{"type":42,"tag":193,"props":2751,"children":2752},{},[2753],{"type":42,"tag":57,"props":2754,"children":2756},{"className":2755},[],[2757],{"type":48,"value":883},{"type":42,"tag":193,"props":2759,"children":2760},{},[2761],{"type":48,"value":2543},{"type":42,"tag":193,"props":2763,"children":2764},{},[2765],{"type":48,"value":2766},"Observability\u002Fsecurity tier (see \"Product tiers\" section)",{"type":42,"tag":166,"props":2768,"children":2769},{},[2770,2778,2782],{"type":42,"tag":193,"props":2771,"children":2772},{},[2773],{"type":42,"tag":57,"props":2774,"children":2776},{"className":2775},[],[2777],{"type":48,"value":619},{"type":42,"tag":193,"props":2779,"children":2780},{},[2781],{"type":48,"value":2543},{"type":42,"tag":193,"props":2783,"children":2784},{},[2785],{"type":48,"value":2786},"Poll until project is initialized before exiting",{"type":42,"tag":66,"props":2788,"children":2790},{"id":2789},"environment-variables",[2791],{"type":48,"value":2792},"Environment variables",{"type":42,"tag":158,"props":2794,"children":2795},{},[2796,2814],{"type":42,"tag":162,"props":2797,"children":2798},{},[2799],{"type":42,"tag":166,"props":2800,"children":2801},{},[2802,2806,2810],{"type":42,"tag":170,"props":2803,"children":2804},{},[2805],{"type":48,"value":174},{"type":42,"tag":170,"props":2807,"children":2808},{},[2809],{"type":48,"value":179},{"type":42,"tag":170,"props":2811,"children":2812},{},[2813],{"type":48,"value":184},{"type":42,"tag":186,"props":2815,"children":2816},{},[2817,2837,2862,2890,2916,2936,2956],{"type":42,"tag":166,"props":2818,"children":2819},{},[2820,2828,2832],{"type":42,"tag":193,"props":2821,"children":2822},{},[2823],{"type":42,"tag":57,"props":2824,"children":2826},{"className":2825},[],[2827],{"type":48,"value":87},{"type":42,"tag":193,"props":2829,"children":2830},{},[2831],{"type":48,"value":205},{"type":42,"tag":193,"props":2833,"children":2834},{},[2835],{"type":48,"value":2836},"Elastic Cloud API key",{"type":42,"tag":166,"props":2838,"children":2839},{},[2840,2848,2852],{"type":42,"tag":193,"props":2841,"children":2842},{},[2843],{"type":42,"tag":57,"props":2844,"children":2846},{"className":2845},[],[2847],{"type":48,"value":222},{"type":42,"tag":193,"props":2849,"children":2850},{},[2851],{"type":48,"value":227},{"type":42,"tag":193,"props":2853,"children":2854},{},[2855,2856,2861],{"type":48,"value":232},{"type":42,"tag":57,"props":2857,"children":2859},{"className":2858},[],[2860],{"type":48,"value":238},{"type":48,"value":2695},{"type":42,"tag":166,"props":2863,"children":2864},{},[2865,2873,2878],{"type":42,"tag":193,"props":2866,"children":2867},{},[2868],{"type":42,"tag":57,"props":2869,"children":2871},{"className":2870},[],[2872],{"type":48,"value":1874},{"type":42,"tag":193,"props":2874,"children":2875},{},[2876],{"type":48,"value":2877},"Output",{"type":42,"tag":193,"props":2879,"children":2880},{},[2881,2883,2888],{"type":48,"value":2882},"Elasticsearch URL (loaded via ",{"type":42,"tag":57,"props":2884,"children":2886},{"className":2885},[],[2887],{"type":48,"value":532},{"type":48,"value":2889}," after creation)",{"type":42,"tag":166,"props":2891,"children":2892},{},[2893,2901,2905],{"type":42,"tag":193,"props":2894,"children":2895},{},[2896],{"type":42,"tag":57,"props":2897,"children":2899},{"className":2898},[],[2900],{"type":48,"value":1881},{"type":42,"tag":193,"props":2902,"children":2903},{},[2904],{"type":48,"value":2877},{"type":42,"tag":193,"props":2906,"children":2907},{},[2908,2910,2915],{"type":48,"value":2909},"Kibana URL (loaded via ",{"type":42,"tag":57,"props":2911,"children":2913},{"className":2912},[],[2914],{"type":48,"value":532},{"type":48,"value":2889},{"type":42,"tag":166,"props":2917,"children":2918},{},[2919,2927,2931],{"type":42,"tag":193,"props":2920,"children":2921},{},[2922],{"type":42,"tag":57,"props":2923,"children":2925},{"className":2924},[],[2926],{"type":48,"value":1889},{"type":42,"tag":193,"props":2928,"children":2929},{},[2930],{"type":48,"value":2877},{"type":42,"tag":193,"props":2932,"children":2933},{},[2934],{"type":48,"value":2935},"APM endpoint (observability projects only)",{"type":42,"tag":166,"props":2937,"children":2938},{},[2939,2947,2951],{"type":42,"tag":193,"props":2940,"children":2941},{},[2942],{"type":42,"tag":57,"props":2943,"children":2945},{"className":2944},[],[2946],{"type":48,"value":1896},{"type":42,"tag":193,"props":2948,"children":2949},{},[2950],{"type":48,"value":2877},{"type":42,"tag":193,"props":2952,"children":2953},{},[2954],{"type":48,"value":2955},"OTLP ingest endpoint (observability and security projects)",{"type":42,"tag":166,"props":2957,"children":2958},{},[2959,2968,2972],{"type":42,"tag":193,"props":2960,"children":2961},{},[2962],{"type":42,"tag":57,"props":2963,"children":2965},{"className":2964},[],[2966],{"type":48,"value":2967},"ELASTICSEARCH_API_KEY",{"type":42,"tag":193,"props":2969,"children":2970},{},[2971],{"type":48,"value":2877},{"type":42,"tag":193,"props":2973,"children":2974},{},[2975,2977,2982],{"type":48,"value":2976},"Elasticsearch API key (created in Step 8, loaded via ",{"type":42,"tag":57,"props":2978,"children":2980},{"className":2979},[],[2981],{"type":48,"value":532},{"type":48,"value":2695},{"type":42,"tag":66,"props":2984,"children":2986},{"id":2985},"additional-resources",[2987],{"type":48,"value":2988},"Additional resources",{"type":42,"tag":73,"props":2990,"children":2991},{},[2992],{"type":42,"tag":77,"props":2993,"children":2994},{},[2995,2997],{"type":48,"value":2996},"For full API details, request\u002Fresponse schemas, and project-type options, see\n",{"type":42,"tag":263,"props":2998,"children":3000},{"href":2999},"references\u002Fapi-reference.md",[3001],{"type":48,"value":2999},{"type":42,"tag":3003,"props":3004,"children":3005},"style",{},[3006],{"type":48,"value":3007},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":3009,"total":3165},[3010,3029,3046,3059,3074,3080,3089,3103,3114,3129,3139,3152],{"slug":3011,"name":3011,"fn":3012,"description":3013,"org":3014,"tags":3015,"stars":3026,"repoUrl":3027,"updatedAt":3028},"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},[3016,3019,3022,3023],{"name":3017,"slug":3018,"type":15},"Analytics","analytics",{"name":3020,"slug":3021,"type":15},"Data Analysis","data-analysis",{"name":9,"slug":8,"type":15},{"name":3024,"slug":3025,"type":15},"Performance","performance",2027,"https:\u002F\u002Fgithub.com\u002Felastic\u002Frally","2026-07-12T07:46:38.54144",{"slug":3030,"name":3030,"fn":3031,"description":3032,"org":3033,"tags":3034,"stars":3026,"repoUrl":3027,"updatedAt":3045},"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},[3035,3038,3039,3042],{"name":3036,"slug":3037,"type":15},"Debugging","debugging",{"name":9,"slug":8,"type":15},{"name":3040,"slug":3041,"type":15},"Engineering","engineering",{"name":3043,"slug":3044,"type":15},"Local Development","local-development","2026-07-12T07:46:35.976807",{"slug":3047,"name":3047,"fn":3048,"description":3049,"org":3050,"tags":3051,"stars":3026,"repoUrl":3027,"updatedAt":3058},"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},[3052,3053,3054,3055],{"name":9,"slug":8,"type":15},{"name":20,"slug":21,"type":15},{"name":3024,"slug":3025,"type":15},{"name":3056,"slug":3057,"type":15},"Testing","testing","2026-07-12T07:46:37.277964",{"slug":3060,"name":3060,"fn":3061,"description":3062,"org":3063,"tags":3064,"stars":22,"repoUrl":23,"updatedAt":3073},"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},[3065,3066,3067,3070],{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":3068,"slug":3069,"type":15},"Operations","operations",{"name":3071,"slug":3072,"type":15},"Permissions","permissions","2026-07-12T07:46:44.946285",{"slug":4,"name":4,"fn":5,"description":6,"org":3075,"tags":3076,"stars":22,"repoUrl":23,"updatedAt":24},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3077,3078,3079],{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"name":20,"slug":21,"type":15},{"slug":62,"name":62,"fn":3081,"description":3082,"org":3083,"tags":3084,"stars":22,"repoUrl":23,"updatedAt":3088},"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},[3085,3086,3087],{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},{"name":3068,"slug":3069,"type":15},"2026-07-12T07:46:41.097412",{"slug":3090,"name":3090,"fn":3091,"description":3092,"org":3093,"tags":3094,"stars":22,"repoUrl":23,"updatedAt":3102},"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},[3095,3096,3097,3100],{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},{"name":3098,"slug":3099,"type":15},"Networking","networking",{"name":3101,"slug":731,"type":15},"Security","2026-07-12T07:46:43.675992",{"slug":95,"name":95,"fn":3104,"description":3105,"org":3106,"tags":3107,"stars":22,"repoUrl":23,"updatedAt":3113},"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},[3108,3111,3112],{"name":3109,"slug":3110,"type":15},"Authentication","authentication",{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},"2026-07-12T07:46:39.783105",{"slug":3115,"name":3115,"fn":3116,"description":3117,"org":3118,"tags":3119,"stars":22,"repoUrl":23,"updatedAt":3128},"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},[3120,3123,3124,3127],{"name":3121,"slug":3122,"type":15},"Audit","audit",{"name":20,"slug":21,"type":15},{"name":3125,"slug":3126,"type":15},"Logs","logs",{"name":3101,"slug":731,"type":15},"2026-07-12T07:47:35.092599",{"slug":1950,"name":1950,"fn":3130,"description":3131,"org":3132,"tags":3133,"stars":22,"repoUrl":23,"updatedAt":3138},"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},[3134,3135,3136,3137],{"name":3109,"slug":3110,"type":15},{"name":9,"slug":8,"type":15},{"name":20,"slug":21,"type":15},{"name":3101,"slug":731,"type":15},"2026-07-12T07:47:41.474547",{"slug":3140,"name":3140,"fn":3141,"description":3142,"org":3143,"tags":3144,"stars":22,"repoUrl":23,"updatedAt":3151},"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},[3145,3146,3147,3150],{"name":9,"slug":8,"type":15},{"name":20,"slug":21,"type":15},{"name":3148,"slug":3149,"type":15},"RBAC","rbac",{"name":3101,"slug":731,"type":15},"2026-07-12T07:47:36.394177",{"slug":3153,"name":3153,"fn":3154,"description":3155,"org":3156,"tags":3157,"stars":22,"repoUrl":23,"updatedAt":3164},"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},[3158,3159,3160,3161],{"name":3017,"slug":3018,"type":15},{"name":3020,"slug":3021,"type":15},{"name":20,"slug":21,"type":15},{"name":3162,"slug":3163,"type":15},"SQL","sql","2026-07-12T07:47:40.249533",86,{"items":3167,"total":3214},[3168,3175,3181,3187,3194,3200,3207],{"slug":3060,"name":3060,"fn":3061,"description":3062,"org":3169,"tags":3170,"stars":22,"repoUrl":23,"updatedAt":3073},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3171,3172,3173,3174],{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":3068,"slug":3069,"type":15},{"name":3071,"slug":3072,"type":15},{"slug":4,"name":4,"fn":5,"description":6,"org":3176,"tags":3177,"stars":22,"repoUrl":23,"updatedAt":24},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3178,3179,3180],{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"name":20,"slug":21,"type":15},{"slug":62,"name":62,"fn":3081,"description":3082,"org":3182,"tags":3183,"stars":22,"repoUrl":23,"updatedAt":3088},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3184,3185,3186],{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},{"name":3068,"slug":3069,"type":15},{"slug":3090,"name":3090,"fn":3091,"description":3092,"org":3188,"tags":3189,"stars":22,"repoUrl":23,"updatedAt":3102},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3190,3191,3192,3193],{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},{"name":3098,"slug":3099,"type":15},{"name":3101,"slug":731,"type":15},{"slug":95,"name":95,"fn":3104,"description":3105,"org":3195,"tags":3196,"stars":22,"repoUrl":23,"updatedAt":3113},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3197,3198,3199],{"name":3109,"slug":3110,"type":15},{"name":17,"slug":18,"type":15},{"name":20,"slug":21,"type":15},{"slug":3115,"name":3115,"fn":3116,"description":3117,"org":3201,"tags":3202,"stars":22,"repoUrl":23,"updatedAt":3128},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3203,3204,3205,3206],{"name":3121,"slug":3122,"type":15},{"name":20,"slug":21,"type":15},{"name":3125,"slug":3126,"type":15},{"name":3101,"slug":731,"type":15},{"slug":1950,"name":1950,"fn":3130,"description":3131,"org":3208,"tags":3209,"stars":22,"repoUrl":23,"updatedAt":3138},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[3210,3211,3212,3213],{"name":3109,"slug":3110,"type":15},{"name":9,"slug":8,"type":15},{"name":20,"slug":21,"type":15},{"name":3101,"slug":731,"type":15},35]