← All skills
research
92 / 100 · Low risk
Fine to try. Some of what it can do is expected: a research skill usually looks things up on the internet.
By melodic-software/claude-code-plugins (GitHub) · research · 30 stars · scanned at commit 677e798
Multi-source external research with source tiers, recency checks, and a coverage ledger. Use when: 'research this', 'verify a technical claim', 'evaluate libraries or approaches', 'compare X vs Y', 'is this still current', 'find the authoritative source', 'what do the official docs say', 'deep research', 'research these N topics', 'migration research', 'exhaustive research on X'. Also a local folder outside any repository, or machine state. breadth=low narrows; deep or multi-topic asks take the…
Works with any agent that supports SKILL.md skills.
What this skill can do
Runs commands on your computer
This is disclosed by the author in the skill's SKILL.md or README. It runs automatically when the plugin is installed.
Found in 6 places.
Show 3 more
Sends data to these websites: example.org, example.com
The author does not mention this. It runs automatically when the plugin is installed. Expected for a research skill.
Found in 21 places.
Show 17 more
- plugins/discovery/hooks/fixtures/webfetch-posttooluse-env-vars.json, line 20
"tool_name": "WebFetch", - plugins/discovery/hooks/fixtures/webfetch-posttooluse-hooks.json, line 20
"tool_name": "WebFetch", - plugins/discovery/hooks/hooks.json, line 2
"description": "After a WebFetch whose result ends in a truncation marker or placeholder line, adds one line of context saying the result covers only part of th - plugins/discovery/hooks/hooks.json, line 20
"matcher": "WebFetch", - plugins/discovery/hooks/webfetch-truncation.mjs, line 38
const READ_ON_NOTE = /^\[WebFetch note:[^\]\n]*\bto read on\b[^\]\n]*\boffset: \d+\.?\]$/ - plugins/discovery/hooks/webfetch-truncation.mjs, line 54
if (payload?.tool_name !== 'WebFetch') return null - plugins/discovery/hooks/webfetch-truncation.mjs, line 64
const ending = readOn ? "WebFetch's read-on note" : 'a truncation placeholder' - plugins/discovery/hooks/webfetch-truncation.mjs, line 66
? 'Call WebFetch again with the same url and the offset the note names to read on, or /discovery:read-docs' - plugins/discovery/hooks/webfetch-truncation.mjs, line 68
return `discovery: the WebFetch result for ${url} ends in ${ending}, so it covers only part of the page. ${next} reads the whole page, or the sections asked for - plugins/discovery/hooks/webfetch-truncation.test.mjs, line 29
const readOnNote = '[WebFetch note: this page\'s text is 250017 characters long and the answer above covers only characters 0 to 100000; the final 150017 were n - plugins/discovery/hooks/webfetch-truncation.test.mjs, line 42
'read-on note: [WebFetch note: ... offset: N.]': lastLineSwapped(hooks, readOnNote), - plugins/discovery/hooks/webfetch-truncation.test.mjs, line 74
'a non-WebFetch tool whose output ends in the marker': - plugins/discovery/hooks/webfetch-truncation.test.mjs, line 76
'a WebFetch payload with no result': { ...hooks, tool_response: { bytes: 10, code: 404 } }, - plugins/discovery/hooks/webfetch-truncation.test.mjs, line 80
'a WebFetch note that names no offset': lastLineSwapped(hooks, '[WebFetch note: this page redirected to another host.]'), - plugins/discovery/hooks/webfetch-truncation.test.mjs, line 82
lastLineSwapped(hooks, '[WebFetch note: the page redirected from https://example.org/start to https://example.com/page?offset=10; fetch the new URL to read it.] - plugins/discovery/hooks/webfetch-truncation.test.mjs, line 92
assert.match(decide(lastLineSwapped(hooks, readOnNote)), /WebFetch again with the same url and the offset/) - plugins/discovery/hooks/webfetch-truncation.test.mjs, line 132
test('hooks.json registers the hook on PostToolUse WebFetch in exec form', () => {
and 1 more places
Install
Paste this into your terminal. It downloads exactly the version we scanned, not whatever is newest.
if [ -e ~/.agents/skills/'research' ] || [ -L ~/.agents/skills/'research' ]; then echo 'A skill folder named research already exists — not replacing it' >&2; false; else d=$(mktemp -d) && git clone --quiet --filter=blob:none --no-checkout 'https://github.com/melodic-software/claude-code-plugins' "$d" && git -C "$d" checkout --quiet '677e7988f432dacb5e2d4df2b124f96da8e8f9f3' -- 'plugins/discovery/skills/research' && mkdir -p ~/.agents/skills && cp -R "$d"/'plugins/discovery/skills/research' ~/.agents/skills/'research' && rm -rf "$d"; fi
Codex reads ~/.agents/skills directly. For Claude Code, Cursor, Copilot, Gemini CLI, Antigravity or OpenCode, also link it. For Claude Code: ln -s ~/.agents/skills/'research' ~/.claude/skills/'research' (other agents: ~/.cursor/skills, ~/.copilot/skills, ~/.gemini/skills, ~/.gemini/config/skills, ~/.config/opencode/skills). Or install through the finder skill, which does both.
Badge for your README
The badge for melodic-software/claude-code-plugins shows the score of its lowest-scoring skill.

[](https://zalavijaysinh.github.io/skilltrust/repos/melodic-software/claude-code-plugins/)
Score history
| Date | Version | Score |
|---|
| 2026-11-09 | 677e798 | 92 |
| 2026-11-07 | 81c7244 | 92 |