research

SkillDatabases & data

Lets your agent research trends and challenges in Japanese NLP by combining a bundled dataset with live web search.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the research skill

About this capability

Analyze current trends and challenges in Japanese NLP for a topic. Surveys the existing awesome-japanese-nlp-resources dataset and augments it with up-to-the-minute web research to produce a combined trend + issue report.

What this skill tells your AI

The instructions your AI receives, as published by taishi-i/awesome-japanese-nlp-resources in plugins/awesome-japanese-nlp-resources/skills/research/SKILL.md and read by ahel’s review.

Research Japanese NLP trends and challenges for topic: "$ARGUMENTS" by combining the bundled dataset with the latest web information.

Instructions

Preamble — Establish the current date

Before anything else, run this once and remember the values — every step that mentions a year refers to them:

echo "YEAR_NOW=$(date +%Y)"
echo "YEAR_PREV=$(($(date +%Y) - 1))"

Substitute these wherever this skill writes ${YEAR_NOW} or ${YEAR_PREV}. Do not hardcode years.

Step 0 — Validate input

If $ARGUMENTS is empty or blank, treat it as a request for a general overview of the current Japanese NLP landscape (both trends and challenges). Use the following defaults for the rest of the steps:

  • Topic label for output headings: "Japanese NLP Overall Landscape" (use "日本語NLP 全体動向" only when the user's query was written in Japanese)
  • Keywords for Step 1 (local dataset survey): llm, bert, embed, speech, morpholog, translat, evaluat, benchmark — short stems, since Step 3 matches by literal substring and a multi-word phrase like japanese nlp rarely occurs verbatim in a description — This broad set gives a cross-category snapshot of the most popular resources and of coverage gaps
  • WebSearch queries for Step 5: cover both trend and challenge language across multiple sub-fields:
    • japanese NLP trends ${YEAR_NOW} overview
    • 日本語 NLP 最新動向 ${YEAR_NOW}
    • japanese LLM embedding benchmark ${YEAR_NOW} github
    • japanese NLP challenges ${YEAR_NOW} overview
    • 日本語 NLP 課題 ${YEAR_NOW}
    • japanese LLM limitations evaluation ${YEAR_NOW}
  • Report title: ## 🔭 Japanese NLP Research Report (as of ${REPORT_DATE_EN}) instead of ## 🔭 Research Report for "$ARGUMENTS" (use ## 🔭 日本語NLP リサーチレポート (${REPORT_DATE_JP}時点) only when output language is Japanese)
  • Section 1 (Overview): write a broad 3–4 sentence overview covering the major active sub-fields (LLMs, embeddings/RAG, speech, morphological analysis, benchmarks) and the most pressing shared challenges

Step 1 — Interpret the topic

The user's topic is: "$ARGUMENTS"

Translate the topic intent to English keywords for the local dataset survey. Aim for 4–6 keywords, using the same stem + tool-name conventions as the search skill (morpholog, embed, classif, translat, recogni, plus well-known tool names for the domain).

Step 2 — Locate the data file

The data file ships with the plugin. Resolve its path via ${CLAUDE_PLUGIN_ROOT} (Claude Code substitutes this inline in skill content), falling back to a scoped search only if the install is unusual:

RESOURCES_PATH="${CLAUDE_PLUGIN_ROOT}/data/resources.json"
[ -f "$RESOURCES_PATH" ] || RESOURCES_PATH="$(find "${HOME}/.claude/plugins" -type f -name resources.json 2>/dev/null | grep "awesome-japanese-nlp-resources/" | head -1)"
echo "RESOURCES_PATH=$RESOURCES_PATH"

Use the resulting absolute RESOURCES_PATH wherever Step 3 opens the data file.

The plugin also ships data/multilingual_resources.json (same item format) listing multilingual GitHub repositories that provide concrete Japanese features, from docs/multilingual.md. The scripts below load it automatically when it exists; its items have categories like Multilingual (Speech recognition).

Step 3 — Survey the existing dataset (inline Python)

Do NOT use the Read tool — the file exceeds the Read tool's size limit. Run the scoring in a single Bash call using Python.

python3 << 'EOF'
import json, os

with open("RESOURCES_PATH") as f:    # absolute path from Step 2
    data = json.load(f)
multilingual_path = os.path.join(os.path.dirname("RESOURCES_PATH"), "multilingual_resources.json")
if os.path.exists(multilingual_path):
    with open(multilingual_path) as f:
        data += json.load(f)

keywords = ["keyword1", "keyword2", "keyword3"]  # from Step 1

results = []
for item in data:
    if item.get("status") == "not_found":
        continue

    n = item.get("n", "").lower()
    d = item.get("d", "").lower()
    s = " ".join(item.get("s") or []).lower()
    c = item.get("c", "").lower()
    al = " ".join(item.get("al") or []).lower()

    text_score = 0
    for kw in keywords:
        kw = kw.lower()
        if n == kw:       text_score += 20
        elif kw in n:     text_score += 10
        if kw in d:       text_score += 5
        if kw in s:       text_score += 3
        if kw in c:       text_score += 2
        if kw in al:      text_score += 10

    if text_score < 8:
        continue

    ns = item.get("ns") or 0
    nd = item.get("nd") or 0
    sc = item.get("sc") or 0
    pop = (ns if ns else nd) * 2.5
    qual = min(5, sc * 5 / 21)
    combined = text_score + pop + qual

    results.append((combined, item))

results.sort(key=lambda x: -x[0])

# Category distribution across ALL matches (not just the top slice) — used to
# spot which resource types dominate and, by inference, which are thin.
from collections import Counter
cat_counts = Counter(item["c"] for _, item in results)

print(f"=== {len(results)} local matches; top 10 shown ===")
for combined, item in results[:10]:
    st = item.get("st", 0) or 0
    dl = item.get("dl", 0) or 0
    print(f"score={combined:.1f} st={st} dl={dl}")
    print(f"  n={item['n']}")
    print(f"  u={item['u']}")
    print(f"  c={item['c']}")
    print(f"  s={item.get('s','')}")
    print(f"  d={item.get('d','')[:120]}")
    print()

print("=== category distribution (all matches) ===")
for cat, count in cat_counts.most_common(10):
    print(f"  {count:4d}  {cat}")
EOF

Substitute KEYWORDS with your keywords list from Step 1.

Step 4 — Identify trend and challenge angles

From the Step 3 survey, note both:

Trend angles:

  • What's the dominant architecture in the top matches (BERT vs. GPT vs. T5 vs. LLaMA)?
  • What's the dominant resource type (libraries vs. models vs. corpora)?
  • Are the top items recent (within the last 2 years) or older (>3 years ago)?

Challenge angles:

  • Coverage gaps: which sub-problems within "$ARGUMENTS" are not well-represented in the existing resources?
  • Known limitations of top items: small dataset size, narrow domain, dated baselines, evaluation issues, restrictive license — what would a practitioner complain about?
  • Famous open difficulties in this domain (e.g. honorific generation, code-switching, ambiguity, domain transfer, low-resource dialects)

Both angles feed the same Step 5 web research — you don't need two separate research passes.

Step 5 — Web research

Use WebSearch + WebFetch only — do not use the gh CLI in this project.

Run 6–10 WebSearch queries, mixing trend-language and challenge-language, English and Japanese. Always include ${YEAR_NOW} (and optionally ${YEAR_PREV}) to bias toward recency:

Trend-oriented:

  • Japanese NLP <topic-en> ${YEAR_NOW}
  • 日本語 <topic> 最新 モデル ${YEAR_NOW}
  • arxiv japanese <topic-en> ${YEAR_PREV} ${YEAR_NOW}
  • huggingface japanese <topic-en> new release

Challenge-oriented:

  • Japanese NLP <topic-en> challenges ${YEAR_NOW}
  • 日本語 <topic> 課題 未解決 ${YEAR_NOW}
  • arxiv japanese <topic-en> ${YEAR_PREV} ${YEAR_NOW} limitations
  • <topic-en> japanese benchmark error analysis

When a specific high-value URL surfaces (arXiv abstract, HuggingFace model card, blog post, benchmark leaderboard), use WebFetch to extract details:

WebFetch url="https://..." prompt="Extract: publication/release date, name, key contribution or problem statement, proposed solution if any, GitHub/HuggingFace URL if any, and a 1-sentence summary. Note if it cites Japanese-specific issues."

Step 6 — Synthesize findings

Sort the Step 5 findings into:

  1. Web items already in the dataset — confirm the survey's top items remain relevant; note if anything new dethrones them.
  2. Web items NOT in the dataset — candidates the user could also surface via /awesome-japanese-nlp-resources:discover "$ARGUMENTS"; mention this in the output.
  3. Directional signals (trends) — 2–4 specific observations about where the field is heading, e.g. "Parameter-count growth: 1B → 7B → 70B for Japanese LLMs since 2024", "Shift from encoder-only to decoder-only base models".
  4. Known challenges — 3–6 concrete, dated items with URLs. Each should be a specific problem ("evaluation suites still over-rely on machine-translated GLUE-style tasks", not "evaluation is hard").
  5. Current efforts / proposed solutions — 2–4 ongoing projects, papers, or releases attempting to address the challenges in bucket 4. Each needs a URL. If none surfaced, say so explicitly.
  6. Open gaps — items in bucket 4 that bucket 5 does NOT cover, and dataset coverage gaps from Step 4.

Step 7 — Format the report

Language detection rule (apply before writing any output):

  • $ARGUMENTS contains Japanese characters (hiragana / katakana / kanji) → Japanese
  • Otherwise → English (default)

Apply the detected language to all headings and prose.

## 🔭 Research Report for "$ARGUMENTS" (as of ${REPORT_DATE_EN})

2–3 sentence summary covering both the current focus/trend and the main open challenge.

### 1. What's already in awesome-japanese-nlp-resources

Top 5 resources:

| # | Resource | Category | Popularity | Summary |
|---|---|---|---|---|
| 1 | [name](url) | category | ⭐N or 📥N | 10–15 word summary |

Category distribution: <Python library: 45, HuggingFace Model: 30, ...>

### 2. Latest Trends

- 2–4 bullet points of directional signals (bucket 3), each with a source link.

### 3. Known Challenges

| # | Challenge | Notes | Source |
|---|---|---|---|
| 1 | short challenge statement | 1 sentence detail | [source](url) |

### 4. Current Efforts

- 2–4 bullets naming ongoing work that addresses a Step 3 challenge, each with a URL. If none found, state that explicitly.

### 5. Still Unsolved

- Bullet list of open gaps (bucket 6) — combine dataset coverage gaps and challenge gaps not covered by current efforts.

### 6. Not yet in the list

If any notable web finds from bucket 2 exist, list them briefly and point to `/awesome-japanese-nlp-resources:discover "$ARGUMENTS"` for the full discovery workflow. Omit this section if bucket 2 was empty.

Sources:
- [Title 1](https://...)
- [Title 2](https://...)

If $ARGUMENTS was empty, use the Step 0 defaults for the title/overview instead of "$ARGUMENTS"-specific text.

Rules:

  • Every claim in sections 2–4 needs a source link — this skill's value is grounding trend/challenge claims in fresh web evidence, not restating the dataset.
  • Keep section 1's table to the top 5 — this is context, not the point of the report.
  • If Step 5 surfaced little (e.g. a very niche topic), say so explicitly rather than padding with generic statements.

Signals

GitHub stars
1k
Forks
53
Last commit
Sep 2026
Hacker News mentions
20
Advanced
Catalog kind
skill
Gateway key
research-taishi-i
Source
github.com/taishi-i/awesome-japanese-nlp-resources