Deep-Research-skills research-report

Summarize deep research results into markdown report, cover all fields, skip uncertain values.

install
source · Clone the upstream repo
git clone https://github.com/Weizhena/Deep-Research-skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/Weizhena/Deep-Research-skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/research-en/research-report" ~/.claude/skills/weizhena-deep-research-skills-research-report-f61d0a && rm -rf "$T"
manifest: skills/research-en/research-report/SKILL.md
source content

Research Report - Summary Report

Trigger

/research-report

Workflow

Step 1: Locate Results Directory

Find

*/outline.yaml
in current working directory, read topic and output_dir config.

Step 2: Scan Optional Summary Fields

Read all JSON results, extract fields suitable for TOC display (numeric, short metrics), e.g.:

  • github_stars
  • google_scholar_cites
  • swe_bench_score
  • user_scale
  • valuation
  • release_date

Use AskUserQuestion to ask user:

  • Which fields to display in TOC besides item name?
  • Provide dynamic options list (based on actual fields in JSON)

Step 3: Generate Python Conversion Script

Generate

generate_report.py
in
{topic}/
directory, script requirements:

  • Read all JSON from output_dir
  • Read fields.yaml to get field structure
  • Cover all field values from each JSON
  • Skip fields with values containing [uncertain]
  • Skip fields listed in uncertain array
  • Generate markdown report format: Table of contents (with anchor links + user-selected summary fields) + Detailed content (by field category)
  • Save to
    {topic}/report.md

TOC Format Requirements:

  • Must include every item
  • Each item displays: number, name (anchor link), user-selected summary fields
  • Example:
    1. [GitHub Copilot](#github-copilot) - Stars: 10k | Score: 85%

Script Technical Requirements (Must Follow)

1. JSON Structure Compatibility Support two JSON structures:

  • Flat structure: Fields directly at top level
    {"name": "xxx", "release_date": "xxx"}
  • Nested structure: Fields in category sub-dict
    {"basic_info": {"name": "xxx"}, "technical_features": {...}}

Field lookup order: Top level -> category mapping key -> Traverse all nested dicts

2. Category Multi-language Mapping fields.yaml category names and JSON keys can be any combination (CN-CN, CN-EN, EN-CN, EN-EN). Must establish bidirectional mapping:

CATEGORY_MAPPING = {
    "Basic Info": ["basic_info", "Basic Info"],
    "Technical Features": ["technical_features", "technical_characteristics", "Technical Features"],
    "Performance Metrics": ["performance_metrics", "performance", "Performance Metrics"],
    "Milestone Significance": ["milestone_significance", "milestones", "Milestone Significance"],
    "Business Info": ["business_info", "commercial_info", "Business Info"],
    "Competition & Ecosystem": ["competition_ecosystem", "competition", "Competition & Ecosystem"],
    "History": ["history", "History"],
    "Market Positioning": ["market_positioning", "market", "Market Positioning"],
}

3. Complex Value Formatting

  • list of dicts (e.g., key_events, funding_history): Format each dict as one line, separate kv with
    |
  • Normal list: Short lists joined with comma, long lists displayed with line breaks
  • Nested dict: Recursive formatting, display with semicolon or line breaks
  • Long text strings (over 100 chars): Add line breaks
    <br>
    or use blockquote format for readability

4. Extra Fields Collection Collect fields that exist in JSON but not defined in fields.yaml, put in "Other Info" category. Note to filter:

  • Internal fields:
    _source_file
    ,
    uncertain
  • Nested structure top-level keys:
    basic_info
    ,
    technical_features
    etc.
  • uncertain
    array: Display each field name on separate line, don't compress into one line

5. Uncertain Value Skipping Skip conditions:

  • Field value contains
    [uncertain]
    string
  • Field name is in
    uncertain
    array
  • Field value is None or empty string

Step 4: Execute Script

Run

python {topic}/generate_report.py

Output

  • {topic}/generate_report.py
    - Conversion script
  • {topic}/report.md
    - Summary report