feat(autoresearch): add Dr. Claw research pack#150
Conversation
Add Dr. Claw as the first pack in AutoResearch Hub, featuring 16 inno- prefixed skills covering the full research lifecycle. Includes GEMINI_API_KEY env config for figure generation, with Hub UI adapted to support env-only configuration (no MCP server registration needed). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Code Review: feat(autoresearch): add Dr. Claw research pack
Overall a clean, well-scoped feature addition. A couple of minor concerns.
👍 Highlights
- Data-driven approach — Dr. Claw is added purely as a
PackDefentry inautoResearchPacks.tswith no special-case logic. The pack system is well designed. - Graceful env-only handling — The backend correctly skips MCP registration for packs that only need env vars (like
gemini-figure). The frontend hides the MCP selector when there is only one option and hides the register command when it is empty. Logical. configLabelextension — The optionalconfigLabelfield onPackDefis a clean extension. Other packs can use it too without breaking changes.inno-prefix in symlink filter — Necessary for Dr. Claw skills to be discovered. One-line change, correct.
🔴 Must Fix
1. Unknown backend errors are silently swallowed (medium severity)
Old code:
if (!args) {
results.errors.push({ step: 'mcp', error: `Unknown backend: ${mcpBackend}` });
}New code:
if (!args) {
results.steps.push({ step: 'mcp', status: 'skipped', message: `No MCP server needed for ${mcpBackend}` });
}This is correct for gemini-figure, but if someone misconfigures a pack with a typo (e.g., mcpBackend: "codxe"), the old code would report an error while the new code silently skips with "No MCP server needed."
Suggestion: maintain an explicit allowlist of env-only backends (e.g., const envOnlyBackends = new Set(['gemini-figure'])) and only skip for those. Unknown backends should still error.
🟡 Suggestions
2. register: '' relies on JS falsy semantics (nit)
{ key: 'gemini-figure', label: 'Gemini (Figure Gen)', register: '', envVars: [...] }The UI checks {mcpOpt.register && (...)}, so empty string works as falsy. But register: string in the PackDef type does not convey the intent. Consider either:
- Making the type
register?: string(optional), or - Adding a comment explaining that empty string means "no register command"
3. Korean translations are copy-pasted English (nit)
All ko strings are identical to en. If Korean localization is planned, these should be translated. If not, consider omitting ko and falling back to en at the consumer level to avoid maintaining duplicate strings.
Verdict
Approve with one fix — Address #1 (silent error swallowing for unknown backends), then good to merge. The rest are cosmetic improvements.
- Add ENV_ONLY_BACKENDS allowlist so unknown backends still error while known env-only backends (gemini-figure) skip gracefully - Make PackConfigOption.register optional instead of using empty string - Add register guard in SkillsDashboard to match AutoResearchHub Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
Pushed fixes per review feedback (4dd5c21): ✅ Addressed1. Unknown backend errors no longer silently swallowed (must fix)
2.
⏭️ Deferred3. Korean translations copy-pasted from English (nit)
|
Summary
inno-skills covering the full research lifecycle (planning → survey → ideation → experiment → paper writing → review → rebuttal)GEMINI_API_KEYenvironment configuration for image generation (Figure Gen skill), with Hub UI adapted to show env-only config instead of MCP reviewer labelsinno-prefix in skills symlinking; gracefully skip MCP registration for env-only packsChanges
src/constants/autoResearchPacks.ts— newDr. ClawPackDef (first in array), add optionalconfigLabelfield to PackDef typesrc/components/AutoResearchHub.tsx— useconfigLabelfor per-pack config section title/desc; hide MCP selector when single option; hide register command when emptyserver/routes/community-tools.js— skip MCP registration for unknown backends (env-only); addinno-to skills symlink filterTest plan
~/.openclaw/community-tools.json🤖 Generated with Claude Code