gs-fulltext
Get full-text access links for a Google Scholar paper - PDF, DOI, Sci-Hub, and publisher links. Use when user wants to read or download a paper's full text.
What this skill does
# Google Scholar Full Text Access
Resolve and present all full-text access options for a paper found in Google Scholar search results.
## Arguments
$ARGUMENTS can be:
- A `data-cid` from a previous search result
- A result number (e.g., `3`) referring to a previous search result
## Prerequisites
This skill works best after a previous `gs-search` or `gs-advanced-search` call, which already extracts `fullTextUrl` and `href` for each result. If those are available, use them directly.
## Steps
### Step 1: Collect links from search results
From the previous search result, extract these fields for the target paper:
- `fullTextUrl`: direct PDF/HTML link (from `.gs_ggs a`)
- `href`: link to the paper's publisher page (from `.gs_rt a`)
- `dataCid`: cluster ID
If no previous search context is available, search for the paper first using `gs-search`.
### Step 2: Resolve additional links (evaluate_script)
Navigate to the Google Scholar results page (if not already there), then extract full-text links for the specific paper:
```javascript
async () => {
const cid = "DATA_CID_HERE";
// Find the result item by data-cid
const item = document.querySelector(`.gs_r.gs_or.gs_scl[data-cid="${cid}"]`);
if (!item) return { error: 'not_found', message: 'Paper not found on current page. Try searching again.' };
const titleEl = item.querySelector('.gs_rt a');
const title = titleEl?.textContent?.trim() || item.querySelector('.gs_rt')?.textContent?.trim() || '';
const paperUrl = titleEl?.href || '';
// Full-text PDF/HTML link (shown on the right side of results)
const fullTextEl = item.querySelector('.gs_ggs a') || item.querySelector('.gs_or_ggsm a');
const fullTextUrl = fullTextEl?.href || '';
const fullTextType = fullTextEl?.querySelector('span.gs_ctg2')?.textContent?.trim() || '';
// Meta info for context
const meta = item.querySelector('.gs_a')?.textContent || '';
const parts = meta.split(' - ');
const authors = parts[0]?.trim() || '';
const journalYear = parts[1]?.trim() || '';
// Try to extract DOI from paper URL
let doi = '';
if (paperUrl.includes('doi.org/')) {
doi = paperUrl.replace(/^https?:\/\/(dx\.)?doi\.org\//, '');
}
// Build access links
const links = {};
if (fullTextUrl) {
links.fullText = fullTextUrl;
links.fullTextType = fullTextType || (fullTextUrl.endsWith('.pdf') ? '[PDF]' : '[HTML]');
}
if (paperUrl) {
links.publisher = paperUrl;
}
if (doi) {
links.doi = `https://doi.org/${doi}`;
links.scihub = `https://sci-hub.ru/${doi}`;
} else if (paperUrl) {
// Sci-Hub also works with direct URLs
links.scihub = `https://sci-hub.ru/${paperUrl}`;
}
return {
dataCid: cid,
title,
authors,
journalYear,
doi,
fullTextUrl,
fullTextType,
paperUrl,
links
};
}
```
### Step 3: Report
```
## Full Text Links — {title}
**Authors:** {authors} | {journalYear}
**Direct Full Text:**
{links.fullText ? "- " + links.fullTextType + " " + links.fullText : "No direct full text link available"}
**Publisher Page:**
{links.publisher ? "- " + links.publisher : "N/A"}
**DOI:**
{links.doi ? "- " + links.doi : "No DOI detected"}
**Sci-Hub:**
{links.scihub ? "- " + links.scihub : "N/A"}
```
### Step 4: Open full text (optional)
If the user wants to read the paper immediately, use `mcp__chrome-devtools__new_page` to open the preferred link in this priority:
1. `fullTextUrl` (direct PDF/HTML, usually free)
2. DOI link (may require subscription)
3. Sci-Hub link (fallback)
4. Publisher page
## Notes
- This skill uses 1-2 tool calls: `evaluate_script` (if already on results page) or `navigate_page` + `evaluate_script`
- Google Scholar's full-text links (`.gs_ggs`) are usually free/open-access PDFs
- DOI may not always be extractable from the paper URL
- Sci-Hub works with both DOI and direct URL
- Opening full text in a new tab adds 1 more tool call (`new_page`)
Related in Writing & Docs
jax-development
IncludedUse this skill when the user is writing, debugging, profiling, refactoring, reviewing, benchmarking, parallelising, exporting, or explaining JAX code, or when they mention JAX, jax.numpy, jit, grad, value_and_grad, vmap, scan, lax, random keys, pytrees, jax.Array, sharding, Mesh, PartitionSpec, NamedSharding, pmap, shard_map, Pallas, XLA, StableHLO, checkify, profiler, or the JAX repo. It helps turn NumPy or PyTorch-style code into pure functional JAX, fix tracer/control-flow/shape/PRNG bugs, remove recompiles and host-device syncs, choose transforms and sharding strategies, inspect jaxpr/lowering/IR, and benchmark compiled code correctly.
nature-article-writer
IncludedDrafts, rewrites, diagnostically critiques, and style-calibrates primary research manuscripts for Nature and Nature Portfolio journals. Use when the user wants a Nature-style title, summary paragraph or abstract, introduction, results, discussion, methods, figure legends, presubmission enquiry, cover letter, reviewer response, or when a scientific draft sounds generic, jargon-heavy, structurally weak, or AI-ish and needs precise, broad-reader-friendly prose without inventing data, analyses, or references. Best for primary research articles and letters rather than reviews or press releases unless explicitly adapting one.
deckrd
IncludedDocument-driven framework that derives requirements, specifications, implementation plans, and executable tasks from goals through structured AI dialogue. Use when user says "write requirements", "create spec", "plan implementation", "derive tasks", "structure this feature", "break down into tasks", or "document this module". Also use for reverse engineering existing code into docs (/deckrd rev). Do NOT use for direct code writing — use /deckrd-coder after tasks are generated. Do NOT use when the user only wants to run or fix existing code without planning.
clinical-decision-support
IncludedGenerate professional clinical decision support (CDS) documents for pharmaceutical and clinical research settings, including patient cohort analyses (biomarker-stratified with outcomes) and treatment recommendation reports (evidence-based guidelines with decision algorithms). Supports GRADE evidence grading, statistical analysis (hazard ratios, survival curves, waterfall plots), biomarker integration, and regulatory compliance. Outputs publication-ready LaTeX/PDF format optimized for drug development, clinical research, and evidence synthesis.
handling-sf-data
IncludedSalesforce data operations with 130-point scoring. Use this skill to create, update, delete, bulk import/export, generate test data, and clean up org records using sf CLI and anonymous Apex. TRIGGER when: user creates test data, performs bulk import/export, uses sf data CLI commands, needs data factory patterns for Apex tests, or needs to seed/clean records in a Salesforce org. DO NOT TRIGGER when: SOQL query writing only (use querying-soql), Apex test execution (use running-apex-tests), or metadata deployment (use deploying-metadata).
accelint-ac-to-playwright
IncludedConvert and validate acceptance criteria for Playwright test automation. Use when user asks to (1) review/evaluate/check if AC are ready for automation, (2) assess if AC can be converted as-is, (3) validate AC quality for Playwright, (4) turn AC into tests, (5) generate tests from acceptance criteria, (6) convert .md bullets or .feature Gherkin files to Playwright specs, (7) create test automation from requirements. Handles both bullet-style markdown and Gherkin syntax with JSON test plan generation and validation.