[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6ACT8YW06ATHK11E5NA8XAT":3,"skill-same:01M6ACT8YW06ATHK11E5NA8XAT":68},{"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":23,"linkOnly":24,"markdownContent":25,"markdownBody":26,"frontMatter":27,"refName":31,"commitSha":32,"skillDirectory":33,"forksCount":34,"repositoryHtmlUrl":35,"repositoryHomepageUrl":36,"ownerHtmlUrl":37,"ownerBlogUrl":38,"ownerDescription":6,"updatedAt":39,"install":40,"resources":53},"01M6ACT8YW06ATHK11E5NA8XAT","doris-debug-query",null,"Use for Apache Doris slow\u002Fhanging\u002Ftimeout queries. Covers FE planner (Nereids timeout), BE Profile bottlenecks, and Exchange WaitForData \u002F brpc E1008 on port 8060. Session vars: enable_profile, query_timeout, nereids_timeout_second.","apache\u002Fdoris-skills","apache","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F47359?v=4","01M6AC83E6K4FDKK7HZ8WNMQKE","The Apache Software Foundation","01M6ACSCMG5B9TTB7694HY14D0",50,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fapache\u002Fdoris-skills\u002Fblob\u002Fmain\u002Fskills\u002Fdoris-debug\u002Fquery\u002FSKILL.md",[],[19,20,21,22,9],"debug","doris","doris debug","doris debug query","2026-11-10 10:12:30",false,"---\nname: doris-debug-query\ndescription: >\n  Use for Apache Doris slow\u002Fhanging\u002Ftimeout queries. Covers FE planner (Nereids timeout),\n  BE Profile bottlenecks, and Exchange WaitForData \u002F brpc E1008 on port 8060.\n  Session vars: enable_profile, query_timeout, nereids_timeout_second.\nversion: 0.2.0\ncategory: query\n---\n\n# Query Troubleshooting\n\n## Causes\n\n| ID | Cause | Evidence |\n|----|-------|----------|\n| A | Client timeout too small | `query_timeout` vs Profile wall |\n| B | Planner | `Nereids cost too much time` \u002F `nereids_timeout_second` |\n| C | BE compute (scan\u002Fjoin\u002Fspill) | Profile active ExecTime |\n| D | Exchange \u002F brpc | WaitForData ≈ timeout; `failed to send brpc when exchange`; `[E1008]` on `:8060` |\n\n## 10 min\n\n```sql\nSET enable_profile = true;\n-- reproduce\n```\n\n```bash\n.\u002Fscripts\u002Fdoris-debug log-grep fe\u002Flog be\u002Flog --query-id \"$QID\" --pack planner\n.\u002Fscripts\u002Fdoris-debug log-grep be\u002Flog --query-id \"$QID\" --pack exchange\n.\u002Fscripts\u002Fdoris-debug audit-topk fe\u002Flog\u002Ffe.audit.log -k 20 --min-ms 5000\n```\n\nPlanner mitigation (session only): `SET disable_join_reorder=true;` for fat ETL joins; fix stats with `ANALYZE`.\n\n## Cause C — BE compute (scan\u002Fjoin\u002Fspill)\n\nWhen Profile shows high active ExecTime (not Wait\\*), route to **doris-profile-reader** for deep Profile analysis:\n\n> **Skill routing**: If `doris-profile-reader` is available, invoke it with the query's Profile to identify which operator (scan\u002Fjoin\u002Fagg\u002Fspill) dominates. Key indicators to pass:\n> - `ActiveTime` per operator\n> - `RowsRead` \u002F `ScanBytes` for scan operators\n> - `SpillDataSize` if disk spill occurred\n> - `JoinType` + `JoinRows` for join operators\n\nWithout profile-reader, check directly:\n```bash\n# Get the Profile text\ncurl -s \"http:\u002F\u002F$FE:8030\u002Fapi\u002Fquery_profile?query_id=$QID\"\n```\n\nKey Profile counters for Cause C:\n| Counter | Meaning | Threshold |\n|---------|---------|-----------|\n| `ScannerGetBlockTime` | Time reading from storage | > 50% of ExecTime → IO bound |\n| `SpillDataSize` | Data spilled to disk | > 0 → memory pressure, check `enable_spill` |\n| `JoinProbeTime` | Hash join probe wall time | > 30% → check join order \u002F type |\n| `RowsRead` \u002F `ScanBytes` | Scan volume | > 1B rows → check partition pruning |\n\nProfile interpretation: prefer active time over Wait\\*.\n\n## Cause D — Exchange \u002F brpc\n\nCode facts (apache\u002Fdoris):\n\n1. Error text in `be\u002Fsrc\u002Fexec\u002Foperator\u002Fexchange_sink_buffer.h`.\n2. `GET \u002Fapi\u002Freset_rpc_channel\u002F{endpoints}` clears **`brpc_internal_client_cache` only** (`reset_rpc_channel_action.cpp`).\n3. `enable_brpc_connection_check` (default false) → `FragmentMgr::_check_brpc_available` hand_shake; consecutive failures erase internal cache.\n\n```bash\ncurl -s \"http:\u002F\u002F$BE:8040\u002Fapi\u002Freset_rpc_channel\u002Fall\"\n```\n\n```properties\n# be.conf — restart for static DEFINE_Bool\nenable_brpc_connection_check = true\nbrpc_connection_check_timeout_ms = 10000\n```\n\nDo not trust ICMP alone. Check `priority_networks`.\n\n## Source\n\n- `SessionVariable.java` — `QUERY_TIMEOUT`, `NEREIDS_TIMEOUT_SECOND`\n- Profile WaitForData — exchange source operator\n- `exchange_sink_buffer.h`, `reset_rpc_channel_action.cpp`, `fragment_mgr.cpp`\n","# Query Troubleshooting\n\n## Causes\n\n| ID | Cause | Evidence |\n|----|-------|----------|\n| A | Client timeout too small | `query_timeout` vs Profile wall |\n| B | Planner | `Nereids cost too much time` \u002F `nereids_timeout_second` |\n| C | BE compute (scan\u002Fjoin\u002Fspill) | Profile active ExecTime |\n| D | Exchange \u002F brpc | WaitForData ≈ timeout; `failed to send brpc when exchange`; `[E1008]` on `:8060` |\n\n## 10 min\n\n```sql\nSET enable_profile = true;\n-- reproduce\n```\n\n```bash\n.\u002Fscripts\u002Fdoris-debug log-grep fe\u002Flog be\u002Flog --query-id \"$QID\" --pack planner\n.\u002Fscripts\u002Fdoris-debug log-grep be\u002Flog --query-id \"$QID\" --pack exchange\n.\u002Fscripts\u002Fdoris-debug audit-topk fe\u002Flog\u002Ffe.audit.log -k 20 --min-ms 5000\n```\n\nPlanner mitigation (session only): `SET disable_join_reorder=true;` for fat ETL joins; fix stats with `ANALYZE`.\n\n## Cause C — BE compute (scan\u002Fjoin\u002Fspill)\n\nWhen Profile shows high active ExecTime (not Wait\\*), route to **doris-profile-reader** for deep Profile analysis:\n\n> **Skill routing**: If `doris-profile-reader` is available, invoke it with the query's Profile to identify which operator (scan\u002Fjoin\u002Fagg\u002Fspill) dominates. Key indicators to pass:\n> - `ActiveTime` per operator\n> - `RowsRead` \u002F `ScanBytes` for scan operators\n> - `SpillDataSize` if disk spill occurred\n> - `JoinType` + `JoinRows` for join operators\n\nWithout profile-reader, check directly:\n```bash\n# Get the Profile text\ncurl -s \"http:\u002F\u002F$FE:8030\u002Fapi\u002Fquery_profile?query_id=$QID\"\n```\n\nKey Profile counters for Cause C:\n| Counter | Meaning | Threshold |\n|---------|---------|-----------|\n| `ScannerGetBlockTime` | Time reading from storage | > 50% of ExecTime → IO bound |\n| `SpillDataSize` | Data spilled to disk | > 0 → memory pressure, check `enable_spill` |\n| `JoinProbeTime` | Hash join probe wall time | > 30% → check join order \u002F type |\n| `RowsRead` \u002F `ScanBytes` | Scan volume | > 1B rows → check partition pruning |\n\nProfile interpretation: prefer active time over Wait\\*.\n\n## Cause D — Exchange \u002F brpc\n\nCode facts (apache\u002Fdoris):\n\n1. Error text in `be\u002Fsrc\u002Fexec\u002Foperator\u002Fexchange_sink_buffer.h`.\n2. `GET \u002Fapi\u002Freset_rpc_channel\u002F{endpoints}` clears **`brpc_internal_client_cache` only** (`reset_rpc_channel_action.cpp`).\n3. `enable_brpc_connection_check` (default false) → `FragmentMgr::_check_brpc_available` hand_shake; consecutive failures erase internal cache.\n\n```bash\ncurl -s \"http:\u002F\u002F$BE:8040\u002Fapi\u002Freset_rpc_channel\u002Fall\"\n```\n\n```properties\n# be.conf — restart for static DEFINE_Bool\nenable_brpc_connection_check = true\nbrpc_connection_check_timeout_ms = 10000\n```\n\nDo not trust ICMP alone. Check `priority_networks`.\n\n## Source\n\n- `SessionVariable.java` — `QUERY_TIMEOUT`, `NEREIDS_TIMEOUT_SECOND`\n- Profile WaitForData — exchange source operator\n- `exchange_sink_buffer.h`, `reset_rpc_channel_action.cpp`, `fragment_mgr.cpp`\n",{"name":5,"version":28,"category":29,"description":30},"0.2.0","query","Use for Apache Doris slow\u002Fhanging\u002Ftimeout queries. Covers FE planner (Nereids timeout), BE Profile bottlenecks, and Exchange WaitForData \u002F brpc E1008 on port 8060. Session vars: enable_profile, query_timeout, nereids_timeout_second.\n","main","3f49b0021e7900d691790da5feec34034826b970","skills\u002Fdoris-debug\u002Fquery",15,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fdoris-skills","https:\u002F\u002Fdoris.apache.org","https:\u002F\u002Fgithub.com\u002Fapache","https:\u002F\u002Fwww.apache.org\u002F","2026-11-04 15:50:17",{"source":8,"skillName":5,"commands":41,"prompt":51,"zipAvailable":52},[42,45,48],{"tool":43,"command":44},"npx","npx skills add apache\u002Fdoris-skills --skill doris-debug-query",{"tool":46,"command":47},"bunx","bunx skills add apache\u002Fdoris-skills --skill doris-debug-query",{"tool":49,"command":50},"pnpm","pnpm dlx skills add apache\u002Fdoris-skills --skill doris-debug-query","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fapache\u002Fdoris-skills\u002Fblob\u002Fmain\u002Fskills\u002Fdoris-debug\u002Fquery\u002FSKILL.md",true,[54,60,64],{"path":55,"resourceType":56,"resourceTypeDesc":57,"sizeBytes":58,"sourceHtmlUrl":59},"references\u002Fcase-001-exchange-waitfordata.md","REFERENCE","参考文档",388,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fdoris-skills\u002Fblob\u002Fmain\u002Fskills\u002Fdoris-debug\u002Fquery\u002Freferences\u002Fcase-001-exchange-waitfordata.md",{"path":61,"resourceType":56,"resourceTypeDesc":57,"sizeBytes":62,"sourceHtmlUrl":63},"references\u002Fcase-002-plan-time-iceberg-rpc.md",3798,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fdoris-skills\u002Fblob\u002Fmain\u002Fskills\u002Fdoris-debug\u002Fquery\u002Freferences\u002Fcase-002-plan-time-iceberg-rpc.md",{"path":65,"resourceType":56,"resourceTypeDesc":57,"sizeBytes":66,"sourceHtmlUrl":67},"references\u002Fcase-003-exchange-e11-fanout.md",5142,"https:\u002F\u002Fgithub.com\u002Fapache\u002Fdoris-skills\u002Fblob\u002Fmain\u002Fskills\u002Fdoris-debug\u002Fquery\u002Freferences\u002Fcase-003-exchange-e11-fanout.md",[69,99,110,131,143,152],{"skillNo":70,"name":71,"nameZh":6,"description":72,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":73,"categories":74,"keywords":80,"publishedAt":23},"01M6M1B6Y0NBNVC1WN8QEVGZ28","doris-pr-description","Write, rewrite, or check the title and description of an Apache Doris pull request against the Doris PR standard. Takes the facts from the handoff file that development left when there is one, and collects them from the diff, commits, linked issue, and existing tests otherwise; classifies the PR type, fills that type's required fields, drafts the issue a Feature needs, validates the draft with a bundled checker, and creates or updates the PR on GitHub only after the user confirms. Use whenever the user wants to open, create, submit, or update a Doris PR; write, fix, or improve a PR title or description; prepare a branch for review; rewrite an existing PR's description for comparison; or check whether a description meets the standard. Also use for short requests in any language, such as \"open a PR\", \"write the PR description\", or \"is this PR description good enough?\", even when the standard is not mentioned.","https:\u002F\u002Fgithub.com\u002Fapache\u002Fdoris-skills\u002Fblob\u002Fmain\u002Fskills\u002Fdoris-pr-description\u002FSKILL.md",[75],{"categoryNo":76,"categoryName":77,"taxonomyType":78,"taxonomyTypeDesc":79},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[81,82,20,83,84,85,86,87,88,9,89,90,91,92,93,94,95,96,97,98],"pr","pr description","doris pr description","open","request","updates","create","update","checker","improve","branch","short","fix","good","only","pr title","submit","review",{"skillNo":100,"name":101,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":102,"categories":103,"keywords":105,"publishedAt":23},"01M6M1B0334YPC8P5KQ11V0JX8","develop-with-evidence","https:\u002F\u002Fgithub.com\u002Fapache\u002Fdoris-skills\u002Fblob\u002Fmain\u002Fskills\u002Fdevelop-with-evidence\u002FSKILL.md",[104],{"categoryNo":76,"categoryName":77,"taxonomyType":78,"taxonomyTypeDesc":79},[106,107,108,109],"develop with evidence","with","evidence","develop",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":120,"publishedAt":23},"01M6ACTH4YX29N7GXTT61H6WTK","doris-repo-review","Review an Apache Doris PR from a local clone with the same multi-agent, shared-ledger convergence workflow as the CI Code Review Runner. Use when the user supplies a PR to `\u002Fdoris-repo-review`, asks to review a Doris PR locally, or asks for the CI-style review flow. Safely align only the current worktree to the exact PR head, refuse to disturb tracked local changes, write equivalent English and Chinese review documents with verified path-line anchors, and never build, test, or edit source. Treat a review as pipeline-equivalent only when an explicitly selected qualified reviewer uses a supported effort (xhigh or max, plus ultra for Codex), preferring GPT-6 Astra on Codex and Fable 5.1 on Claude Code. After a converged APPROVE result, automatically post one machine-readable PASS comment bound to the reviewed commit.","https:\u002F\u002Fgithub.com\u002Fapache\u002Fdoris-skills\u002Fblob\u002Fmain\u002Fskills\u002Fdoris-repo-review\u002FSKILL.md",[116,119],{"categoryNo":117,"categoryName":118,"taxonomyType":78,"taxonomyTypeDesc":79},"01JBSEEDCAT000000000000007","代码审查",{"categoryNo":76,"categoryName":77,"taxonomyType":78,"taxonomyTypeDesc":79},[121,20,98,9,122,123,124,125,126,127,81,128,129,130],"doris repo review","codex","code review","workflow","test","commit","documents","code","gpt","worktree",{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":138,"publishedAt":23},"01M6ACTEQZ2S4PDZ2MW3C12HJ4","doris-profile-reader","Interpret Apache Doris query runtime profiles, especially profile bottleneck triage, misleading wait counters, per-operator metric priority, scan, join-order\u002Fruntime-filter analysis, and evidence-bounded performance explanations. Use when given a Doris profile, query id, profile URL\u002Ftext, or a request to explain Doris query performance.","https:\u002F\u002Fgithub.com\u002Fapache\u002Fdoris-skills\u002Fblob\u002Fmain\u002Fskills\u002Fdoris-profile-reader\u002FSKILL.md",[137],{"categoryNo":76,"categoryName":77,"taxonomyType":78,"taxonomyTypeDesc":79},[139,20,140,141,9,142],"doris profile reader","performance","triage","operator",{"skillNo":144,"name":145,"nameZh":6,"description":146,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":147,"categories":148,"keywords":149,"publishedAt":23},"01M6ACTCZC9VCV91Q0RVNZC2R5","doris-debug-tablet","Use for Doris tablet\u002Freplica health, version skew, clone backlog, disk balance, and tablet repair. Commands: SHOW PROC tablet_health, SHOW TABLET, ADMIN REPAIR.","https:\u002F\u002Fgithub.com\u002Fapache\u002Fdoris-skills\u002Fblob\u002Fmain\u002Fskills\u002Fdoris-debug\u002Ftablet\u002FSKILL.md",[],[21,20,150,19,151],"doris debug tablet","admin",{"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":23},"01M6ACTAVGGVYTAWTPMMZYS71J","doris-debug-resource-isolation","Use for Doris Workload Group \u002F resource tag queue starvation, CPU\u002Fmemory isolation leaks, and workload policy debugging. Commands: SHOW WORKLOAD GROUPS, EXPLAIN resource.","https:\u002F\u002Fgithub.com\u002Fapache\u002Fdoris-skills\u002Fblob\u002Fmain\u002Fskills\u002Fdoris-debug\u002Fresource-isolation\u002FSKILL.md",[],[19,20,21,159,160,161,162,163],"doris debug resource isolation","memory","workload","debugging","policy"]