agentleFS
rokokolrokokol/papers-skill/SKILL.md

papers

Skill3 starsChanged 50 days agoMITView on GitHub

Find, read and compare scientific papers without spending the conversation's context on them: a shortlist of identifiers for a topic, a bounded digest of one paper by a reading subagent, a comparison of several, and a note in the user's vault only when they say so. Sources: paper-search, as an MCP server or a CLI (arXiv, Semantic Scholar, OpenAlex and more). Use when the user asks to find papers on a topic, look up a DOI or arXiv id, summarise or critique a scientific article, compare papers, or write a literature note. Not for a web page, a blog post or a news article, which is a plain fetch. Triggers: papers, paper, preprint, arXiv, DOI, PubMed, literature review, systematic review, meta-analysis, related work, state of the art, what does the research say, what do my papers say, научные статьи, по моим статьям, найди статьи, препринт, обзор литературы, мета-анализ, литература по теме, найди источники, есть ли работы про, что говорят исследования, разбери статью, конспект научной статьи, сравни статьи

  • Reads credentials

2 other projects use a version of this.

Adopted by

Most recently taken up by

  • Other versions2 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 2

    1. labdaps/labskills★ 2same name
    2. zeus1292/claude-skills★ 0same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

The file

We split this skill into the rules it gives an agent

4 rules. About 0 are common, 3 are distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈3

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 1

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Subagents: use an isolated context and an explicitly selected, balanced reading model unless the user names another.

    line 16
  2. Very specific:

    Read a PDF, call read_*_paper, download_*, paper-search read or tools/pmc_text.py in the master.

    line 44
  3. Distinctive:

    Put an API key into a prompt, a command line, or a note

    line 46
  4. Distinctive:

    Every identifier came from a tool result and is spelled so the next mode can use it

    line 54

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

papers

Scientific papers are long and PDFs are worse: the text of one paper is a large fraction of a conversation's context, and a survey is several of them. This skill keeps the reading out of the main conversation. The master finds and decides; a subagent with its own context reads and returns a digest of bounded length; the master synthesises across digests and, only when the user says so, files one as a note

Runtime

  • Sources come from paper-search-mcp as an MCP server or the paper-search CLI. MCP clients assign their own namespace, so discover the callable names corresponding to search_papers, read_SOURCE_paper and download_with_fallback from the harness's tool catalog rather than spelling a client-specific prefix. Prefer MCP when available because the fallback downloader and per-source readers exist only there; otherwise paper-search search|download|read|sources prints JSON or text. Check availability once per session through the tool catalog or command -v paper-search; when neither exists, report the missing capability and stop rather than inventing a citation
  • Keys are optional and never pass through the conversation: the server reads an env file named by PAPER_SEARCH_MCP_ENV_FILE or ~/.config/paper-search-mcp/.env. Without them Semantic Scholar shares an anonymous rate limit, CORE fails often and Unpaywall is skipped, which is the legal open-access fallback; references/sources.md names the variables
  • Downloads go to one place, ~/.cache/papers/, passed as save_path on every call; the default ./downloads litters whatever directory the session happens to be in
  • Subagents use an isolated context and an explicitly selected, balanced reading model unless the user names another. If the launcher exposes no model selector, state that constraint before delegating. Tell every reader not to spawn subagents of its own. Reading is delegated; judgement is not

Modes

Say which mode you are in. A request usually chains them: search → read → note, or search → review

search — a topic, optional constraints (years, field, open access), and the user's actual question. Pick the sources by area from references/sources.md; default to search_papers with two or three sources and max_results_per_source of 5. When the sweep is that narrow, run it in the master. When it is wider, or the user wants exhaustiveness, delegate to a scout subagent that runs the searches and returns at most ten candidates as identifier, source, title, year, venue, one line why and nothing else; the master never receives abstracts in bulk. Present the shortlist as a table with identifiers the next mode can act on, and say which sources answered and which returned nothing. Nothing found is a result, not a failure

read — one identifier: an arXiv id, a DOI, a PMID, a URL, a title from a previous shortlist, or a PDF the user already has. Resolve the source and id with the table in references/sources.md, a local file needs no resolution, then spawn one reading subagent with the prompt in references/reader.md: it obtains the text, reads it, and returns a digest in the shape of references/digest-template.md, within the template's bound, in the language of the conversation. Show the digest as received, add your own reading of what it means for the user's question, then offer note. If the subagent reports that only the abstract was reachable, or that nothing was, say so before anything else

review — several identifiers or a shortlist. One reading subagent per paper, one at a time; up to three in parallel only when the user asks for speed, since the sources rate-limit. Then synthesise in the master from the digests alone: a comparison table on the axes the user's question implies, agreements, contradictions, and the gaps, each claim tied to an identifier. Do not re-read a paper to settle a contradiction; spawn a reading subagent with the specific question instead

note — after a digest or a review, ask once whether to save it; never write into a vault unasked. On yes, read $OBSIDIAN_VAULT_PATH/.claude/papers/profile.yml (references/profile.md): it names the vault's style skill, the preset and the folder, and the note is written through that skill in its language, never in a shape invented here. Without a profile, ask for a path and write plain Markdown with the digest under the frontmatter references/profile.md names. Keep the PDF only when the profile names an attachments folder

corpus — a question across every paper in a folder at once: "what evidence do my papers hold for X", "which of them measured Y". That is retrieval, not reading, and PaperQA2 does it with a local embedding model: pqa-evidence -s <preset> -k 8 "<query>" returns only the retrieved passages, each under its paper and chunk, and the master writes the synthesis itself, because a local model retrieves as well as any and reasons less well than the master. It runs in the master, and -k is the bound on what enters the context; a query is a few keywords or a short phrase, not the whole question, and it reaches only the few papers one index search brings up, so no evidence is not yet proof of absence (references/paperqa.md). pqa -s <preset> ask "<question>" has PaperQA2's own local model write one cited paragraph instead; take it only when the user wants the conversation's context spared, and expect a minute of GPU time per question. references/paperqa.md has the preset, the folder, how to add papers and when the corpus is too small for this to beat review. When pqa is not on PATH, say so and fall back to review

The reading subagent

One paper, one subagent, one digest. The contract is what makes the mode cheap, so it is not softened:

  • The subagent gets the identifier, the user's question, the save path, the path of the digest template, and the rules in references/reader.md; it reads the template itself
  • For a biomedical paper it runs tools/pmc_text.py first, which saves PMC's open-access text; otherwise, or when PMC has none, it calls read_<source>_paper; when that fails it calls download_with_fallback and reads the file only if it is a real PDF; when the CLI is the only path it runs paper-search read <source> <id> -o <save_path>
  • It returns the digest and nothing else: no raw text, no quotes longer than a sentence, no table of contents. The one exception is a single sentence naming what it could not read
  • It states, in the digest's last field, what it actually read: full text, or abstract only, or a truncated extraction
  • It never spawns subagents, never writes outside the save path, never touches the vault

Never

  • Read a PDF, call read_*_paper, download_*, paper-search read or tools/pmc_text.py in the master; that is the whole point of the reading subagent
  • Paste abstracts or full search results into the conversation; a shortlist is identifiers plus one line each
  • Put an API key into a prompt, a command line, or a note
  • Present a digest as the paper's claim without saying what the subagent actually read, or turn a failure line into a digest from memory
  • Go to Google Scholar first: it is a scraper with a session limit, and every source it knows is covered elsewhere (sources.md)
  • Invent a reference; every identifier in a report came from a tool result

Before the report

  • The mode was named, and the user's actual question shaped the search or the digest, not just the topic
  • Every identifier came from a tool result and is spelled so the next mode can use it
  • Each digest says what the subagent read, and a partial read is stated first
  • The synthesis of a review cites identifiers per claim and names the contradictions instead of averaging them
  • The note question was asked once, and the note went through the profile's style skill

Which reference when

QuestionRead
Which source for which area, how identifiers map to tools, keys, limits and the server's known trapsreferences/sources.md
What to tell the reading subagent, word for wordreferences/reader.md
The digest's fields and boundsreferences/digest-template.md
The profile a vault owner writes so notes land in their style and folderreferences/profile.md
The corpus mode: PaperQA2's preset, folder, commands and limitsreferences/paperqa.md

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.