docpull-research

A research tool that fetches and searches documentation and other public web sources for a named library, framework, API, vendor, product, or URL. It grounds answers in current source material instead of relying only on memory.

In plain words
What is it for?
Use it when asking how to use a specific library or API, checking version-specific behaviour, explaining a supplied documentation page, or researching a vendor or product website.
Why use it?
It reduces the risk of using outdated or incorrect instructions for software that changes over time. It also lets answers refer to the relevant source documents.

Skill for Claude CodeCodex

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add skills/raintree-technology/docpull/docpull-research
Any agent
npx skills add raintree-technology/docpull --skill docpull-research
Clone the repo
git clone --depth 1 https://github.com/raintree-technology/docpull

Made for: Claude Code, Codex.

Per session 115 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,206 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00115 $0.01206
Opus 5 $0.00057 $0.00603
Sonnet 5 $0.00023 $0.00241
Haiku 4.5 $0.00012 $0.00121

Measured 2d ago against content hash a8d645a06822, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

docpull-research scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

plugin/skills/docpull-research/SKILL.md · 76 lines

How it starts

The opening of the file, as written. The whole thing — 76 lines — stays where its author put it; the contents beside it link to each section on GitHub.

docpull research

Ground library/framework, API, vendor, product, and website answers in fetched source material instead of training-data recall. The cost of one grep_docs call is ~50 ms; the cost of giving a confidently wrong answer about a fast-moving source is much higher.

When to use this skill

Activate when the user's question names a specific library, framework, SDK, API surface, vendor, product page, or website - especially:

  • Fast-moving libraries where training-data drift is likely: Next.js (App Router), Pydantic v2, LangChain, FastAPI, Anthropic SDK, OpenAI SDK, Drizzle, Prisma, Tailwind v4+, Vercel AI SDK.
  • Version-specific questions ("how does X work in [library] v[N]").
  • Pasted documentation, blog, vendor, product, or source URLs the user wants explained or referenced.
  • Code the user is actively writing against a library, where wrong signatures will cost them debugging time.

Do NOT activate for:

  • General programming questions ("what's a closure", "explain async/await").
  • The user's own codebase — that's what Read/Grep are for.
  • Highly stable, well-known stdlib APIs (Python os, JavaScript Array.prototype).
  • Clarifying questions where the answer is trivial from context.

Workflow

1. Check what's already cached

Always start with list_indexed. It's free and tells you which libraries you can search immediately without fetching.

list_indexed() → ["fastapi (3d ago)", "react (12h ago)", ...]

2. If the source/library is cached -> search it

Use grep_docs with a focused regex. The source is already on disk, so this is a local search:

grep_docs(library="fastapi", pattern="dependency injection", limit=10, context=2)

If you want more context around a hit, use read_doc(library, path, line_start, line_end).

3. If the source/library is NOT cached -> decide whether to fetch

  • Built-in alias (the source appears in list_sources()): call ensure_docs(source="<alias>"). This crawls and indexes the whole source. ~10-30s for typical sites.
  • Pasted documentation or source URL: call fetch_url(url=...) if you only need one static/server-rendered page. For a whole source site you don't have an alias for, tell the user to run /web-add <URL> (or the older /docs-add <URL> alias) so docpull can register and crawl it; the MCP fetch_url is single-page only.
  • No alias, user didn't paste a URL: ask the user once whether they'd like to add the source, and what URL should be used. Don't fetch speculatively.

Read the full file on GitHub · 76 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 76 lines · 115 tokens per session scan A a8d645a06822

Subscribe to this mod's changes

docpull-research is a skill published in the GitHub repository raintree-technology/docpull (25 stars, last pushed 6d ago), licensed MIT. It adds 115 tokens to every session and 1,206 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.

Related

Other skills, from other repositories

doc-generator

Auto-generate API reference documentation from Python code.

XSpoonAi/spoon-awesome-skill · 13 tokens

decided-capture

Capture a NEW decision or requirement from a conversation (an interview) into ONE valid RAC (requirements-as-code) artifact — you interview and propose, the human ratifies, decided validate closes, and promotion into the trusted corpus is by pull request reviewed by someone other than the author. Use when a user wants…

asdecided/core · 113 tokens

decided-import

Reformat ONE existing document (a decision, requirement, design, roadmap, or prompt) into ONE valid RAC (requirements-as-code) artifact, with a mandatory human-review step before any file is written and decided validate as the deterministic close. Use when a user wants to add or import a single existing decision or…

asdecided/core · 98 tokens

decided-review

Review and triage a RAC (requirements-as-code) corpus using the decided CLI — work prioritised findings worst-first until validation and relationship checks pass. Use when asked to review, triage, or fix findings across a project's AsDecided corpus (the decisions/ directory).

asdecided/core · 59 tokens

decided-artifacts

Author and maintain RAC (requirements-as-code) Markdown artifacts — requirements, decisions, roadmaps, prompts, designs — using the decided CLI. Use when asked to create, read, validate, update, or link AsDecided (RAC) artifacts in a project's decisions/ directory.

asdecided/core · 62 tokens

ingest-l1

L1 analysis loop for the abapwiki knowledge base: for each batch it launches the abap-analyzer sub-agent in parallel, then the adversarial judge abap-deepcheck (separate session), applies only the analyses that pass the fail-closed gate, and commits. Resumes exactly after an interruption. Use this skill to document…

Gixsy95/abap_wiki · 91 tokens