NeuroArxiv
Vibecoders don't waste hours because they lack skill. They waste hours
because they start building before checking whether the hard part has
already been solved and published, with the failure modes already known.
arXiv is the world's largest source of truth for "has anyone done this" —
and almost nobody about to write code actually reads it first. This skill
makes the agent read it first.
Pre-flight (run before Phase 1)
This skill is expensive: a real arXiv fetch plus roughly one isolated
Agent call per paper (typically 10-20), plus scoring, clustering, and
convergence. Do not pay that cost when there's no real prior art to find.
Step 1. Explicit invocation check.
If the user typed /neuroarxiv, explicitly asked to "check arXiv", "check
prior art", or "run NeuroArxiv", skip the rest of this section and go
straight to Phase 1. The user opted in.
Step 2. Self-judge (only if Step 1 did not match).
Ask yourself three questions. If the answer to any is no, ABORT.
- Is there a technical mechanism to research? Naming a variable,
wiring a CRUD form, or gluing two documented SDKs together has no
prior-art question worth asking. Designing a caching strategy, a
consensus/coordination scheme, a ranking or retrieval approach, an
ML training or inference technique, a novel protocol, or anything
where "the naive version breaks at scale" — does.
- Is the user about to commit real effort to it? A one-off script
doesn't earn a literature search. A component that will anchor the
architecture, or that's expensive to redo once built wrong, does.
- Did the user leave the approach open? If they already named the
specific algorithm/paper/library to use, or said "just implement it
the simple way", they've already converged — don't re-open it. Abort.
If all three checks pass, proceed to Phase 1.
If any fails, ABORT and proceed with the direct implementation. Optionally
append one sentence: "If you want this checked against arXiv prior art
first, run /neuroarxiv <your problem>."
The loop
Three phases. Fetching is not divergence — it's find real documents, then
read each in isolation, then converge. Skipping the isolation step turns
this into an LLM guessing about papers it hasn't actually read.
Phase 0 — Categorize
Map the build problem onto 3-5 arXiv subject categories and 3-6 concrete
search terms (the technical mechanism words — "cache invalidation", not
"caching system"). Pick from the table below, or name another category id
if you're confident of it.
| Category |
Covers |
| cs.AI |
general AI systems, agents, planning, knowledge representation |
| cs.LG |
learning algorithms, training methods, model architectures |
| cs.CL |
NLP, language models, text processing |
| cs.CV |
image/video understanding, generation, perception |
| cs.IR |
search, ranking, recommendation, retrieval-augmented systems |
| cs.DC |
distributed systems, consensus, sharding, replication, scheduling |
| cs.DB |
storage engines, query processing, indexing, transactions, consistency |
| cs.SE |
development practices, testing, program analysis, tooling |
| cs.PL |
language design, type systems, compilers, runtimes |
| cs.CR |
protocols, authentication, adversarial robustness, privacy |
| cs.NI |
routing, congestion control, edge/CDN |
| cs.OS |
kernels, schedulers, memory management, virtualization |
| cs.HC |
interface design, usability, interaction models |
| cs.MA |
coordination, negotiation, emergent behavior among agents |
| cs.RO |
control, perception, manipulation, motion planning |
| cs.DS |
algorithmic techniques, complexity, data structure design |
| cs.GT |
mechanism design, auctions, incentive-compatible systems |
| stat.ML |
statistical learning theory, probabilistic models |
| eess.SP / eess.SY |
signal processing / control theory |
| math.OC |
optimization, scheduling, resource allocation |
If the problem is pure product/business framing with no obvious technical
mechanism, say so plainly — but still commit to a best-effort technical
angle. Most build problems have one (caching, consistency, ranking,
scheduling, retrieval) even unphrased.
Phase 1 — Fetch (real HTTP, no generation)
For each chosen category, call WebFetch against arXiv's real export
API — do not paraphrase this step from memory, actually fetch it:
https://export.arxiv.org/api/query?search_query=cat:<CATEGORY>+AND+(all:"<term1>"+OR+all:"<term2>")&start=0&max_results=4&sortBy=relevance&sortOrder=descending
Ask WebFetch to return, per <entry>: the arXiv id, title, abstract,
authors, published date, and the abs/pdf links — verbatim from the
feed, not summarized. This is a real Atom XML feed; treat every field as
ground truth, never invent a paper, id, or detail not present in the
response.
If a category returns fewer than 2 results, retry that category's query
with the search terms dropped (cat:<CATEGORY> alone) — don't pad the
result set with irrelevant hits to hit a target count. If everything
comes back thin, say so in the output rather than manufacturing findings.
Courtesy: arXiv asks for one request at a time with a few seconds
between calls. Fetch categories one after another, not concurrently.
Phase 2 — Diverge (read each paper in isolation)
For every paper collected in Phase 1, spawn a parallel Agent/Task
call. One per paper. Each Agent gets only:
- the build problem
- that ONE paper's title, abstract, authors, year — no other paper
- the instruction below
You are in DIVERGENT READ mode. You have exactly one paper's title and
abstract, and one build problem. You do not know what other papers
exist — do not assume, invent, or gesture at a broader survey.
Read this abstract as if scouting prior art for someone about to build
the stated thing from scratch. Never quote the abstract verbatim beyond
a few consecutive words — paraphrase in your own words.
Extract: approach (1-2 sentences, the core mechanism), borrow (1
sentence, the single most concrete implementable takeaway — imperative:
"Use X to do Y"; if too tangential, say so plainly), limitation (1
sentence, the load-bearing weakness or breaking condition), relevanceNote
(1 short clause on fit to the stated problem).
Output JSON only: {"approach":"...","borrow":"...","limitation":"...","relevanceNote":"..."}
Critical invariant. These calls must be parallel and isolated. A read
that has seen other papers' abstracts starts summarizing the SET instead
of grounding in the ONE paper in front of it — that's a subtler failure
than ADHD's cross-talk collapse, and easy to miss because the output still
looks paper-specific.
Phase 3 — Converge (one path, not a shortlist)
After all reads return:
- Score. Rate each reading 0-10 on: relevance (fit to the stated
problem), practicality (buildable by a small team without exotic
infra), rigor (does the abstract itself show real evidence — benchmarks,
proofs, a shipped system — vs pure concept). Flag a "trap" when a
paper's own stated limitation implies a failure mode a builder would
otherwise rediscover the hard way. Always pair it with a "strength" —
the one concrete thing that paper's approach gets right.
- Cluster. Group readings into 3-6 clusters by underlying
architectural angle (not by paper, not by keyword): "cache-invalidation
plays", "consensus-free plays", "learned-index plays".
- Pick ONE. Choose the cluster with the strongest relevance +
practicality combination — not the most novel, not the most cited, the
one an engineer should actually build. This is the point of departure
from wide-open brainstorming: NeuroArxiv commits to a single
recommendation, because "here are 4 papers, you decide" is exactly the
time-wasting the skill exists to prevent.
- Synthesize. For the chosen cluster, produce: a 4-8 sentence
implementation sketch (actionable, not a lit-review summary), citations
(paper id + title + url + role — "primary mechanism" / "supporting
evidence" / "failure mode to avoid" — grounded only in fetched data),
the first concrete step, the load-bearing risk, and an "avoid" list
pulled from every paper's limitation (not just the winner's — a pitfall
named by a paper in a rejected cluster is still worth avoiding).
- Name the runner-ups. One honest sentence per non-chosen cluster on
the real trade-off that lost it the pick. Not a dismissal — the
builder should be able to switch paths later knowing why.
- One open thread. A question the read papers raise but don't
answer — worth a design-review checkpoint before shipping.
Output shape
- Searched. Categories, search terms, paper count.
- Papers read. Grouped by cluster. Each paper: id, title, one-line
approach, score chips
[rel8 prac6 rig7].
- Prior-art pitfalls. Papers whose limitation flags a real trap —
listed separately as watch-outs, not verdicts.
- THE PATH. The one chosen cluster: sketch, citations, first step,
load-bearing risk, avoid-list. This is the deliverable — make it bold
and unmissable, not buried under the paper list.
- Alternates considered, not chosen. One line each.
- Open thread. The unanswered question.
Anti-patterns
- Cross-contaminated reads. If a paper's read mentions "compared to
the other papers here" or "collectively these show", isolation broke —
discard and re-run that read alone.
- Hallucinated citations. Never state a paper detail (a number, a
claim, a result) that wasn't actually in the fetched abstract. If
unsure, re-fetch rather than infer from the title.
- Shortlist-as-cop-out. Ending Phase 3 with "here are 3 good options"
instead of one recommendation defeats the purpose. Commit.
- Padding a thin result set. Zero or few relevant papers is a valid,
useful finding — it means the mechanism is either genuinely novel or the
search terms were wrong. Say so. Don't stretch tangential papers to look
like coverage.
- Treating a paper's abstract as the whole paper. The abstract is a
pointer, not ground truth about implementation details it doesn't state.
The "borrow" and "avoid" items should stay at the level of what the
abstract actually supports.
Calibration
- How many papers? Default 4 per category × 3-5 categories ≈ 12-20
papers. Scale down for narrow/well-known mechanisms (2 per category is
enough when the space is small), up for genuinely unclear territory.
- When to stop widening? If a category-only retry (terms dropped)
still returns nothing usable, say so and move on — don't cascade into
unrelated categories chasing a result count.
Cost
1 categorize + N isolated reads (typically 12-20) + 1 score + 1 cluster +
1 converge ≈ N+4 Agent-shaped calls, plus real arXiv HTTP fetches (~3s
courtesy delay between categories). Not for every design decision — for
the ones where getting the architecture wrong costs real rework.
Companion library and CLI
This repo also ships a Node/TS implementation (src/) that runs the same
loop against real arXiv HTTP and the Claude Agent SDK — useful outside
Claude Code, for scripted/batch runs, or when you want the fetch and
parsing to be deterministic code instead of a WebFetch call.
npm install
npm run build
neuroarxiv "how should I cache LLM completions across requests?"
The skill above gives you the same loop inside Claude Code with no
install required.
1---2name: neuroarxiv3description: Grounds a coding agent's architecture decisions in real arXiv prior art before it builds something new. Reads arXiv category-wise via real HTTP fetch, spawns parallel isolated reads across the papers found, scores/clusters them, then converges on ONE recommended path with citations, a first step, and known prior-art pitfalls to avoid. Use on /neuroarxiv, before designing non-trivial architecture, algorithms, ML/systems techniques, or protocols, or when the user asks "has anyone solved this", "what's the state of the art", or "am I about to rebuild something that already exists". Skip for trivial CRUD, glue code, or closed phrasing ("just", "quick", "standard"). Full pre-flight gate is in the skill body.4license: MIT5---67# NeuroArxiv89Vibecoders don't waste hours because they lack skill. They waste hours10because they start building before checking whether the hard part has11already been solved and published, with the failure modes already known.12arXiv is the world's largest source of truth for "has anyone done this" —13and almost nobody about to write code actually reads it first. This skill14makes the agent read it first.1516## Pre-flight (run before Phase 1)1718This skill is expensive: a real arXiv fetch plus roughly one isolated19Agent call per paper (typically 10-20), plus scoring, clustering, and20convergence. Do not pay that cost when there's no real prior art to find.2122**Step 1. Explicit invocation check.**2324If the user typed `/neuroarxiv`, explicitly asked to "check arXiv", "check25prior art", or "run NeuroArxiv", **skip the rest of this section and go26straight to Phase 1**. The user opted in.2728**Step 2. Self-judge (only if Step 1 did not match).**2930Ask yourself three questions. If the answer to any is no, ABORT.31321. **Is there a technical mechanism to research?** Naming a variable,33 wiring a CRUD form, or gluing two documented SDKs together has no34 prior-art question worth asking. Designing a caching strategy, a35 consensus/coordination scheme, a ranking or retrieval approach, an36 ML training or inference technique, a novel protocol, or anything37 where "the naive version breaks at scale" — does.382. **Is the user about to commit real effort to it?** A one-off script39 doesn't earn a literature search. A component that will anchor the40 architecture, or that's expensive to redo once built wrong, does.413. **Did the user leave the approach open?** If they already named the42 specific algorithm/paper/library to use, or said "just implement it43 the simple way", they've already converged — don't re-open it. Abort.4445If all three checks pass, proceed to Phase 1.4647If any fails, ABORT and proceed with the direct implementation. Optionally48append one sentence: *"If you want this checked against arXiv prior art49first, run `/neuroarxiv <your problem>`."*5051## The loop5253Three phases. Fetching is not divergence — it's find real documents, then54read each in isolation, then converge. Skipping the isolation step turns55this into an LLM guessing about papers it hasn't actually read.5657### Phase 0 — Categorize5859Map the build problem onto 3-5 arXiv subject categories and 3-6 concrete60search terms (the technical mechanism words — "cache invalidation", not61"caching system"). Pick from the table below, or name another category id62if you're confident of it.6364| Category | Covers |65|---|---|66| cs.AI | general AI systems, agents, planning, knowledge representation |67| cs.LG | learning algorithms, training methods, model architectures |68| cs.CL | NLP, language models, text processing |69| cs.CV | image/video understanding, generation, perception |70| cs.IR | search, ranking, recommendation, retrieval-augmented systems |71| cs.DC | distributed systems, consensus, sharding, replication, scheduling |72| cs.DB | storage engines, query processing, indexing, transactions, consistency |73| cs.SE | development practices, testing, program analysis, tooling |74| cs.PL | language design, type systems, compilers, runtimes |75| cs.CR | protocols, authentication, adversarial robustness, privacy |76| cs.NI | routing, congestion control, edge/CDN |77| cs.OS | kernels, schedulers, memory management, virtualization |78| cs.HC | interface design, usability, interaction models |79| cs.MA | coordination, negotiation, emergent behavior among agents |80| cs.RO | control, perception, manipulation, motion planning |81| cs.DS | algorithmic techniques, complexity, data structure design |82| cs.GT | mechanism design, auctions, incentive-compatible systems |83| stat.ML | statistical learning theory, probabilistic models |84| eess.SP / eess.SY | signal processing / control theory |85| math.OC | optimization, scheduling, resource allocation |8687If the problem is pure product/business framing with no obvious technical88mechanism, say so plainly — but still commit to a best-effort technical89angle. Most build problems have one (caching, consistency, ranking,90scheduling, retrieval) even unphrased.9192### Phase 1 — Fetch (real HTTP, no generation)9394For each chosen category, call **WebFetch** against arXiv's real export95API — do not paraphrase this step from memory, actually fetch it:9697 https://export.arxiv.org/api/query?search_query=cat:<CATEGORY>+AND+(all:"<term1>"+OR+all:"<term2>")&start=0&max_results=4&sortBy=relevance&sortOrder=descending9899Ask WebFetch to return, per `<entry>`: the arXiv id, title, abstract,100authors, published date, and the `abs`/`pdf` links — verbatim from the101feed, not summarized. This is a real Atom XML feed; treat every field as102ground truth, never invent a paper, id, or detail not present in the103response.104105If a category returns fewer than 2 results, retry that category's query106with the search terms dropped (`cat:<CATEGORY>` alone) — don't pad the107result set with irrelevant hits to hit a target count. If everything108comes back thin, say so in the output rather than manufacturing findings.109110**Courtesy:** arXiv asks for one request at a time with a few seconds111between calls. Fetch categories one after another, not concurrently.112113### Phase 2 — Diverge (read each paper in isolation)114115For every paper collected in Phase 1, spawn a **parallel** Agent/Task116call. One per paper. Each Agent gets only:117118- the build problem119- that ONE paper's title, abstract, authors, year — no other paper120- the instruction below121122> You are in DIVERGENT READ mode. You have exactly one paper's title and123> abstract, and one build problem. You do not know what other papers124> exist — do not assume, invent, or gesture at a broader survey.125> Read this abstract as if scouting prior art for someone about to build126> the stated thing from scratch. Never quote the abstract verbatim beyond127> a few consecutive words — paraphrase in your own words.128> Extract: approach (1-2 sentences, the core mechanism), borrow (1129> sentence, the single most concrete implementable takeaway — imperative:130> "Use X to do Y"; if too tangential, say so plainly), limitation (1131> sentence, the load-bearing weakness or breaking condition), relevanceNote132> (1 short clause on fit to the stated problem).133> Output JSON only: `{"approach":"...","borrow":"...","limitation":"...","relevanceNote":"..."}`134135**Critical invariant.** These calls must be parallel and isolated. A read136that has seen other papers' abstracts starts summarizing the SET instead137of grounding in the ONE paper in front of it — that's a subtler failure138than ADHD's cross-talk collapse, and easy to miss because the output still139looks paper-specific.140141### Phase 3 — Converge (one path, not a shortlist)142143After all reads return:1441451. **Score.** Rate each reading 0-10 on: relevance (fit to the stated146 problem), practicality (buildable by a small team without exotic147 infra), rigor (does the abstract itself show real evidence — benchmarks,148 proofs, a shipped system — vs pure concept). Flag a "trap" when a149 paper's own stated limitation implies a failure mode a builder would150 otherwise rediscover the hard way. Always pair it with a "strength" —151 the one concrete thing that paper's approach gets right.1522. **Cluster.** Group readings into 3-6 clusters by underlying153 architectural angle (not by paper, not by keyword): "cache-invalidation154 plays", "consensus-free plays", "learned-index plays".1553. **Pick ONE.** Choose the cluster with the strongest relevance +156 practicality combination — not the most novel, not the most cited, the157 one an engineer should actually build. This is the point of departure158 from wide-open brainstorming: NeuroArxiv commits to a single159 recommendation, because "here are 4 papers, you decide" is exactly the160 time-wasting the skill exists to prevent.1614. **Synthesize.** For the chosen cluster, produce: a 4-8 sentence162 implementation sketch (actionable, not a lit-review summary), citations163 (paper id + title + url + role — "primary mechanism" / "supporting164 evidence" / "failure mode to avoid" — grounded only in fetched data),165 the first concrete step, the load-bearing risk, and an "avoid" list166 pulled from every paper's limitation (not just the winner's — a pitfall167 named by a paper in a rejected cluster is still worth avoiding).1685. **Name the runner-ups.** One honest sentence per non-chosen cluster on169 the real trade-off that lost it the pick. Not a dismissal — the170 builder should be able to switch paths later knowing why.1716. **One open thread.** A question the read papers raise but don't172 answer — worth a design-review checkpoint before shipping.173174## Output shape1751761. **Searched.** Categories, search terms, paper count.1772. **Papers read.** Grouped by cluster. Each paper: id, title, one-line178 approach, score chips `[rel8 prac6 rig7]`.1793. **Prior-art pitfalls.** Papers whose limitation flags a real trap —180 listed separately as watch-outs, not verdicts.1814. **THE PATH.** The one chosen cluster: sketch, citations, first step,182 load-bearing risk, avoid-list. This is the deliverable — make it bold183 and unmissable, not buried under the paper list.1845. **Alternates considered, not chosen.** One line each.1856. **Open thread.** The unanswered question.186187## Anti-patterns188189- **Cross-contaminated reads.** If a paper's read mentions "compared to190 the other papers here" or "collectively these show", isolation broke —191 discard and re-run that read alone.192- **Hallucinated citations.** Never state a paper detail (a number, a193 claim, a result) that wasn't actually in the fetched abstract. If194 unsure, re-fetch rather than infer from the title.195- **Shortlist-as-cop-out.** Ending Phase 3 with "here are 3 good options"196 instead of one recommendation defeats the purpose. Commit.197- **Padding a thin result set.** Zero or few relevant papers is a valid,198 useful finding — it means the mechanism is either genuinely novel or the199 search terms were wrong. Say so. Don't stretch tangential papers to look200 like coverage.201- **Treating a paper's abstract as the whole paper.** The abstract is a202 pointer, not ground truth about implementation details it doesn't state.203 The "borrow" and "avoid" items should stay at the level of what the204 abstract actually supports.205206## Calibration207208- **How many papers?** Default 4 per category × 3-5 categories ≈ 12-20209 papers. Scale down for narrow/well-known mechanisms (2 per category is210 enough when the space is small), up for genuinely unclear territory.211- **When to stop widening?** If a category-only retry (terms dropped)212 still returns nothing usable, say so and move on — don't cascade into213 unrelated categories chasing a result count.214215## Cost2162171 categorize + N isolated reads (typically 12-20) + 1 score + 1 cluster +2181 converge ≈ N+4 Agent-shaped calls, plus real arXiv HTTP fetches (~3s219courtesy delay between categories). Not for every design decision — for220the ones where getting the architecture wrong costs real rework.221222## Companion library and CLI223224This repo also ships a Node/TS implementation (`src/`) that runs the same225loop against real arXiv HTTP and the Claude Agent SDK — useful outside226Claude Code, for scripted/batch runs, or when you want the fetch and227parsing to be deterministic code instead of a WebFetch call.228229 npm install230 npm run build231 neuroarxiv "how should I cache LLM completions across requests?"232233The skill above gives you the same loop inside Claude Code with no234install required.