librarian

Original🇺🇸 English
Translated

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.

6installs
Added on

NPX Install

npx skill4agent add dmmulroy/.dotfiles librarian

Librarian Skill

Deep codebase exploration across remote repositories.

How to Use This Skill

Reference Structure

FilePurposeWhen to Read
tool-routing.md
Tool selection decision treesAlways read first
opensrc-api.md
API reference, typesWriting opensrc code
opensrc-examples.md
JavaScript patterns, workflowsImplementation examples
linking.md
GitHub URL patternsFormatting responses
diagrams.md
Mermaid patternsVisualizing 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

ToolBest ForLimitations
grep_appFind patterns across ALL public GitHubLiteral search only
context7Library docs, API examples, usageKnown libraries only
opensrcFetch full source for deep explorationMust 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");
TypeFetch SpecSource 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

ScenarioUse Instead
Simple library API questionscontext7
Finding examples across many reposgrep_app
Very large monorepos (>10GB)Clone locally
Private repositoriesDirect 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