[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71K6N114SDDEWFRRNJWYP0W":3,"skill-same:01M71K6N114SDDEWFRRNJWYP0W":78},{"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":31,"publishedAt":51,"linkOnly":52,"markdownContent":53,"markdownBody":54,"frontMatter":55,"refName":57,"commitSha":58,"skillDirectory":59,"forksCount":60,"repositoryHtmlUrl":61,"repositoryHomepageUrl":6,"ownerHtmlUrl":62,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":63,"install":64,"resources":77},"01M71K6N114SDDEWFRRNJWYP0W","research",null,"Deep research on any topic using parallel agents, web search, and cross-referencing. Use when user asks to research, investigate, or deeply analyze a topic, technology, library, or concept. Triggers on keywords like \"research\", \"investigate\", \"deep dive\", \"find out everything about\". Supports `--angle` presets for common specializations (competitors, design-refs).","KeiSeiLab\u002FKeiSeiKit","KeiSeiLab","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F283315582?v=4","01M71K2EW81JRFHSGF0T844B32","KeiSei Lab","01M71K2EWXTB52KWC65E55S6M2",7,"Apache-2.0","https:\u002F\u002Fgithub.com\u002FKeiSeiLab\u002FKeiSeiKit\u002Fblob\u002Fmain\u002Fskills\u002Fresearch\u002FSKILL.md",[18,23,26],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000015","视觉设计","SCENARIO","使用场景",{"categoryNo":24,"categoryName":25,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",{"categoryNo":27,"categoryName":28,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000032","设计师","PROFESSION","适用职业",[5,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50],"analyze","use","technology","triggers","for","concept","parallel","competitors","parallel agents","library","common","when","question","design","search","deep dive","web search","deep research","deep","2026-11-10 10:12:30",false,"---\nname: research\ndescription: Deep research on any topic using parallel agents, web search, and cross-referencing. Use when user asks to research, investigate, or deeply analyze a topic, technology, library, or concept. Triggers on keywords like \"research\", \"investigate\", \"deep dive\", \"find out everything about\". Supports `--angle` presets for common specializations (competitors, design-refs).\nargument-hint: \u003Ctopic or question> [--angle=competitors|design-refs]\n---\n\n## Angle presets (Phase-5 specializations)\n\n`\u002Fresearch` is the source-of-truth skill for deep research. Two common\nspecializations of Phase 5 are available as `--angle` presets — pick via\n`AskUserQuestion` in Phase 1 (or surfaced directly from the CLI):\n\n| Angle | Phase-5 focus | Replaces (deprecated) |\n|---|---|---|\n| `--angle=competitors` | `practical` + `arch-analyst` + `trends` weighted; kill-list includes marketing-only competitor pages | `\u002Fcompetitor-analysis` |\n| `--angle=design-refs` | `web-researcher` weighted toward Awwwards\u002FGodly\u002FSiteInspire; `arch-analyst` weighted toward visual archetype + motion tier; `kei-critic` checks stale AI-slop patterns | `\u002Fdesign-inspiration` |\n| (none — default) | Full 9-angle verification (numbers \u002F critique \u002F competitors \u002F docs \u002F stacks \u002F competitor-arch \u002F academic \u002F intersections \u002F trends) | — |\n\nThe preset is a Phase-1 question option; it does not add a new pipeline —\nit just re-weights the Phase-5 teammate mix. Users who want the old\nstandalone skills can still invoke `\u002Fcompetitor-analysis` or\n`\u002Fdesign-inspiration` (both route here).\n\n\n> **Role-tag convention.** Names like `web-researcher`, `meta-critic`,\n> `arch-analyst`, `{component}-critic` that appear later in this skill are\n> ad-hoc role tags passed to the generic `kei-researcher` subagent inside\n> its prompt — they are NOT separate manifests in the kit. Do not grep for\n> them in `_manifests\u002F`; they will not be found. The only manifest behind\n> every research teammate is `kei-researcher`.\n\n# Deep Research Skill\n\nYou are conducting deep research on: $ARGUMENTS\n\n> [REQUIRES: optional knowledge vault] This skill persists research output to\n> a markdown knowledge vault at `$KNOWLEDGE_VAULT` (conventional default:\n> `$HOME\u002FProjects\u002FKnowledgeVault\u002F`). If you don't maintain a vault, use any\n> stable directory (e.g. `$HOME\u002Fresearch\u002F`) — the skill will create\n> subdirectories as needed. Skip the vault-read phases if empty.\n>\n> [REQUIRES: team tools] The skill uses Claude Code's team orchestration\n> tools (`TeamCreate`, `TaskCreate`, `TaskUpdate`, `TeamDelete`). If your\n> Claude Code install lacks team tooling, run the phases sequentially with\n> single agents instead of parallel teammates.\n>\n> [OPTIONAL: project registry] If you maintain a project registry (e.g. in\n> `$HOME\u002F.claude\u002FCLAUDE.md` or `$HOME\u002F.claude\u002Fmemory\u002FMEMORY.md`), the\n> `intersections` agent in Phase 5 reads it to find cross-project links.\n> Skip that agent if you have no registry.\n\n## PHASE -1: MANDATORY USER CHOICE — Variant + Control Level\n\n> **BEFORE any work**, ask the user two questions via `AskUserQuestion` (terminal option-picker, NOT free-text).\n> **Send BOTH questions in ONE `AskUserQuestion` call** (questions array of 2) so the user picks both in one prompt.\n\n### Question 1 — \"Research depth variant\"\n\nOptions (pick ONE):\n\n- **A — Light (2-stage, ~15 min)** — Discovery wave → verification pass. 3-5 agents total. Structured report, no graph, no 9-angle verification. Use for: quick fact-checks, tool comparisons, shallow context.\n- **B — Standard (8-phase, ~40 min)** — Current default. Discovery (5 agents) → cross-ref → report → vault save → **9-angle verification wave** → synthesis → graph indexing → cleanup. Full report + graph.json + intersections.md. Use for: technology choice, architectural decisions, competitor mapping.\n- **C — Deep Decomposition (wave-based, ~1-2h)** — Wave 0 decomposes question → Wave 1 parallel angle exploration per component → Wave 2 \"two-touches rule\" expansion (find what was missed; expand each finding via 2 touches upstream\u002Fdownstream) → Wave 3 cross-analysis + re-expansion of found paths. Each agent writes its own file. Mandatory self-cleanup at end. 15-30+ agents. Outputs component-report-per-file + master synthesis + graph + intersection matrix. Use for: deep-domain research, new domain entry, major strategic decisions.\n\n### Question 2 — \"Control level\"\n\nOptions (pick ONE):\n\n- **1 — Full control** — Lead confirms EVERY agent spawn before it fires. You (lead) present a preview of the next wave's tasks and wait for user approval. Safest; slowest. Use when topic is sensitive, cost-critical, or decomposition untrusted.\n- **2 — Confirm branches only** — Lead spawns Wave 1 + discovery automatically. Confirms ONLY at (a) verification-wave start, (b) two-touches expansion branches, (c) any NEW domain a finding opens. Middle ground.\n- **3 — Max autonomy** — Lead self-approves all waves + branches via internal critique + confidence grading. User sees final report only. Fastest; requires trust. Use when topic well-scoped and user is away.\n\n### How to send (one AskUserQuestion call, 2 questions)\n\n```json\n{\n  \"questions\": [\n    {\n      \"question\": \"Research depth variant?\",\n      \"header\": \"Depth\",\n      \"multiSelect\": false,\n      \"options\": [\n        {\"label\": \"A — Light (2-stage, ~15 min)\",            \"description\": \"Discovery + verification. 3-5 agents. Report only.\"},\n        {\"label\": \"B — Standard (8-phase, ~40 min)\",          \"description\": \"Full current flow. 9-angle verification. Graph + intersections.\"},\n        {\"label\": \"C — Deep decomposition (wave-based, ~1-2h)\", \"description\": \"Decompose → per-component → two-touches → cross-analysis. 15-30+ agents.\"}\n      ]\n    },\n    {\n      \"question\": \"Control level?\",\n      \"header\": \"Control\",\n      \"multiSelect\": false,\n      \"options\": [\n        {\"label\": \"1 — Full control (confirm each spawn)\", \"description\": \"You approve every agent before it fires.\"},\n        {\"label\": \"2 — Confirm branches only\",             \"description\": \"Auto discovery. Ask before verification + new branches.\"},\n        {\"label\": \"3 — Max autonomy\",                      \"description\": \"Self-approve via internal critique. Final report only.\"}\n      ]\n    },\n    {\n      \"question\": \"Backend distribution?\",\n      \"header\": \"Backends\",\n      \"multiSelect\": false,\n      \"options\": [\n        {\"label\": \"Claude only (default)\",       \"description\": \"Every agent on Claude. Lowest setup cost.\"},\n        {\"label\": \"Multi-LLM (--backends=multi)\", \"description\": \"Distribute across installed CLIs (grok\u002Fkimi\u002Fcopilot\u002Fagy). See ## Multi-LLM routing.\"}\n      ]\n    }\n  ]\n}\n```\n\nAlso accept `--backends=multi` as a direct CLI flag (skips the third\nprompt). The prompt fires on **every** Mode (A \u002F B \u002F C) — user always\ngets the choice, even for the 3-5 agent Light mode.\n\nRoute to matching section based on pair {A|B|C, 1|2|3}:\n- A → \"## Variant A — Light\" (below)\n- B → original 8-phase flow (current Phase 0-8)\n- C → \"## Variant C — Deep Decomposition\" (below)\n\nControl-level logic applies to ALL variants:\n- **L1** — before EVERY `TaskCreate` + agent spawn, invoke `AskUserQuestion` with options {Approve | Modify | Skip}\n- **L2** — auto-spawn discovery waves; `AskUserQuestion` ONLY before verification waves + new-branch spawns\n- **L3** — no user prompts; apply `kei-critic` teammate self-evaluation on each wave output before proceeding\n\n---\n\n## Multi-LLM routing (`--backends=multi`)\n\nBy default every spawned agent runs on Claude (the orchestrator's own\nbackend). With `--backends=multi` the lead distributes per-angle agents\nacross whatever external CLI subscriptions are installed locally,\namortising cost across providers and getting cross-model diversity (the\nv0.62 audit empirically showed different models surface different\nissues).\n\n**Default angle → backend mapping** (override via `--backend-\u003Cangle>=\u003Ccli>`):\n\n| Angle | Backend | Rationale |\n|---|---|---|\n| `web` | `claude` | Native `WebFetch` \u002F `WebSearch` tools, no shell-out cost |\n| `critic` | `grok` | Independent reasoning trace from a different vendor |\n| `practical` | `kimi` | Cheap long-context for example mining |\n| `docs` | `copilot` | Long-context navigation, good for spec PDFs |\n| `academic` | `agy` | Gemini's RAG \u002F citation strength |\n| `synthesis` (Wave 3) | `claude` | Orchestrator needs structured output for graph emission |\n\n**Discovery** — at Wave 1 start, the lead probes which CLIs are\ninstalled:\n\n```bash\nfor b in claude grok kimi copilot agy; do\n  command -v \"$b\" >\u002Fdev\u002Fnull 2>&1 && echo \"$b ok\"\ndone\n```\n\n**Graceful degrade** — if a mapped backend is absent, that angle falls\nback to claude. The lead logs `wave1-{component}-{angle}.md` header\nwith the actual backend that ran (truth-in-output).\n\n**Spawn invocation** — the lead emits one of two patterns per agent:\n\n```\n# Claude-side (Agent tool, in-process):\nAgent(subagent_type=\"researcher\", prompt=\"\u003Cangle prompt>\", ...)\n\n# External-CLI side (Bash run_in_background → kei agent):\nnohup kei agent --on=\u003Cbackend> researcher \"\u003Cangle prompt>\" \\\n     > \u002Ftmp\u002Fresearch\u002F\u003Ctopic>\u002Fwave1-\u003Ccomponent>-\u003Cangle>.stdout \\\n     2>\u002Ftmp\u002Fresearch\u002F\u003Ctopic>\u002Fwave1-\u003Ccomponent>-\u003Cangle>.stderr &\n```\n\nThe lead aggregates results by reading the `.stdout` files at the end\nof each wave (same as a Claude subagent's return value).\n\n**Cost note** — `kei limits` reports per-CLI usage. Watch grok \u002F agy\nwhich are paid per call. A typical 20-agent Wave 1 hits each CLI\n~4-5×; well below daily caps for all tested subscriptions in 2026-06.\n\n**Multi-LLM is available in every mode** (A \u002F B \u002F C). The wizard\nALWAYS asks. Even Mode A's 3-5 agents benefit from cross-model\ndiversity when the topic is contested.\n\n---\n\n## Variant A — Light (2-stage)\n\n**Phase 0:** Check knowledge vault (same as standard).\n\n**Phase 1:** Spawn 3 teammates in parallel:\n- `web-researcher` — WebSearch\u002FWebFetch top 10 findings\n- `kei-critic` — limitations, alternatives, failure stories\n- `practical` — real-world use cases + prior art\n\n**Phase 2:** Cross-reference + verify + confidence grading (you, lead).\n\n**Phase 3:** Structured report + save to `$KNOWLEDGE_VAULT\u002Fresearch\u002F{topic}-light\u002F`.\n\n**Phase 4:** Cleanup — `TeamDelete`. No graph, no 9-angle, no two-touches.\n\n---\n\n## Variant C — Deep Decomposition (wave-based)\n\n### Wave 0 — Decomposition (lead-only, no spawn)\n\nBreak the research question into 3-7 orthogonal components. Each component must be:\n- Independently explorable (no circular dependency)\n- Concrete (not \"the whole topic\" recursively)\n- Evidence-gradable\n\nSave decomposition to `$KNOWLEDGE_VAULT\u002Fresearch\u002F{topic}\u002F00-decomposition.md`. **If L1 control: show decomposition to user via `AskUserQuestion` with options {Approve | Request changes | Abort} before Wave 1.**\n\n### Wave 1 — Per-component angle exploration (parallel spawn)\n\nFor EACH component from Wave 0, spawn 3-5 angle-specific agents:\n- `{component}-web` — WebSearch\u002FWebFetch for this component only\n- `{component}-critic` — issues\u002Flimitations specific to this component\n- `{component}-practical` — real-world examples of this component\n- `{component}-docs` — official documentation (conditional)\n- `{component}-academic` — papers\u002FarXiv (conditional, only for tech\u002FML\u002Fmath)\n\n**Typical spawn count: 5 components × 4 angles = 20 agents.** Each writes to `{topic}\u002Fwave1-{component}-{angle}.md`.\n\n**If L1 control: ask user before spawning each component's wave (5 prompts).**\n**If L2 control: auto-spawn all Wave 1.**\n**If L3 control: auto-spawn all, self-critique each output.**\n\n### Wave 2 — Two-touches rule expansion\n\nFor EACH Wave 1 finding, apply \"two-touches rule\":\n- **Touch 1** — What does this finding directly depend on? (upstream)\n- **Touch 2** — What does this finding enable or block? (downstream)\n\nBoth touches MUST be explored — not just adjacent facts, but second-order consequences. If Wave 1 mentioned \"Rust async uses tokio\", Touch 1 = \"what tokio depends on (mio, futures-rs)\", Touch 2 = \"what consuming tokio affects (debuggability, compile time, binary size)\".\n\nSpawn one agent per (finding × two-touches) pair, or bundle by component. Each writes to `wave2-{component}-expansion.md`.\n\n**Also run a dedicated `{component}-gaps` agent per component:** \"what was NOT covered in Wave 1 for this component? What angle is missing? What should have been asked but wasn't?\"\n\n**If L1 control: user approves expansion list.**\n**If L2 control: user approves NEW domains opened by expansion.**\n**If L3 control: self-evaluate which branches are worth expanding; auto-approve.**\n\n### Wave 3 — Cross-analysis + re-expansion\n\nNow that Waves 1-2 have generated 30-50 .md files, run 5-7 synthesis agents:\n1. `cross-analyst` — which findings across components CONFLICT? Build conflict matrix.\n2. `gap-closer` — which gaps from Wave 2 `-gaps` agents are still open? Can any be closed with one more agent?\n3. `integration-mapper` — how do components connect to each other + to existing projects (read Project Registry)?\n4. `evidence-auditor` — re-grade ALL claims across all files. Downgrade unverified. Flag `[DISPUTED]`.\n5. `timing-analyst` — what's urgent, what's deferred, what's already obsolete?\n6. `meta-critic` — final adversarial pass. \"Is this research actually useful or just a pile of data?\"\n\nAny finding marked for re-expansion: spawn one more agent for that specific thread.\n\n**If L1 control: user sees synthesis plan, approves.**\n**If L2 control: user approves re-expansion branches.**\n**If L3 control: auto-proceed.**\n\n### Wave 4 — Master synthesis (lead)\n\nLead writes master document at `{topic}\u002FMASTER-REPORT.md` containing:\n- Executive summary (2-3 sentences)\n- Per-component findings (linked to wave1\u002Fwave2 files)\n- Cross-component conflicts + resolutions\n- Project-registry intersections\n- Evidence grades + confidence matrix\n- Timing recommendation\n- Open gaps (what COULDN'T be answered even with deep decomposition)\n\nPlus `graph.json` cumulative update + `intersections.md`.\n\n### Wave 5 — Cleanup (mandatory — no orphaned agents or stale files left behind)\n\n1. `shutdown_request` to ALL teammates\n2. `TeamDelete`\n3. Verify no orphaned agents\n4. Commit all research files to git (in knowledge vault repo if versioned)\n5. Update `$KNOWLEDGE_VAULT\u002Fknowledge\u002Fresearch-graph.json` master index\n6. Append one-line entry to `$KNOWLEDGE_VAULT\u002Fknowledge\u002Fresearch-index.md`\n\n---\n\n## CRITICAL: Team-Based Orchestration\n\n> **ALWAYS create a team for research.** This is mandatory, not optional.\n>\n> **Step 1:** Call `TeamCreate` with `team_name: \"research-{topic-slug}\"` (e.g., \"research-rust-async-runtimes\")\n> **Step 2:** Create tasks via `TaskCreate` for each research angle\n> **Step 3:** Spawn named teammates via `Task` tool with `team_name` parameter\n> **Step 4:** Assign tasks to teammates via `TaskUpdate`\n> **Step 5:** Teammates work, mark tasks completed, go idle\n> **Step 6:** You (lead) synthesize results, create Phase 2 tasks, assign to idle teammates\n> **Step 7:** After all phases — `shutdown_request` to all teammates, then `TeamDelete`\n>\n> **WHY teams:** Task lists give visibility. Named teammates can be re-assigned across phases.\n> Idle teammates from Phase 1 get reused in Phase 5 — no wasted spawns.\n>\n> **Teammate naming convention:**\n> - Phase 1: `web-researcher`, `code-explorer`, `kei-critic`, `practical`, `docs`\n> - Phase 5: reuse same teammates with new tasks (they keep context!)\n> - If topic doesn't need code exploration, skip `code-explorer` — spawn only what's needed\n>\n> **Execution pattern:**\n> 1. Phase 0 — you do this yourself (Read vault files)\n> 2. TeamCreate + TaskCreate for Phase 1 tasks\n> 3. Spawn 3-5 teammates IN PARALLEL (single message, multiple Task calls with team_name)\n> 4. Assign Phase 1 tasks to teammates\n> 5. Wait for teammates to complete (they send messages when done)\n> 6. Phase 2-3 — you do this yourself (cross-reference + report)\n> 7. Phase 4 — you do this yourself (save to vault)\n> 8. Create Phase 5 tasks, assign to EXISTING idle teammates (reuse, don't spawn new)\n> 9. If Phase 5 needs >5 agents, spawn additional teammates\n> 10. Wait for Phase 5 completion\n> 11. Phase 6-7 — you do this yourself (synthesis + graph)\n> 12. Shutdown all teammates, TeamDelete\n>\n> **NEVER use `run_in_background: true`** — you need their results to proceed.\n\n## Process\n\n### Phase 0: Check knowledge vault Vault\n\nBefore web search, check existing knowledge:\n1. Read `$KNOWLEDGE_VAULT\u002Fknowledge\u002F` MOC notes for relevant existing findings\n2. Search `$KNOWLEDGE_VAULT\u002Fresearch\u002F` for related prior research\n3. Check `$KNOWLEDGE_VAULT\u002Fknowledge\u002Fwrong-paths.md` for known dead ends on this topic\n4. Use findings to focus web search on GAPS, not re-research known facts\n\n### Phase 1: Parallel Discovery (3-5 teammates)\n\nCreate tasks and assign to teammates:\n\n1. **web-researcher** — Use WebSearch + WebFetch to find latest articles, docs, repos, benchmarks. Return top 10 findings with URLs.\n\n2. **code-explorer** — If topic relates to code\u002Flibrary, search the codebase and npm\u002Fpypi\u002Fgithub for implementations, examples, patterns. [CONDITIONAL: skip if not code-related]\n\n3. **kei-critic** — Search for criticisms, limitations, known issues, alternatives. Find \"X vs Y\" comparisons, migration guides, deprecation notices.\n\n4. **practical** — Find real-world usage examples, case studies, production stories. Check GitHub issues, Stack Overflow, blog posts.\n\n5. **docs** — If a library\u002Fframework, fetch official docs. Use Context7 MCP if available for versioned docs. [CONDITIONAL: skip if not a library\u002Fframework]\n\n### Phase 2: Cross-Reference & Validate\n\nAfter teammates report back:\n1. Cross-reference findings — what do multiple sources agree on?\n2. Flag contradictions between sources\n3. Identify gaps — what wasn't found?\n4. Check dates — is information current?\n5. Rate confidence for each finding (high\u002Fmedium\u002Flow)\n\n### Phase 3: Structured Report\n\nPresent findings as:\n\n```\n## Research: [Topic]\n\n### Summary (2-3 sentences)\n\n### Key Findings\n1. [Finding] — confidence: X% — [source]\n2. ...\n\n### Architecture\u002FHow It Works\n[If applicable — diagrams, data flow]\n\n### Pros & Cons\n| Pros | Cons |\n|------|------|\n| ... | ... |\n\n### Alternatives Compared\n| Feature | Option A | Option B | Option C |\n|---------|----------|----------|----------|\n\n### Recommendations\n[Based on findings, what's the best path]\n\n### Sources\n- [URL] — [what was found]\n```\n\n### Phase 4: Save to knowledge vault + Memory\n\nIf research reveals important patterns or decisions:\n- Save full research to `$KNOWLEDGE_VAULT\u002Fresearch\u002F{topic}\u002F` with YAML frontmatter and [[wikilinks]]\n- Update relevant MOC notes in `$KNOWLEDGE_VAULT\u002Fknowledge\u002F`:\n  - New dead end → `wrong-paths.md`\n  - New pattern → `code-patterns.md`\n  - API finding → `api-integrations.md`\n  - Architecture insight → `architecture-decisions.md`\n- Save key findings to memory topic file\n- Update MEMORY.md index if new project\u002Ftechnology\n\n---\n\n### Phase 5: 9-Angle Verification\n\n> Re-verification of EVERYTHING found so far. Reuse idle teammates from Phase 1 + spawn new if needed.\n> Goal: find errors in Phase 1-4, close gaps, open new vectors.\n\nCreate new tasks and assign to teammates (reuse existing first, spawn additional if >5 needed):\n\n1. **web-researcher** (reuse) → **Numbers** — Verify ALL numbers, unit economics, metrics, benchmarks. Recalculate independently. Find primary sources for each figure. If numbers don't agree — mark `[DISPUTED]`.\n\n2. **kei-critic** (reuse) → **Critique** — Devil's advocate. Find ALL reasons this WON'T work. Worst-case scenarios. Legal risks. Ethical problems. What skeptics say. Real failure stories.\n\n3. **practical** (reuse) → **Competitors** — Find ALL competitors (not only the obvious ones). Check: market map, Crunchbase, ProductHunt, G2\u002FCapterra. Who launched in the last 6 months? Who died? Who pivoted?\n\n4. **docs** (reuse) → **Doc verification** — Re-read official docs, changelogs, migration guides, deprecation notices. Find undocumented features, breaking changes, roadmap items. Verify docs match real behaviour.\n\n5. **code-explorer** (reuse) → **Tech stacks** — Deep analysis of technologies: versions, compatibility, license (MIT\u002FGPL\u002Fproprietary), community health (stars, contributors, last commit), alternatives. Vendor lock-in risk.\n\n6. **arch-analyst** (spawn new) → **Competitor architecture** — For each competitor: tech stack, architectural patterns, API design, infra, open-source components. Weak points. What's hard to replicate (moat).\n\n7. **academic** (spawn new) → **Academic papers** — [CONDITIONAL: only for tech\u002FML\u002Fmath topics] arXiv, Google Scholar, Semantic Scholar, IEEE. Original papers. Skip if topic is business\u002FSaaS.\n\n8. **intersections** (spawn new) → **Intersection branches** — Read Project Registry from `$HOME\u002F.claude\u002FCLAUDE.md` or `$HOME\u002F.claude\u002Fmemory\u002FMEMORY.md` (if maintained). For each project: is there an intersection? Can we reuse code\u002Fknowledge\u002Finfra? What NEW directions does this research open? Skip if no registry.\n\n9. **trends** (spawn new) → **Trends & timing** — Where is the market\u002Ftechnology moving? Hype cycle position. Regulation. Timing — too early or too late? Window of opportunity.\n\n### Phase 6: Verification Synthesis\n\nAfter all teammates report back:\n\n1. **Conflict Matrix** — Build a table: where do Phase 1 and Phase 5 disagree? For each conflict: which source is more reliable?\n2. **Evidence Upgrade** — Re-grade evidence (`[E1]`-`[E6]`) based on verification\n3. **Kill List** — Which findings from Phase 1-4 turned out false\u002Finaccurate? Remove from report\n4. **New Findings** — What did verification find that discovery missed?\n5. **Updated Report** — Update structured report from Phase 3 with verified data\n\n### Phase 7: Graph Indexing\n\nBuild knowledge graph and save to knowledge vault:\n\n1. **Generate `graph.json`** — Save to `$KNOWLEDGE_VAULT\u002Fresearch\u002F{topic}\u002Fgraph.json`:\n```json\n{\n  \"topic\": \"research topic\",\n  \"date\": \"YYYY-MM-DD\",\n  \"nodes\": [\n    {\"id\": \"node-1\", \"label\": \"Name\", \"type\": \"technology|company|concept|person|project\", \"evidence\": \"E1-E6\", \"confidence\": 85}\n  ],\n  \"edges\": [\n    {\"from\": \"node-1\", \"to\": \"node-2\", \"relation\": \"competes_with|depends_on|enables|blocks|intersects|replaces\", \"weight\": 0.9, \"evidence\": \"E1-E6\"}\n  ],\n  \"clusters\": [\n    {\"id\": \"cluster-1\", \"label\": \"Cluster Name\", \"nodes\": [\"node-1\", \"node-2\"]}\n  ]\n}\n```\n\n2. **Update knowledge vault wikilinks** — Ensure all nodes have corresponding `[[wikilinks]]` in research notes and MOC files\n\n3. **Intersection Map** — Generate `intersections.md` showing connections to existing projects:\n```\n## Intersections with Project Registry\n- [[project-name]] ↔ [finding] — potential: high\u002Fmedium\u002Flow — action: [what to do]\n```\n\n4. **Update Master Graph** — Append new nodes\u002Fedges to `$KNOWLEDGE_VAULT\u002Fknowledge\u002Fresearch-graph.json` (cumulative index across all research sessions)\n\n### Phase 8: Cleanup\n\n1. Send `shutdown_request` to ALL teammates\n2. Wait for shutdown confirmations\n3. Call `TeamDelete` to clean up team and task list\n\n---\n\n## Rules\n- NEVER present unverified claims as facts\n- Always cite sources with URLs\n- Flag when information might be outdated (>6 months)\n- Present multiple viewpoints, not just one\n- Evidence grade (`[E1]`-`[E6]`) for each major claim. Suggested scale: E1=primary source confirmed, E2=reproducible \u002F multi-source agreement, E3=synthetic benchmark, E4=expert assessment \u002F docs analysis, E5=theoretical hypothesis, E6=single unverified or stale (>6mo) source.\n- Confidence percentage for each major claim\n- Phase 5 verification is MANDATORY — skip only if user explicitly says \"quick research\"\n- Graph indexing runs AFTER verification, not before (verified data only goes into graph)\n- **TeamCreate is MANDATORY** — no research without a team\n- **Reuse teammates across phases** — don't spawn new when idle ones exist\n- **TeamDelete at the end** — always clean up\n","## Angle presets (Phase-5 specializations)\n\n`\u002Fresearch` is the source-of-truth skill for deep research. Two common\nspecializations of Phase 5 are available as `--angle` presets — pick via\n`AskUserQuestion` in Phase 1 (or surfaced directly from the CLI):\n\n| Angle | Phase-5 focus | Replaces (deprecated) |\n|---|---|---|\n| `--angle=competitors` | `practical` + `arch-analyst` + `trends` weighted; kill-list includes marketing-only competitor pages | `\u002Fcompetitor-analysis` |\n| `--angle=design-refs` | `web-researcher` weighted toward Awwwards\u002FGodly\u002FSiteInspire; `arch-analyst` weighted toward visual archetype + motion tier; `kei-critic` checks stale AI-slop patterns | `\u002Fdesign-inspiration` |\n| (none — default) | Full 9-angle verification (numbers \u002F critique \u002F competitors \u002F docs \u002F stacks \u002F competitor-arch \u002F academic \u002F intersections \u002F trends) | — |\n\nThe preset is a Phase-1 question option; it does not add a new pipeline —\nit just re-weights the Phase-5 teammate mix. Users who want the old\nstandalone skills can still invoke `\u002Fcompetitor-analysis` or\n`\u002Fdesign-inspiration` (both route here).\n\n\n> **Role-tag convention.** Names like `web-researcher`, `meta-critic`,\n> `arch-analyst`, `{component}-critic` that appear later in this skill are\n> ad-hoc role tags passed to the generic `kei-researcher` subagent inside\n> its prompt — they are NOT separate manifests in the kit. Do not grep for\n> them in `_manifests\u002F`; they will not be found. The only manifest behind\n> every research teammate is `kei-researcher`.\n\n# Deep Research Skill\n\nYou are conducting deep research on: $ARGUMENTS\n\n> [REQUIRES: optional knowledge vault] This skill persists research output to\n> a markdown knowledge vault at `$KNOWLEDGE_VAULT` (conventional default:\n> `$HOME\u002FProjects\u002FKnowledgeVault\u002F`). If you don't maintain a vault, use any\n> stable directory (e.g. `$HOME\u002Fresearch\u002F`) — the skill will create\n> subdirectories as needed. Skip the vault-read phases if empty.\n>\n> [REQUIRES: team tools] The skill uses Claude Code's team orchestration\n> tools (`TeamCreate`, `TaskCreate`, `TaskUpdate`, `TeamDelete`). If your\n> Claude Code install lacks team tooling, run the phases sequentially with\n> single agents instead of parallel teammates.\n>\n> [OPTIONAL: project registry] If you maintain a project registry (e.g. in\n> `$HOME\u002F.claude\u002FCLAUDE.md` or `$HOME\u002F.claude\u002Fmemory\u002FMEMORY.md`), the\n> `intersections` agent in Phase 5 reads it to find cross-project links.\n> Skip that agent if you have no registry.\n\n## PHASE -1: MANDATORY USER CHOICE — Variant + Control Level\n\n> **BEFORE any work**, ask the user two questions via `AskUserQuestion` (terminal option-picker, NOT free-text).\n> **Send BOTH questions in ONE `AskUserQuestion` call** (questions array of 2) so the user picks both in one prompt.\n\n### Question 1 — \"Research depth variant\"\n\nOptions (pick ONE):\n\n- **A — Light (2-stage, ~15 min)** — Discovery wave → verification pass. 3-5 agents total. Structured report, no graph, no 9-angle verification. Use for: quick fact-checks, tool comparisons, shallow context.\n- **B — Standard (8-phase, ~40 min)** — Current default. Discovery (5 agents) → cross-ref → report → vault save → **9-angle verification wave** → synthesis → graph indexing → cleanup. Full report + graph.json + intersections.md. Use for: technology choice, architectural decisions, competitor mapping.\n- **C — Deep Decomposition (wave-based, ~1-2h)** — Wave 0 decomposes question → Wave 1 parallel angle exploration per component → Wave 2 \"two-touches rule\" expansion (find what was missed; expand each finding via 2 touches upstream\u002Fdownstream) → Wave 3 cross-analysis + re-expansion of found paths. Each agent writes its own file. Mandatory self-cleanup at end. 15-30+ agents. Outputs component-report-per-file + master synthesis + graph + intersection matrix. Use for: deep-domain research, new domain entry, major strategic decisions.\n\n### Question 2 — \"Control level\"\n\nOptions (pick ONE):\n\n- **1 — Full control** — Lead confirms EVERY agent spawn before it fires. You (lead) present a preview of the next wave's tasks and wait for user approval. Safest; slowest. Use when topic is sensitive, cost-critical, or decomposition untrusted.\n- **2 — Confirm branches only** — Lead spawns Wave 1 + discovery automatically. Confirms ONLY at (a) verification-wave start, (b) two-touches expansion branches, (c) any NEW domain a finding opens. Middle ground.\n- **3 — Max autonomy** — Lead self-approves all waves + branches via internal critique + confidence grading. User sees final report only. Fastest; requires trust. Use when topic well-scoped and user is away.\n\n### How to send (one AskUserQuestion call, 2 questions)\n\n```json\n{\n  \"questions\": [\n    {\n      \"question\": \"Research depth variant?\",\n      \"header\": \"Depth\",\n      \"multiSelect\": false,\n      \"options\": [\n        {\"label\": \"A — Light (2-stage, ~15 min)\",            \"description\": \"Discovery + verification. 3-5 agents. Report only.\"},\n        {\"label\": \"B — Standard (8-phase, ~40 min)\",          \"description\": \"Full current flow. 9-angle verification. Graph + intersections.\"},\n        {\"label\": \"C — Deep decomposition (wave-based, ~1-2h)\", \"description\": \"Decompose → per-component → two-touches → cross-analysis. 15-30+ agents.\"}\n      ]\n    },\n    {\n      \"question\": \"Control level?\",\n      \"header\": \"Control\",\n      \"multiSelect\": false,\n      \"options\": [\n        {\"label\": \"1 — Full control (confirm each spawn)\", \"description\": \"You approve every agent before it fires.\"},\n        {\"label\": \"2 — Confirm branches only\",             \"description\": \"Auto discovery. Ask before verification + new branches.\"},\n        {\"label\": \"3 — Max autonomy\",                      \"description\": \"Self-approve via internal critique. Final report only.\"}\n      ]\n    },\n    {\n      \"question\": \"Backend distribution?\",\n      \"header\": \"Backends\",\n      \"multiSelect\": false,\n      \"options\": [\n        {\"label\": \"Claude only (default)\",       \"description\": \"Every agent on Claude. Lowest setup cost.\"},\n        {\"label\": \"Multi-LLM (--backends=multi)\", \"description\": \"Distribute across installed CLIs (grok\u002Fkimi\u002Fcopilot\u002Fagy). See ## Multi-LLM routing.\"}\n      ]\n    }\n  ]\n}\n```\n\nAlso accept `--backends=multi` as a direct CLI flag (skips the third\nprompt). The prompt fires on **every** Mode (A \u002F B \u002F C) — user always\ngets the choice, even for the 3-5 agent Light mode.\n\nRoute to matching section based on pair {A|B|C, 1|2|3}:\n- A → \"## Variant A — Light\" (below)\n- B → original 8-phase flow (current Phase 0-8)\n- C → \"## Variant C — Deep Decomposition\" (below)\n\nControl-level logic applies to ALL variants:\n- **L1** — before EVERY `TaskCreate` + agent spawn, invoke `AskUserQuestion` with options {Approve | Modify | Skip}\n- **L2** — auto-spawn discovery waves; `AskUserQuestion` ONLY before verification waves + new-branch spawns\n- **L3** — no user prompts; apply `kei-critic` teammate self-evaluation on each wave output before proceeding\n\n---\n\n## Multi-LLM routing (`--backends=multi`)\n\nBy default every spawned agent runs on Claude (the orchestrator's own\nbackend). With `--backends=multi` the lead distributes per-angle agents\nacross whatever external CLI subscriptions are installed locally,\namortising cost across providers and getting cross-model diversity (the\nv0.62 audit empirically showed different models surface different\nissues).\n\n**Default angle → backend mapping** (override via `--backend-\u003Cangle>=\u003Ccli>`):\n\n| Angle | Backend | Rationale |\n|---|---|---|\n| `web` | `claude` | Native `WebFetch` \u002F `WebSearch` tools, no shell-out cost |\n| `critic` | `grok` | Independent reasoning trace from a different vendor |\n| `practical` | `kimi` | Cheap long-context for example mining |\n| `docs` | `copilot` | Long-context navigation, good for spec PDFs |\n| `academic` | `agy` | Gemini's RAG \u002F citation strength |\n| `synthesis` (Wave 3) | `claude` | Orchestrator needs structured output for graph emission |\n\n**Discovery** — at Wave 1 start, the lead probes which CLIs are\ninstalled:\n\n```bash\nfor b in claude grok kimi copilot agy; do\n  command -v \"$b\" >\u002Fdev\u002Fnull 2>&1 && echo \"$b ok\"\ndone\n```\n\n**Graceful degrade** — if a mapped backend is absent, that angle falls\nback to claude. The lead logs `wave1-{component}-{angle}.md` header\nwith the actual backend that ran (truth-in-output).\n\n**Spawn invocation** — the lead emits one of two patterns per agent:\n\n```\n# Claude-side (Agent tool, in-process):\nAgent(subagent_type=\"researcher\", prompt=\"\u003Cangle prompt>\", ...)\n\n# External-CLI side (Bash run_in_background → kei agent):\nnohup kei agent --on=\u003Cbackend> researcher \"\u003Cangle prompt>\" \\\n     > \u002Ftmp\u002Fresearch\u002F\u003Ctopic>\u002Fwave1-\u003Ccomponent>-\u003Cangle>.stdout \\\n     2>\u002Ftmp\u002Fresearch\u002F\u003Ctopic>\u002Fwave1-\u003Ccomponent>-\u003Cangle>.stderr &\n```\n\nThe lead aggregates results by reading the `.stdout` files at the end\nof each wave (same as a Claude subagent's return value).\n\n**Cost note** — `kei limits` reports per-CLI usage. Watch grok \u002F agy\nwhich are paid per call. A typical 20-agent Wave 1 hits each CLI\n~4-5×; well below daily caps for all tested subscriptions in 2026-06.\n\n**Multi-LLM is available in every mode** (A \u002F B \u002F C). The wizard\nALWAYS asks. Even Mode A's 3-5 agents benefit from cross-model\ndiversity when the topic is contested.\n\n---\n\n## Variant A — Light (2-stage)\n\n**Phase 0:** Check knowledge vault (same as standard).\n\n**Phase 1:** Spawn 3 teammates in parallel:\n- `web-researcher` — WebSearch\u002FWebFetch top 10 findings\n- `kei-critic` — limitations, alternatives, failure stories\n- `practical` — real-world use cases + prior art\n\n**Phase 2:** Cross-reference + verify + confidence grading (you, lead).\n\n**Phase 3:** Structured report + save to `$KNOWLEDGE_VAULT\u002Fresearch\u002F{topic}-light\u002F`.\n\n**Phase 4:** Cleanup — `TeamDelete`. No graph, no 9-angle, no two-touches.\n\n---\n\n## Variant C — Deep Decomposition (wave-based)\n\n### Wave 0 — Decomposition (lead-only, no spawn)\n\nBreak the research question into 3-7 orthogonal components. Each component must be:\n- Independently explorable (no circular dependency)\n- Concrete (not \"the whole topic\" recursively)\n- Evidence-gradable\n\nSave decomposition to `$KNOWLEDGE_VAULT\u002Fresearch\u002F{topic}\u002F00-decomposition.md`. **If L1 control: show decomposition to user via `AskUserQuestion` with options {Approve | Request changes | Abort} before Wave 1.**\n\n### Wave 1 — Per-component angle exploration (parallel spawn)\n\nFor EACH component from Wave 0, spawn 3-5 angle-specific agents:\n- `{component}-web` — WebSearch\u002FWebFetch for this component only\n- `{component}-critic` — issues\u002Flimitations specific to this component\n- `{component}-practical` — real-world examples of this component\n- `{component}-docs` — official documentation (conditional)\n- `{component}-academic` — papers\u002FarXiv (conditional, only for tech\u002FML\u002Fmath)\n\n**Typical spawn count: 5 components × 4 angles = 20 agents.** Each writes to `{topic}\u002Fwave1-{component}-{angle}.md`.\n\n**If L1 control: ask user before spawning each component's wave (5 prompts).**\n**If L2 control: auto-spawn all Wave 1.**\n**If L3 control: auto-spawn all, self-critique each output.**\n\n### Wave 2 — Two-touches rule expansion\n\nFor EACH Wave 1 finding, apply \"two-touches rule\":\n- **Touch 1** — What does this finding directly depend on? (upstream)\n- **Touch 2** — What does this finding enable or block? (downstream)\n\nBoth touches MUST be explored — not just adjacent facts, but second-order consequences. If Wave 1 mentioned \"Rust async uses tokio\", Touch 1 = \"what tokio depends on (mio, futures-rs)\", Touch 2 = \"what consuming tokio affects (debuggability, compile time, binary size)\".\n\nSpawn one agent per (finding × two-touches) pair, or bundle by component. Each writes to `wave2-{component}-expansion.md`.\n\n**Also run a dedicated `{component}-gaps` agent per component:** \"what was NOT covered in Wave 1 for this component? What angle is missing? What should have been asked but wasn't?\"\n\n**If L1 control: user approves expansion list.**\n**If L2 control: user approves NEW domains opened by expansion.**\n**If L3 control: self-evaluate which branches are worth expanding; auto-approve.**\n\n### Wave 3 — Cross-analysis + re-expansion\n\nNow that Waves 1-2 have generated 30-50 .md files, run 5-7 synthesis agents:\n1. `cross-analyst` — which findings across components CONFLICT? Build conflict matrix.\n2. `gap-closer` — which gaps from Wave 2 `-gaps` agents are still open? Can any be closed with one more agent?\n3. `integration-mapper` — how do components connect to each other + to existing projects (read Project Registry)?\n4. `evidence-auditor` — re-grade ALL claims across all files. Downgrade unverified. Flag `[DISPUTED]`.\n5. `timing-analyst` — what's urgent, what's deferred, what's already obsolete?\n6. `meta-critic` — final adversarial pass. \"Is this research actually useful or just a pile of data?\"\n\nAny finding marked for re-expansion: spawn one more agent for that specific thread.\n\n**If L1 control: user sees synthesis plan, approves.**\n**If L2 control: user approves re-expansion branches.**\n**If L3 control: auto-proceed.**\n\n### Wave 4 — Master synthesis (lead)\n\nLead writes master document at `{topic}\u002FMASTER-REPORT.md` containing:\n- Executive summary (2-3 sentences)\n- Per-component findings (linked to wave1\u002Fwave2 files)\n- Cross-component conflicts + resolutions\n- Project-registry intersections\n- Evidence grades + confidence matrix\n- Timing recommendation\n- Open gaps (what COULDN'T be answered even with deep decomposition)\n\nPlus `graph.json` cumulative update + `intersections.md`.\n\n### Wave 5 — Cleanup (mandatory — no orphaned agents or stale files left behind)\n\n1. `shutdown_request` to ALL teammates\n2. `TeamDelete`\n3. Verify no orphaned agents\n4. Commit all research files to git (in knowledge vault repo if versioned)\n5. Update `$KNOWLEDGE_VAULT\u002Fknowledge\u002Fresearch-graph.json` master index\n6. Append one-line entry to `$KNOWLEDGE_VAULT\u002Fknowledge\u002Fresearch-index.md`\n\n---\n\n## CRITICAL: Team-Based Orchestration\n\n> **ALWAYS create a team for research.** This is mandatory, not optional.\n>\n> **Step 1:** Call `TeamCreate` with `team_name: \"research-{topic-slug}\"` (e.g., \"research-rust-async-runtimes\")\n> **Step 2:** Create tasks via `TaskCreate` for each research angle\n> **Step 3:** Spawn named teammates via `Task` tool with `team_name` parameter\n> **Step 4:** Assign tasks to teammates via `TaskUpdate`\n> **Step 5:** Teammates work, mark tasks completed, go idle\n> **Step 6:** You (lead) synthesize results, create Phase 2 tasks, assign to idle teammates\n> **Step 7:** After all phases — `shutdown_request` to all teammates, then `TeamDelete`\n>\n> **WHY teams:** Task lists give visibility. Named teammates can be re-assigned across phases.\n> Idle teammates from Phase 1 get reused in Phase 5 — no wasted spawns.\n>\n> **Teammate naming convention:**\n> - Phase 1: `web-researcher`, `code-explorer`, `kei-critic`, `practical`, `docs`\n> - Phase 5: reuse same teammates with new tasks (they keep context!)\n> - If topic doesn't need code exploration, skip `code-explorer` — spawn only what's needed\n>\n> **Execution pattern:**\n> 1. Phase 0 — you do this yourself (Read vault files)\n> 2. TeamCreate + TaskCreate for Phase 1 tasks\n> 3. Spawn 3-5 teammates IN PARALLEL (single message, multiple Task calls with team_name)\n> 4. Assign Phase 1 tasks to teammates\n> 5. Wait for teammates to complete (they send messages when done)\n> 6. Phase 2-3 — you do this yourself (cross-reference + report)\n> 7. Phase 4 — you do this yourself (save to vault)\n> 8. Create Phase 5 tasks, assign to EXISTING idle teammates (reuse, don't spawn new)\n> 9. If Phase 5 needs >5 agents, spawn additional teammates\n> 10. Wait for Phase 5 completion\n> 11. Phase 6-7 — you do this yourself (synthesis + graph)\n> 12. Shutdown all teammates, TeamDelete\n>\n> **NEVER use `run_in_background: true`** — you need their results to proceed.\n\n## Process\n\n### Phase 0: Check knowledge vault Vault\n\nBefore web search, check existing knowledge:\n1. Read `$KNOWLEDGE_VAULT\u002Fknowledge\u002F` MOC notes for relevant existing findings\n2. Search `$KNOWLEDGE_VAULT\u002Fresearch\u002F` for related prior research\n3. Check `$KNOWLEDGE_VAULT\u002Fknowledge\u002Fwrong-paths.md` for known dead ends on this topic\n4. Use findings to focus web search on GAPS, not re-research known facts\n\n### Phase 1: Parallel Discovery (3-5 teammates)\n\nCreate tasks and assign to teammates:\n\n1. **web-researcher** — Use WebSearch + WebFetch to find latest articles, docs, repos, benchmarks. Return top 10 findings with URLs.\n\n2. **code-explorer** — If topic relates to code\u002Flibrary, search the codebase and npm\u002Fpypi\u002Fgithub for implementations, examples, patterns. [CONDITIONAL: skip if not code-related]\n\n3. **kei-critic** — Search for criticisms, limitations, known issues, alternatives. Find \"X vs Y\" comparisons, migration guides, deprecation notices.\n\n4. **practical** — Find real-world usage examples, case studies, production stories. Check GitHub issues, Stack Overflow, blog posts.\n\n5. **docs** — If a library\u002Fframework, fetch official docs. Use Context7 MCP if available for versioned docs. [CONDITIONAL: skip if not a library\u002Fframework]\n\n### Phase 2: Cross-Reference & Validate\n\nAfter teammates report back:\n1. Cross-reference findings — what do multiple sources agree on?\n2. Flag contradictions between sources\n3. Identify gaps — what wasn't found?\n4. Check dates — is information current?\n5. Rate confidence for each finding (high\u002Fmedium\u002Flow)\n\n### Phase 3: Structured Report\n\nPresent findings as:\n\n```\n## Research: [Topic]\n\n### Summary (2-3 sentences)\n\n### Key Findings\n1. [Finding] — confidence: X% — [source]\n2. ...\n\n### Architecture\u002FHow It Works\n[If applicable — diagrams, data flow]\n\n### Pros & Cons\n| Pros | Cons |\n|------|------|\n| ... | ... |\n\n### Alternatives Compared\n| Feature | Option A | Option B | Option C |\n|---------|----------|----------|----------|\n\n### Recommendations\n[Based on findings, what's the best path]\n\n### Sources\n- [URL] — [what was found]\n```\n\n### Phase 4: Save to knowledge vault + Memory\n\nIf research reveals important patterns or decisions:\n- Save full research to `$KNOWLEDGE_VAULT\u002Fresearch\u002F{topic}\u002F` with YAML frontmatter and [[wikilinks]]\n- Update relevant MOC notes in `$KNOWLEDGE_VAULT\u002Fknowledge\u002F`:\n  - New dead end → `wrong-paths.md`\n  - New pattern → `code-patterns.md`\n  - API finding → `api-integrations.md`\n  - Architecture insight → `architecture-decisions.md`\n- Save key findings to memory topic file\n- Update MEMORY.md index if new project\u002Ftechnology\n\n---\n\n### Phase 5: 9-Angle Verification\n\n> Re-verification of EVERYTHING found so far. Reuse idle teammates from Phase 1 + spawn new if needed.\n> Goal: find errors in Phase 1-4, close gaps, open new vectors.\n\nCreate new tasks and assign to teammates (reuse existing first, spawn additional if >5 needed):\n\n1. **web-researcher** (reuse) → **Numbers** — Verify ALL numbers, unit economics, metrics, benchmarks. Recalculate independently. Find primary sources for each figure. If numbers don't agree — mark `[DISPUTED]`.\n\n2. **kei-critic** (reuse) → **Critique** — Devil's advocate. Find ALL reasons this WON'T work. Worst-case scenarios. Legal risks. Ethical problems. What skeptics say. Real failure stories.\n\n3. **practical** (reuse) → **Competitors** — Find ALL competitors (not only the obvious ones). Check: market map, Crunchbase, ProductHunt, G2\u002FCapterra. Who launched in the last 6 months? Who died? Who pivoted?\n\n4. **docs** (reuse) → **Doc verification** — Re-read official docs, changelogs, migration guides, deprecation notices. Find undocumented features, breaking changes, roadmap items. Verify docs match real behaviour.\n\n5. **code-explorer** (reuse) → **Tech stacks** — Deep analysis of technologies: versions, compatibility, license (MIT\u002FGPL\u002Fproprietary), community health (stars, contributors, last commit), alternatives. Vendor lock-in risk.\n\n6. **arch-analyst** (spawn new) → **Competitor architecture** — For each competitor: tech stack, architectural patterns, API design, infra, open-source components. Weak points. What's hard to replicate (moat).\n\n7. **academic** (spawn new) → **Academic papers** — [CONDITIONAL: only for tech\u002FML\u002Fmath topics] arXiv, Google Scholar, Semantic Scholar, IEEE. Original papers. Skip if topic is business\u002FSaaS.\n\n8. **intersections** (spawn new) → **Intersection branches** — Read Project Registry from `$HOME\u002F.claude\u002FCLAUDE.md` or `$HOME\u002F.claude\u002Fmemory\u002FMEMORY.md` (if maintained). For each project: is there an intersection? Can we reuse code\u002Fknowledge\u002Finfra? What NEW directions does this research open? Skip if no registry.\n\n9. **trends** (spawn new) → **Trends & timing** — Where is the market\u002Ftechnology moving? Hype cycle position. Regulation. Timing — too early or too late? Window of opportunity.\n\n### Phase 6: Verification Synthesis\n\nAfter all teammates report back:\n\n1. **Conflict Matrix** — Build a table: where do Phase 1 and Phase 5 disagree? For each conflict: which source is more reliable?\n2. **Evidence Upgrade** — Re-grade evidence (`[E1]`-`[E6]`) based on verification\n3. **Kill List** — Which findings from Phase 1-4 turned out false\u002Finaccurate? Remove from report\n4. **New Findings** — What did verification find that discovery missed?\n5. **Updated Report** — Update structured report from Phase 3 with verified data\n\n### Phase 7: Graph Indexing\n\nBuild knowledge graph and save to knowledge vault:\n\n1. **Generate `graph.json`** — Save to `$KNOWLEDGE_VAULT\u002Fresearch\u002F{topic}\u002Fgraph.json`:\n```json\n{\n  \"topic\": \"research topic\",\n  \"date\": \"YYYY-MM-DD\",\n  \"nodes\": [\n    {\"id\": \"node-1\", \"label\": \"Name\", \"type\": \"technology|company|concept|person|project\", \"evidence\": \"E1-E6\", \"confidence\": 85}\n  ],\n  \"edges\": [\n    {\"from\": \"node-1\", \"to\": \"node-2\", \"relation\": \"competes_with|depends_on|enables|blocks|intersects|replaces\", \"weight\": 0.9, \"evidence\": \"E1-E6\"}\n  ],\n  \"clusters\": [\n    {\"id\": \"cluster-1\", \"label\": \"Cluster Name\", \"nodes\": [\"node-1\", \"node-2\"]}\n  ]\n}\n```\n\n2. **Update knowledge vault wikilinks** — Ensure all nodes have corresponding `[[wikilinks]]` in research notes and MOC files\n\n3. **Intersection Map** — Generate `intersections.md` showing connections to existing projects:\n```\n## Intersections with Project Registry\n- [[project-name]] ↔ [finding] — potential: high\u002Fmedium\u002Flow — action: [what to do]\n```\n\n4. **Update Master Graph** — Append new nodes\u002Fedges to `$KNOWLEDGE_VAULT\u002Fknowledge\u002Fresearch-graph.json` (cumulative index across all research sessions)\n\n### Phase 8: Cleanup\n\n1. Send `shutdown_request` to ALL teammates\n2. Wait for shutdown confirmations\n3. Call `TeamDelete` to clean up team and task list\n\n---\n\n## Rules\n- NEVER present unverified claims as facts\n- Always cite sources with URLs\n- Flag when information might be outdated (>6 months)\n- Present multiple viewpoints, not just one\n- Evidence grade (`[E1]`-`[E6]`) for each major claim. Suggested scale: E1=primary source confirmed, E2=reproducible \u002F multi-source agreement, E3=synthetic benchmark, E4=expert assessment \u002F docs analysis, E5=theoretical hypothesis, E6=single unverified or stale (>6mo) source.\n- Confidence percentage for each major claim\n- Phase 5 verification is MANDATORY — skip only if user explicitly says \"quick research\"\n- Graph indexing runs AFTER verification, not before (verified data only goes into graph)\n- **TeamCreate is MANDATORY** — no research without a team\n- **Reuse teammates across phases** — don't spawn new when idle ones exist\n- **TeamDelete at the end** — always clean up\n",{"name":5,"description":7,"argument-hint":56},"\u003Ctopic or question> [--angle=competitors|design-refs]","main","32e85218a997294f68da27ff3dfd638196186ae5","skills\u002Fresearch",8,"https:\u002F\u002Fgithub.com\u002FKeiSeiLab\u002FKeiSeiKit","https:\u002F\u002Fgithub.com\u002FKeiSeiLab","2026-10-11 11:17:46",{"source":8,"skillName":5,"commands":65,"prompt":75,"zipAvailable":76},[66,69,72],{"tool":67,"command":68},"npx","npx skills add KeiSeiLab\u002FKeiSeiKit --skill research",{"tool":70,"command":71},"bunx","bunx skills add KeiSeiLab\u002FKeiSeiKit --skill research",{"tool":73,"command":74},"pnpm","pnpm dlx skills add KeiSeiLab\u002FKeiSeiKit --skill research","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FKeiSeiLab\u002FKeiSeiKit\u002Fblob\u002Fmain\u002Fskills\u002Fresearch\u002FSKILL.md",true,[],[79,108,132,163,191,217],{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":88,"publishedAt":51},"01M71K887N78V089XR5BWT0JAV","wave-audit","3-wave parallel audit — Wave 1 discovery (4 agents), Wave 2 verification (4 agents), Wave 3 cross-optimization (1 synthesizer). Each wave runs agents in parallel. Combines security review, runtime analysis, quality check, and constructor pattern into one unified workflow with evidence grading and Go\u002FNo-Go verdict.","https:\u002F\u002Fgithub.com\u002FKeiSeiLab\u002FKeiSeiKit\u002Fblob\u002Fmain\u002Fskills\u002Fwave-audit\u002FSKILL.md",[85],{"categoryNo":86,"categoryName":87,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",[89,90,91,92,93,94,95,96,97,98,99,100,38,101,102,103,104,105,106,107],"wave audit","audit","unified workflow","workflow","analysis","review","verification","security review","pattern","grading","go","security","evidence","runtime","quality check","discovery","Optimization","one","check",{"skillNo":109,"name":110,"nameZh":6,"description":111,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":112,"categories":113,"keywords":114,"publishedAt":51},"01M71K85100JQS4Y10EGCTWQXW","vm-provision","End-to-end VPS provisioning — select provider → plan → provision → harden → verify (ssh-check + firewall-diff hard-gate) → handoff. 6 phases, ≥6 AskUserQuestion calls, defensive-only. Stops if either verification primitive fails.","https:\u002F\u002Fgithub.com\u002FKeiSeiLab\u002FKeiSeiKit\u002Fblob\u002Fmain\u002Fskills\u002Fvm-provision\u002FSKILL.md",[],[115,116,117,118,119,120,121,122,123,124,106,125,126,107,95,127,128,129,130,131],"vm","vm provision","firewall","diff","provider","select","end","calls","only","either","api","hetzner","plan","defensive","verify","intent","line",{"skillNo":133,"name":134,"nameZh":6,"description":135,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":136,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":145,"publishedAt":51},"01M71K80ZRH2H5ES83QS97BB91","visual-explainer","Generate beautiful, self-contained HTML pages that visually explain systems, code changes, plans, and data. Use when the user asks for a diagram, architecture overview, diff review, plan review, project recap, comparison table, or any visual explanation of technical concepts. Also use proactively when you are about to render a complex ASCII table (4+ rows or 3+ columns) — present it as a styled HTML page instead.","MIT","https:\u002F\u002Fgithub.com\u002FKeiSeiLab\u002FKeiSeiKit\u002Fblob\u002Fmain\u002Fskills\u002Fvisual-explainer\u002FSKILL.md",[139,142],{"categoryNo":140,"categoryName":141,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000009","前端开发",{"categoryNo":143,"categoryName":144,"taxonomyType":29,"taxonomyTypeDesc":30},"01JBSEEDCAT000000000000033","数据分析师",[146,147,148,149,150,151,152,153,127,154,155,156,157,158,159,36,160,161,162,33],"visual","visual explainer","explainer","project","files","image","you","architecture","generate","present","concepts","table","as","view","ascii table","ascii","surf",{"skillNo":164,"name":165,"nameZh":6,"description":166,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":167,"categories":168,"keywords":172,"publishedAt":51},"01M71K7VSD5ZWN26QJEC4T0770","video-gen","Use when generating video from frame sequences — FFmpeg extraction, WebP\u002FAVIF conversion, sprite sheets, scroll-synced playback, video encoding\u002Ftranscoding. Covers the full pipeline from video source to web-ready frame sequence or optimized video.","https:\u002F\u002Fgithub.com\u002FKeiSeiLab\u002FKeiSeiKit\u002Fblob\u002Fmain\u002Fskills\u002Fvideo-gen\u002FSKILL.md",[169],{"categoryNo":170,"categoryName":171,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",[173,174,175,176,177,178,179,180,181,43,151,182,183,184,185,186,187,188,189,190],"Video","gen","video gen","ready","pipeline","default","generated","synced","false","conversion","directory","sequences","sequence","source","full","path","webp","target",{"skillNo":192,"name":193,"nameZh":6,"description":194,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":195,"categories":196,"keywords":200,"publishedAt":51},"01M71K7R88RM8ENVCRZHZSMM5T","test-matrix","Use when a project needs testing BEYOND unit tests — fuzzing, property-based, load, E2E, or mutation. Five-phase hub-and-spoke pipeline composes the right mix per language × critical path × CI target, scaffolds configs + corpus + fixtures, wires CI jobs, and defines the crash\u002Fregression triage workflow. Pure-click: every decision except intake is an AskUserQuestion.","https:\u002F\u002Fgithub.com\u002FKeiSeiLab\u002FKeiSeiKit\u002Fblob\u002Fmain\u002Fskills\u002Ftest-matrix\u002FSKILL.md",[197],{"categoryNo":198,"categoryName":199,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[201,202,203,204,190,205,149,206,177,207,208,209,210,211,212,213,214,33,215,216],"test","matrix","test matrix","unit","click","regression","mix","intake","testing","decision","ci","tests","e2e","mutation","load","fuzzing",{"skillNo":218,"name":219,"nameZh":6,"description":220,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":221,"categories":222,"keywords":224,"publishedAt":51},"01M71K7N3ZY9FMMH3CSE1H8K5J","test-gen","Use when generating tests for untested code — happy path, edge cases, error handling","https:\u002F\u002Fgithub.com\u002FKeiSeiLab\u002FKeiSeiKit\u002Fblob\u002Fmain\u002Fskills\u002Ftest-gen\u002FSKILL.md",[223],{"categoryNo":198,"categoryName":199,"taxonomyType":21,"taxonomyTypeDesc":22},[225,174,201,226,190,36,227,212,228,33,43,229,230,231,232,188],"test gen","error","true","edge","file","code","error handling","name"]