Agent skill

librarian

Multi-repository codebase exploration. Research library internals, find code patterns, understand architecture, compare implementations across GitHub/npm/PyPI/crates. Use when needing deep understanding of how libraries work, finding implementations across open source, or exploring remote repository structure.

Stars 487
Forks 35

Install this agent skill to your Project

npx add-skill https://github.com/dmmulroy/.dotfiles/tree/main/home/.config/opencode/skill/librarian

SKILL.md

Librarian Skill

Deep codebase exploration across remote repositories.

How to Use This Skill

Reference Structure

File Purpose When to Read
tool-routing.md Tool selection decision trees Always read first
opensrc-api.md API reference, types Writing opensrc code
opensrc-examples.md JavaScript patterns, workflows Implementation examples
linking.md GitHub URL patterns Formatting responses
diagrams.md Mermaid patterns Visualizing architecture

Reading Order

  1. Start with tool-routing.md → choose tool strategy
  2. If using opensrc:
    • Read opensrc-api.md for API details
    • Read opensrc-examples.md for patterns
  3. Before responding: linking.md + diagrams.md for output formatting

Tool Arsenal

Tool Best For Limitations
grep_app Find patterns across ALL public GitHub Literal search only
context7 Library docs, API examples, usage Known libraries only
opensrc Fetch full source for deep exploration Must fetch before read

Quick Decision Trees

"How does X work?"

Known library?
├─ Yes → context7.resolve-library-id → context7.query-docs
│        └─ Need internals? → opensrc.fetch → read source
└─ No  → grep_app search → opensrc.fetch top result

"Find pattern X"

Specific repo?
├─ Yes → opensrc.fetch → opensrc.grep → read matches
└─ No  → grep_app (broad) → opensrc.fetch interesting repos

"Explore repo structure"

1. opensrc.fetch(target)
2. opensrc.tree(source.name) → quick overview
3. opensrc.files(source.name, "**/*.ts") → detailed listing
4. Read: README, package.json, src/index.*
5. Create architecture diagram (see diagrams.md)

"Compare X vs Y"

1. opensrc.fetch(["X", "Y"])
2. Use source.name from results for subsequent calls
3. opensrc.grep(pattern, { sources: [nameX, nameY] })
4. Read comparable files, synthesize differences

Critical: Source Naming Convention

After fetching, always use source.name for subsequent calls:

javascript
const [{ source }] = await opensrc.fetch("vercel/ai");
const files = await opensrc.files(source.name, "**/*.ts");
Type Fetch Spec Source Name
npm "zod" "zod"
npm scoped "@tanstack/react-query" "@tanstack/react-query"
pypi "pypi:requests" "requests"
crates "crates:serde" "serde"
GitHub "vercel/ai" "github.com/vercel/ai"
GitLab "gitlab:org/repo" "gitlab.com/org/repo"

When NOT to Use opensrc

Scenario Use Instead
Simple library API questions context7
Finding examples across many repos grep_app
Very large monorepos (>10GB) Clone locally
Private repositories Direct access

Output Guidelines

  1. Comprehensive final message - only last message returns to main agent
  2. Parallel tool calls - maximize efficiency
  3. Link every file reference - see linking.md
  4. Diagram complex relationships - see diagrams.md
  5. Never mention tool names - say "I'll search" not "I'll use opensrc"

References

  • Tool Routing Decision Trees
  • opensrc API Reference
  • opensrc Code Examples
  • GitHub Linking Patterns
  • Mermaid Diagram Patterns

Expand your agent's capabilities with these related and highly-rated skills.

dmmulroy/.dotfiles

pr-walkthrough

Generate an interactive visual walkthrough of any pull/merge request as a local HTML webapp. Produces a multi-slide presentation with SVG diagrams, annotated code, and architecture visuals. Pass a PR/MR URL and optional audience context (e.g. "assume I don't know Rust"). Use when the user says "walkthrough this PR", "explain this MR", "visual walkthrough", "PR presentation", or provides a PR/MR URL and asks for a walkthrough.

487 35
Explore
dmmulroy/.dotfiles

tdd

Test-driven development with red-green-refactor loop. Use when user wants to build features or fix bugs using TDD, mentions "red-green-refactor", wants integration tests, or asks for test-first development.

487 35
Explore
dmmulroy/.dotfiles

write-a-prd

Create a PRD through user interview, codebase exploration, and module design. Use when user wants to write a PRD, create a product requirements document, or plan a new feature.

487 35
Explore
dmmulroy/.dotfiles

grill-me

Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions "grill me".

487 35
Explore
dmmulroy/.dotfiles

prd-to-todos

Break a PRD into independently-grabbable file-backed todos using tracer-bullet vertical slices. Use when the user wants to convert a PRD into implementation tasks, create vertical-slice todos, or break down a PRD into work items.

487 35
Explore
dmmulroy/.dotfiles

tmux

Remote control tmux sessions for interactive CLIs (python, gdb, etc.) by sending keystrokes and scraping pane output.

487 35
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results