Repository navigation
feat(genesis-tools): add gt:research skill with MCP-availability protocol - #153
Conversation
|
Caution Review failedPull request was closed or merged during review 📝 WalkthroughWalkthroughThis pull request adds comprehensive research skill documentation and performs widespread refactoring across the cmux and doctor modules. Changes include two new skill specification files, systematic conversion of Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~12 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Code Review
This pull request updates the genesis-tools plugin to version 1.0.21 and introduces a new gt:research skill. This skill facilitates internet research by categorizing queries and dispatching subagents to utilize available MCP servers, featuring robust handling for missing tools and a comprehensive installation guide for optional dependencies. I have no feedback to provide.
There was a problem hiding this comment.
Actionable comments posted: 5
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@plugins/genesis-tools/skills/research/references/mcps.md`:
- Around line 54-57: Add blank lines before and after each fenced code block
labels such as "Install:" and "Config snippet:" so the markdown complies with
MD031; locate occurrences in the mcps.md file (e.g., the "Install:" block with
```bash and the "Config snippet:" blocks with ```json) and insert a blank line
between the label and the opening fence and another blank line after the closing
fence for all reported occurrences (including the other blocks referenced near
the same sections).
- Line 76: Update the tool list to use fully-qualified MCP tool names: replace
unqualified `get_post_comments` and `get_top_posts` with
`mcp__reddit-mcp-server__get_post_comments` and
`mcp__reddit-mcp-server__get_top_posts` respectively so the Tools used by this
skill line consistently follows the mcp__<server>__<tool> protocol; edit the
`Tools used by this skill:` entry in `mcps.md` to list
`mcp__reddit-mcp-server__search_reddit`,
`mcp__reddit-mcp-server__get_post_comments`, and
`mcp__reddit-mcp-server__get_top_posts`.
In `@plugins/genesis-tools/skills/research/SKILL.md`:
- Line 83: Add a blank line immediately after each category heading in SKILL.md
(for example after the "### factual" heading and the other category headings
flagged) to satisfy markdownlint MD022; locate the headings (the lines that
start with "### " followed by the category name) and insert a single empty line
directly beneath each one so every category heading is followed by a blank line.
- Around line 126-127: The sentiment preset lists Reddit tools without the
required prefix causing invalid tool references; update the entries so
`get_post_comments` and `get_top_posts` are qualified with the
`mcp__reddit-mcp-server__` prefix (i.e., use
`mcp__reddit-mcp-server__get_post_comments` and
`mcp__reddit-mcp-server__get_top_posts`) to match the existing
`mcp__reddit-mcp-server__search_reddit` naming in the SKILL.md sentiment preset.
- Line 202: The fenced code block that begins with the line containing ROLE: in
SKILL.md is missing a language identifier (MD040); update that fenced template
block to declare a language (for example add "text" or "markdown") immediately
after the opening triple backticks so the block reads like ```text followed by
the ROLE: line to satisfy markdownlint and make the block explicit.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Run ID: ee55298b-2df0-4e7c-b843-6dc1c9b08d4a
📒 Files selected for processing (4)
.claude-plugin/marketplace.jsonplugins/genesis-tools/.claude-plugin/plugin.jsonplugins/genesis-tools/skills/research/SKILL.mdplugins/genesis-tools/skills/research/references/mcps.md
📜 Review details
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2026-03-09T13:39:43.059Z
Learnt from: genesiscz
Repo: genesiscz/GenesisTools PR: 82
File: src/claude/lib/usage/dashboard-config.ts:24-25
Timestamp: 2026-03-09T13:39:43.059Z
Learning: GenesisTools (genesiscz/GenesisTools) is a personal CLI tool, not a multi-tenant service. Do not suggest data migration paths or backward-compatibility shims for simple default value changes in configuration files (e.g., dashboard-config.ts). The TUI provides interactive controls (e.g., the `i` key to cycle poll intervals at runtime), so users can adjust settings without needing automated migrations. Avoid overengineering suggestions in this context.
Applied to files:
plugins/genesis-tools/.claude-plugin/plugin.json.claude-plugin/marketplace.json
📚 Learning: 2026-02-25T23:00:07.620Z
Learnt from: genesiscz
Repo: genesiscz/GenesisTools PR: 56
File: plugins/genesis-tools/commands/github-pr.md:131-131
Timestamp: 2026-02-25T23:00:07.620Z
Learning: Adopt the style: use lowercase 'markdown' (not 'Markdown') in the GenesisTools documentation. Apply this consistently across all Markdown files in the repository (any .md file), including generated docs and READMEs.
Applied to files:
plugins/genesis-tools/skills/research/references/mcps.mdplugins/genesis-tools/skills/research/SKILL.md
🪛 LanguageTool
plugins/genesis-tools/skills/research/SKILL.md
[uncategorized] ~102-~102: The official name of this software platform is spelled with a capital “H”.
Context: ...purpose, GitHub issues/discussions via gt:github` skill if available, sorted by reaction...
(GITHUB)
[style] ~117-~117: To elevate your writing, try using an alternative expression here.
Context: ...le general-purpose, Sonnet (precision matters for code) - Tools: `mcp__gh_grep__s...
(MATTERS_RELEVANT)
[uncategorized] ~118-~118: The official name of this software platform is spelled with a capital “H”.
Context: ...mcp__gh_grep__searchGitHub (primary), gt:github skill for issues/PRs if available, `mc...
(GITHUB)
[uncategorized] ~127-~127: The official name of this software platform is spelled with a capital “H”.
Context: ...issing - B — GitHub issue threads via gt:github skill (sorted by reactions); fall back...
(GITHUB)
[uncategorized] ~127-~127: The official name of this software platform is spelled with a capital “H”.
Context: ...eactions); fall back to WebSearch for site:github.com issues if missing - **Min sources:...
(GITHUB)
🪛 markdownlint-cli2 (0.22.1)
plugins/genesis-tools/skills/research/references/mcps.md
[warning] 55-55: Fenced code blocks should be surrounded by blank lines
(MD031, blanks-around-fences)
[warning] 60-60: Fenced code blocks should be surrounded by blank lines
(MD031, blanks-around-fences)
[warning] 81-81: Fenced code blocks should be surrounded by blank lines
(MD031, blanks-around-fences)
[warning] 86-86: Fenced code blocks should be surrounded by blank lines
(MD031, blanks-around-fences)
[warning] 124-124: Fenced code blocks should be surrounded by blank lines
(MD031, blanks-around-fences)
[warning] 129-129: Fenced code blocks should be surrounded by blank lines
(MD031, blanks-around-fences)
plugins/genesis-tools/skills/research/SKILL.md
[warning] 83-83: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
[warning] 90-90: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
[warning] 97-97: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
[warning] 106-106: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
[warning] 115-115: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
[warning] 123-123: Headings should be surrounded by blank lines
Expected: 1; Actual: 0; Below
(MD022, blanks-around-headings)
[warning] 202-202: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🔇 Additional comments (2)
plugins/genesis-tools/.claude-plugin/plugin.json (1)
3-3: Version bump is correct and release-aligned.The manifest version update to
1.0.21is appropriate for the new skill release and is internally consistent in this file..claude-plugin/marketplace.json (1)
4-4: Marketplace and plugin versions are properly synchronized.Both version fields are consistently bumped to
1.0.21, which matches the plugin manifest and avoids metadata drift.Also applies to: 14-14
…ocol Ports the personal research dispatcher into the public genesis-tools plugin. Skill detects which MCPs (jina, brave-search, reddit-mcp-server, gh_grep, context7-mcp) are live, degrades gracefully when missing, and offers a one-time install prompt with bun add + config snippet from references/mcps.md. Removes hardcoded Obsidian vault path and personal API keys; save behavior defaults to project-scoped .claude/work/research/ with optional Obsidian copy when OBSIDIAN_VAULT_PATH is set. Bumps marketplace + plugin version to 1.0.21.
- src/cmux: organize imports, useImportType, format, swap JSON for SafeJSON, drop unused TREE_GAP, fix useless regex escape - src/doctor: organize imports, format
981ea7d to
f038a7c
Compare
- mcps.md: blank lines around fenced code blocks (MD031) - mcps.md: qualify Reddit tool names with mcp__reddit-mcp-server__ prefix - SKILL.md: blank lines after category headings (MD022) - SKILL.md: qualify Reddit tool names in sentiment preset - SKILL.md: add 'text' language tag to template fenced block (MD040)
Summary
gt:researchskill ported from a personal dispatcher into the publicgenesis-toolsplugin so anyone installing the marketplace can use itjina,brave-search,reddit-mcp-server,gh_grep,context7-mcpare live, drops missing ones from the agent allowlist, substitutes per a fallback table, and surfaces the gap inConfidence & GapsAskUserQuestionwith three options (Install now/Skip/Don't ask again this run); on Install now the skill printsbun add --global <pkg>and the exactmcpServersJSON snippet fromreferences/mcps.mdfor the user to paste into their Claude config. The skill never runs install commands itself; user can refuse with no penalty$OBSIDIAN_VAULT_PATH, default save path is project-scoped.claude/work/research/1.0.21Files added
plugins/genesis-tools/skills/research/SKILL.md— main dispatcher (classify → check MCPs → optional install offer → dispatch → stitch)plugins/genesis-tools/skills/research/references/mcps.md— install commands andmcpServerssnippets per optional MCP, loaded by the skill only when the user opts in to installTest plan
factualcategory, single Haiku, ≥3 sources, inline only)MCPs used/MCPs unavailablelinestools mcp-manager disable brave-search, then re-run acomparisonquery — confirm the skill detects the gap, optionally offers install (or proceeds viaWebSearchfallback) and notes it inConfidence & Gaps. Re-enable after--quick/ "temporary" / "just tell me" triggers correctly skip both the install offer and the file writegt:explore/gt:githubreferences fall back togeneral-purposewhen those sister skills aren't installedSummary by CodeRabbit
Release Notes
New Features
Improvements