Oh-my-droid research
Orchestrate parallel scientist agents for comprehensive research with AUTO mode
git clone https://github.com/MeroZemory/oh-my-droid
T=$(mktemp -d) && git clone --depth=1 https://github.com/MeroZemory/oh-my-droid "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/research" ~/.claude/skills/merozemory-oh-my-droid-research && rm -rf "$T"
skills/research/SKILL.mdResearch Skill
Orchestrate parallel scientist agents for comprehensive research workflows with optional AUTO mode for fully autonomous execution.
Overview
Research is a multi-stage workflow that decomposes complex research goals into parallel investigations:
- Decomposition - Break research goal into independent stages/hypotheses
- Execution - Run parallel scientist agents on each stage
- Verification - Cross-validate findings, check consistency
- Synthesis - Aggregate results into comprehensive report
Usage Examples
/research <goal> # Standard research with user checkpoints /research AUTO: <goal> # Fully autonomous until complete /research status # Check current research session status /research resume # Resume interrupted research session /research list # List all research sessions /research report <session-id> # Generate report for session
Quick Examples
/research What are the performance characteristics of different sorting algorithms? /research AUTO: Analyze authentication patterns in this codebase /research How does the error handling work across the API layer?
Research Protocol
Stage Decomposition Pattern
When given a research goal, decompose into 3-7 independent stages:
## Research Decomposition **Goal:** <original research goal> ### Stage 1: <stage-name> - **Focus:** What this stage investigates - **Hypothesis:** Expected finding (if applicable) - **Scope:** Files/areas to examine - **Tier:** LOW | MEDIUM | HIGH ### Stage 2: <stage-name> ...
Parallel Scientist Invocation
Fire independent stages in parallel via Task tool:
// Stage 1 - Simple data gathering Task(subagent_type="oh-my-droid:scientist-low", model="claude-haiku-4-5-20251001", prompt="[RESEARCH_STAGE:1] Investigate...") // Stage 2 - Standard analysis Task(subagent_type="oh-my-droid:scientist", model="claude-sonnet-4-5-20250929", prompt="[RESEARCH_STAGE:2] Analyze...") // Stage 3 - Complex reasoning Task(subagent_type="oh-my-droid:scientist-high", model="claude-opus-4-5-20251101", prompt="[RESEARCH_STAGE:3] Deep analysis of...")
Smart Model Routing
CRITICAL: Always pass
parameter explicitly!model
| Task Complexity | Agent | Model | Use For |
|---|---|---|---|
| Data gathering | | haiku | File enumeration, pattern counting, simple lookups |
| Standard analysis | | sonnet | Code analysis, pattern detection, documentation review |
| Complex reasoning | | opus | Architecture analysis, cross-cutting concerns, hypothesis validation |
Routing Decision Guide
| Research Task | Tier | Example Prompt |
|---|---|---|
| "Count occurrences of X" | LOW | "Count all usages of useState hook" |
| "Find all files matching Y" | LOW | "List all test files in the project" |
| "Analyze pattern Z" | MEDIUM | "Analyze error handling patterns in API routes" |
| "Document how W works" | MEDIUM | "Document the authentication flow" |
| "Explain why X happens" | HIGH | "Explain why race conditions occur in the cache layer" |
| "Compare approaches A vs B" | HIGH | "Compare Redux vs Context for state management here" |
Verification Loop
After parallel execution completes, verify findings:
// Cross-validation stage Task(subagent_type="oh-my-droid:scientist", model="claude-sonnet-4-5-20250929", prompt=" [RESEARCH_VERIFICATION] Cross-validate these findings for consistency: Stage 1 findings: <summary> Stage 2 findings: <summary> Stage 3 findings: <summary> Check for: 1. Contradictions between stages 2. Missing connections 3. Gaps in coverage 4. Evidence quality Output: [VERIFIED] or [CONFLICTS:<list>] ")
AUTO Mode
AUTO mode runs the complete research workflow autonomously with loop control.
Loop Control Protocol
[RESEARCH + AUTO - ITERATION {{ITERATION}}/{{MAX}}] Your previous attempt did not output the completion promise. Continue working. Current state: {{STATE}} Completed stages: {{COMPLETED_STAGES}} Pending stages: {{PENDING_STAGES}}
Promise Tags
| Tag | Meaning | When to Use |
|---|---|---|
| Research finished successfully | All stages done, verified, report generated |
| Cannot proceed | Missing data, access issues, circular dependency |
AUTO Mode Rules
- Max Iterations: 10 (configurable)
- Continue until: Promise tag emitted OR max iterations
- State tracking: Persist after each stage completion
- Cancellation:
or "stop", "cancel"/cancel
AUTO Mode Example
/research AUTO: Comprehensive security analysis of the authentication system [Decomposition] - Stage 1 (LOW): Enumerate auth-related files - Stage 2 (MEDIUM): Analyze token handling - Stage 3 (MEDIUM): Review session management - Stage 4 (HIGH): Identify vulnerability patterns - Stage 5 (MEDIUM): Document security controls [Execution - Parallel] Firing stages 1-3 in parallel... Firing stages 4-5 after dependencies complete... [Verification] Cross-validating findings... [Synthesis] Generating report... [PROMISE:RESEARCH_COMPLETE]
Parallel Execution Patterns
Independent Dataset Analysis (Parallel)
When stages analyze different data sources:
// All fire simultaneously Task(subagent_type="oh-my-droid:scientist-low", model="claude-haiku-4-5-20251001", prompt="[STAGE:1] Analyze src/api/...") Task(subagent_type="oh-my-droid:scientist-low", model="claude-haiku-4-5-20251001", prompt="[STAGE:2] Analyze src/utils/...") Task(subagent_type="oh-my-droid:scientist-low", model="claude-haiku-4-5-20251001", prompt="[STAGE:3] Analyze src/components/...")
Hypothesis Battery (Parallel)
When testing multiple hypotheses:
// Test hypotheses simultaneously Task(subagent_type="oh-my-droid:scientist", model="claude-sonnet-4-5-20250929", prompt="[HYPOTHESIS:A] Test if caching improves...") Task(subagent_type="oh-my-droid:scientist", model="claude-sonnet-4-5-20250929", prompt="[HYPOTHESIS:B] Test if batching reduces...") Task(subagent_type="oh-my-droid:scientist", model="claude-sonnet-4-5-20250929", prompt="[HYPOTHESIS:C] Test if lazy loading helps...")
Cross-Validation (Sequential)
When verification depends on all findings:
// Wait for all parallel stages [stages complete] // Then sequential verification Task(subagent_type="oh-my-droid:scientist-high", model="claude-opus-4-5-20251101", prompt=" [CROSS_VALIDATION] Validate consistency across all findings: - Finding 1: ... - Finding 2: ... - Finding 3: ... ")
Concurrency Limit
Maximum 5 concurrent scientist agents to prevent resource exhaustion.
If more than 5 stages, batch them:
Batch 1: Stages 1-5 (parallel) [wait for completion] Batch 2: Stages 6-7 (parallel)
Session Management
Directory Structure
.omd/research/{session-id}/ state.json # Session state and progress stages/ stage-1.md # Stage 1 findings stage-2.md # Stage 2 findings ... findings/ raw/ # Raw findings from scientists verified/ # Post-verification findings figures/ figure-1.png # Generated visualizations ... report.md # Final synthesized report
State File Format
{ "id": "research-20240115-abc123", "goal": "Original research goal", "status": "in_progress | complete | blocked | cancelled", "mode": "standard | auto", "iteration": 3, "maxIterations": 10, "stages": [ { "id": 1, "name": "Stage name", "tier": "LOW | MEDIUM | HIGH", "status": "pending | running | complete | failed", "startedAt": "ISO timestamp", "completedAt": "ISO timestamp", "findingsFile": "stages/stage-1.md" } ], "verification": { "status": "pending | passed | failed", "conflicts": [], "completedAt": "ISO timestamp" }, "createdAt": "ISO timestamp", "updatedAt": "ISO timestamp" }
Session Commands
| Command | Action |
|---|---|
| Show current session progress |
| Resume most recent interrupted session |
| Resume specific session |
| List all sessions with status |
| Generate/regenerate report |
| Cancel current session (preserves state) |
Tag Extraction
Scientists use structured tags for findings. Extract them with these patterns:
Finding Tags
[FINDING:<id>] <title> <evidence and analysis> [/FINDING] [EVIDENCE:<finding-id>] - File: <path> - Lines: <range> - Content: <relevant code/text> [/EVIDENCE] [CONFIDENCE:<level>] # HIGH | MEDIUM | LOW <reasoning for confidence level>
Extraction Regex Patterns
// Finding extraction const findingPattern = /\[FINDING:(\w+)\]\s*(.*?)\n([\s\S]*?)\[\/FINDING\]/g; // Evidence extraction const evidencePattern = /\[EVIDENCE:(\w+)\]([\s\S]*?)\[\/EVIDENCE\]/g; // Confidence extraction const confidencePattern = /\[CONFIDENCE:(HIGH|MEDIUM|LOW)\]\s*(.*)/g; // Stage completion const stageCompletePattern = /\[STAGE_COMPLETE:(\d+)\]/; // Verification result const verificationPattern = /\[(VERIFIED|CONFLICTS):?(.*?)\]/;
Evidence Window
When extracting evidence, include context window:
[EVIDENCE:F1] - File: /src/auth/login.ts - Lines: 45-52 (context: 40-57) - Content: ```typescript // Lines 45-52 with 5 lines context above/below
[/EVIDENCE]
### Quality Validation Findings must meet quality threshold: | Quality Check | Requirement | |---------------|-------------| | Evidence present | At least 1 [EVIDENCE] per [FINDING] | | Confidence stated | Each finding has [CONFIDENCE] | | Source cited | File paths are absolute and valid | | Reproducible | Another agent could verify | ## Report Generation ### Report Template ```markdown # Research Report: {{GOAL}} **Session ID:** {{SESSION_ID}} **Date:** {{DATE}} **Status:** {{STATUS}} ## Executive Summary {{2-3 paragraph summary of key findings}} ## Methodology ### Research Stages | Stage | Focus | Tier | Status | |-------|-------|------|--------| {{STAGES_TABLE}} ### Approach {{Description of decomposition rationale and execution strategy}} ## Key Findings ### Finding 1: {{TITLE}} **Confidence:** {{HIGH|MEDIUM|LOW}} {{Detailed finding with evidence}} #### Evidence {{Embedded evidence blocks}} ### Finding 2: {{TITLE}} ... ## Visualizations {{FIGURES}} ## Cross-Validation Results {{Verification summary, any conflicts resolved}} ## Limitations - {{Limitation 1}} - {{Limitation 2}} - {{Areas not covered and why}} ## Recommendations 1. {{Actionable recommendation}} 2. {{Actionable recommendation}} ## Appendix ### Raw Data {{Links to raw findings files}} ### Session State {{Link to state.json}}
Figure Embedding Protocol
Scientists generate visualizations using this marker:
[FIGURE:path/to/figure.png] Caption: Description of what the figure shows Alt: Accessibility description [/FIGURE]
Report generator embeds figures:
## Visualizations  *Caption: Description of what the figure shows*  *Caption: Description of what the figure shows*
Figure Types
| Type | Use For | Generated By |
|---|---|---|
| Architecture diagram | System structure | scientist-high |
| Flow chart | Process flows | scientist |
| Dependency graph | Module relationships | scientist |
| Timeline | Sequence of events | scientist |
| Comparison table | A vs B analysis | scientist |
Configuration
Optional settings in
.factory/settings.json:
{ "omd": { "research": { "maxIterations": 10, "maxConcurrentScientists": 5, "defaultTier": "MEDIUM", "autoVerify": true, "generateFigures": true, "evidenceContextLines": 5 } } }
Cancellation
/cancel
Or say: "stop research", "cancel research", "abort"
Progress is preserved in
.omd/research/{session-id}/ for resume.
Troubleshooting
Stuck in verification loop?
- Check for conflicting findings between stages
- Review state.json for specific conflicts
- May need to re-run specific stages with different approach
Scientists returning low-quality findings?
- Check tier assignment - complex analysis needs HIGH tier
- Ensure prompts include clear scope and expected output format
- Review if research goal is too broad
AUTO mode exhausted iterations?
- Review state to see where it's stuck
- Check if goal is achievable with available data
- Consider breaking into smaller research sessions
Missing figures in report?
- Verify figures/ directory exists
- Check [FIGURE:] tags in findings
- Ensure paths are relative to session directory