Blocking IO Guard
bytedance/deer-flow
Adds a runtime test anchor for backend async code that could block the asyncio event loop, and proves the anchor fails when the blocking call returns.
Agent skill
Avoid bot-blocking publisher websites by routing paper retrieval through legal open-access APIs and mirrors.
$ npx skills add learningmatter-mit/AtomisticSkills --skill general-publisher-access-guard -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install learningmatter-mit/AtomisticSkills general-publisher-access-guard --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/learningmatter-mit/AtomisticSkills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/general-publisher-access-guard .claude/skills/general-publisher-access-guard && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "general-publisher-access-guard" agent skill from https://github.com/learningmatter-mit/AtomisticSkills/tree/main/skills/general-publisher-access-guard into .claude/skills/general-publisher-access-guard/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "general-publisher-access-guard", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/learningmatter-mit/AtomisticSkills/tree/main/skills/general-publisher-access-guardType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add learningmatter-mit/AtomisticSkills --skill general-publisher-access-guard -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install learningmatter-mit/AtomisticSkills general-publisher-access-guard --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/learningmatter-mit/AtomisticSkills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/general-publisher-access-guard .agents/skills/general-publisher-access-guard && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "general-publisher-access-guard" agent skill from https://github.com/learningmatter-mit/AtomisticSkills/tree/main/skills/general-publisher-access-guard into .agents/skills/general-publisher-access-guard/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "general-publisher-access-guard", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add learningmatter-mit/AtomisticSkills --skill general-publisher-access-guard -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install learningmatter-mit/AtomisticSkills general-publisher-access-guard --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/learningmatter-mit/AtomisticSkills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/general-publisher-access-guard .cursor/skills/general-publisher-access-guard && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "general-publisher-access-guard" agent skill from https://github.com/learningmatter-mit/AtomisticSkills/tree/main/skills/general-publisher-access-guard into .cursor/skills/general-publisher-access-guard/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "general-publisher-access-guard", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/learningmatter-mit/AtomisticSkills.git --path skills/general-publisher-access-guard--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add learningmatter-mit/AtomisticSkills --skill general-publisher-access-guard -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install learningmatter-mit/AtomisticSkills general-publisher-access-guard --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/learningmatter-mit/AtomisticSkills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/general-publisher-access-guard .gemini/skills/general-publisher-access-guard && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "general-publisher-access-guard" agent skill from https://github.com/learningmatter-mit/AtomisticSkills/tree/main/skills/general-publisher-access-guard into .gemini/skills/general-publisher-access-guard/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "general-publisher-access-guard", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install learningmatter-mit/AtomisticSkills general-publisher-access-guardInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add learningmatter-mit/AtomisticSkills --skill general-publisher-access-guard -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/learningmatter-mit/AtomisticSkills.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/general-publisher-access-guard .github/skills/general-publisher-access-guard && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "general-publisher-access-guard" agent skill from https://github.com/learningmatter-mit/AtomisticSkills/tree/main/skills/general-publisher-access-guard into .github/skills/general-publisher-access-guard/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "general-publisher-access-guard", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add learningmatter-mit/AtomisticSkills --skill general-publisher-access-guard -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install learningmatter-mit/AtomisticSkills general-publisher-access-guard --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/learningmatter-mit/AtomisticSkills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/general-publisher-access-guard .opencode/skills/general-publisher-access-guard && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "general-publisher-access-guard" agent skill from https://github.com/learningmatter-mit/AtomisticSkills/tree/main/skills/general-publisher-access-guard into .opencode/skills/general-publisher-access-guard/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "general-publisher-access-guard", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
general-publisher-access-guardAvoid bot-blocking publisher websites by routing paper retrieval through legal open-access APIs and mirrors.
General Publisher Access Guard is an agent skill from learningmatter-mit/AtomisticSkills. Avoid bot-blocking publisher websites by routing paper retrieval through legal open-access APIs and mirrors.
Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 16 other files, including scripts (for example `examples/acs-blocked-paper/10.1021_acs.jpclett.7b00189_data.json`, `examples/acs-blocked-paper/10.1021_acs.jpclett.7b00189_summary.md` and `examples/acs-blocked-paper/README.md`).
The repository describes itself as: Integrating AtomisticSkills into Agentic IDEs (Cursor, Claude Code, Codex, Google Antigravity, Hermes Agent, etc). The licence is MIT.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 6257444. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 3 files in scripts/ (Python), which the agent can run.
From the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
pubs.acs.orgAlso links to:
doi.orgFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
ELSEVIER_API_KEYSPRINGER_API_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
General Publisher Access Guard loads about 1.6k tokens when it runs. Until then it costs about 35 tokens; SKILL.md has 617 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from learningmatter-mit/AtomisticSkills at commit 6257444, republished under its MIT licence (© learningmatter-mit). 617 words, ~1,649 tokens.
.claude/skills/general-publisher-access-guard/SKILL.md (or your agent's skills folder). This skill also uses 11 other files; get the full folder from GitHub.To prevent autonomous research agents from being blocked by scientific journal publisher web application firewalls (Cloudflare Turnstile, Radware CAPTCHA, Akamai, Imperva) and HTTP 403/429 error loops, by auditing publisher anti-bot policies and automatically routing paper retrieval through legal open-access APIs, repository mirrors, and reconstructed abstract services.
When the user asks you to fetch, read, summarize, or analyze scientific literature from specific URLs or DOIs, NEVER use direct web scraping (read_url_content, curl, or raw requests.get) on known bot-blocking publisher domains. Follow the three steps below:
Before attempting to download or scrape any paper URL or DOI, inspect the domain against the curated publisher policy matrix.
${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/check_publisher.py --url "https://pubs.acs.org/doi/10.1021/acs.chemmater.9b04758"Or with DOI:
${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/check_publisher.py --doi "10.1103/PhysRevLett.120.145301" --jsonDecision Rule:
direct_scraping_safe: false (status BLOCKED or API ONLY), you MUST NOT scrape or curl the publisher web page. Proceed immediately to Step 2.pubs.acs.org, journals.aps.org, link.aps.org, sciencedirect.com, link.springer.com, nature.com, onlinelibrary.wiley.com, pubs.rsc.org, iopscience.iop.org, pubs.aip.org, ieeexplore.ieee.org, science.org, pnas.org, tandfonline.com, academic.oup.com, and mdpi.com.Run the safe paper retriever to query legitimate APIs in priority order:
ELSEVIER_API_KEY, SPRINGER_API_KEY) are present in environment variables..edu repositories), automatically discarding any link pointing back to a blocked publisher domain.${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/safe_paper_retriever.py \
--doi "10.1103/PhysRevLett.120.145301" \
--output_dir ./papersThe script outputs:
<safe_doi>_summary.md: Structured markdown report with title, authors, citations, reconstructed abstract, and access notes.<safe_doi>.pdf: Downloaded open-access PDF (if available in a safe repository).<safe_doi>_text.txt: Plaintext extracted from the PDF via PyMuPDF.If no open-access copy exists across repository mirrors:
<safe_doi>_summary.md.To test live publisher WAF defenses or verify if a publisher's bot policy has updated:
${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/audit_publishers.py --publisher acsOr audit all major publishers:
${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/audit_publishers.py --allHandling an ACS paper (10.1021/acs.jpclett.7b00189) where direct web scraping returns Cloudflare Turnstile 403:
${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/safe_paper_retriever.py \
--doi "10.1021/acs.jpclett.7b00189" \
--output_dir examples/acs-blocked-paperSee examples/acs-blocked-paper/README.md for full execution traces and validation against published literature.
Handling an APS Physical Review Letters paper (10.1103/PhysRevLett.120.145301) by bypassing blocked link.aps.org/pdf and fetching the author manuscript from OSTI/MIT DSpace:
${CLAUDE_SKILL_DIR}/../../venv/run cpu python ${CLAUDE_SKILL_DIR}/scripts/safe_paper_retriever.py \
--doi "10.1103/PhysRevLett.120.145301" \
--output_dir examples/oa-repository-bypassSee examples/oa-repository-bypass/README.md for step-by-step instructions.
cpu environment (contains requests, pymupdf / fitz).curl, read_url_content, or browser automation on blocked publisher domains.UNPAYWALL_EMAIL or OPENALEX_EMAIL environment variable to access high-throughput API pools.© learningmatter-mit, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 11 other files (scripts) in skills/general-publisher-access-guard of learningmatter-mit/AtomisticSkills.
Open the folder on GitHubat commit 6257444
General Publisher Access Guard next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| General Publisher Access Guard this skilllearningmatter-mit/AtomisticSkills | 176 | — | ~1.6k | Automated safety check: Pass | MIT | |
| Blocking IO Guardbytedance/deer-flow | 83k | — | ~1.7k | Automated safety check: Pass | MIT | |
| Publishcode-yeongyu/oh-my-openagent | 70k | — | ~5.5k | Automated safety check: Warn | Custom licence | |
| Social Publisheraffaan-m/ECC | 275k | 1 repos | ~1.1k | Automated safety check: Pass | MIT | |
| Guard Modegarrytan/gstack | 136k | — | ~919 | Automated safety check: Notes | MIT | |
| Publishyc-software/qm | 15k | — | ~2.2k | Automated safety check: Warn | MIT |
bytedance/deer-flow
Adds a runtime test anchor for backend async code that could block the asyncio event loop, and proves the anchor fails when the blocking call returns.
code-yeongyu/oh-my-openagent
Publish oh-my-opencode to npm by triggering the GitHub Actions publish workflow and verifying its artifacts.
affaan-m/ECC
Agent-driven scheduling and publishing of social media posts across 13 platforms via SocialClaw.
garrytan/gstack
Switches on full safety by combining warnings before destructive commands with a block on edits outside one directory you choose, for work on production or live systems.
yc-software/qm
Publish a long-lived internal web app, site, or dashboard from the agent computer.
affaan-m/ECC
Guard against destructive operations with three modes: Careful intercepts dangerous commands (rm -rf, git push --force, DROP TABLE) for confirmation, Freeze locks writes to one directory, and Guard…
learningmatter-mit/AtomisticSkills
Define a docking search box (center coordinates + box dimensions in Angstroms) from a co-crystal ligand, binding-site residues, or a saved JSON specification.
learningmatter-mit/AtomisticSkills
Build a solvated, charge-neutralized protein-ligand complex for OpenMM molecular dynamics simulation.
learningmatter-mit/AtomisticSkills
Identify and rank ligandable pockets on a protein structure or model using geometry (fpocket) or an ML predictor (P2Rank).
learningmatter-mit/AtomisticSkills
Calculate homolytic and heterolytic bond dissociation energies (BDEs) for all single bonds in a molecule using MLIPs with RDKit fragmentation.
learningmatter-mit/AtomisticSkills
Generate molecular conformers with RDKit ETKDG, relax with MLIPs, and rank by energy with Boltzmann weighting.
learningmatter-mit/AtomisticSkills
Query multiple MOF databases (QMOF via MPContribs; ARC-MOF DB7/Majumdar et al.
Avoid bot-blocking publisher websites by routing paper retrieval through legal open-access APIs and mirrors. General Publisher Access Guard is an agent skill from learningmatter-mit/AtomisticSkills. Avoid bot-blocking publisher websites by routing paper retrieval through legal open-access APIs and mirrors.
Run `npx skills add learningmatter-mit/AtomisticSkills --skill general-publisher-access-guard -a claude-code`. Or copy the skill folder (skills/general-publisher-access-guard in learningmatter-mit/AtomisticSkills) into .claude/skills/general-publisher-access-guard in your project. Claude Code loads it when a task matches its description.
Run `npx skills add learningmatter-mit/AtomisticSkills --skill general-publisher-access-guard -a codex`. Or copy the skill folder (skills/general-publisher-access-guard in learningmatter-mit/AtomisticSkills) into .agents/skills/general-publisher-access-guard in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add learningmatter-mit/AtomisticSkills --skill general-publisher-access-guard -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/general-publisher-access-guard, .gemini/skills/general-publisher-access-guard, .github/skills/general-publisher-access-guard and .opencode/skills/general-publisher-access-guard in your project.
Going by SKILL.md and its folder, General Publisher Access Guard needs Python for the scripts in its folder and credentials named ELSEVIER_API_KEY and SPRINGER_API_KEY. Our summary lists: Python 3; A credential in ELSEVIER_API_KEY; A credential in SPRINGER_API_KEY.
SKILL.md names 2 domains. In commands or code: pubs.acs.org; the agent is likely to contact it when it follows the instructions. As links in the text: doi.org. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
General Publisher Access Guard is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.6k tokens (SKILL.md is roughly 6.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with General Publisher Access Guard: Blocking IO Guard (bytedance/deer-flow, 83k stars), Publish (code-yeongyu/oh-my-openagent, 70k stars), Social Publisher (affaan-m/ECC, 275k stars) and Guard Mode (garrytan/gstack, 136k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
learningmatter-mit (a GitHub organization) maintains it in learningmatter-mit/AtomisticSkills, which has 176 GitHub stars. The repository holds 129 skills in this directory. The repository was last updated on October 7, 2026.
Source: learningmatter-mit/AtomisticSkills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.