[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CT4AWW2DR7AQEJGX3VJF1N":3,"skill-same:01M6CT4AWW2DR7AQEJGX3VJF1N":72},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":42,"linkOnly":43,"markdownContent":44,"markdownBody":45,"frontMatter":46,"refName":48,"commitSha":49,"skillDirectory":50,"forksCount":51,"repositoryHtmlUrl":52,"repositoryHomepageUrl":53,"ownerHtmlUrl":54,"ownerBlogUrl":55,"ownerDescription":56,"updatedAt":57,"install":58,"resources":71},"01M6CT4AWW2DR7AQEJGX3VJF1N","hex",null,"Internal data access primitive. Executes a Hex query and returns structured results. Called by core skills — not intended for direct use. Invoke when you need to run a Hex query on behalf of a core skill that has provided a query and pattern. Do not use for Sentry product telemetry, Sentry feature-usage questions, or explicit requests to use Sentry telemetry when the Sentry skill is available.","getsentry\u002Fjunior","getsentry","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F1396951?v=4","01M6CHRN2S1A588Q46ASWA5335","Sentry","01M6CT1V0TF72B1X0MQT5MSYXF",419,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fjunior\u002Fblob\u002Fmain\u002Fpackages\u002Fjunior-hex\u002Fskills\u002Fhex\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41],"query","when","invoke","core skill","for","requests","usage","you","sentry skill","feature","pattern","telemetry","do","use","results","returns","direct","access","data","sentry","product","run","core","2026-11-10 10:12:30",false,"---\nname: hex\ntype: atomic\ndescription: >\n  Internal data access primitive. Executes a Hex query and returns structured\n  results. Called by core skills — not intended for direct use. Invoke when you\n  need to run a Hex query on behalf of a core skill that has provided a query\n  and pattern. Do not use for Sentry product telemetry, Sentry feature-usage\n  questions, or explicit requests to use Sentry telemetry when the Sentry skill\n  is available.\n---\n\n# Query Hex (Atomic)\n\nSingle responsibility: execute a Hex query via MCP, poll for completion, and return results matched against the caller-provided pattern. Hex Threads take a few minutes to run — this skill owns the full create → poll → extract cycle.\n\n## Input\n\nReceive all three from the calling core skill:\n\n- **query** — the complete, self-contained prompt to send to Hex (see Prompt Construction below)\n- **pattern** — what the target data looks like (field names, expected shape — provided by caller; do not assume)\n- **context** — any identifying context for the query (e.g. account name, entity ID, time range)\n\n## Prompt Construction (Critical — Read Before Creating a Thread)\n\nHex's Threads Agent decides which tables to query and what SQL to run based entirely on your prompt. A vague prompt causes broad table exploration and significantly slower responses. A precise prompt can shave several minutes off query time.\n\n### Rules\n\n1. **Batch everything into one prompt.** Include every metric and data point the caller needs in a single `create_thread` call. Do NOT use `continue_thread` to fetch additional fields — each call re-triggers the full agent pipeline and adds multiple minutes of latency. Treat `continue_thread` as a last resort only when a genuinely requested data point is absent from the initial response.\n\n2. **Anchor on a specific entity identifier.** Always include the primary key or identifier for the entity being queried (e.g. account ID, org slug, user ID, opportunity ID). Never rely on Hex to infer the entity from a name or description alone.\n\n3. **Use exact field and table terminology.** Vague terms force Hex to guess. Use the canonical column names, table names, and metric names from the caller's data model. If the caller provides known column names, include them in the prompt.\n\n4. **Specify the time window explicitly.** Always state the period: `\"for the last 28 days\"`, `\"from [start date] to today\"`, `\"monthly for the last 6 months\"`.\n\n5. **Request structured output.** End every prompt with: `\"Return results in a structured list or table.\"`\n\n6. **Pass raw SQL when available.** When the caller provides a specific SQL query, pass it directly to `create_thread` — the agent will execute it as-is, which is faster than natural language exploration.\n\n### Example: Natural Language Query\n\n> \"For account ID '12345': return (1) total revenue for the last 90 days, (2) number of active users this month, and (3) any plan or subscription changes in the last 30 days. Return results in a structured list.\"\n\n### Example: Raw SQL Query\n\n> \"Run this SQL: SELECT id, name, revenue, created_at FROM \\`my-project.dataset.orders\\` WHERE account_id = '12345' AND created_at >= DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY) ORDER BY created_at DESC\"\n\n## Steps\n\n1. **Create a Hex thread.**\n   Call `create_thread` with the fully constructed prompt.\n   If the call fails (network error, auth error), return immediately with `status: \"error\"` and the error message.\n\n2. **Poll for completion.**\n   Call `get_thread` to check thread status.\n   - Wait approximately **20 seconds** between polls.\n   - Retry up to **10 times** before giving up.\n   - Continue polling while status is not `IDLE` (i.e., still processing).\n   - If still not `IDLE` after 10 retries, return:\n     ```json\n     {\n       \"status\": \"timeout\",\n       \"value\": null,\n       \"source\": \"Hex\",\n       \"raw\": \"Hex query did not complete after 10 polling attempts.\"\n     }\n     ```\n\n3. **Extract the result.**\n   Once the thread reaches `IDLE`, read the response content. Reason against the returned data using the caller-provided **pattern** to locate and extract the target value(s).\n\n4. **Use `continue_thread` only as a last resort.**\n   If a genuinely requested data point is completely absent from the response (not just unlabeled or formatted differently), use `continue_thread` once to ask for it specifically. Re-extract after. Do not use it to request additional data the caller didn't include in the original query — that is a caller-side error.\n\n5. **Return structured output.**\n   Return one of:\n   - **Match found:**\n     ```json\n     {\n       \"status\": \"found\",\n       \"value\": \"\u003Cextracted value(s) matching the pattern>\",\n       \"source\": \"Hex\",\n       \"raw\": \"\u003Cfull thread response for debugging>\"\n     }\n     ```\n   - **No match:**\n     ```json\n     {\n       \"status\": \"not_found\",\n       \"value\": null,\n       \"source\": \"Hex\",\n       \"raw\": \"\u003Cfull thread response for debugging>\"\n     }\n     ```\n\n## Constraints\n\n- Do not hardcode data formats or field names — patterns come from the caller.\n- Do not poll beyond the 10-attempt cap defined here.\n- Do not return partial results as successes — if the pattern match fails, return `not_found`.\n- Do not invoke other skills or data sources — this is a single-source primitive.\n- Do not fabricate data. If Hex returns an empty or ambiguous result, return `not_found` with the raw output so the caller can inspect it.\n- Do not use `continue_thread` as a standard follow-up mechanism — it is expensive and should be used at most once per query, only when a requested data point is genuinely absent from the initial response.\n\n## Guardrails\n\n### Auth and error handling\n\n- **If `create_thread` returns an auth error** (401\u002F403 or OAuth failure), stop immediately and return `status: \"error\"` — do not retry auth failures.\n- **If `create_thread` returns a transient error** (network timeout, 5xx), retry once. If the retry also fails, return an error status.\n- **Never expose raw Hex API error messages to end users.** Summarize the failure mode (auth, timeout, not found) without leaking internal details.\n\n### Query safety\n\n- **Do not execute write operations.** Hex threads are read-only analytics queries. If a prompt implies mutation (INSERT, UPDATE, DELETE), refuse and return an error.\n- **Do not pass raw user input directly as the Hex prompt.** Always template input into the structured format defined by the caller's query.\n\n### Rate limits\n\n- **Cap `get_thread` polling to 10 calls per thread.** Do not poll beyond this — return `status: \"timeout\"`.\n- **Do not chain this skill recursively.** One invocation handles one query.\n","# Query Hex (Atomic)\n\nSingle responsibility: execute a Hex query via MCP, poll for completion, and return results matched against the caller-provided pattern. Hex Threads take a few minutes to run — this skill owns the full create → poll → extract cycle.\n\n## Input\n\nReceive all three from the calling core skill:\n\n- **query** — the complete, self-contained prompt to send to Hex (see Prompt Construction below)\n- **pattern** — what the target data looks like (field names, expected shape — provided by caller; do not assume)\n- **context** — any identifying context for the query (e.g. account name, entity ID, time range)\n\n## Prompt Construction (Critical — Read Before Creating a Thread)\n\nHex's Threads Agent decides which tables to query and what SQL to run based entirely on your prompt. A vague prompt causes broad table exploration and significantly slower responses. A precise prompt can shave several minutes off query time.\n\n### Rules\n\n1. **Batch everything into one prompt.** Include every metric and data point the caller needs in a single `create_thread` call. Do NOT use `continue_thread` to fetch additional fields — each call re-triggers the full agent pipeline and adds multiple minutes of latency. Treat `continue_thread` as a last resort only when a genuinely requested data point is absent from the initial response.\n\n2. **Anchor on a specific entity identifier.** Always include the primary key or identifier for the entity being queried (e.g. account ID, org slug, user ID, opportunity ID). Never rely on Hex to infer the entity from a name or description alone.\n\n3. **Use exact field and table terminology.** Vague terms force Hex to guess. Use the canonical column names, table names, and metric names from the caller's data model. If the caller provides known column names, include them in the prompt.\n\n4. **Specify the time window explicitly.** Always state the period: `\"for the last 28 days\"`, `\"from [start date] to today\"`, `\"monthly for the last 6 months\"`.\n\n5. **Request structured output.** End every prompt with: `\"Return results in a structured list or table.\"`\n\n6. **Pass raw SQL when available.** When the caller provides a specific SQL query, pass it directly to `create_thread` — the agent will execute it as-is, which is faster than natural language exploration.\n\n### Example: Natural Language Query\n\n> \"For account ID '12345': return (1) total revenue for the last 90 days, (2) number of active users this month, and (3) any plan or subscription changes in the last 30 days. Return results in a structured list.\"\n\n### Example: Raw SQL Query\n\n> \"Run this SQL: SELECT id, name, revenue, created_at FROM \\`my-project.dataset.orders\\` WHERE account_id = '12345' AND created_at >= DATE_SUB(CURRENT_DATE(), INTERVAL 90 DAY) ORDER BY created_at DESC\"\n\n## Steps\n\n1. **Create a Hex thread.**\n   Call `create_thread` with the fully constructed prompt.\n   If the call fails (network error, auth error), return immediately with `status: \"error\"` and the error message.\n\n2. **Poll for completion.**\n   Call `get_thread` to check thread status.\n   - Wait approximately **20 seconds** between polls.\n   - Retry up to **10 times** before giving up.\n   - Continue polling while status is not `IDLE` (i.e., still processing).\n   - If still not `IDLE` after 10 retries, return:\n     ```json\n     {\n       \"status\": \"timeout\",\n       \"value\": null,\n       \"source\": \"Hex\",\n       \"raw\": \"Hex query did not complete after 10 polling attempts.\"\n     }\n     ```\n\n3. **Extract the result.**\n   Once the thread reaches `IDLE`, read the response content. Reason against the returned data using the caller-provided **pattern** to locate and extract the target value(s).\n\n4. **Use `continue_thread` only as a last resort.**\n   If a genuinely requested data point is completely absent from the response (not just unlabeled or formatted differently), use `continue_thread` once to ask for it specifically. Re-extract after. Do not use it to request additional data the caller didn't include in the original query — that is a caller-side error.\n\n5. **Return structured output.**\n   Return one of:\n   - **Match found:**\n     ```json\n     {\n       \"status\": \"found\",\n       \"value\": \"\u003Cextracted value(s) matching the pattern>\",\n       \"source\": \"Hex\",\n       \"raw\": \"\u003Cfull thread response for debugging>\"\n     }\n     ```\n   - **No match:**\n     ```json\n     {\n       \"status\": \"not_found\",\n       \"value\": null,\n       \"source\": \"Hex\",\n       \"raw\": \"\u003Cfull thread response for debugging>\"\n     }\n     ```\n\n## Constraints\n\n- Do not hardcode data formats or field names — patterns come from the caller.\n- Do not poll beyond the 10-attempt cap defined here.\n- Do not return partial results as successes — if the pattern match fails, return `not_found`.\n- Do not invoke other skills or data sources — this is a single-source primitive.\n- Do not fabricate data. If Hex returns an empty or ambiguous result, return `not_found` with the raw output so the caller can inspect it.\n- Do not use `continue_thread` as a standard follow-up mechanism — it is expensive and should be used at most once per query, only when a requested data point is genuinely absent from the initial response.\n\n## Guardrails\n\n### Auth and error handling\n\n- **If `create_thread` returns an auth error** (401\u002F403 or OAuth failure), stop immediately and return `status: \"error\"` — do not retry auth failures.\n- **If `create_thread` returns a transient error** (network timeout, 5xx), retry once. If the retry also fails, return an error status.\n- **Never expose raw Hex API error messages to end users.** Summarize the failure mode (auth, timeout, not found) without leaking internal details.\n\n### Query safety\n\n- **Do not execute write operations.** Hex threads are read-only analytics queries. If a prompt implies mutation (INSERT, UPDATE, DELETE), refuse and return an error.\n- **Do not pass raw user input directly as the Hex prompt.** Always template input into the structured format defined by the caller's query.\n\n### Rate limits\n\n- **Cap `get_thread` polling to 10 calls per thread.** Do not poll beyond this — return `status: \"timeout\"`.\n- **Do not chain this skill recursively.** One invocation handles one query.\n",{"name":5,"type":47,"description":7},"atomic","main","5abc4b2bad9bd5ffe7b7fe0352f0999c6ca9c601","packages\u002Fjunior-hex\u002Fskills\u002Fhex",45,"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fjunior","https:\u002F\u002Fjunior.sentry.dev","https:\u002F\u002Fgithub.com\u002Fgetsentry","https:\u002F\u002Fsentry.io","Real-time crash reporting for your web apps, mobile apps, and games.","2026-11-14 03:38:49",{"source":8,"skillName":5,"commands":59,"prompt":69,"zipAvailable":70},[60,63,66],{"tool":61,"command":62},"npx","npx skills add getsentry\u002Fjunior --skill hex",{"tool":64,"command":65},"bunx","bunx skills add getsentry\u002Fjunior --skill hex",{"tool":67,"command":68},"pnpm","pnpm dlx skills add getsentry\u002Fjunior --skill hex","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fjunior\u002Fblob\u002Fmain\u002Fpackages\u002Fjunior-hex\u002Fskills\u002Fhex\u002FSKILL.md",true,[],[73,102,130,152,176,195],{"skillNo":74,"name":75,"nameZh":6,"description":76,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":77,"categories":78,"keywords":84,"publishedAt":42},"01M6CT5E87W8P93FGAVYDWD6RD","junior","Build, review, or update Junior extension skills and plugins. Use when users ask to create a Junior SKILL.md, app skill, plugin, plugin.yaml, packaged plugin, MCP-backed plugin, OAuth or credentialed plugin, or to validate Junior extension files. Do not use for ordinary Junior usage, provider workflows, generic code editing, or non-Junior agent-skill authoring.","https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fjunior\u002Fblob\u002Fmain\u002Fskills\u002Fjunior\u002FSKILL.md",[79],{"categoryNo":80,"categoryName":81,"taxonomyType":82,"taxonomyTypeDesc":83},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[75,31,85,86,87,88,89,32,90,91,92,93,94,95,96,97,98,99,25,100,101,23,20],"provider","editing","skill authoring","files","MCP","OAuth","workflows","ask","code","review","create","plugin","build","update","app","users","generic",{"skillNo":103,"name":104,"nameZh":6,"description":105,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":106,"categories":107,"keywords":112,"publishedAt":42},"01M6CT5AQRDSG19SBJACXGPMY9","junior-qa","Validate Junior changes through local app-facing paths. Use for local client or agent QA, dashboard mock reporting UI QA, sharing a preview URL of a running UI, Docker sandbox provider QA (also from inside a Vercel Sandbox), PR readiness, plugin CLI commands, skill\u002Ftool\u002Fprompt\u002Fplugin behavior, and behavior that tests do not cover well but can be exercised with `pnpm cli -- chat ...`, another `pnpm cli` command, or `JUNIOR_DASHBOARD_MOCK_CONVERSATIONS=true pnpm dev`.","https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fjunior\u002Fblob\u002Fmain\u002Fskills\u002Fjunior-qa\u002FSKILL.md",[108,111],{"categoryNo":109,"categoryName":110,"taxonomyType":82,"taxonomyTypeDesc":83},"01JBSEEDCAT000000000000011","运维与部署",{"categoryNo":80,"categoryName":81,"taxonomyType":82,"taxonomyTypeDesc":83},[113,114,75,99,115,116,117,118,119,120,121,122,123,124,125,126,127,128,67,129],"qa","junior qa","conversations","local","URL","preview","dashboard","cli","command","reporting","pr readiness","commands","paths","cover","ui","but","running",{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":137,"publishedAt":42},"01M6CT58D1SJNFZ19ZXK64ZX0R","eval-auth","Use for `\u002Feval-auth` requests in MCP auth-resume integration tests. Always connect through the disclosed MCP tool before answering, then continue the user's actual request using prior thread context when needed.","https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fjunior\u002Fblob\u002Fmain\u002Fpackages\u002Fjunior\u002Ftests\u002Ffixtures\u002Fplugins\u002Feval-auth\u002Fskills\u002Feval-auth\u002FSKILL.md",[136],{"categoryNo":80,"categoryName":81,"taxonomyType":82,"taxonomyTypeDesc":83},[138,139,140,141,142,143,144,145,89,32,146,147,148,24,23,149,150,151,20],"eval auth","auth","eval","resume","integration tests","tool","integration","continue","connect","user","context","request","tests","thread",{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":158,"publishedAt":42},"01M6CT55MZKCVBJH2X7T1HCRPX","jr-rpc","Manage low-level config and plugin introspection flows via jr-rpc bash commands. Use only when the user explicitly asks to read or update provider defaults\u002Fconfig or list installed plugins. Do not use for PR, branch, push, or auth-order questions; load the matching provider skill instead.","https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fjunior\u002Fblob\u002Fmain\u002Fpackages\u002Fjunior\u002Fskills\u002Fjr-rpc\u002FSKILL.md",[],[159,160,31,161,96,162,163,164,139,85,165,98,166,167,168,169,170,32,171,147,23,172,173,20,174,175],"jr rpc","rpc","branch","push","pr","introspection","manage","read","config","plugins","only","list","Bash","flows","load","via","questions",{"skillNo":177,"name":178,"nameZh":6,"description":179,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":180,"categories":181,"keywords":182,"publishedAt":42},"01M6PQN1EZPHRJ5XAJP2J3ZS2T","xdotcom","Read public X (Twitter) data through the read-only X API v2. Use when users share an x.com or twitter.com link, or ask what someone posted on X, what people are saying about a topic, product, or launch on X, how much chatter something got, or for a post's text, metrics, replies, or an account's recent posts. Do not use it to post, reply, like, repost, follow, or send DMs, or to read private or protected data.","https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fjunior\u002Fblob\u002Fmain\u002Fpackages\u002Fjunior-xdotcom\u002Fskills\u002Fxdotcom\u002FSKILL.md",[],[178,31,183,23,184,185,186,187,169,188,32,189,92,171,190,191,192,100,193,194,20],"posts","read-only","x api","send","twitter","chatter","people","api","share","replies","text","post",{"skillNo":196,"name":197,"nameZh":6,"description":198,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":199,"categories":200,"keywords":201,"publishedAt":42},"01M6CT5386D90KE6YH8Q8WGQZ0","vercel","Deploy and inspect Vercel apps, assign aliases, delete deployments, investigate logs, and monitor deployment outcomes. Use for Vercel deployment and log requests, not GitHub code changes or other cloud providers.","https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fjunior\u002Fblob\u002Fmain\u002Fpackages\u002Fjunior-vercel\u002Fskills\u002Fvercel\u002FSKILL.md",[],[197,202,203,204,205,206,207,208,209,210,211,32,212,93,213,214,215,23,216,217,218,219,24],"investigate","delete","outcomes","github","deployment","monitor","vercel deployment","github code","deployments","cloud","deploy","Providers","logs","log","inspect","assign","apps","changes"]