From bmad-skills
Loads local files, recursive folders, and URLs fully into context for Q&A, summarization, or analysis in subsequent turns. Triggers on ingest/read requests.
npx claudepluginhub bmad-labs/skills --plugin bmad-skillsThis skill uses the workspace's default tool permissions.
The user wants documents pulled into your context window so you can work with them in later turns. Your job is to read every document they specified, completely, and then say "DONE".
Suggests manual /compact at logical task boundaries in long Claude Code sessions and multi-phase tasks to avoid arbitrary auto-compaction losses.
Share bugs, ideas, or general feedback.
The user wants documents pulled into your context window so you can work with them in later turns. Your job is to read every document they specified, completely, and then say "DONE".
If the user invokes this skill without naming any documents, folders, or URLs, ask them what to load. Don't guess. One short question, then wait.
Anything the user points at:
Read tool supports — text, code, markdown, PDFs, notebooks, images)WebFetch to retrieve and read the contentNever delegate reading to a subagent. The whole point is that the content lands in your context so you can answer questions about it in later turns. A subagent's context is thrown away when it returns.
Read every document end-to-end. If a file is longer than what Read returns in one call (the tool defaults to 2000 lines and may truncate long lines), keep calling Read with offset advanced by the chunk size until you've covered the whole file. Don't stop at the first chunk and assume you've got the gist — the user is trusting you to actually have the full content available.
For PDFs longer than 10 pages, use the pages parameter to walk through page ranges (max 20 pages per call), continuing until the whole PDF is covered.
For URLs, WebFetch returns the content in one shot — you don't need to chunk, but if the response is clearly truncated (e.g., the page is enormous), note this honestly rather than pretending you got it all.
Before reading anything, list every document you're about to load and track them with TodoWrite. One todo per document. Mark each one completed only after you've finished reading the entire file (all chunks, all pages). This is the mechanism that prevents you from losing track and skipping documents — without the checklist, partial reads slip through.
For folders: first list the folder contents (use Glob or Bash ls), apply the filtering rules below, then create one todo per file that survives the filter. The user should see the full list before you start reading so they can correct you if you've picked up the wrong scope.
When the user points at a folder, recursively include all files except:
. — .git/, .env, .DS_Store, etc.)node_modules/, vendor/, venv/, .venv/, __pycache__/, dist/, build/, target/, out/package-lock.json, yarn.lock, pnpm-lock.yaml, Cargo.lock, poetry.lock, Gemfile.lock, composer.lock, go.sum.exe, .dll, .so, .dylib, .zip, .tar, .gz, .mp4, .mov, .mp3, .wav, .iso.gitignore would exclude, when one is present and obviousIf you're unsure whether to include something, include it — better to read an extra config file than to silently skip something the user wanted.
If the filtered file count is very large (say, 50+), tell the user the count before starting and ask if they want to narrow the scope. Loading 200 files into context is rarely what someone actually wants.
Read in a sensible order — usually the order the user listed them, or alphabetically for folders. If there's an obvious entry point (README.md, index.md, _index.md), read that first so the rest has context.
Once every checklist item is complete, respond with exactly DONE and nothing else. No summary, no recap, no "I've loaded N documents" — just DONE. The user will follow up in the next turn with what they actually want to do with the content; your job here is just confirmation that the load finished.
The "single-turn" nature of this skill means: after you say DONE, don't keep applying these instructions. If the user's next message is "what was in the third doc?", just answer normally from the context you now have — you're not re-running the load workflow.
In any of these partial-failure cases, your final message should be the failure summary followed by DONE on its own line, so the user knows the skill has finished even though some items didn't load.