[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M788PFX4ZCVNEYG94TD3TS3C":3,"skill-same:01M788PFX4ZCVNEYG94TD3TS3C":47},{"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":19,"linkOnly":20,"markdownContent":21,"markdownBody":22,"frontMatter":23,"refName":24,"commitSha":25,"skillDirectory":26,"forksCount":27,"repositoryHtmlUrl":28,"repositoryHomepageUrl":6,"ownerHtmlUrl":29,"ownerBlogUrl":30,"ownerDescription":31,"updatedAt":32,"install":33,"resources":46},"01M788PFX4ZCVNEYG94TD3TS3C","deep-research",null,"Multi-source parallel research orchestration — decompose a question, fan out searches across the web, the local codebase, and docs, read the best sources, refine on gaps, and synthesize a cited answer. Use when the user asks to research a topic, investigate how something works, compare options (X vs Y), survey a landscape, dig into a question, or produce a well-sourced write-up that no single search answers.","jingchaodev\u002Fskills-lab","jingchaodev","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F8307474?v=4","01M788N3PES0P1DGEKSE9ZYDSD","chao","01M788N3QH1AYYGWKFG9XTX3WF",1,"MIT","https:\u002F\u002Fgithub.com\u002Fjingchaodev\u002Fskills-lab\u002Fblob\u002Fmain\u002Fskills\u002Fdeep-research\u002FSKILL.md",[],[],"2026-11-15 14:19:17",false,"---\nname: deep-research\ndescription: Multi-source parallel research orchestration — decompose a question, fan out searches across the web, the local codebase, and docs, read the best sources, refine on gaps, and synthesize a cited answer. Use when the user asks to research a topic, investigate how something works, compare options (X vs Y), survey a landscape, dig into a question, or produce a well-sourced write-up that no single search answers.\n---\n\n# Deep Research\n\nA disciplined loop for answering a question that no single search can: **decompose\n→ fan out → read → refine → synthesize**. The value is in triangulating multiple\nindependent sources and iterating until you're actually confident — not in dumping\nthe first page of search results.\n\nBuilt on two primitives already in this repo:\n\n- **`web-search`** skill — find pages by keyword query.\n- **`web-fetch`** skill — pull the readable content of a specific URL.\n\nPlus ordinary local tools for code and files: `ripgrep` (`rg`), `git grep`, `find`,\nand `Read`. For query craft across any corpus, lean on the sibling\n**`search-strategy`** skill.\n\n## When to Use\n\n| Use it when | Skip it when |\n|-------------|--------------|\n| The question needs context from several sources (web + code + docs) | The answer is a single lookup you already know where to find |\n| \"Compare X vs Y\", \"what's the latest on X\", \"how does X work\" | It's a trivial follow-up in the current conversation |\n| A claim needs corroboration before you act on it | You're being asked to *do* something (write\u002Fedit code), not *find* something |\n| You're unsure and want to verify before asserting | The answer is already in front of you |\n\nIf the goal is specifically to *verify a claim* rather than *learn a topic*, use the\n**`fact-check`** skill instead (it's the verification-focused sibling of this one).\n\n## Step 1: Decompose the Question\n\nBreak the question into 2–4 **specific sub-queries**, each targeting a different\nfacet. Generic questions get generic answers; specific sub-queries get sources.\n\n| Facet | Sub-query shape |\n|-------|-----------------|\n| **What is it?** | definition, overview, canonical name |\n| **How does it work?** | architecture, implementation, internals |\n| **Who uses it \u002F how?** | adoption, case studies, real configs |\n| **How does it compare?** | alternatives, tradeoffs, benchmarks |\n\nWrite the sub-queries down before searching. They become your fan-out plan and, later,\nthe section headings of your synthesis.\n\n## Step 2: Pick Sources per Sub-query\n\nMatch each sub-query to the source most likely to hold the answer. Don't search every\nsource for every sub-query.\n\n| Source | Tool | Best for |\n|--------|------|----------|\n| **Public web** | `web-search` → `web-fetch` | Definitions, docs, comparisons, current state of the art |\n| **Local codebase** | `rg`, `git grep`, `Read` | How *this* project actually does it — configs, call sites, contracts |\n| **Local docs \u002F notes** | `rg` over `docs\u002F`, `*.md`, READMEs | Design decisions, runbooks, prior write-ups in the repo |\n| **Team knowledge \u002F chat** | your team's chat-search or wiki tool | Recent decisions, \"why did we do it this way\", known gotchas |\n\n## Step 3: Fan Out in Parallel\n\nIndependent sub-queries have no dependencies between them — run them concurrently.\nTwo ways, depending on scale:\n\n**Lightweight (1–3 sub-queries):** issue the searches yourself in a single batch, then\nfetch the top hits.\n\n```bash\n# Fan out three keyword searches at once (each is independent)\n{web-search}\u002Fsearch.js -n 5 \"raft consensus leader election\"\n{web-search}\u002Fsearch.js -n 5 \"raft vs paxos tradeoffs\"\nrg -n \"raft|consensus|election\" --type go .\u002Finternal\n```\n\n**Heavyweight (a broad landscape, or each leg needs its own read+summarize):** spawn one\nsub-agent per sub-query so each does its own search → fetch → summarize and returns only\nthe distilled findings. Give each sub-agent: (1) the sub-query, (2) exactly what facts to\nextract, (3) the format to return (bullets with source URLs\u002Fpaths).\n\nRule of thumb: parallelize when legs are independent (comparison, landscape survey);\nstay sequential when each step depends on what the last one found (a focused deep dive).\n\n## Step 4: Read the Best Sources\n\nFor each promising hit:\n\n1. `web-fetch \u003Curl>` to read the full text; `--raw` when you need tables\u002Fstructured\n   data, `--links` to find the real page behind a landing page.\n2. Prefer **primary sources** — official docs, the project's own README\u002Fsource, spec\n   or standard, the paper itself — over blog summaries of them.\n3. Record the URL\u002Fpath **and the date** for every fact you'll cite. Recency matters;\n   a 2-year-old answer in a fast-moving area may be stale.\n4. Pick the 2–3 most authoritative sources per sub-query. Don't fetch ten pages.\n\nCredibility ladder (highest first): official docs \u002F source code → standards & papers →\nreputable engineering blogs → Q&A sites (check date + votes) → forum\u002Fthread opinions.\n\n## Step 5: Iterate Until Confident\n\nThis is the loop that separates deep research from a single search pass.\n\n```\nLOOP (max ~2–3 refinement rounds):\n  1. Lay findings against the original question. What's still missing or contradictory?\n  2. If a gap exists → formulate a REFINED query using terminology you just learned\n     (canonical names, version numbers, exact identifiers), and search again.\n  3. If sources disagree → seek a tiebreaker: go to the most primary source, or find\n     a third independent source.\n  4. If confident and sources converge → exit and synthesize.\nSTOP when: sources converge, OR 2–3 rounds yield diminishing returns (say so explicitly).\n```\n\nConfidence checklist before exiting:\n- [ ] Every claim in the answer is backed by at least one source (2+ for anything contested).\n- [ ] I searched for *contradictions*, not just confirmations.\n- [ ] I noted the recency of time-sensitive facts.\n- [ ] Remaining unknowns are named, not hidden.\n\n## Step 6: Synthesize a Cited Answer\n\nNever hand back raw search results — always distill.\n\n```markdown\n## \u003Cthe question, answered in one line up top>\n\n\u003C2–4 short paragraphs or sections mirroring your sub-queries, each claim cited inline>\n\n### Sources\n- \u003Curl or path> — what it contributed\n- \u003Curl or path> — what it contributed\n\n### Confidence: High \u002F Medium \u002F Low\n\u003Cwhy — source agreement, recency, primary vs secondary>\n\n### Gaps\n- \u003Cwhat you couldn't find or verify, and where you'd look next>\n```\n\nWhen sources conflict, say so and state which you trust more and why (e.g. \"the source\ncode shows X; a 2024 blog claims Y — trusting the source\").\n\n## Tips\n\n- **Decompose before you search.** A vague question searched verbatim returns vague pages.\n- **Parallelize independent legs, serialize dependent ones.** Comparison → parallel; deep dive → sequential.\n- **Primary sources first.** Read the docs\u002Fsource\u002Fpaper, not a blog's summary of them.\n- **Triangulate.** Never let a single blog post be ground truth — confirm across 2–3 sources.\n- **Refine with learned vocabulary.** Your second query should use the exact terms the first one taught you.\n- **Cap refinement at 2–3 rounds.** Past that, report what you have and name the gaps.\n- **Cite everything, date time-sensitive facts, and surface uncertainty** rather than papering over it.\n","# Deep Research\n\nA disciplined loop for answering a question that no single search can: **decompose\n→ fan out → read → refine → synthesize**. The value is in triangulating multiple\nindependent sources and iterating until you're actually confident — not in dumping\nthe first page of search results.\n\nBuilt on two primitives already in this repo:\n\n- **`web-search`** skill — find pages by keyword query.\n- **`web-fetch`** skill — pull the readable content of a specific URL.\n\nPlus ordinary local tools for code and files: `ripgrep` (`rg`), `git grep`, `find`,\nand `Read`. For query craft across any corpus, lean on the sibling\n**`search-strategy`** skill.\n\n## When to Use\n\n| Use it when | Skip it when |\n|-------------|--------------|\n| The question needs context from several sources (web + code + docs) | The answer is a single lookup you already know where to find |\n| \"Compare X vs Y\", \"what's the latest on X\", \"how does X work\" | It's a trivial follow-up in the current conversation |\n| A claim needs corroboration before you act on it | You're being asked to *do* something (write\u002Fedit code), not *find* something |\n| You're unsure and want to verify before asserting | The answer is already in front of you |\n\nIf the goal is specifically to *verify a claim* rather than *learn a topic*, use the\n**`fact-check`** skill instead (it's the verification-focused sibling of this one).\n\n## Step 1: Decompose the Question\n\nBreak the question into 2–4 **specific sub-queries**, each targeting a different\nfacet. Generic questions get generic answers; specific sub-queries get sources.\n\n| Facet | Sub-query shape |\n|-------|-----------------|\n| **What is it?** | definition, overview, canonical name |\n| **How does it work?** | architecture, implementation, internals |\n| **Who uses it \u002F how?** | adoption, case studies, real configs |\n| **How does it compare?** | alternatives, tradeoffs, benchmarks |\n\nWrite the sub-queries down before searching. They become your fan-out plan and, later,\nthe section headings of your synthesis.\n\n## Step 2: Pick Sources per Sub-query\n\nMatch each sub-query to the source most likely to hold the answer. Don't search every\nsource for every sub-query.\n\n| Source | Tool | Best for |\n|--------|------|----------|\n| **Public web** | `web-search` → `web-fetch` | Definitions, docs, comparisons, current state of the art |\n| **Local codebase** | `rg`, `git grep`, `Read` | How *this* project actually does it — configs, call sites, contracts |\n| **Local docs \u002F notes** | `rg` over `docs\u002F`, `*.md`, READMEs | Design decisions, runbooks, prior write-ups in the repo |\n| **Team knowledge \u002F chat** | your team's chat-search or wiki tool | Recent decisions, \"why did we do it this way\", known gotchas |\n\n## Step 3: Fan Out in Parallel\n\nIndependent sub-queries have no dependencies between them — run them concurrently.\nTwo ways, depending on scale:\n\n**Lightweight (1–3 sub-queries):** issue the searches yourself in a single batch, then\nfetch the top hits.\n\n```bash\n# Fan out three keyword searches at once (each is independent)\n{web-search}\u002Fsearch.js -n 5 \"raft consensus leader election\"\n{web-search}\u002Fsearch.js -n 5 \"raft vs paxos tradeoffs\"\nrg -n \"raft|consensus|election\" --type go .\u002Finternal\n```\n\n**Heavyweight (a broad landscape, or each leg needs its own read+summarize):** spawn one\nsub-agent per sub-query so each does its own search → fetch → summarize and returns only\nthe distilled findings. Give each sub-agent: (1) the sub-query, (2) exactly what facts to\nextract, (3) the format to return (bullets with source URLs\u002Fpaths).\n\nRule of thumb: parallelize when legs are independent (comparison, landscape survey);\nstay sequential when each step depends on what the last one found (a focused deep dive).\n\n## Step 4: Read the Best Sources\n\nFor each promising hit:\n\n1. `web-fetch \u003Curl>` to read the full text; `--raw` when you need tables\u002Fstructured\n   data, `--links` to find the real page behind a landing page.\n2. Prefer **primary sources** — official docs, the project's own README\u002Fsource, spec\n   or standard, the paper itself — over blog summaries of them.\n3. Record the URL\u002Fpath **and the date** for every fact you'll cite. Recency matters;\n   a 2-year-old answer in a fast-moving area may be stale.\n4. Pick the 2–3 most authoritative sources per sub-query. Don't fetch ten pages.\n\nCredibility ladder (highest first): official docs \u002F source code → standards & papers →\nreputable engineering blogs → Q&A sites (check date + votes) → forum\u002Fthread opinions.\n\n## Step 5: Iterate Until Confident\n\nThis is the loop that separates deep research from a single search pass.\n\n```\nLOOP (max ~2–3 refinement rounds):\n  1. Lay findings against the original question. What's still missing or contradictory?\n  2. If a gap exists → formulate a REFINED query using terminology you just learned\n     (canonical names, version numbers, exact identifiers), and search again.\n  3. If sources disagree → seek a tiebreaker: go to the most primary source, or find\n     a third independent source.\n  4. If confident and sources converge → exit and synthesize.\nSTOP when: sources converge, OR 2–3 rounds yield diminishing returns (say so explicitly).\n```\n\nConfidence checklist before exiting:\n- [ ] Every claim in the answer is backed by at least one source (2+ for anything contested).\n- [ ] I searched for *contradictions*, not just confirmations.\n- [ ] I noted the recency of time-sensitive facts.\n- [ ] Remaining unknowns are named, not hidden.\n\n## Step 6: Synthesize a Cited Answer\n\nNever hand back raw search results — always distill.\n\n```markdown\n## \u003Cthe question, answered in one line up top>\n\n\u003C2–4 short paragraphs or sections mirroring your sub-queries, each claim cited inline>\n\n### Sources\n- \u003Curl or path> — what it contributed\n- \u003Curl or path> — what it contributed\n\n### Confidence: High \u002F Medium \u002F Low\n\u003Cwhy — source agreement, recency, primary vs secondary>\n\n### Gaps\n- \u003Cwhat you couldn't find or verify, and where you'd look next>\n```\n\nWhen sources conflict, say so and state which you trust more and why (e.g. \"the source\ncode shows X; a 2024 blog claims Y — trusting the source\").\n\n## Tips\n\n- **Decompose before you search.** A vague question searched verbatim returns vague pages.\n- **Parallelize independent legs, serialize dependent ones.** Comparison → parallel; deep dive → sequential.\n- **Primary sources first.** Read the docs\u002Fsource\u002Fpaper, not a blog's summary of them.\n- **Triangulate.** Never let a single blog post be ground truth — confirm across 2–3 sources.\n- **Refine with learned vocabulary.** Your second query should use the exact terms the first one taught you.\n- **Cap refinement at 2–3 rounds.** Past that, report what you have and name the gaps.\n- **Cite everything, date time-sensitive facts, and surface uncertainty** rather than papering over it.\n",{"name":5,"description":7},"main","44b1acb2c22ab1e94663691dda7d7739f1b83cf6","skills\u002Fdeep-research",0,"https:\u002F\u002Fgithub.com\u002Fjingchaodev\u002Fskills-lab","https:\u002F\u002Fgithub.com\u002Fjingchaodev","https:\u002F\u002Fx.com\u002Fcifra1902","Developer","2026-07-13 09:03:55",{"source":8,"skillName":5,"commands":34,"prompt":44,"zipAvailable":45},[35,38,41],{"tool":36,"command":37},"npx","npx skills add jingchaodev\u002Fskills-lab --skill deep-research",{"tool":39,"command":40},"bunx","bunx skills add jingchaodev\u002Fskills-lab --skill deep-research",{"tool":42,"command":43},"pnpm","pnpm dlx skills add jingchaodev\u002Fskills-lab --skill deep-research","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjingchaodev\u002Fskills-lab\u002Fblob\u002Fmain\u002Fskills\u002Fdeep-research\u002FSKILL.md",true,[],[48,55,62,69,75,82],{"skillNo":49,"name":50,"nameZh":6,"description":51,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":52,"categories":53,"keywords":54,"publishedAt":19},"01M788VYAVHEH5QAV7T1Z8QFV9","default-skill","Valid default cwd skill.","https:\u002F\u002Fgithub.com\u002Fjingchaodev\u002Fskills-lab\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fdefault_cwd\u002Fskills\u002Fdefault-skill\u002FSKILL.md",[],[],{"skillNo":56,"name":57,"nameZh":6,"description":58,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":59,"categories":60,"keywords":61,"publishedAt":19},"01M788VVHF3TC2RY65NVPR26DN","clean-two","Another valid skill with a quoted trigger phrase \"specific action\".","https:\u002F\u002Fgithub.com\u002Fjingchaodev\u002Fskills-lab\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fclean_skills\u002Fclean-two\u002FSKILL.md",[],[],{"skillNo":63,"name":64,"nameZh":6,"description":65,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":68,"publishedAt":19},"01M788VRPGJXZ09X9AM1ZPNAHA","clean-one","Use when the user needs a clean example.","https:\u002F\u002Fgithub.com\u002Fjingchaodev\u002Fskills-lab\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fclean_skills\u002Fclean-one\u002FSKILL.md",[],[],{"skillNo":70,"name":71,"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":72,"categories":73,"keywords":74,"publishedAt":19},"01M788VPP8BFKCBXDFRHMP67WH","wrong-frontmatter","https:\u002F\u002Fgithub.com\u002Fjingchaodev\u002Fskills-lab\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fbad_skills\u002Fwrong-frontmatter\u002FSKILL.md",[],[],{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":19},"01M788VKP781ZRGKXVMHZFR062","trigger-two","Use for the exact phrase \"panic button\".","https:\u002F\u002Fgithub.com\u002Fjingchaodev\u002Fskills-lab\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fbad_skills\u002Ftrigger-two\u002FSKILL.md",[],[],{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":19},"01M788VJBR5Q14W6MJB2DWRSVE","trigger-one","Use when someone says \"panic button\".","https:\u002F\u002Fgithub.com\u002Fjingchaodev\u002Fskills-lab\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fbad_skills\u002Ftrigger-one\u002FSKILL.md",[],[]]