AgentSkillsCN

librarian

多仓库代码库探索。深入研究库的内部实现,发掘代码模式,理解架构设计,对比 GitHub/npm/PyPI/crates 等平台上的不同实现方案。当您需要深度理解库的运作原理、在开源社区中寻找多种实现方式,或探索远程仓库的组织结构时,可使用此技能。

SKILL.md
--- frontmatter
name: librarian
description: 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.
references:
  - references/tool-routing.md
  - references/opensrc-api.md
  - references/opensrc-examples.md
  - references/linking.md
  - references/diagrams.md

Librarian Skill

Deep codebase exploration across remote repositories.

How to Use This Skill

Reference Structure

FilePurposeWhen to Read
tool-routing.mdTool selection decision treesAlways read first
opensrc-api.mdAPI reference, typesWriting opensrc code
opensrc-examples.mdJavaScript patterns, workflowsImplementation examples
linking.mdGitHub URL patternsFormatting responses
diagrams.mdMermaid 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?"

code
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"

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

"Explore repo structure"

code
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"

code
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