多源调研 workflow — Tavily/Exa/ctx7 多源 fan-out + GSD discuss synth aggregate; harnessed v2.0 NEW per R20.7 (Stage ① Discuss 独立 call); schema bumped to harnessed.workflow.v3 in Phase v3.0-3.4 W1.1 (T3.4.W1.1) with disciplines_applied [6] + tools_available [tavily-mcp, exa-mcp, ctx7, gsd-discuss-phase], phases reuse v2 verbatim. Triggered by slash command `/research` after `harnessed setup`.
Scanned 5/28/2026
Install via CLI
openskills install easyinplay/harnessed---
name: research
description: 多源调研 workflow — Tavily/Exa/ctx7 多源 fan-out + GSD discuss synth aggregate; harnessed v2.0 NEW per R20.7 (Stage ① Discuss 独立 call); schema bumped to harnessed.workflow.v3 in Phase v3.0-3.4 W1.1 (T3.4.W1.1) with disciplines_applied [6] + tools_available [tavily-mcp, exa-mcp, ctx7, gsd-discuss-phase], phases reuse v2 verbatim. Triggered by slash command `/research` after `harnessed setup`.
preamble-tier: 2
schema_version: harnessed.workflow.v3
---
# research workflow
Multi-source research workflow shipped with harnessed v2.0 (Stage ① Discuss);
`workflow.yaml` schema bumped to `harnessed.workflow.v3` in Phase v3.0-3.4 W1.1
(T3.4.W1.1 — D-09 L0 Discipline Substrate + D-05 tools_available cross-validate);
phases content (01-fan-out + 02-synth) verbatim reused from v2 SHIPPED unchanged.
## Phases (2)
| # | Phase | Upstream | Capability | Model | Description |
|---|-------|----------|-----------|-------|-------------|
| 01 | `01-fan-out` | web-search | (route-by-subtask) | sonnet | 3 source fan-out (Tavily MCP / Exa MCP / ctx7 CLI per bundled web-search + context7 routing) |
| 02 | `02-synth` | gsd | `gsd-discuss-phase` | opus | GSD discuss-phase aggregate + dedup + reconcile |
## Capability refs
Sister `workflows/capabilities.yaml` entries:
- `tavily-mcp` (impl: mcp-server, default 关键词)
- `exa-mcp` (impl: mcp-server, 描述式 / 学术)
- `ctx7` (impl: cli-tool, 库 API 文档)
- `gsd-discuss-phase` (synth aggregate)
## Invocation
- Slash command: `/research <topic>` (after `harnessed setup`)
## Routing rules (bundled web-search routing — `workflows/judgments/web-search-routing.yaml`)
- 描述式查询 ("找一篇对比 X 和 Y 的博客") → Exa MCP
- 学术 / 论文 → Exa MCP
- 库 / API 文档 → ctx7 CLI
- 关键词 / 时效内容 → Tavily MCP (默认)
- 抓整站 / 站点结构 → Tavily crawl/map
## How to invoke
**Preferred path** (master orchestrator): dispatch to the per-sub-workflow slash commands in the order this stage prescribes. Each sub command lives at `<claude-home>/commands/<sub-name>.md` (installed by `harnessed setup`) with its own dual-path fallback.
**Fallback path** (when the upstream isn't installed or returns no result): use the Task tool to spawn a general-purpose subagent with this prompt:
> You are a **Research analyst**.
>
> **Mission**: Multi-source investigation (docs / web search / codebase grep / library probe) producing a `findings.md` with citations, NOT speculation. Use `ctx7` for library docs, `tavily-mcp` / `exa-mcp` for web, `gh` CLI for GitHub artifacts, and codebase `Grep` for internal references.
>
> **Default-suspect mode**: assume the change is broken / risky / incomplete until proven otherwise. Cite `file:line` for every finding; do not generalize.
>
> **Review checklist**:
> 1. Resolve each unknown claim to a citable source (URL, file:line, or `ctx7` doc id)
>
> 2. Cite version explicitly when discussing library / framework APIs (training cutoff may be stale)
>
> 3. Capture conflicting sources side-by-side; do not silently pick one
>
> 4. Flag `OPEN: <question>` for items the user must decide; never paper over
>
> 5. Persist results to `.planning/<phase>/findings.md` for cross-session handoff
>
> **Output format**: structured report with severity-classified findings (verified / unverified / conflicting / open). One finding per line: `[severity] file:line — problem (one sentence); fix: suggested change`. If no findings, say so explicitly. No preamble, no end-of-report summary.
(Role prompt is self-contained — works even when the upstream `specialist` user-skill / plugin isn't installed.)
(`harnessed setup` also installs a `research` Claude Code slash command at `<claude-home>/commands/research.md` so `/research` is a real platform slash command — both files carry the same dual-path instruction. Previous v3.4.x `harnessed research --apply` CLI claims are removed; that subcommand was never implemented.)
## How to invoke
Use the Bash tool to run:
```bash
echo "$ARGUMENTS" | harnessed run research --task-stdin
```
If `$ARGUMENTS` is empty, run `harnessed run research` (no stdin pipe).
After completion, the Bash output prints a `Next:` hint on stderr suggesting the next stage. Decide whether to invoke based on conversation context — the hint is informational, not prescriptive.
<!-- harnessed-generated:v3.4.4 -->
No comments yet. Be the first to comment!