The Problem
Academic researchers using Claude Code face a fragmented workflow: literature review, experiment tracking, paper writing, and citation management each live in separate tools with incompatible formats. The result is context loss between stages and manual re-entry of the same information across tools.
What This Does
claude-scholar is a collection of Claude Code skills, commands, and hooks that standardize research workflows. The skills/ directory (444 files) contains the core capabilities: obsidian-project-kb-core provides project knowledge management, citation-verification validates BibTeX and LaTeX citations, obsidian-literature-workflow builds literature canvases and graphs, and bug-detective offers error-handling patterns. The commands/ directory (66 files) exposes these as invocable CLI-style operations like kb-init, kb-sync, and research-init.
The hooks/ directory (7 files) provides session automation: session-start initializes context, security-guard checks for risky operations, and session-summary logs activity. The agents/ directory (6 files) defines specialized review personas (code-reviewer, literature-reviewer, paper-miner).
How It Is Wired
Execution starts in skills/citation-verification/scripts/verify-citations.py at the main function (line 622), which reaches 163 functions. The call graph flows through parse_args (16 call sites), add_issue_block (11), and find_repo_root (8). The read_text function is called from 17 places and write_text from 13, making hooks/hook-common.js and skills/obsidian-project-kb-core/scripts/kb_common.py the central hubs.
The codebase touches external systems in specific ways: api-clients.py makes outbound network calls for citation verification, verify-citations.py runs subprocess.check_output for repo discovery, and 29 functions perform file I/O. The kb_common.py module (51 functions) is the most-connected single file, defining now_iso, today_str, and slugify used across the project.
The repository is four self-contained projects, not one codebase: skills (444 files), hooks, scripts, and utils. There is no unifying architecture; each project has its own entry points and dependencies.
How To Use It
git clone https://github.com/moses-y/claude-scholar
cd claude-scholar
# Install as a Claude Code plugin
claude plugin install .claude-plugin/
Configuration lives in .claude-plugin/marketplace.json and plugin.json. The MCP_SETUP.md and OBSIDIAN_SETUP.md files document integration with external services. The main branch targets Claude Code; use the codex, kimi, or opencode branches for other CLIs. No lockfile or Dockerfile is present, so setup is manual.
Real-World Use
A researcher runs kb-init to scaffold a project knowledge base, then kb-ingest to import Zotero references. The citation-verification skill validates the BibTeX during paper drafting. The build_literature_canvas.py script generates a visual graph of connected papers, and session-summary logs the session for later retrieval.
Code Health & Issues
Static analysis found 16 issues (1 high, 15 medium). The high-severity finding is duplicated code blocks: 45 repeated 6-line blocks across 21 files, concentrated in hooks/hook-common.js and the hook directory. Medium findings include oversized files (hook-common.js at 618 lines), deep nesting in scripts/test_install_uninstall.sh, broad exception handling in kb_common.py, and high branching density in scripts/uninstall.sh.
The audit also found: High - no test suite exists despite 30 source files; High - CI workflows in .github/workflows/ never invoke tests; Medium - workflows lack least-privilege GITHUB_TOKEN permissions; Low - no job timeouts set.
The Bottom Line
This is a substantial, well-organized skill library for Claude Code research workflows, with real utility for academic users. The lack of tests and CI enforcement is a genuine risk for a project this size. Use it if you're committed to Claude Code and want a structured research pipeline; expect to add your own test coverage before relying on it in production.