npx claudepluginhub raintree-technology/docpull --plugin docpullThis skill is limited to using the following tools:
Ground library/framework answers in real documentation 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 API is much higher.
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Ground library/framework answers in real documentation 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 API is much higher.
Activate when the user's question names a specific library, framework, SDK, or API surface — especially:
Do NOT activate for:
os, JavaScript Array.prototype).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)", ...]
Use grep_docs with a focused regex. The library 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).
list_sources()): call ensure_docs(source="<alias>"). This crawls and indexes the whole library. ~10–30s for typical sites.fetch_url(url=...) if you only need one page. For a whole site you don't have an alias for, tell the user to run /docs-add <URL> (which uses the docpull CLI to crawl); the MCP fetch_url is single-page only.When you cite docs, include the source path returned by grep_docs / read_doc so the user can verify. Example: "Per fastapi/tutorial/dependencies.md:42, dependencies declared with Depends() are resolved per-request..."
ensure_docs for libraries the user didn't ask about ("while we're here, let me also fetch...").list_indexed will tell you it's there.grep_docs returns nothing useful, broaden the regex once before suggesting the user add more docs.These are pre-configured and resolvable by ensure_docs(source=...) without setup: react, nextjs, tailwindcss, vite, hono, fastapi, express, anthropic, openai, langchain, supabase, drizzle, prisma. Run list_sources() for the current set.
ensure_docs returns "unknown source": the alias isn't built-in. Either suggest /docs-add <URL> or call list_sources() and propose a near match.grep_docs returns empty: the pattern is too narrow, or the library doesn't cover the topic. Broaden once, then surface the gap to the user.pip install docpull and verify the plugin's MCP server is healthy. Fall back to answering from training data with an explicit caveat that docs weren't available.When you've grounded an answer in fetched docs, say so once at the start of the answer ("Per the FastAPI docs..."). Don't pad every paragraph with attribution — one source citation up front plus inline file references is enough.