313 lines
7.5 KiB
Markdown
313 lines
7.5 KiB
Markdown
---
|
|
name: research-orchestration
|
|
description: Use when brainstorming completes and user selects research-first option - manages parallel research subagents (up to 4) across codebase, library docs, web, and GitHub sources, synthesizing findings and auto-saving to memory before planning
|
|
---
|
|
|
|
# Research Orchestration
|
|
|
|
Use this skill to manage parallel research subagents and synthesize findings from multiple sources.
|
|
|
|
## When to Use
|
|
|
|
After brainstorming completes and user selects "B) research first" option.
|
|
|
|
## Selection Algorithm
|
|
|
|
### Default Selection
|
|
|
|
Based on brainstorm context, intelligently select researchers:
|
|
|
|
**serena-explorer** [✓ ALWAYS]
|
|
- Always need codebase understanding
|
|
- No keywords required - default ON
|
|
|
|
**context7-researcher** [✓ if library mentioned]
|
|
- Select if: new library, framework, official docs needed
|
|
- Keywords: "using [library]", "integrate [framework]", "best practices for [tool]"
|
|
- Example: "using React hooks" → ON
|
|
|
|
**web-researcher** [✓ if patterns mentioned]
|
|
- Select if: best practices, tutorials, modern approaches, expert opinions
|
|
- Keywords: "industry standard", "common pattern", "how to", "best approach"
|
|
- Example: "authentication best practices" → ON
|
|
|
|
**github-researcher** [☐ usually OFF]
|
|
- Select if: known issues, community solutions, similar features, troubleshooting
|
|
- Keywords: "GitHub issue", "others solved", "similar to [project]", "known problems"
|
|
- Example: "known issues with SSR" → ON
|
|
|
|
### User Presentation
|
|
|
|
Present recommendations with context:
|
|
|
|
```markdown
|
|
Based on the brainstorm, I recommend these researchers:
|
|
|
|
[✓] Codebase (serena-explorer)
|
|
→ Understand current architecture and integration points
|
|
|
|
[✓] Library docs (context7-researcher)
|
|
→ React hooks patterns and official recommendations
|
|
|
|
[✓] Web (web-researcher)
|
|
→ Authentication best practices and security patterns
|
|
|
|
[ ] GitHub (github-researcher)
|
|
→ Not needed unless we hit specific issues
|
|
|
|
Adjust selection? (Y/n)
|
|
```
|
|
|
|
If **Y**: Interactive toggle
|
|
```
|
|
Toggle researchers: (C)odebase (L)ibrary (W)eb (G)itHub (D)one
|
|
User input: L G D
|
|
Result: Toggled OFF context7-researcher, ON github-researcher, Done
|
|
```
|
|
|
|
If **n**: Use defaults and proceed
|
|
|
|
## Spawning Subagents
|
|
|
|
**Run up to 4 in parallel** using Task tool:
|
|
|
|
```typescript
|
|
// Spawn all selected researchers in parallel
|
|
const results = await Promise.all([
|
|
// Always spawn serena-explorer
|
|
Task({
|
|
subagent_type: "serena-explorer",
|
|
description: "Explore codebase architecture",
|
|
prompt: `
|
|
Analyze the current codebase for ${feature} implementation.
|
|
|
|
Find:
|
|
- Current architecture relevant to ${feature}
|
|
- Similar existing implementations we can learn from
|
|
- Integration points where ${feature} should hook in
|
|
- Patterns used in similar features
|
|
|
|
Provide all findings with file:line references.
|
|
`
|
|
}),
|
|
|
|
// Conditionally spawn context7-researcher
|
|
...(useContext7 ? [Task({
|
|
subagent_type: "context7-researcher",
|
|
description: "Research library documentation",
|
|
prompt: `
|
|
Research official documentation for ${libraries}.
|
|
|
|
Find:
|
|
- Recommended patterns for ${useCase}
|
|
- API best practices and examples
|
|
- Security considerations
|
|
- Performance recommendations
|
|
|
|
Include Context7 IDs, benchmark scores, and code examples.
|
|
`
|
|
})] : []),
|
|
|
|
// Conditionally spawn web-researcher
|
|
...(useWeb ? [Task({
|
|
subagent_type: "web-researcher",
|
|
description: "Research best practices",
|
|
prompt: `
|
|
Search for ${topic} best practices and expert opinions.
|
|
|
|
Find:
|
|
- Industry standard approaches for ${useCase}
|
|
- Recent articles (2024-2025) on ${topic}
|
|
- Expert recommendations with rationale
|
|
- Common gotchas and solutions
|
|
|
|
Cite sources with authority assessment and publication dates.
|
|
`
|
|
})] : []),
|
|
|
|
// Conditionally spawn github-researcher
|
|
...(useGithub ? [Task({
|
|
subagent_type: "github-researcher",
|
|
description: "Research GitHub issues/PRs",
|
|
prompt: `
|
|
Search GitHub for ${topic} issues and solutions.
|
|
|
|
Find:
|
|
- Closed issues related to ${problem}
|
|
- Merged PRs implementing ${feature}
|
|
- Community discussions on ${topic}
|
|
- Known gotchas and workarounds
|
|
|
|
Focus on ${relevantRepos} repositories.
|
|
Provide issue links, status, and consensus solutions.
|
|
`
|
|
})] : [])
|
|
])
|
|
```
|
|
|
|
**Key points:**
|
|
- All spawned in single Task call block (parallel execution)
|
|
- Each has specific prompt tailored to feature context
|
|
- Prompts reference brainstorm decisions
|
|
- Results returned when all complete
|
|
|
|
## Synthesis
|
|
|
|
After all subagents complete, synthesize findings:
|
|
|
|
### Structure
|
|
|
|
```markdown
|
|
# Research: ${feature-name}
|
|
|
|
## Brainstorm Summary
|
|
|
|
${brief-summary-of-brainstorm-decisions}
|
|
|
|
## Codebase Findings (serena-explorer)
|
|
|
|
### Current Architecture
|
|
- **${component}:** `${file}:${line}`
|
|
- ${description}
|
|
|
|
### Similar Implementations
|
|
- **${existing-feature}:** `${file}:${line}`
|
|
- ${pattern-used}
|
|
- ${why-relevant}
|
|
|
|
### Integration Points
|
|
- **${location}:** `${file}:${line}`
|
|
- ${how-to-hook-in}
|
|
|
|
## Library Documentation (context7-researcher)
|
|
|
|
### ${Library-Name}
|
|
**Context7 ID:** ${id}
|
|
**Benchmark Score:** ${score}
|
|
|
|
**Relevant APIs:**
|
|
- **${api-name}:** ${description}
|
|
```${lang}
|
|
${code-example}
|
|
```
|
|
|
|
**Best Practices:**
|
|
1. ${practice-1}
|
|
2. ${practice-2}
|
|
|
|
## Web Research (web-researcher)
|
|
|
|
### ${Topic}
|
|
|
|
**Source:** ${author} - "${title}" (${date})
|
|
**Authority:** ${stars} (${justification})
|
|
**URL:** ${url}
|
|
|
|
**Key Recommendations:**
|
|
1. **${recommendation}**
|
|
> "${quote}"
|
|
|
|
- ${implementation-detail}
|
|
|
|
**Trade-offs:**
|
|
- ${trade-off-1}
|
|
- ${trade-off-2}
|
|
|
|
## GitHub Research (github-researcher)
|
|
|
|
### ${Issue-Topic}
|
|
|
|
**Source:** ${repo}#${number} (${status})
|
|
**URL:** ${url}
|
|
|
|
**Problem:** ${description}
|
|
|
|
**Solution:**
|
|
```${lang}
|
|
${code-example}
|
|
```
|
|
|
|
**Caveats:**
|
|
- ${caveat-1}
|
|
- ${caveat-2}
|
|
|
|
## Synthesis
|
|
|
|
### Recommended Approach
|
|
|
|
Based on all research, recommend ${approach} because:
|
|
|
|
1. **Codebase fit:** ${how-it-fits-existing-patterns}
|
|
2. **Library support:** ${official-patterns-available}
|
|
3. **Industry proven:** ${expert-consensus}
|
|
4. **Community validated:** ${github-evidence}
|
|
|
|
### Key Decisions
|
|
|
|
- **${decision-1}:** ${rationale}
|
|
- **${decision-2}:** ${rationale}
|
|
|
|
### Risks & Mitigations
|
|
|
|
- **Risk:** ${risk}
|
|
- **Mitigation:** ${mitigation}
|
|
|
|
## Next Steps
|
|
|
|
Ready to write implementation plan with this research context.
|
|
```
|
|
|
|
## Auto-Save
|
|
|
|
After synthesis completes, automatically save to memory:
|
|
|
|
```typescript
|
|
// Use state-persistence skill
|
|
await saveResearchMemory({
|
|
feature: extractFeatureName(brainstorm),
|
|
content: synthesizedResearch,
|
|
type: "research"
|
|
})
|
|
```
|
|
|
|
**Filename:** `YYYY-MM-DD-${feature-name}-research.md`
|
|
|
|
**Location:** Serena MCP memory (via write_memory tool)
|
|
|
|
## Handoff
|
|
|
|
After save completes, report to user:
|
|
|
|
```markdown
|
|
Research complete and saved to memory: ${filename}
|
|
|
|
I've synthesized findings from ${count} sources:
|
|
- Codebase: ${summary-of-serena-findings}
|
|
- Library docs: ${summary-of-context7-findings}
|
|
- Web: ${summary-of-web-findings}
|
|
- GitHub: ${summary-of-github-findings}
|
|
|
|
Key recommendation: ${one-sentence-approach}
|
|
|
|
Ready to write the implementation plan with this research context.
|
|
```
|
|
|
|
Then invoke `writing-plans` skill automatically.
|
|
|
|
## Error Handling
|
|
|
|
**If subagent fails:**
|
|
1. Continue with other subagents
|
|
2. Note missing research in synthesis
|
|
3. Offer to re-run failed researcher
|
|
|
|
**If no results found:**
|
|
1. Note in synthesis
|
|
2. Don't block workflow
|
|
3. Proceed with available research
|
|
|
|
**If all subagents fail:**
|
|
1. Report failure
|
|
2. Offer to proceed without research
|
|
3. User can retry or continue to planning
|