research-deep — Claude Code skill: parallel research from outline.yaml
Reads outline.yaml and spins up a separate agent per item, writing each result to a structured JSON file.
npx skills add Weizhena/Deep-Research-skills --skill research-deep -a claude-codeWhat research-deep does
This skill handles bulk research runs. It looks for */outline.yaml in the working directory, reads the item list and execution config such as items_per_agent and batch_size, then launches a web-search agent for every item. Agents run in the background with task output disabled, because each one has an explicit output file to write.
Items are processed in batches, and you approve each batch before the next one starts. That gives you a checkpoint to inspect results instead of burning through a long run blind. Completed JSON files in output_dir are skipped, so an interrupted run resumes where it stopped.
The prompt sent to each agent is fixed: only the {xxx} variables get substituted, structure and wording stay as written. Field definitions come from fields.yaml, shaky values are tagged [uncertain], and an array of those field names closes the JSON. Validation runs after the file is written via python ~/.codex/skills/research/validate_json.py, and the task counts as done only when it passes. That path points at ~/.codex, so on Claude or Cursor you will need to adjust it to your own setup.
What it helps with
- run structured research over a long list of outline items
- spread web research across parallel agents
- resume an interrupted run without redoing finished items
- check field coverage in every JSON before handing it off
- work in batches with approval between them
Example prompts for the agent
- /research-deep
- Run research-deep on outline.yaml, batches of 5 items
- Resume research-deep from where it stopped
How to install research-deep
1Skills CLI (Vercel)
npx skills add Weizhena/Deep-Research-skills --skill research-deep -a claude-code2Manually: put the files in place
~/.claude/skills/research-deep/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/research-deep/
1Skills CLI (Vercel)
npx skills add Weizhena/Deep-Research-skills --skill research-deep -a codex2Manually: put the files in place
.agents/skills/research-deep/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add Weizhena/Deep-Research-skills --skill research-deep -a cursor2Manually: put the files in place
.cursor/skills/research-deep/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install Weizhena/Deep-Research-skills research-deep2Manually: put the files in place
.github/skills/research-deep/SKILL.md1Skills CLI (Vercel)
npx skills add Weizhena/Deep-Research-skills --skill research-deep -a gemini-cli2Platform CLI
gemini skills install https://github.com/Weizhena/Deep-Research-skills --path skills/research-codex-en/research-deepManually: put the files in place
.devin/skills/research-deep/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add Weizhena/Deep-Research-skills --skill research-deep -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about research-deep
How do I install research-deep in Claude?
Run npx skills add Weizhena/Deep-Research-skills --skill research-deep -a claude-code. The skill lands at ~/.claude/skills/research-deep/SKILL.md.
What does research-deep do?
It reads outline.yaml, launches one agent per item, and writes results to JSON files following the schema in fields.yaml. Finished items are skipped on a later run.
What do I need before running it?
An outline.yaml with items and execution settings, plus a fields.yaml with field definitions. Validation needs validate_json.py, referenced in the template as ~/.codex/skills/research/validate_json.py.
Source text
SKILL.md · MIT
---
name: research-deep
description: Read research outline, launch independent agent for each item for deep research. Disable task output.
---
# Research Deep - Deep Research
## Trigger
`/research-deep`
## Workflow
### Step 1: Auto-locate Outline
Find `*/outline.yaml` file in current working directory, read items list, execution config (including items_per_agent).
### Step 2: Resume Check
- Check completed JSON files in output_dir
- Skip completed items
### Step 3: Batch Execution
- Batch by batch_size (need user approval before next batch)
- Each agent handles items_per_agent items
- Launch web-search-agent (background parallel, disable task output)
**Parameter Retrieval**:
- `{topic}`: topic field from outline.yaml
- `{item_name}`: item's name field
- `{item_related_info}`: item's complete yaml content (name + category + description etc.)
- `{output_dir}`: execution.output_dir from outline.yaml (default: ./results)
- `{fields_path}`: absolute path to {topic}/fields.yaml
- `{output_path}`: absolute path to {output_dir}/{item_name_slug}.json (slugify item_name: replace spaces with _, remove special chars)
**Hard Constraint**: The following prompt must be strictly reproduced, only replacing variables in {xxx}, do not modify structure or wording.
**Prompt Template**:
```python
prompt = f"""## Task
Research {item_related_info}, output structured JSON to {output_path}
## Field Definitions
Read {fields_path} to get all field definitions
## Output Requirements
1. Output JSON according to fields defined in fields.yaml
2. Mark uncertain field values with [uncertain]
3. Add uncertain array at the end of JSON, listing all uncertain field names
4. All field values must be in English
## Output Path
{output_path}
## Validation
After completing JSON output, run validation script to ensure complete field coverage:
python ~/.codex/skills/research/validate_json.py -f {fields_path} -j {output_path}
Task is complete only after validation passes.
"""
```
**One-shot Example** (assuming researching GitHub Copilot):
```
## Task
Research name: GitHub Copilot
category: International Product
description: Developed by Microsoft/GitHub, first mainstream AI coding assistant, ~40% market share, output structured JSON to {project_dir}/results/GitHub_Copilot.json
## Field Definitions
Read {project_dir}/fields.yaml to get all field definitions
## Output Requirements
1. Output JSON according to fields defined in fields.yaml
2. Mark uncertain field values with [uncertain]
3. Add uncertain array at the end of JSON, listing all uncertain field names
4. All field values must be in English
## Output Path
{project_dir}/results/GitHub_Copilot.json
## Validation
After completing JSON output, run validation script to ensure complete field coverage:
python ~/.codex/skills/research/validate_json.py -f {project_dir}/fields.yaml -j {project_dir}/results/GitHub_Copilot.json
Task is complete only after validation passes.
```
### Step 4: Wait and Monitor
- Wait for current batch to complete
- Launch next batch
- Display progress
### Step 5: Summary Report
After all complete, output:
- Completion count
- Failed/uncertain marked items
- Output directory
## Agent Config
- Background execution: Yes
- Task Output: Disabled (agent has explicit output file when complete)
- Resume support: Yes
© Weizhena · MIT · Weizhena/Deep-Research-skills