Files
research-en/README.md
Pikaliov c284fb12b0 Initial commit — research-en skill bundle
5-skill bundle for structured, resumable, parallel deep research:
- /research              — preliminary outline + fields generation
- /research-add-items    — supplement research objects
- /research-add-fields   — supplement field definitions
- /research-deep         — parallel agents per item, resumable, JSON-validated
- /research-report       — JSON to markdown report with TOC

Includes validate_json.py for fields.yaml coverage check (PyYAML required).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 11:09:40 +03:00

6.1 KiB

research-en

Claude Code skill bundle for structured, resumable, parallel deep research. Five user-invocable slash commands take a topic from a back-of-the-envelope idea to a finished Markdown report, with web search, per-item parallel agents, JSON validation, and field-by-field coverage checks.

English variant. The bundle ships five skills that share a single project directory layout (./{topic_slug}/) and YAML/JSON contract.

Pipeline

/research <topic>           →  outline.yaml + fields.yaml
        ↓
/research-add-items         (optional, supplement items)
/research-add-fields        (optional, supplement fields)
        ↓
/research-deep              →  results/*.json  (one per item, parallel agents)
        ↓
/research-report            →  generate_report.py + report.md

Skills

Skill Trigger What it does
research /research <topic> Step 1 — generate initial item list + field framework from model knowledge; Step 2 — launch 1 background web-search-agent to supplement; Step 3 — merge user's existing fields if any; Step 4 — write outline.yaml (items + execution config) and fields.yaml (field defs with `detail_level: brief
research-add-items /research-add-items Append new research objects to outline.yaml (user input + optional web search), dedup, in-place update.
research-add-fields /research-add-fields Append new field definitions to fields.yaml (user input + optional web search), category + detail_level confirmed by user.
research-deep /research-deep Auto-locate outline.yaml, resume from completed JSONs, batch-launch background web-search-agents (items_per_agent per agent, batch_size parallel), each writes {output_dir}/{item_slug}.json per fields.yaml, validates with validate_json.py.
research-report /research-report Read all JSONs + fields.yaml, ask which numeric fields to surface in the TOC, generate generate_report.py (handles flat/nested JSON, multi-language category mapping, complex-value formatting, uncertain skipping), execute it to produce report.md.

File contracts

outline.yaml

topic: <research topic>
items:
  - name: <item name>
    category: <category>
    description: <brief>
execution:
  batch_size: <parallel agents>
  items_per_agent: <items per agent>
  output_dir: ./results

fields.yaml

field_categories:
  - category: Basic Info
    fields:
      - name: <field>
        description: <field description>
        detail_level: brief | moderate | detailed
        required: true | false
uncertain: []   # reserved, populated during deep phase

results/{item_slug}.json

{
  "name": "...",
  "release_date": "...",
  "underlying_model": "[uncertain]",
  "uncertain": ["underlying_model", ...]
}

Both flat ({"name": ...}) and nested ({"basic_info": {"name": ...}}) layouts are supported throughout.

Validation

Every deep-research agent finishes with:

python research/validate_json.py -f <fields.yaml> -j <result.json>

validate_json.py reports per-file:

  • coverage % (covered / defined fields)
  • missing required (FAIL if non-empty)
  • missing optional, grouped by category
  • extra fields not defined in fields.yaml

Exit code is non-zero if any required field is missing.

Installation

Drop this repo into your vault's Claude Code skills directory:

git clone https://git.lissad.keenetic.name/Pikaliov/research-en.git \
    .claude/skills/research-en

Or as a submodule:

git submodule add https://git.lissad.keenetic.name/Pikaliov/research-en.git \
    .claude/skills/research-en

The five skills are auto-discovered on the next Claude Code session. Verify with /help — you should see /research, /research-add-items, /research-add-fields, /research-deep, /research-report.

Runtime dependency (for validate_json.py):

pip install pyyaml

research-deep calls validate_json.py via the ~/.claude/skills/research/validate_json.py path inside its prompt template — adjust if your install location differs.

File layout

research-en/
├── README.md                            — this file
├── research/
│   ├── SKILL.md                         — /research (preliminary)
│   └── validate_json.py                 — JSON ↔ fields.yaml coverage check (PyYAML)
├── research-add-items/SKILL.md          — /research-add-items
├── research-add-fields/SKILL.md         — /research-add-fields
├── research-deep/SKILL.md               — /research-deep (parallel, resumable)
└── research-report/SKILL.md             — /research-report (markdown synth)

Allowed tools per skill

Skill Tools
research Read, Write, Glob, WebSearch, Task, AskUserQuestion
research-add-items Bash, Read, Write, Glob, WebSearch, Task, AskUserQuestion
research-add-fields Bash, Read, Write, Glob, WebSearch, Task, AskUserQuestion
research-deep Bash, Read, Write, Glob, WebSearch, Task
research-report Read, Write, Glob, Bash, AskUserQuestion

Worked example

/research "AI Coding Assistants since 2024"
# → ./ai_coding_assistants/{outline.yaml, fields.yaml}

/research-add-items
# → adds Cursor, Windsurf, Aider, Continue, etc.

/research-deep
# → batch=4 agents, 2 items each → results/*.json
# → validate_json.py runs after each → coverage report

/research-report
# → ask: "Which fields in TOC besides name?" → github_stars, swe_bench_score
# → ./ai_coding_assistants/{generate_report.py, report.md}

Hard constraints (in skill prompts)

  • All field values must be in English (deep phase).
  • Mark uncertain values with [uncertain], list them in trailing uncertain array.
  • Prompt templates inside research/SKILL.md and research-deep/SKILL.md are hard-reproduce: only {xxx} placeholders may be substituted, structure and wording must not be modified.
  • Resume support: research-deep skips items that already have a JSON file in output_dir.
  • Batch gating: research-deep waits for user approval between batches (interactive).