Compare commits

...

201 Commits

Author SHA1 Message Date
Timothy Kassis
1e5eeffbda Update version numbers and enhance skill documentation
Some checks failed
Create Release / release (push) Has been cancelled
Skill Spec Validation / Validate skills against the Agent Skills spec (push) Has been cancelled
Skill Tests / Repo-wide contract and coverage guard (push) Has been cancelled
Skill Tests / Standard-library-only skill suites (push) Has been cancelled
Weekly Security Scan / scan (push) Has been cancelled
- Bumped version in plugin.json and pyproject.toml to 2.66.0.
- Updated skill metadata versions across multiple skills, reflecting improvements and new features.
- Added citation guidelines to various skill documentation to ensure proper referencing of the "Scientific Agent Skills" paper.
2026-09-02 09:25:16 -07:00
Timothy Kassis
bdf385bad5 Enhance README.md with additional citation details and paper reference
- Added a new badge linking to the arXiv paper.
- Updated the citation section to include the full citation for the paper "Scientific Agent Skills: A Library of Procedural Knowledge for Research Agents."
- Clarified the importance of citing the paper alongside individual skills used in research.
2026-09-02 09:00:58 -07:00
Timothy Kassis
1dd0fccf46 Remove Star History section from README.md to streamline content and focus on essential information. 2026-08-31 10:14:01 -07:00
github-actions[bot]
cc37669ed0 chore: update security scan report [skip ci] 2026-08-31 09:27:46 +00:00
Timothy Kassis
f6fcafeb1c Update version to 2.65.0 and reflect skill count increase in README
- Bumped version number in plugin.json and pyproject.toml to 2.65.0.
- Updated README to indicate an increase in the number of available skills from 161 to 163.
2026-08-29 15:54:53 -07:00
ZEMBA Wendemi Brice Roméo
72d742e153 fix(stable-baselines3): repair broken API reference links (#233)
The "API Reference" bullets in references/callbacks.md and
references/vectorized_envs.md pointed at
`/en/master/common/callbacks.html` and `/en/master/common/vec_env.html`,
which both return 404. Upstream Stable-Baselines3 documents the
`stable_baselines3.common.callbacks` and `stable_baselines3.common.vec_env`
modules on the same pages as their narrative guides, not under `common/`.

Repoint both links at the module anchors on the guide pages:

- guide/callbacks.html#module-stable_baselines3.common.callbacks
- guide/vec_envs.html#module-stable_baselines3.common.vec_env

Both targets and both anchors were verified against the live docs and the
upstream genindex. The "Official ... Guide" bullet directly above each one
already used the correct `guide/` path, so the two `common/` URLs were
inconsistent within their own files.

Bump metadata.version to "1.2".

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-29 06:57:32 -07:00
Aubrey Brueckner
7b0386d917 Fix Rowan examples for SDK 3.1.13 (#237) 2026-08-29 06:52:25 -07:00
Timothy Kassis
895b4be37e Update README to replace live webinar announcement with recording link for K-Dense BYOK
- Changed the webinar announcement to a link for the recorded session of "Getting Started with K-Dense BYOK."
- Updated the description to reflect the content covered in the recording, ensuring users can access the walkthrough at their convenience.
2026-08-28 14:41:21 -07:00
github-actions[bot]
36d8f13a1e chore: update security scan report [skip ci] 2026-08-24 09:22:54 +00:00
Timothy Kassis
390f5146bf Enhance README with webinar announcement for K-Dense BYOK
- Added details about an upcoming live webinar titled "Getting Started with K-Dense BYOK," including date, time, and registration link.
- This addition aims to provide users with a hands-on walkthrough of the K-Dense BYOK setup and features.
2026-08-19 15:41:47 -07:00
Timothy Kassis
de66e10cd0 Update AGENTS.md to clarify optional nature of skill diagrams and streamline related instructions
- Revised language to indicate that diagrams are optional for skills and not required for changes.
- Removed outdated commands related to diagram generation from the main instructions.
- Emphasized the importance of regenerating diagrams when skill workflows change to maintain accuracy.
2026-08-19 13:43:55 -07:00
Timothy Kassis
48dc1cf173 docs: add tutorials table to README (#226)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-18 15:58:49 -07:00
Timothy Kassis
5e50e08885 Enhance README with new blog entries and skills
- Added new blog entries on using Multica for scientific research, introducing the waypoint-bio and lab-hardware-cad agent skills, and discussing the agentic data scientist and Karpathy ML engineer.
- Updated the README to reflect the expanded resources and insights available for users in the scientific community.
2026-08-18 13:35:56 -07:00
Timothy Kassis
9e8b0cb0b0 Update version to 2.64.0 and enhance README with skill count increase
- Bumped version number in plugin.json and pyproject.toml to 2.64.0.
- Updated README to reflect an increase in the number of available skills from 161 to 163.
2026-08-17 16:42:50 -07:00
Timothy Kassis
204eef574c Add waypoint skill 2026-08-17 16:40:28 -07:00
Timothy Kassis
4934681cd2 Update README to include Star History chart
- Added a new section for Star History with an embedded chart to visualize the repository's star growth over time.
- This addition enhances the README by providing insights into the project's popularity and community engagement.
2026-08-17 10:56:39 -07:00
github-actions[bot]
28f5603bc2 chore: update security scan report [skip ci] 2026-08-17 09:21:36 +00:00
Timothy Kassis
336c4f838a Update lab hardware CAD skill documentation and standards
- Bumped version to 1.2 and updated last-reviewed date in SKILL.md.
- Enhanced standards.json with updated notes and additional dimensions for clarity.
- Expanded build123d-patterns.md to include detailed geometry checks and their semantics.
- Improved fabrication-limits.md with laser cutting guidelines and corner radius considerations.
- Updated validation.md to clarify checks for declared interfaces and geometry.
- Added new geometry checks functionality in scripts to validate model geometry against built solids.
- Adjusted check.py to include geometry evaluation commands for better verification processes.
2026-08-15 20:12:06 -07:00
Timothy Kassis
43a3e619a1 Update README to include Reddit link and enhance user engagement
- Added a Reddit badge and link to the README for broader community engagement.
- Updated the "Stay up to date" section to include Reddit alongside existing social media links for new skills and updates.
2026-08-15 10:21:47 -07:00
Timothy Kassis
b2a92ba052 Update pi-agent skill 2026-08-14 13:15:10 -07:00
Timothy Kassis
3c8fc0fd16 Update examples and skills documentation
- Added a new example for virtual spatial transcriptomics from archival H&E slides, detailing objectives, disciplines, skills used, and workflow steps.
- Introduced the NCATS ARAX skill for querying biomedical knowledge-graph relationships, including detailed usage instructions and capabilities.
- Updated the examples list to reflect the new addition and ensure comprehensive coverage of relevant topics.
2026-08-14 12:39:02 -07:00
Timothy Kassis
980e4f0bb2 Add CAD skill for lab hardware 2026-08-14 12:20:47 -07:00
Timothy Kassis
13385c7c4d Add new blog entries to README for AI co-scientists and workflow importance
- Included a new section on AI co-scientists with a link to a live Q&A session addressing practical concerns for researchers.
- Added multiple entries discussing the significance of workflow in scientific research, emphasizing verification and reproducibility in AI applications.
- Updated the README to enhance the resourcefulness of the documentation for users exploring AI in scientific contexts.
2026-08-13 13:07:22 -07:00
Timothy Kassis
5f3de01dba Update review model to version 3.7 across multiple scripts
- Changed the review model from "google/gemini-3.6-flash" to "google/gemini-3.7-flash" in the following scripts:
  - generate_infographic_ai.py
  - generate_schematic_ai.py (in latex-posters, literature-review, scientific-schematics, and scientific-slides)
  - generate_slide_image_ai.py
- Updated documentation to reflect the new review model version in iterative_refinement.md.
2026-08-13 11:04:15 -07:00
Timothy Kassis
5ad4aae76b Update documentation and versioning for Agent Plugins compliance
- Enhanced AGENTS.md and CONTRIBUTING.md to clarify the structure and requirements for the Agent Plugins package, including the need for `plugin.json` to be schema-valid and version-synced with `pyproject.toml`.
- Updated README.md to reflect the new version 2.63.0 and added details about the repository being a portable Agent Plugins package.
- Added tests in test_repo_contract.py to ensure compliance with the Agent Plugins manifest schema and discoverability of skills.

This update ensures better adherence to the Agent Plugins standard and improves the overall documentation for contributors.
2026-08-11 17:44:32 -07:00
Timothy Kassis
f2f77ff889 Remove Star History chart from README.
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-11 11:02:27 -07:00
Timothy Kassis
d661d27ef4 Merge pull request #158 from fedorov/update-idc-skill-v1.6.2
Update imaging-data-commons skill from v1.4.0 to v1.8.1 upstream
2026-08-10 16:46:11 -07:00
Timothy Kassis
3956e5408b feat: enhance skill security scan for forked PRs
- Added handling for missing SKILL_SCANNER_LLM_API_KEY in forked pull requests.
- Implemented a sticky comment to inform users when the scan is skipped due to the absence of the API key.
- Updated workflow documentation to clarify the behavior of the scanner in forked contexts.
2026-08-10 16:14:49 -07:00
Andrey Fedorov
aaf763c3a6 Update imaging-data-commons skill from v1.4.0 to upstream v1.8.1
Rebased onto current main and re-synced from
ImagingDataCommons/imaging-data-commons-skill, which now holds SKILL.md under 500
lines upstream. references/core_capabilities.md is therefore removed rather than
refreshed: its content was redistributed into the topical guides that already own
each subject (sql_patterns, index_tables_guide, cli_guide, licensing_and_citation)
instead of a catch-all file, and upstream CI holds the budget so the split does not
have to be redone after each sync.

New since v1.4.0: the hosted IDC MCP server and REST API as first-class access paths
(references/mcp_guide.md, references/rest_api_guide.md), so a metadata question no
longer requires a ~77 MB idc-index install; licensing_and_citation.md; idc-index
0.12.5 / IDC data v24; scripts/check_version.py as the startup version check.

tests/imaging-data-commons/test_check_version.py covers the bundled script: offline,
standard library only, no idc-index needed. It is a copy of the upstream file, which
is written to be vendored — only two path constants and the frontmatter-version
assertion differ.

Verified: pytest tests/_meta tests/imaging-data-commons -> 29 passed, 1030 subtests;
skills-ref validate skills/imaging-data-commons -> valid; SKILL.md 495 lines.
2026-08-10 17:06:22 -04:00
github-actions[bot]
7eb9c23c32 chore: update security scan report [skip ci] 2026-08-10 09:48:06 +00:00
Timothy Kassis
9b1d761c67 Merge pull request #224 from neuroepithelial/codex/add-ncats-arax-skill
Add bounded NCATS ARAX knowledge graph skill
2026-08-08 22:15:30 +00:00
neuroepithelial
550b965a69 Add bounded NCATS ARAX knowledge graph skill
Add a standard-library ARAX client for typed one-hop and endpoint-pinned two-hop Translator queries, selected-provider federation, entity normalization, and provenance-preserving artifacts. Include offline fixtures and tests, isolated test metadata, and README discovery.
2026-08-08 02:44:06 -04:00
Timothy Kassis
991bd993ac Update optimize-for-gpu skill documentation and assets
- Enhanced the skill description for clarity and accuracy regarding GPU acceleration.
- Updated compatibility notes to reflect requirements for RAPIDS 26.06 and Python 3.11+.
- Revised the library selection guidance to emphasize preferred usage patterns and legacy considerations.
- Improved the optimization workflow section with detailed steps for defining contracts and checking suitability.
- Added new code transformation patterns and clarified the use of cuSpatial and cuVS.
- Updated the cuCIM reference to include installation instructions and performance characteristics.
- Replaced the existing optimize-for-gpu.png image with a new version to better illustrate the skill's capabilities.
2026-08-07 13:35:13 -07:00
Timothy Kassis
5c0d8b3029 Merge pull request #221 from KalinNonchev/add-deepspot-m-skill
Add DeepSpot-M skill
2026-08-07 20:10:12 +00:00
Timothy Kassis
947764127b deepspot-m: document the ~19k-gene panel limit, drop redundant eval calls, add diagram
- State that predict_genes only accepts symbols in the released tokens.csv
  panel (model.gene_names) and raises KeyError otherwise; temper the
  transcriptome-coverage claims to match.
- Use from_pretrained's device argument; the model already returns in eval
  mode and predict_genes runs under no_grad, so drop the redundant
  model.eval()/no_grad lines (also clears MDBLOCK_PYTHON_EVAL_EXEC scan FPs).
- Rebuild the tile batch inside the multi-source loop, matching the advice
  beneath the example.
- Pin the install to deepspotm==1.0.0.
- Add the required docs/images/deepspot-m.png workflow diagram.
2026-08-07 13:09:04 -07:00
Timothy Kassis
f8c6f0ef73 Introduced a new skill for relsa-severity-assessment 2026-08-07 12:08:05 -07:00
Kalin Nonchev
de981da0ec Add DeepSpot-M skill
Adds skills/deepspot-m for transcriptome-wide virtual spatial transcriptomics from H&E histology tiles, plus references for the API and whole slide runs. Updates the README counts and docs/skills.md.
2026-08-04 02:36:08 +02:00
github-actions[bot]
d767725c6e chore: update security scan report [skip ci] 2026-08-03 10:27:02 +00:00
Timothy Kassis
ad21a38689 Update version to 2.62.0 in pyproject.toml and README.md, reflecting the latest release. 2026-07-31 11:01:54 -07:00
Timothy Kassis
3378ecea57 citation-management: correct documented commands, bump to 2.0
SKILL.md's one copy-pasteable Phase 3 command used --remove-duplicates, which
argparse rejects; the real flag is --deduplicate. A sweep of every documented
invocation against the actual --help output found eleven more flags that do not
exist: validate_citations.py --auto-fix, --strict, --output,
--check-required-fields, --check-authors, --check-duplicates, --check-syntax;
format_bibtex.py --validate, --report, --style; doi_to_bibtex.py --clipboard;
and search_google_scholar.py --open-access-only. Several sat in worked examples
an agent would run verbatim.

citation_validation.md documented an "auto-fix" mode of validate_citations.py
that never existed -- the script only reports. Those sections now point at
format_bibtex.py, which is what rewrites.

Other corrections:

- --report wrote a JSON document to report.txt.
- three of five declared dependencies were never imported.
- Phase 2.5 was marked MANDATORY but needed web access that allowed-tools did
  not grant; WebSearch and WebFetch are now declared.
- no compatibility field, despite needing a Python version, a package, and
  network access.
- the schematics section told a citation skill to produce diagrams by default,
  and named generate_schematic.py while generate_schematic_ai.py sat beside it
  unexplained. Reduced to a pointer at scientific-schematics.
- venue reference counts are labelled as rules of thumb rather than submission
  requirements, which is what they are.

Documents search_openalex.py and the shared _common.py, and regenerates the
workflow diagram, which no longer matched what the skill does.

Version 1.8 -> 2.0: format_bibtex.py no longer overwrites its input by default.
2026-07-31 10:59:16 -07:00
Timothy Kassis
d39264b47c citation-management: fix BibTeX corruption and metadata defects
The field parser in format_bibtex.py and validate_citations.py matched
`\{([^}]*)\}`, which stops at the first closing brace. Any title with a
protected term -- `{Highly accurate prediction with {AlphaFold}}` -- was
truncated mid-value, and rewriting it produced a .bib with unbalanced braces
that no BibTeX engine reads. extract_metadata.py emits that protection
deliberately, so the documented Phase 2 -> Phase 3 pipeline corrupted its own
output, and format_bibtex.py defaulted to overwriting the input in place.

Replace both parsers with a brace-depth scanner in scripts/_common.py, which
also owns entry rendering, page normalisation, and one citation-key scheme
shared by every producer -- entries from Crossref, PubMed, OpenAlex, and
Scholar now collide when they are the same paper, which is what makes
deduplication work at all. Writing is opt-in: without --output or --in-place
the result goes to stdout and the input is untouched.

Also fixed:

- pages: `replace('-', '--')` turned `583--589` into `583----589`; PubMed's
  abbreviated `1123-30` now expands to `1123--1130` rather than staying a
  range that resolves to nothing.
- publisher was read from Crossref and dropped by the writer, so every @book
  and @techreport failed the required-field check.
- an arXiv preprint with a DataCite DOI was typed @article with no journal --
  guaranteed to fail validation. It is @misc unless journal_ref names a venue.
- --url and PMCID were classified by identify_type but had no handler, so a
  publisher URL without a DOI in its path errored out. URLs now resolve via
  the citation_doi meta tag; PMCIDs via the NCBI ID converter.
- citation keys were unsanitised in search_pubmed.py: `Müller2021pmid123`
  and `O'Brien2021pmid124` are not valid BibTeX keys.
- DOIs were interpolated into API URLs unquoted.
- verify_doi used HEAD on doi.org, which follows to the publisher; several
  answer HEAD with 403 behind a bot check, so good DOIs looked unresolvable.
  Ask Crossref, then DataCite, and treat transport failures as unknown.
- valid_entries subtracted the error count from the entry count and reported
  `Valid entries: -2` for a one-entry file.
- structured abstracts kept only their first section; titles lost inline
  markup and carried PubMed's trailing full stop.
- two `note` fields could be emitted in one entry.
- --auto-fix was advertised in --help as "not implemented yet" and did nothing.
- venue_standards was assigned inside validate_file, so a fresh validator did
  not have it.

Add search_openalex.py: ~250M works, keyless REST API, cursor pagination,
abstracts rebuilt from the inverted index. The skill's own "single source
bias" pitfall previously had only two sources to offer, one of them scraped.

Drop the bundled schematic generators (1,148 lines) in favour of the
scientific-schematics skill, and update the shared-copy contract accordingly.

Reference-list length is editorial judgement, so a venue shortfall is now a
warning; only an explicit --min-count is enforced as an error.

Dependencies drop from eight packages to two: bibtexparser, biopython,
crossref-commons, pylatexenc, and selenium were declared but never imported,
and the parsing layer is now standard library.
2026-07-31 10:59:00 -07:00
Timothy Kassis
95d3adda6d market-research-reports: fix ledger validator crash on publication_date=not-stated
The sentinel "not-stated" is exactly 10 characters, so it satisfied the
len(publication) == 10 ISO-date guard and reached
date.fromisoformat("not-stated"), raising an uncaught ValueError instead of
the documented warning. SKILL.md instructs recording "not-stated" when the
publication date is unavailable, so this crashed on valid ledgers.

Check the sentinel before the retrieval/publication comparison, and add
regression tests for both the not-stated warning and the still-enforced
retrieval-precedes-publication error.

Fixes #219
2026-07-31 10:57:18 -07:00
Timothy Kassis
390c8b8b49 Update generate-image.png to reflect recent changes in image generation process. 2026-07-31 10:43:31 -07:00
Timothy Kassis
4226ca8052 Enforce use of uv for packagment installation whenever needed 2026-07-31 10:29:07 -07:00
Timothy Kassis
bd99c01e3f Update image generation and citation management scripts to use 'uv pip install' for package installations. Modify skill versions for infographics and generate-image to reflect recent changes. Enhance error handling and review logic in infographic generation scripts, ensuring better feedback on quality assessments. 2026-07-31 10:26:56 -07:00
github-actions[bot]
4d5f1d20be chore: update security scan report [skip ci] 2026-07-31 16:51:35 +00:00
Timothy Kassis
ab2f84ab10 Update version to 2.61.0 in pyproject.toml and README.md, reflecting the latest release. 2026-07-28 17:34:25 -07:00
Timothy Kassis
f1b60f8ef4 Update skill versions to 1.4 and 1.5 across multiple skills, including infographics, latex-posters, literature-review, scientific-schematics, and scientific-slides. Enhance API key resolution logic in various scripts to improve credential handling and error messaging. Adjust image model references for clarity in infographic and schematic generation scripts. 2026-07-28 17:32:42 -07:00
Timothy Kassis
07021b927e Add new example for Phase 2 regimen development in examples.md and enhance pharmacology skills section in skills.md. The new example outlines a comprehensive workflow from first-in-human dose to a defensible Phase 2 regimen, detailing objectives, disciplines, skills used, and a structured prompt. Additionally, the skills section now includes a dedicated entry for PK/PD modeling, emphasizing its applications in pharmacometrics. 2026-07-28 11:22:46 -07:00
github-actions[bot]
f9d7053cb1 chore: update security scan report [skip ci] 2026-07-28 18:16:24 +00:00
Timothy Kassis
0e451065e3 Update skill versions and enhance security measures across multiple skills. Added a triage report to SECURITY.md, improved endpoint validation in autoskill, and updated various skills to version 1.1 or 1.2. Enhanced documentation for imaging-data-commons and other skills to clarify installation and usage instructions. 2026-07-28 10:50:49 -07:00
Timothy Kassis
223f5a30f8 Update version to 2.60.0 and increment skill count to 158 in README.md 2026-07-28 10:27:05 -07:00
Timothy Kassis
4fb7e0bc29 Test every script-bearing skill, and enforce that it stays that way
AGENTS.md has always said that a skill shipping scripts/ puts its tests in
tests/<name>/, but nothing checked it: 54 of the 100 such skills had no suite
at all, including docx, pptx, xlsx, pdf and scanpy. All 100 now do.

tests/_meta is the guard. It runs the shared structural contract across every
skill in a single process -- safe because it parses scripts with ast and never
imports them -- and fails when a skill ships scripts/ without a suite or
without a [skills.<name>] entry in skill-requirements.toml. It needs no
scientific packages and finishes in seconds, so skill-tests.yml blocks every
pull request on it, plus the packages=[] suites.

tests/_contract holds what the per-skill suites were each reimplementing:
frontmatter conformance, the 500-line limit, no tests or bytecode under
skills/, local links resolving, scripts parsing, no eval/exec/os.system, no
standard-library shadowing, no hardcoded local paths, valid shell scripts. Also
the --help contract, which skips when a skill's packages are absent and runs
for real under --isolated, and shared behaviour for the files docx/pptx/xlsx
and five schematic-shipping skills carry byte-identical copies of, with drift
detection so they cannot diverge silently.

67 new suites, 3325 test functions. The existing suites were retrofitted: 18
no longer pin an exact skill version, so a version bump no longer breaks a
test; 11 duplicated structural methods removed; 19 wired to the --help
contract; and 5 that failed collection without their packages now skip
cleanly. run_all.py in the bare project environment goes from 6 failures to 0.

Writing the tests surfaced 19 defects in the skills, fixed here with version
bumps. The ones that changed scientific output:

  - openpiv reported vorticity 0 for a rotating flow, from a sign error in
    openpiv's y-up coordinate relabelling; solid-body rotation now gives 2w
    exactly, on grids of either orientation
  - deepchem returned solubility predictions in z-scored space while labelling
    them log(mol/L), because it transformed a y-less dataset instead of
    untransforming the output
  - neuropixels-analysis had the Allen and IBL ISI thresholds swapped,
    contradicting its own references/QUALITY_METRICS.md and inverting the two
    standards' relative strictness
  - scanpy's summarize() raised TypeError on every AnnData under anndata 0.13,
    which reports an unnamed None key on .layers; scanpy convert was broken
  - experimental-design's Latin hypercube was never reproducible: pyDOE3 draws
    from its own default_rng and ignores numpy's global seed
  - primekg shipped a hardcoded path naming a person, which is why
    no_personal_paths is now a contract rule

The remainder is upstream API drift, each verified against the installed
package: retired symbols in bioservices 1.16, gget helpers that returned lists
where a string was written, ArviZ 1.x kwargs in pymc, a positional-only
factory in pymoo, ReduceLROnPlateau(verbose=) in torch 2.13, a removed scvelo
parameter, and PyPDF2 in scientific-slides.

Two manifest environments could not build and are pinned: gget, where an
unpinned scanpy walked back to 1.9.8 and pulled llvmlite 0.36 which does not
compile on 3.13, and pymatgen, pinned to the snapshot its own _common.py
enforces rather than loosening that check. deepchem gains torch, without which
no model class exists.

python tests/run_all.py --isolated: 101 passed, 0 failed.
2026-07-28 10:20:12 -07:00
Timothy Kassis
d33b2671cf Add paperclip skill
Covers the Paperclip CLI from GXL: ~11M full-text papers, 217K+ FDA/PMDA/EMA
regulatory documents, 110K+ trial protocols, and 574K+ UniProt/PDB/ChEMBL
entries exposed as a read-only virtual filesystem with line-numbered text, so
answers can cite an exact sentence.

Written against the CLI rather than the docs site, which is a JS shell that
serves almost nothing to a fetcher. Every command was run against 0.7.14 and
re-verified on 0.7.15 after the CLI self-updated mid-review. SDK signatures
were read with inspect, not transcribed.

Authentication is PAPERCLIP_API_KEY from .env, with browser OAuth as the
fallback, and the reason is agent-shaped: environment variables do not survive
between tool calls, so the natural two-step form (export, then run) leaves the
key unset on the second call. Paperclip does not fail there -- it silently
falls back to stored OAuth, a different identity. Every invocation therefore
carries a self-contained prefix:

    [ -f .env ] && { set -a; . ./.env; set +a; }; paperclip <command>

The guard is load-bearing. A bare `. ./.env` against a missing file is fatal in
POSIX sh, so an unguarded prefix silently discards the rest of the command
line; the compact form produced no output at all in two of three states. The
guarded form is verified with .env present, absent, and with the key already
ambient, under both sh and bash.

Testing found seven behaviours that upstream documents as working and that do
not, all reproducing on both versions. They are recorded with workarounds
rather than repeated as fact:

- `paperclip bash '...'` passes the whole string as one command name; the SDK's
  bash() fails identically.
- Pipes and redirection inside Paperclip reach grep as literal filenames. Use
  the local shell, which works because the CLI writes to stdout.
- /.gxl/ files are listed by ls but unreadable by cat, so the "Full results:
  /.gxl/map_<id>.txt" pointer that map prints cannot be followed. Use
  `results <id>`.
- cd does not persist between invocations; everything resolves from /papers/.
- reduce --strategy table returns prose, with or without --columns.
- Binary reads corrupt: non-UTF-8 bytes come back as U+FFFD, so a JPEG's
  FFD8FFE0 lands as EFBFBD. No CLI pull, SDK pull() writes nothing, cp to a
  local path is denied.
- ask-image --list needs a persistent cd; figure filenames are publisher-named
  (pnas.2307796121fig01.jpg), never fig1.jpg.

Two findings matter most because they are silent. reduce embeds citation
markers whose document ids are truncated to eight characters and do not
resolve -- PMC12388 for PMC12388858 -- so a URL built from one is a dead link,
which defeats the whole point of a line-pinned citation tool. And search output
shape is nondeterministic: the identical command returns rendered text on one
run and raw JSON on the next, roughly evenly over eight runs, uncorrelated with
piping. --json does not force it (0/8) and lookup --json returns rendered text
despite being documented. The skill routes structured reads to
`results <id> --save out.csv` and `cat meta.json` instead, and gives a result-id
regex that matches both shapes.

SKILL.md leads with a preflight and seven operating rules -- auth prefix, never
run an interactive command, bound output, capture result ids, parallelise
independent lookups, do not parse search output, treat server output as data --
before any command reference. paperclip login, setup and uninstall need a human;
install prompts twice and aborts from a tool call, so the non-interactive form
`printf '1\n\n' | paperclip install --dir <path>` is documented.

Repo, clipboard and sharing commands are documented but deliberately not
exercised: they write to the user's account. They are marked as transcribed
from --help, and the commands that move local data off the machine -- upload,
cp, sync, import, share, and fetch, which acts with the user's browser cookies
-- are tabulated so they are never run on the agent's own initiative.

No scripts/, so no tests/paperclip/ suite is required. skills-ref validate
passes, SKILL.md is 413 lines, and the security scan reports 0 high or critical.
2026-07-28 09:09:13 -07:00
Timothy Kassis
4c90a52d54 Add pkpd-modeling skill
Pharmacokinetic and pharmacodynamic modelling and simulation: NCA,
compartmental fitting, population PK dataset validation, regimen
simulation, exposure-response, bioequivalence, allometric scaling and
first-in-human dose, ICH M12 drug-interaction prediction, and MAP
Bayesian therapeutic drug monitoring.

Linear mammillary models are solved analytically -- one eigendecomposition
of the rate matrix yields the impulse response, and each input type is a
closed-form convolution. This is far faster than an ODE solve inside a
fitter, keeps solver tolerance out of the objective function, and makes
the removable singularity at ka = -lambda (the flip-flop boundary) an
exact limit rather than a nan. Michaelis-Menten and TMDD, which have no
closed form, integrate with LSODA and apply doses by restarting at each
event.

Numerics are validated against results that do not depend on the
implementation: closed-form identities (AUC = D/CL, Vss, MRT, Bateman),
analytical profiles with known parameters that NCA and the fitter must
recover, the PowerTOST bioequivalence sample-size table (exact at six
CVs), the EMA ABEL cap, and the FDA body-surface-area conversion factors.
92 tests pass in an isolated numpy+scipy environment.

Documents current tooling verified against live sources rather than
recalled: Pharmpy 2.1.1 including the 2.0.0 row-index and 2.1.0
set_placebo_model breaking changes, NONMEM 7.6 ADVAN16/17, and the
2024-2025 status of ICH M12, M13A/B, E11A and FDA Project Optimus.
Provenance for every version- and date-specific claim is recorded in
references/source-ledger.md.
2026-07-27 18:38:01 -07:00
Timothy Kassis
061882ba79 Update paper-lookup to 2.0
Audited every documented endpoint against the live APIs and fixed what
came back wrong, then added the tooling for the failures that cannot be
fixed by documentation alone.

These APIs report failure with HTTP 200, which is the theme running
through most of this change:

- PMC eFetch returns a well-formed article with no <body> for non-OA
  content, with the reason only in an XML comment that parsers discard.
  This is the common case, not an edge case: eFetch full text covers the
  ~3M OA Subset out of ~10M articles.
- arXiv returns totalResults 1 and a single entry titled "Error" for a
  malformed parameter, and silently rewrites an unknown field prefix to
  all:, so a typo degrades a targeted search into a full-text one.
- bioRxiv/medRxiv /details/ pages are 30 records, not the documented 100,
  and an out-of-step cursor is accepted with a 200 -- a step-by-100 walk
  skipped records 30-99 of every hundred while looking successful.
- Europe PMC puts errCode in a 200 body.

Documentation fixes:

- Corrected bioRxiv/medRxiv page size and documented the per-endpoint
  messages shape, including why total (360) and count_new_papers (232)
  differ and which endpoints expose no counts at all.
- Percent-encoded the arXiv date-range brackets; the previous example
  made curl exit 3 (bad range specification) before sending anything.
- Documented the PMC non-OA hazard and added the PMC OA Web Service,
  which answers "is full text actually available" before the fetch.
- Corrected <arxiv:doi>: it is the journal DOI and is absent for papers
  that were never published. A constructed 10.48550/arXiv.{id} resolves
  at doi.org but 404s in both Crossref and OpenAlex, so it is not a
  portable key.
- Corrected the arXiv <id> scheme: entry ids are http:// while the links
  to the same pages are https://, inconsistent within one response.
- Flagged the /publisher/ example, which returns "no articles found" for
  valid prefixes, and the api.medrxiv.org host, which 500s on paths that
  api.biorxiv.org serves.
- Replaced the cross-platform fetch-tool table with a curl-first section
  that matches what allowed-tools actually grants.
- Removed stray tool-call markup from the end of SKILL.md.

Europe PMC (references/europepmc.md) closes a real gap: bioRxiv and
medRxiv have no keyword search of their own, and Europe PMC indexes both.
Its fullTextXML also 404s honestly where eFetch returns a bodyless 200.

scripts/ (standard library only) covers the logic that was being
re-derived per query, each exiting non-zero on a silent failure:
paginate.py (4 = unexplained shortfall), jats_to_text.py (2 = no <body>),
arxiv_atom.py (3 = error feed, 5 = throttled), openalex_abstract.py.
paginate.py redacts credentials from the provenance URLs it emits, since
OpenAlex and Crossref authenticate by query string.

tests/paper-lookup/ has 79 tests over fixtures captured from real
responses. arxiv_error.xml is reconstructed from a verified response
rather than saved from one, and says so -- arXiv penalizes repeated
malformed requests and stayed throttled.
2026-07-27 18:32:30 -07:00
Timothy Kassis
e7ac425107 Add community health files (#218)
Completes the three GitHub Community Standards items the repository was
missing: a Code of Conduct, issue templates, and a pull request template.

- CODE_OF_CONDUCT.md: Contributor Covenant 2.1, with contact@k-dense.ai as
  the enforcement contact and a pointer to SECURITY.md for vulnerabilities.
- .github/ISSUE_TEMPLATE/: three issue forms (bug report, new skill request,
  existing skill improvement) plus a config.yml that disables blank issues
  and routes security reports to private vulnerability reporting.
- .github/PULL_REQUEST_TEMPLATE.md: mirrors the Pull Request Checklist in
  CONTRIBUTING.md so contributors see the skill-format, validation, and
  safety requirements before submitting.
- CONTRIBUTING.md: link the Code of Conduct.
2026-07-27 17:10:04 -07:00
Timothy Kassis
752753bf72 Update README 2026-07-27 17:00:02 -07:00
Timothy Kassis
dbe942214d Add new skill for genomic data analysis
Introduces a skill for analyzing genomic data, including features for variant calling, mutation analysis, and lineage tracking. The implementation includes several command-line interfaces for querying genomic databases and generating reports. Updates documentation to reflect the new skill and its functionalities, ensuring users can effectively utilize the new features.
2026-07-27 16:54:06 -07:00
Timothy Kassis
07891681fb Add bulk RNA-seq diagram to documentation 2026-07-27 16:41:05 -07:00
Timothy Kassis
ce01a273b3 More diagrams for skills 2026-07-27 16:40:44 -07:00
Timothy Kassis
11c4e1e516 Add zarr image 2026-07-27 16:37:07 -07:00
Timothy Kassis
effadea79f Add skill images 2026-07-27 16:35:34 -07:00
Timothy Kassis
844f4a35cc Add analytical-method-validation skill
New skill for bench analytical scientists in regulated labs: planning,
evaluating, and documenting validation, verification, and transfer of
analytical procedures under whichever framework governs.

Frameworks. ICH Q2(R2) and Q14 and ICH M10 are encoded directly from their
openly licensed text, read from the adopted PDFs rather than from secondary
summaries. USP <1220>/<1225>/<1226>, the CLSI EP series, and ISO/IEC 17025 are
paywalled, so they are cited by designation and scope only and never
reproduced or reconstructed; edition numbers taken from listings rather than
the documents are marked for confirmation.

Q2(R2) content covers the restructured characteristics (range as the parent of
response and lower range limits), Table 1 tests by measured attribute, Table 2
reportable ranges, the recommended-data minima, and the 30 Nov 2023 error
correction. M10's chromatographic and ligand-binding-assay criteria are kept
strictly separate, including the LBA-only total-error limit and the differing
ISR tolerances.

Scripts. Six standard-library CLIs, no numpy and no network, computing the
statistics that decide fitness for purpose rather than the ones that look
reassuring:

- plan_validation.py         framework selection and a protocol whose
                             acceptance criteria must be pre-stated
- check_response.py          lack-of-fit F against pure error, residual runs
                             test, back-calculated error per level, and a
                             heteroscedasticity check for weighting
- check_accuracy_precision.py recovery with confidence intervals, and
                             precision decomposed per level into repeatability
                             and intermediate precision
- check_detection_limits.py  DL/QL by every approach Q2(R2) allows, compared
                             against the reporting threshold
- check_bioanalytical_run.py M10 run acceptance including the per-level QC rule
- compare_methods.py         Deming and Passing-Bablok regression plus TOST
                             equivalence against a pre-stated margin

Distributions are built from the regularised incomplete beta and gamma
functions and checked against published quantiles.

Scope. The skill reports and computes. It does not decide that a procedure is
validated, accept or reject a run, close an investigation, or replace the
analyst, technical reviewer, quality unit, or regulator.

Also adds 111 tests in tests/analytical-method-validation, a docs/skills.md
entry, examples.md Example 36b, and updates the README skill count to 156.
2026-07-27 16:34:28 -07:00
Timothy Kassis
e608baad6e Add pathogen-variant-surveillance skill
Query live pathogen genomic surveillance through the GenSpectrum LAPIS
API: which viral lineages are circulating now, how fast they are
growing, and what mutations they carry. Covers 15 instances spanning
SARS-CoV-2, influenza A (including H5N1 and the seasonal H3N2/H1N1pdm
clades), and the Pathoplexus organisms.

This is a class of question large models answer confidently and wrongly.
Lineage names post-date training; the nomenclature is a live data
structure rather than a convention (XFG only resolves through
alias_key.json); and 294 of the ~6,230 designated names have been
withdrawn or redesignated, so remembered facts are not merely stale.

Four standard-library CLIs, no API key:

  resolve_lineage.py     is this name still valid, what does it expand
                         to, what is it descended from
  lineage_prevalence.py  discover the top lineages in a window, then
                         weekly prevalence with Wilson intervals,
                         coverage flags, and a guarded growth fit
  mutation_profile.py    defining mutations, or a diff between two
                         lineages, for assay-match questions
  reporting_lag.py       measure how long sequences take to arrive and
                         derive a trust cutoff

Nothing hardcodes a field name. Schemas differ materially between
instances -- dateFrom is correct on SARS-CoV-2 and a hard 400 on H5N1 --
so every script reads /sample/databaseConfig and picks the collection,
submission, and lineage columns from what the instance declares.

The API traps documented in references/lapis-api.md were all verified
against the live services. The sharpest: a trailing '*' expands to
descendants only where the column carries a lineage index. pangoLineage=
XFG returns 4 and XFG* returns 640; on H5N1, clade=2.3.4.4b returns
62413 and clade=2.3.4.4b* returns 0. Silently wrong in both directions,
so lineage_filter() refuses to build the query that lies.

Two statistical guards, both prompted by wrong output during testing.
A lineage observed zero times in every week produced a confident
+0.105/week slope from the continuity correction alone as the
denominator shrank; growth fits now require real observations. And the
quasi-binomial dispersion is floored at 1, since an estimate below the
model's own scale reports an interval narrower than binomial sampling
allows.

117 tests, including live checks gated behind LAPIS_LIVE_TESTS=1 that
document the API behaviour the scripts were built against.
2026-07-27 15:40:33 -07:00
Timothy Kassis
5a9c275418 Anchor the scripts/ gitignore pattern to the repo root
An unanchored "scripts/" matches at any depth, including
skills/<name>/scripts/, so every new skill's bundled tooling was
silently untrackable. Existing skills were unaffected only because
their files were already tracked.

The entry sits under "Local agent tooling" alongside .claude/ and
.agents/, so root-only was the intent.
2026-07-27 15:40:05 -07:00
github-actions[bot]
81e316bc89 chore: update security scan report [skip ci] 2026-07-27 10:39:03 +00:00
Timothy Kassis
051f93f59f Update README, examples, and skills documentation to reflect the addition of new skills and version bump to 2.57.0. The README now highlights 154 skills, including the new Ontology Term Resolution and Genomic Coordinates skills, and provides updated examples for interdisciplinary workflows. The skills documentation has been expanded to include detailed descriptions of the new skills and their functionalities. 2026-07-26 18:14:01 -07:00
Timothy Kassis
6d22863f8d Replace iso-13485-certification with iso-standards-readiness
Fold the ISO 13485 skill into an umbrella standards-readiness skill so a
single skill covers several standards instead of one skill per standard
competing for selection on every compliance-adjacent prompt.

SKILL.md becomes a router: boundary, ISO/IEC copyright rules, current
baseline, assurance-lane discipline, the shared workflow, and the CLI
contract. Per-standard depth moves into references/.

Covers four standards in this version:

- ISO 13485 medical device QMS (certification lane)
- ISO 14971 device risk management (no lane of its own)
- ISO/IEC 17025 testing and calibration laboratories (accreditation)
- ISO 15189 medical laboratories (accreditation)

_catalog.py becomes a StandardProfile registry. Each profile carries its
own process domains, scope-activity vocabulary, and scope-item fields.
validate_scope_intake, validate_evidence_manifest, and gap_analyzer take
--standard; argparse choices refuse an unlisted value with exit 2 rather
than defaulting. audit_document_records, check_capa, and
check_supplier_controls were already standard-agnostic; check_traceability
and check_qmsr_transition stay device-specific.

New references/assurance-lanes.md exists because lane confusion, not
missing documents, causes most substantive errors in this work:
laboratories are accredited and not certified, ISO 15189 accreditation
does not satisfy CLIA, and ISO 14971 has no certificate at all.

The source ledger adds entries for ISO/IEC 17025, ISO 15189, ISO/TR
24971, the GLOBAC transition, ILAC P10/G8, and the CMS CLIA lane. ISO
catalogue metadata gathered on 2026-07-26 is marked [confirm on iso.org],
since iso.org refused automated access and those entries came from
secondary summaries.

Also adds laboratory and medical-laboratory scope-intake templates, both
fail-closed, and updates docs/skills.md and docs/examples.md so the
catalog links do not 404.

Verified: skills-ref validate passes for this skill and all others; 20
tests and 23 subtests pass directly and under run_all.py --isolated;
security scan clean (1 LOW, no HIGH+). The LOW finding is a pre-existing
unreachable assert in _common.py, verified rather than "fixed".
2026-07-26 16:26:52 -07:00
Timothy Kassis
f8eb840d11 Add From the Blog section to README
Link the 14 K-Dense blog posts most relevant to users of these skills,
grouped into getting started, skill benchmarks and deep dives, security
and safe deployment, and complementary open-source projects. Benchmark
entries cross-link to the corresponding skill directory.
2026-07-26 16:19:12 -07:00
Timothy Kassis
58746dc785 Add pytest as a dependency in pyproject.toml for improved testing support 2026-07-26 15:52:13 -07:00
Timothy Kassis
2598479c83 Bump version to 2.57.0 2026-07-26 15:51:53 -07:00
Timothy Kassis
ef1b2d8026 Update pi-agent skill to latest Pi docs
Refresh every reference against https://pi.dev/docs/latest and the four
ecosystem package pages, cross-checked with the published npm READMEs.

New reference pages (docs added them; the site nav does not surface them):
- environment-variables.md: PI_* process config, the PI_CODING_AGENT child
  marker, and the session variables injected into the bash tool. The old
  env-var list lived in usage.md, which no longer has that section.
- llama-cpp.md: llama.cpp router setup, /login llama.cpp, /llama.

Notable upstream drift now reflected:
- SDK: ModelRuntime.create() replaces AuthStorage + ModelRegistry;
  createAgentSessionServices/FromServices runtime factory; resolveCliModel
  and resolveModelScopeWithDiagnostics.
- Providers: full 30+ API-key table with env vars and auth.json keys;
  xAI/OpenRouter/Radius subscription logins; provider-scoped env blocks in
  credentials; models-store.json; Bedrock proxy variables.
- New thinking level "max" across settings, CLI, RPC, thinkingLevelMap, and
  the themes' thinkingMax token.
- New commands: /trust, /import, /llama; pi update --all/--models/--self;
  pi config; .pi/SYSTEM.md and APPEND_SYSTEM.md; trust.json.
- RPC: get_entries (with since cursor), get_tree,
  get_available_thinking_levels, agent_settled, bash_execution_update,
  summarization_retry_*, and the extension UI sub-protocol.
- Extensions: expanded from a summary to the real API surface, including
  session-replacement semantics and footguns, withFileMutationQueue,
  terminate, prepareArguments, and dynamic tool loading.
- Session format: retainedTail checkpoints and buildContextEntries().
- Packages: pi-web-access gained source_check and nine search providers and
  dropped code_search, which the old reference still documented;
  pi-mcp-adapter gained six config locations, lazy-keep-alive, the output
  guard, and MCP_STATUS_EVENT; pi-subagents gained the watchdog, profiles,
  modelScope, per-agent memory, the fleet inspector, and RPC v1.

Also fixes escape sequences that had been corrupted in earlier versions:
the Git Bash path in windows.md, the shellCommandPrefix JSON in
shell-aliases.md, and the CSI-u sequences in tmux.md and terminal-setup.md.

Bumps metadata.version to 1.2.
2026-07-26 15:50:24 -07:00
Timothy Kassis
3f530cf49e Update generate-image for the OpenRouter Image API
The skill called /api/v1/chat/completions with modalities: ["image","text"],
which reaches only 11 models. Both FLUX models the skill documented as options
are not among them, so those paths returned 404 "No endpoints found that
support the requested output modalities". Move to POST /api/v1/images, which
serves the full 38-model image catalogue.

- Parse data[].b64_json and media_type instead of
  choices[].message.images[].image_url.url; output extension now follows the
  returned media type, so vector models write .svg correctly.
- Send reference images as input_references; -i is repeatable for compositing.
- Add --n, --aspect-ratio, --resolution, --size, --quality, --output-format,
  --background, --output-compression, --seed, --timeout, --list-models.
- Omit unset parameters. Models reject unsupported parameters rather than
  ignoring them, so a fixed parameter set breaks most of the catalogue.
- Fix API key resolution: check_env_file() only read .env files, so the
  documented `export OPENROUTER_API_KEY=...` never worked. Order is now
  --api-key, environment, .env.
- Default to google/gemini-3.1-flash-image (GA) rather than the preview slug.
- Drop the requests dependency for stdlib urllib.

Add references/models.md with per-model parameter support, reference-image
limits, and n caps. Add tests/generate-image/ with 27 network-free tests.

Verified against the live API: default model at 16:9, flux.2-pro with --seed
and --output-format, and an -i edit all produce correct images; --list-models
returns 38 models without a key.
2026-07-26 15:48:58 -07:00
Timothy Kassis
ce67928122 Add genomic-coordinates skill
Covers the conventions that produce silent off-by-one and wrong-assembly
errors: 0-based half-open vs 1-based inclusive across BED/GFF/VCF/SAM and
friends, VCF indel anchoring and left-alignment, GRCh37 vs hg19 vs GRCh38
vs T2T, and genomic-to-transcript-to-CDS-to-protein positions.

Four standard-library scripts, no network:

- convert_coords.py    intervals between 21 conventions
- normalize_variant.py trim and left-align against a reference, compare
                       two representations for equivalence
- check_contigs.py     identify the assembly, report why two files
                       will not join
- audit_intervals.py   scan a BED/GTF/GFF3/VCF for convention violations

Build signatures are read from the UCSC chrom.sizes files and the NCBI
GRCh37.p13 assembly report; region-string semantics follow the samtools
manual, including that REF:START runs to the end of the contig and that
GRCh38 HLA contig names need htslib brace quoting.
2026-07-26 15:33:36 -07:00
Timothy Kassis
cca1e05ddf Add uncertainty-and-units skill under skills/uncertainty-and-units
Metrology skill covering units and measurement uncertainty, with six
standard-library-first CLIs that run offline:

- propagate_uncertainty.py: GUM framework and Monte Carlo on the same
  model, with the JCGM 101 clause 8 linearization check
- uncertainty_budget.py: components stated the way certificates state
  them, Welch-Satterthwaite effective dof, coverage factor from t
- format_result.py: round the uncertainty first, then the value to the
  same decimal place; plus-minus, concise, and ASCII forms
- convert_units.py: pint conversion including context-only relations,
  with the uncertainty carried through the local derivative
- audit_units.py: static scan for silent unit and uncertainty defects
  (UNIT001-004, UNC001-004, CONST001) with suppression directives
- check_plausibility.py: 14 dimensionless groups, 8 characteristic
  scales, and 22 cited magnitude bands, each dimensionality-checked
  before any number is reported

Measurement models are parsed to an AST and reduced by an explicit walk;
nothing is compiled or executed. Physical constants come from
scipy.constants at run time rather than from literals.

Tests in tests/uncertainty-and-units/ (85 cases) verify the metrology
against published values and assert every bundled script passes the
skill's own auditor with no findings.
2026-07-26 15:08:29 -07:00
Timothy Kassis
87b598a51a Add ontology-term-resolution skill
Resolve free-text scientific labels to ontology term IDs and validate
existing CURIEs against the EBI Ontology Lookup Service (OLS4). Covers the
concepts whose identifiers are routinely invented rather than looked up:
tissue, cell type, disease, phenotype, assay, chemical, organism, sex, and
developmental stage.

Two stdlib-only scripts, one per direction:

  resolve_terms.py   text -> ID, escalating exact -> token -> fulltext and
                     labelling every hit exact_label / exact_synonym /
                     partial, so a fuzzy guess cannot pass as a match
  validate_terms.py  ID -> verdict (not_found, obsolete + replacement,
                     label_mismatch, wrong_ontology, wrong_branch), exiting
                     non-zero so it works as a CI gate on a metadata file

Behaviour verified against the live service, and the reason the skill ships
scripts rather than a recipe:

- exact=true is exact *token* matching, not exact label: "liver" returns 161
  hits in UBERON, 1 once queryFields is restricted to label
- /search never returns is_obsolete or term_replaced_by, even when they are
  named in fieldList, so only term detail can answer whether an ID is current
- ontology=efo returns MONDO and CL hits, because ontologies import each other
- the obo_id index has holes: MONDO:0000001 is live and defined by MONDO but
  unindexed, so an IRI fallback is needed to avoid a false not_found
- IRIs are not all OBO PURLs; EFO and Orphanet use their own namespaces
- OxO is retired and serves HTML with HTTP 200
- a branch check does not exclude cell types from anatomy, since CARO places
  cell under anatomical structure

Tests: 59 in tests/ontology-term-resolution, 53 offline with stubbed network
plus 6 live smoke tests gated behind OLS_LIVE_TESTS=1 that pin the API
behaviour above.
2026-07-26 14:45:44 -07:00
Timothy Kassis
3036316a8a Update version numberl to 2.56.0 2026-07-26 13:59:44 -07:00
Timothy Kassis
b80fcda721 Enhance skill environment management and documentation
- Updated AGENTS.md and CONTRIBUTING.md to clarify the use of isolated environments for each skill, addressing dependency conflicts and ensuring proper testing setups.
- Modified tests/run_all.py to implement the `--isolated` flag, allowing for the creation of throwaway environments per skill based on `tests/skill-requirements.toml`.
- Improved handling of unavailable packages and added detailed instructions for contributors on managing skill dependencies.
2026-07-26 13:58:18 -07:00
Timothy Kassis
cd879d8052 Enhance security scanning documentation and update dependencies
- Updated AGENTS.md to clarify the use of the Cisco AI Defense Skill Scanner for security scanning of new or changed skills, including details on rule IDs and CLI usage.
- Adjusted pyproject.toml to pin the cisco-ai-skill-scanner dependency to version 2.0.12, ensuring the latest features and fixes are utilized.
2026-07-26 10:15:02 -07:00
Alex Liberzon
dde19062f3 Add OpenPIV skill under skills/openpiv (#216)
* add OpenPIV skill under skills/openpiv

* Fix spec violations and unverified APIs in the OpenPIV skill

Verified everything against openpiv 0.25.4 in a clean venv; all 14 SKILL.md
snippets and both reference snippets now execute, and runner.py/run_example.py
run end to end on OpenPIV's bundled test1 pair.

Spec adherence:
- metadata was a JSON flow mapping, which strictyaml rejects outright -- the
  skill failed `skills-ref validate` and would not have registered at all.
  Converted to a block mapping.
- compatibility claimed Python 3.8+; openpiv 0.25.4 requires >=3.10.
- Added allowed-tools and a version-pinned install line.

APIs that do not exist and now do:
- `openpiv.masking` -> `openpiv.preprocess.dynamic_masking`, which returns
  (image, mask). method="shirai" is not a method; it is "edges" or "intensity".
  The masked image is returned already zeroed, so multiplying the frame by the
  mask is wrong -- for "edges" the mask is uint8 0/255 and rescales by 255.
- `pyprocess.iterative_warping_piv` -> `openpiv.windef.simple_multipass`.
- `openpiv.smooth.smooth` -> `openpiv.smoothn.smoothn`.
- `global_val(u, v, u_threshold=, v_threshold=)` -> positional (min, max) tuples
  as u_thresholds/v_thresholds.
- `local_median_val(u, v)` -> u_threshold and v_threshold are required.
- `replace_outliers(method="disc")` -> "disk"; an unknown method is not
  rejected, it silently yields an all-zero kernel.
- Combining flags with np.maximum -> boolean OR; validators return bool arrays
  where True marks a spurious vector.

references/advanced_algorithms.md described algorithms that do not exist in
OpenPIV ("epi-div_div", "pritzmd_piv", EDD, PrTrZMD) alongside invented
throughput and memory figures. Replaced with the real correlation, subpixel,
s2n, multi-pass, 3D, and phase-separation APIs plus the full PIVSettings table.

Two units traps found while testing and now documented:
- windef ignores settings.dt and settings.scaling_factor -- first_pass calls
  extended_search_area_piv without dt, so the chain returns px/frame.
- global_val/local_median_val thresholds are in the units of u and v. After
  extended_search_area_piv(dt=0.02) that is px/s, so the conventional (-30, 30)
  px/frame limit rejects the entire field.

Scripts:
- runner.py: dropped --algorithm and --threads, which were accepted and never
  used (--algorithm even offered a nonexistent "synthetic_aperture"), and
  --mask static, which nothing implemented. --mask dynamic silently did nothing
  because it caught the ImportError from the nonexistent module. Selects
  correlation_method="linear" when search_area > window_size, since the default
  "circular" aliases via FFT wrap-around. Validates argument ranges, pins the
  Agg backend before pyplot, and no longer NaNs out the vectors it just
  interpolated -- that is now opt-in via --drop_invalid.
- analyze.py: class was named PypivAnalyzer and documented as "using pivpy"
  while importing neither. Renamed to PIVAnalyzer, added compute_strain and
  compute_statistics to match what SKILL.md advertises, and derived the physical
  grid spacing from the saved coordinates so the gradients are per unit length.
- run_example.py: was a subprocess wrapper around a hardcoded relative path.
  Rewritten as a self-contained smoke test on OpenPIV's bundled image pair.

Security scan: SAFE, 0 findings.

---------

Co-authored-by: Timothy Kassis <timothy.kassis@k-dense.ai>
2026-07-26 10:08:21 -07:00
Timothy Kassis
2f2022de18 Update documentation and improve test structure for autoskill
- Enhanced AGENTS.md to clarify skill scope and directory structure, providing clearer guidelines for skill creation and updates.
- Updated CONTRIBUTING.md to emphasize the separation of tests from skill directories, ensuring better organization and clarity for contributors.
- Revised .gitignore to include .pytest_cache, improving project cleanliness.
- Adjusted pyproject.toml to configure pytest for better test path management.
- Incremented version number in SKILL.md for autoskill to reflect recent updates.
2026-07-26 09:54:14 -07:00
Timothy Kassis
8cb0f52a35 Add initial test suite for autoskill functionality
- Introduced a comprehensive test suite for the autoskill project, including tests for backends, CLI commands, and various skill functionalities.
- Added smoke tests for LM Studio integration to validate real-time interactions.
- Implemented tests for session clustering and event fetching to ensure accurate data handling.
- Established a framework for skill description loading and matching, enhancing the robustness of skill management.
- Included redaction tests to verify sensitive information is properly handled in outputs.
- Created end-to-end tests to simulate the full autoskill pipeline, ensuring all components work together seamlessly.
2026-07-26 09:54:05 -07:00
Timothy Kassis
b085e116c5 Update skill metadata formatting and improve .gitignore entries
- Revised the metadata format in multiple SKILL.md files to use block mapping instead of single-line JSON, enhancing YAML compatibility.
- Added a new entry for local agent tooling in .gitignore to exclude the .claude directory, improving project cleanliness.
- Removed outdated entries for AGENTS.md and CLAUDE.md from .gitignore, streamlining ignored files.
2026-07-26 09:29:16 -07:00
Timothy Kassis
cb83780242 Update security report and enhance subprocess environment handling
- Generated a new security scan report with detailed findings, including 888 total findings and 33 critical issues.
- Revised the `soffice.py` scripts across multiple skills to implement a secure environment variable forwarding mechanism, minimizing the risk of exposing sensitive information to subprocesses.
- Enhanced documentation in `SKILL.md` and related files to clarify the implications of using `trust_remote_code=True` and the importance of user consent when executing code from external repositories.
- Improved the command submission process in `run_pacsomatic.py` to ensure safer execution of scripts across different executors.
2026-07-26 08:48:30 -07:00
Timothy Kassis
489de4ce4c Update security documentation and scanning process
- Clarified the security scan report generation process in README.md, emphasizing the publication of results.
- Revised `scan_skills.py` documentation to reflect changes in report generation and the removal of the validate_report.py script.
- Updated SECURITY.md to specify the scope of vulnerabilities and improved clarity on the report's purpose and limitations.
- Adjusted the security scan workflow to remove the validation step, streamlining the process while ensuring accurate reporting.
2026-07-26 08:16:14 -07:00
Timothy Kassis
b01cff4cda Remove validate_report.py script as it is no longer needed for the security scan process. This change simplifies the codebase and eliminates redundancy in validation checks, streamlining the overall workflow. 2026-07-26 08:16:07 -07:00
Timothy Kassis
a1b84fb223 feat(docx): enhance DOCX skill and comment script functionality
- Updated the skill description to include support for Word templates (.dotx) alongside .docx files, broadening the skill's applicability.
- Improved the comment script to accept both unpacked directories and .docx/.dotx files directly, streamlining the user experience.
- Added automatic comment ID assignment and XML escaping for comment text, enhancing robustness and usability.
- Removed the obsolete pack.py and unpack.py scripts, consolidating functionality into existing scripts for better maintainability.
- Enhanced validation and error handling in the validate.py script, ensuring better feedback for users.
2026-07-25 20:37:05 -07:00
Timothy Kassis
f5a0bbcf6c feat(citation-management): enhance metadata handling and subprocess environment
- Added guidance on treating metadata as untrusted in SKILL.md, emphasizing safe command construction.
- Updated extract_metadata.py to sanitize the year field, ensuring only digits are retained for filenames and shell arguments.
- Introduced a build_subprocess_env function in multiple scripts to securely forward necessary environment variables to subprocesses, minimizing exposure of unrelated secrets.
- Improved documentation on where credentials are sent in SKILL.md, clarifying the purpose of each environment variable used.
2026-07-25 20:19:57 -07:00
Timothy Kassis
665663cac1 perf(security-scan): scan concurrently and reuse unchanged results
Scans were sequential at ~29s per skill: 72 minutes for 150 skills against a
120-minute workflow timeout. Each scan is blocked on LLM network I/O rather
than local CPU, so the work parallelizes.

- Run skills through a thread pool (SKILL_SCAN_WORKERS, default 8), building
  one scanner per worker thread rather than sharing one, since the analyzers
  carry mutable per-scan state. Rate-limit retry with backoff already exists
  inside cisco-ai-skill-scanner, so concurrency is bounded, not retried here.
- Reuse findings for skills whose package contents are unchanged, keyed on a
  SHA-256 over file paths and bytes. Invalidate on scanner version change,
  model change, --full, or a 30-day backstop from the last full scan.
- Record per-skill content_hash and last_scanned in the JSON report, and
  disclose carried-forward findings in the markdown header, so a reused
  finding always shows when it was actually produced.
- Sort report entries by skill name so worker completion order does not churn
  the committed JSON.
- Lower the workflow timeout to 60 minutes; add a full_scan dispatch input.

Also fixes skills/genomic-intelligence/SKILL.md, whose unquoted description
contained a colon-space that made its YAML frontmatter invalid. The loader had
been rejecting it silently, so every scan covered 149 of 150 skills.
2026-07-25 15:11:47 -07:00
Timothy Kassis
d77f819637 Update security scanning process and documentation
- Enhanced the README to clarify the publication of security scan results to a dedicated markdown file.
- Modified `scan_skills.py` to generate both a human-readable report and a machine-readable JSON report, ensuring consistency checks before CI publishing.
- Updated the GitHub Actions workflow to validate the scan report and commit the new reports, replacing the previous SECURITY.md approach with separate report files.

This change improves the clarity and accessibility of security information for users and contributors.
2026-07-25 14:55:40 -07:00
Timothy Kassis
bf383691e2 Merge pull request #215 from K-Dense-AI/feat/citation-management-zotero
feat(citation-management): document Zotero integration via pyzotero skill
2026-07-25 14:26:19 -07:00
Timothy Kassis
38ce7e260c feat(citation-management): document Zotero integration via pyzotero skill
citation-management had no mention of Zotero despite a full pyzotero
skill existing in the repo, so agents had no path from a Zotero library
to a validated bibliography.

Adds an 'Integration with Zotero (pyzotero Skill)' section mirroring the
existing literature-review integration: pyzotero owns the library and the
BibTeX export, citation-management validates and formats, corrections
optionally written back.

Requested in #170.

Co-authored-by: Yaroslav Halchenko <debian@onerussian.com>
2026-07-25 14:25:58 -07:00
Timothy Kassis
f3dda7d525 Merge pull request #214 from K-Dense-AI/fix/idc-typo
fix(imaging-data-commons): correct 'questons' typo
2026-07-25 13:52:58 -07:00
Timothy Kassis
23f85110a7 fix(imaging-data-commons): correct 'questons' typo
Found by the codespell config proposed in #123. The codespell CI check
itself was declined (52 hits on a clean checkout, only this one genuine),
but the typo it surfaced is real.

Co-authored-by: Yaroslav Halchenko <debian@onerussian.com>
2026-07-25 13:52:39 -07:00
Timothy Kassis
edefe50783 Update default LLM model in security scan workflow to "claude-sonnet-5" 2026-07-25 13:46:10 -07:00
Timothy Kassis
37f2064f89 Update default LLM model in SkillScanner to "anthropic/claude-sonnet-5" 2026-07-25 13:45:50 -07:00
Timothy Kassis
e3ef98a1be Merge pull request #213 from K-Dense-AI/fix/rdkit-api-corrections
fix(rdkit): correct FractionCsp3 call and MolToSmarts parameter name
2026-07-25 13:43:41 -07:00
Timothy Kassis
94151f68f6 fix(rdkit): correct FractionCsp3 call and MolToSmarts parameter name
Descriptors.FractionCsp3 does not exist in RDKit (verified against
2026.03.3) and raised AttributeError, causing molecular_properties.py
to fail for every input molecule. Use Lipinski.FractionCSP3, which is
already imported.

Also correct the MolToSmarts keyword in the API reference: the real
parameter is isomericSmiles, not isomericSmarts.

Both changes originate from PRs #97 and #95, which could not be merged
directly because they target the pre-rename scientific-skills/ path.

Co-authored-by: jiaodu1307 <1148451736@qq.com>
2026-07-25 13:39:16 -07:00
Timothy Kassis
fdee3698c2 Merge pull request #210 from not-stbenjam/fix/markdown-mermaid-writing-broken-links
fix(markdown-mermaid-writing): fix broken links in references
2026-07-25 13:36:41 -07:00
Timothy Kassis
757b63b1c0 Correct README release details
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-24 11:01:57 -07:00
Timothy Kassis
bb87fa13e8 Bump version to 2.55.0
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-24 10:58:47 -07:00
Timothy Kassis
9319f43f9c Synchronize repository documentation
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-24 10:57:01 -07:00
Timothy Kassis
96e7a495c1 Merge remote-tracking branch 'origin/main' 2026-07-24 10:25:58 -07:00
Timothy Kassis
d2d8e87cf9 Clean refreshed skill formatting
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-24 10:20:26 -07:00
Timothy Kassis
3441b926ed Redesign scientific writing safeguards
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-24 10:16:23 -07:00
Timothy Kassis
caf3a2fd5b Merge pull request #212 from genomicintelligence/add-genomic-intelligence
Add genomic-intelligence skill
2026-07-24 09:59:56 -07:00
Timothy Kassis
866c1dfba9 Redesign PPTX poster generation
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-24 09:48:06 -07:00
Timothy Kassis
d518a317af Update MATLAB R2026a workflows
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-24 01:49:38 -07:00
Timothy Kassis
f375cf76b1 Redesign hypothesis generation workflow
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-24 01:18:07 -07:00
Timothy Kassis
5d68dbf89c Update ISO 13485 evidence workflows
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-24 00:43:06 -07:00
Timothy Kassis
b295e73b0b Redesign scholar evaluation safeguards
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-24 00:11:19 -07:00
Timothy Kassis
818cb877c7 Redesign treatment plan safety
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 23:39:58 -07:00
Timothy Kassis
8fc3325930 Redesign peer review confidentiality
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 23:15:07 -07:00
Timothy Kassis
ebc0ccea0e Update market research evidence workflows
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 22:46:30 -07:00
Timothy Kassis
cc223d5ef1 Redesign clinical reports safety
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 22:21:28 -07:00
Timothy Kassis
820bcb8ee3 Redesign clinical decision support safety
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 21:49:14 -07:00
Timothy Kassis
f7b918d694 Update QuTiP skill for version 5.3
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 21:16:49 -07:00
Timothy Kassis
10781b230d Update GeoPandas spatial workflows
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 20:52:07 -07:00
Timothy Kassis
0ece03a0c1 Update pymatgen for current packages
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 20:18:48 -07:00
Timothy Kassis
5c3389ef4a Update pydicom privacy workflows
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 19:41:24 -07:00
Timothy Kassis
ee24204705 Update FluidSim numerical workflows
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 19:08:10 -07:00
Timothy Kassis
cadf380493 Update exploratory data analysis workflows
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 18:40:33 -07:00
Timothy Kassis
025a3a627c Update Gtars skill for current APIs
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 18:09:02 -07:00
Timothy Kassis
dd952bd124 Update Geniml skill for current APIs
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 17:41:28 -07:00
Alexander Boldakov
aa04310650 Correct MCP tool signatures against the live server
fetch_ensembl_sequence takes gene (fetch_region handles coordinates),
load_demo_sequence requires name, and find_genes /
find_genes_and_predict_expression take a sequence handle rather than a region.
The annotation task is find_genes; there is no predict_annotation and no
load_local_fasta on the hosted server. Also drop dangling references/errors.md
pointers, add the 422 validation_failed case, and state the 9,198 bp window
consistently.
2026-07-24 00:35:24 +00:00
Timothy Kassis
f515922468 Update PufferLib versioned workflows
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 17:10:07 -07:00
Timothy Kassis
27ea7f4d63 Update HypoGeniC safety workflows
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 16:46:04 -07:00
Alexander Boldakov
8f4fb7ae0f Add genomic-intelligence skill
Wrap Genomic Intelligence's hosted DNA-sequence models (promoter, splice,
enhancer, chromatin, expression, annotation, plus a find-genes-then-expression
composite) over the REST /v1 API and the keyless hosted MCP server. SKILL.md +
references only; no vendored client, mirroring the tamarind skill. GI_API_KEY is
optional (keyless MCP demo).
2026-07-23 23:22:37 +00:00
Timothy Kassis
34d4cd5d5d Update protocols.io integration guidance
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 16:20:26 -07:00
Timothy Kassis
70a0d595e5 Update PyLabRobot safety workflows
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 15:45:40 -07:00
Timothy Kassis
ddcd380f51 Update NeuroKit2 skill for current APIs
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 15:26:28 -07:00
Timothy Kassis
191e153a29 Update PathML skill for current workflows
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 14:45:22 -07:00
Timothy Kassis
65f46984c5 Update SimPy skill for current semantics
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 14:15:30 -07:00
Timothy Kassis
5a62c8a075 Update scikit-survival for current APIs
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 13:49:08 -07:00
Timothy Kassis
d80ca055ef Update resource detection workflows
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 13:22:42 -07:00
Timothy Kassis
38cd20421c Update scientific visualization guidance
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 12:50:37 -07:00
Timothy Kassis
fd9917e7ff Update scientific brainstorming workflows
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 12:16:50 -07:00
Timothy Kassis
825f800240 Update PyTDC skill for current APIs
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 11:54:00 -07:00
Timothy Kassis
90e825e534 Update OMERO skill for current clients
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 11:23:48 -07:00
Timothy Kassis
ee5477e6d2 Update LabArchives skill for current APIs
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 11:02:05 -07:00
Timothy Kassis
71917747a4 DNANexus improvements 2026-07-23 10:53:35 -07:00
Timothy Kassis
53c58974f3 Update DNAnexus, ETE, FlowIO, LatchBio, MarkItDown, MatchMS, Opentrons, pysam, Qiskit, and SHAP skills
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 10:43:55 -07:00
Timothy Kassis
831d49eb77 Update skills and documentation: Change AI models from Gemini 3.1 Pro to Gemini 3.6 Flash for improved quality review across various skills, including Generate Image, Infographics, and Clinical Decision Support. Bump version numbers in SKILL.md files to reflect updates. 2026-07-21 09:32:26 -07:00
Timothy Kassis
e8727695e3 Bump version 2026-07-20 12:09:15 -07:00
Timothy Kassis
3b6f0e48b4 Update Torchdrug and venue-templates skills 2026-07-20 12:07:48 -07:00
github-actions[bot]
a177179f77 chore: update security scan report [skip ci] 2026-07-20 11:20:27 +00:00
Timothy Kassis
3f825caafe Update README.md: Enhance star history chart with responsive design for dark and light themes, and clarify project name change to Scientific Agent Skills. 2026-07-15 10:44:14 -07:00
Timothy Kassis
fc0b9f6924 Enhance Research Lookup Skill: Update documentation and improve backend routing for manuscript evidence compilation. The skill now targets 60 verified references, producing structured research packets. Adjusted descriptions in README and SKILL.md for clarity, and removed outdated test file. 2026-07-13 17:25:07 -07:00
Timothy Kassis
cd77d3f301 Delete redundant files 2026-07-13 15:24:41 -07:00
Timothy Kassis
04330336f8 Update parallel-web skill 2026-07-13 15:23:40 -07:00
Timothy Kassis
708d419d71 Merge pull request #209 from dnaerys/onekgpd-update
feat(skills): update onekgpd to v1.2
2026-07-13 09:48:35 -07:00
Timothy Kassis
dbd9d0dd4d Merge pull request #155 from Bortlesboat/codex/add-research-grants-references
docs: add missing research grants references
2026-07-13 09:47:50 -07:00
github-actions[bot]
e12d683099 chore: update security scan report [skip ci] 2026-07-13 11:21:47 +00:00
Dmitry Degrave
aa716d029d feat(skills): onekgpd v1.2: retargets the Dnaerys Client v0.2.1 required for Python 3.11 support 2026-07-11 02:22:21 +10:00
Stephen Benjamin
0f5891abf1 fix(markdown-mermaid-writing): correct broken internal references in style guides
The references/ directory linked to nonexistent mermaid_diagrams/ and
markdown_templates/ prefixes. Updated to the actual paths: diagrams/
for diagram type files and ../templates/ for document templates.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-07-07 14:59:02 -04:00
Dmitry Degrave
1e2f2dcca8 feat(skills): onekgpd v1.1: retargets the Dnaerys Client v0.2.0 required for the latest KGP live database 2026-07-08 02:14:50 +10:00
github-actions[bot]
4d97e293dc chore: update security scan report [skip ci] 2026-07-06 11:52:49 +00:00
Timothy Kassis
26fd7a8451 Update optimize-for-gpu and paper-lookup skills 2026-07-04 09:57:50 -07:00
Timothy Kassis
afa84b445e Update research-lookup and statistical-analysis skills 2026-07-04 09:39:23 -07:00
Timothy Kassis
1e024ea854 Enhance database lookup skill documentation and API interaction. Updated descriptions for clarity, improved retrieval contract guidelines, and added new API version checks for ClinicalTrials.gov. Adjusted AlphaFold references to reflect current file URLs and versioning. Incremented skill version to 1.2. 2026-07-01 13:51:02 -07:00
Timothy Kassis
0807ddbc5c Merge pull request #203 from dnaerys/onekgpd
feat(skills): add onekgpd skill: individual-level queries over the 1000 Genomes variant dataset
2026-06-29 10:45:05 -07:00
Timothy Kassis
50a46b2d21 Update README and documentation to reflect the addition of 2 new skills, increasing the total to 148. Updated version badge to 2.53.0 and made minor adjustments for clarity in the skills documentation. 2026-06-29 13:07:32 -04:00
Dmitry Degrave
26d70866dc feat(skills): onekgpd 2026-06-30 02:58:19 +10:00
Timothy Kassis
75b944c189 Merge pull request #199 from Tamarind-Bio/add-tamarind-skill
Add Tamarind Bio platform skill
2026-06-29 07:53:28 -07:00
github-actions[bot]
e083e63e3f chore: update security scan report [skip ci] 2026-06-29 11:58:02 +00:00
Sherry Liu
1cb3b1a492 Add Tamarind Bio platform skill
Platform-integration skill for running protein and small-molecule modeling
jobs on Tamarind Bio (app.tamarind.bio) via its public REST API or MCP server.
References-only design: it points at Tamarind's live sources (llms.txt,
openapi.yaml, docs.tamarind.bio, and live MCP discovery via listModalities /
listTags / getAvailableTools / getJobSchema) rather than bundling a parallel
client that drifts.

Files:
- SKILL.md: overview, auth, MCP and REST surfaces, the discover / schema /
  validate / submit / poll / results loop, tool-choice guidance, batch
  aggregation, status lifecycle, and error table.
- references/api_reference.md, tool_catalog.md, workflows.md, examples.md.

Examples validated against the live API.

Co-Authored-By: Azam Hussain <azam@tamarind.bio>
2026-06-24 14:42:08 -04:00
Timothy Kassis
9c9bd2e92a Update Ginkgo Cloud Lab skill 2026-06-23 19:48:32 -04:00
github-actions[bot]
ddd2f7f2a5 chore: update security scan report [skip ci] 2026-06-22 12:17:54 +00:00
Timothy Kassis
209390194c Enhance database lookup skill with deterministic querying and provenance features. Updated documentation to reflect improved API interaction, including retrieval contracts, pagination handling, and untrusted response management. Adjusted README and skills documentation for clarity on database access and usage. 2026-06-15 16:48:10 -07:00
github-actions[bot]
e6cabc216b chore: update security scan report [skip ci] 2026-06-15 12:29:00 +00:00
Timothy Kassis
2b4cce7d87 Update transformers skill metadata and dependencies; remove uv.lock file 2026-06-13 07:30:28 -07:00
Timothy Kassis
9c12fcc25e Add arbor skill 2026-06-12 13:52:59 -07:00
Timothy Kassis
7dae63e834 Update version to 2.51.0 in pyproject.toml 2026-06-12 07:17:57 -07:00
Timothy Kassis
cb5a7c8d5f Update Scanpy skill 2026-06-12 07:17:30 -07:00
Timothy Kassis
b8fea8f1a2 Update PyOpenMS skill 2026-06-12 07:04:22 -07:00
Timothy Kassis
dab7aa6729 Update examples 2026-06-11 15:28:42 -07:00
Timothy Kassis
fdf52effe2 Update version to 2.50.0 and increment skill count to 146
Bumped the project version in pyproject.toml to 2.50.0. Updated README and documentation to reflect the addition of new skills, increasing the total to 146. Adjusted version and skills badges for accuracy.
2026-06-11 15:16:28 -07:00
Timothy Kassis
614067ac57 Update documentation to include NVIDIA NemoClaw and Pi in Agent Skills installation instructions
Enhanced the README and CONTRIBUTING files to reflect the inclusion of NVIDIA NemoClaw and Pi as supported platforms for installing Agent Skills. Updated metadata parsing details to ensure clarity on single-line JSON format compatibility across all mentioned hosts.
2026-06-11 14:50:37 -07:00
Timothy Kassis
c1150bd71f Enhance skills metadata with required environment variables
Updated multiple skills to include a new `required_environment_variables` field, specifying necessary credentials for improved integration and user guidance. Each skill now clearly outlines required and optional environment variables, enhancing setup and usage clarity. Skills affected include autoskill, benchling-integration, biopython, bioservices, citation-management, clinical-decision-support, clinical-reports, dnanexus-integration, exa-search, hypothesis-generation, infographics, latex-posters, literature-review, markitdown, modal, neuropixels-analysis, omero-integration, open-notebook, parallel-web, peer-review, pptx-posters, pymatgen, pyzotero, research-lookup, rowan, scholar-evaluation, scientific-schematics, and scientific-slides.
2026-06-11 14:42:54 -07:00
Timothy Kassis
fe3f7151cc Enhance skills metadata with OpenClaw environment variables
Updated multiple skills to include OpenClaw environment variables for improved integration and functionality. Each skill now specifies required and optional environment variables, enhancing user guidance for setup and usage. Skills affected include Benchling Integration, Biopython, BioServices, Citation Management, Clinical Decision Support, Clinical Reports, DNAnexus Integration, Hypothesis Generation, Infographics, LaTeX Posters, Literature Review, MarkItDown, OMERO Integration, Open Notebook, Peer Review, PPTX Posters, Pymatgen, PyZotero, Scholar Evaluation, Scientific Schematics, Scientific Slides, Scientific Writing, Treatment Plans, and Venue Templates.
2026-06-11 14:28:01 -07:00
Timothy Kassis
1b8fae3284 Support OpenClaw 2026-06-11 14:23:54 -07:00
Vinayak Agarwal
0f1c54dfe5 Sync citation-management skill with claude-scientific-writer updates (#188)
* Sync citation-management skill with claude-scientific-writer updates

Port the citation management and verification enhancements from the
claude-scientific-writer repo (commits 4bede21 and 93dff38):

- Add Phase 2.5: Metadata Enrichment via Web Search — mandatory scan
  for incomplete BibTeX entries (missing volume, pages, DOI) with web
  search strategies to fill gaps before formatting. Commands adapted
  to this repo's parallel-cli convention.
- Add venue-based citation count standards (Nature/Science 35-50+,
  ML/CS conferences 30-45+, literature reviews 40-65+, medical
  journals 30-45+) and diverse-referencing guidance.
- Add mandatory post-writing reference checks: no unresolved
  citations, no unused bibliography entries, venue-level citation
  counts, complete metadata.
- Upgrade validate_citations.py with --venue, --min-count, and
  --manuscript flags: enforces venue citation standards and
  cross-checks manuscript citations (Markdown/LaTeX) against the
  BibTeX file to detect unresolved or unused references.
- Expand citation_validation.md Issue 3 with mandatory web search
  workflow for incomplete metadata.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Add venue-templates cross-references to literature-review and peer-review

Port the venue-templates skill cross-references from
claude-scientific-writer: literature-review gains a Venue-Specific
Writing Styles section pointing at the style guides, and peer-review
gains a pointer to reviewer_expectations.md for calibrating review
standards to the target venue. The venue-templates skill and all
referenced files already exist in this repo.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Bump metadata.version to 1.1 for updated skills

Per CONTRIBUTING.md, increment metadata.version in the same PR that
updates a skill. All three skills pass the Agent Skills reference
validator (agentskills validate).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-06-11 10:06:04 -07:00
Timothy Kassis
c8c5f9dc56 Update version to 2.48.0 in pyproject.toml and uv.lock; enhance NetworkX skill documentation to reflect changes in API and deprecated features for compatibility with NetworkX 3.x. 2026-06-10 17:02:07 -07:00
Timothy Kassis
0481567238 Update astropy skill documentation and version; enhance compatibility notes and clarify deprecated features in preparation for Astropy 8.0. Bump astropy version to 1.2 and update dependencies in uv.lock. 2026-06-10 16:58:47 -07:00
Timothy Kassis
d995f2ac25 Update pi-agent skill 2026-06-10 14:43:26 -07:00
Timothy Kassis
3b73388d4d Update README and documentation to reflect the addition of new skills, increasing the total to 144. Adjust badge counts and enhance descriptions for clarity and accuracy. 2026-06-09 09:06:18 -07:00
Timothy Kassis
fc4419f809 Add support for Pi 2026-06-09 09:02:06 -07:00
github-actions[bot]
9881fe4690 chore: update security scan report [skip ci] 2026-06-08 11:52:58 +00:00
github-actions[bot]
4457f17a29 chore: update security scan report [skip ci] 2026-06-07 23:47:36 +00:00
Timothy Kassis
758bad1185 Enhance documentation for cellxgene-census and deepTools skills. Update cellxgene-census to version 1.1, expanding description, compatibility notes, and data structure details for single-cell and spatial transcriptomics. Revise deepTools to version 1.1, improving installation instructions, normalization methods, and adding new features for effective genome size and scaling. Update quick reference and workflow scripts for better usability and clarity. 2026-06-07 15:21:00 -07:00
Timothy Kassis
b24a631e44 Update anndata skill documentation to version 1.1, enhancing compatibility notes and installation instructions. Introduce experimental APIs for lazy loading and concatenation, and clarify usage of deprecated methods. Update best practices for I/O operations and metadata handling. 2026-06-07 14:59:51 -07:00
Timothy Kassis
b2a969eb56 Update LaminDB, Pennylane and Neuropixles skills 2026-06-04 14:56:48 -04:00
Timothy Kassis
40103c9618 Update scanpy skill documentation to include support for R-native single-cell formats. Bump version to 1.2 and enhance conversion instructions for Seurat and SingleCellExperiment files to .h5ad. Add references for R interoperability and clarify usage scenarios. 2026-06-04 13:36:17 -04:00
github-actions[bot]
93124850ef chore: update security scan report [skip ci] 2026-06-01 12:04:34 +00:00
Timothy Kassis
effb57c569 Update scvi-tools 2026-05-28 15:52:12 -07:00
Timothy Kassis
450905e71c Update scikit-bio 2026-05-28 15:23:02 -07:00
Timothy Kassis
f401d0e1f7 Update Modal skill 2026-05-28 15:22:47 -07:00
Timothy Kassis
01c6a9e8ed Add bulk-rnaseq workflow skill 2026-05-28 14:56:21 -07:00
Timothy Kassis
a3fafab537 Add pathway-enrichment skill 2026-05-28 14:23:56 -07:00
Bortlesboat
b82768fd53 add missing research grants references 2026-05-05 13:42:59 -04:00
1977 changed files with 409250 additions and 185303 deletions

95
.github/ISSUE_TEMPLATE/bug_report.yml vendored Normal file
View File

@@ -0,0 +1,95 @@
name: Bug report
description: A skill or repository tool behaves incorrectly — wrong output, broken script, failing install, or instructions an agent cannot follow.
title: "[Bug]: "
labels: ["bug", "needs-triage"]
body:
- type: markdown
attributes:
value: |
Thanks for reporting this. Please do **not** use this form for security
vulnerabilities — use [private vulnerability reporting](https://github.com/K-Dense-AI/scientific-agent-skills/security/advisories/new)
instead, as described in [SECURITY.md](https://github.com/K-Dense-AI/scientific-agent-skills/blob/main/SECURITY.md).
- type: dropdown
id: area
attributes:
label: Area
description: Which part of the repository is affected?
options:
- A skill under skills/
- Repository tooling (scan_skills.py, tests, CI workflows)
- Documentation (README, CONTRIBUTING, AGENTS)
- Not sure
validations:
required: true
- type: input
id: skill
attributes:
label: Skill name
description: The skill directory name, exactly as it appears under `skills/`. Leave blank if this is not skill-specific.
placeholder: scanpy
validations:
required: false
- type: textarea
id: what-happened
attributes:
label: What happened
description: What did the skill or tool actually do?
placeholder: The skill's example call to sc.pp.neighbors() fails with a TypeError.
validations:
required: true
- type: textarea
id: expected
attributes:
label: What you expected instead
validations:
required: true
- type: textarea
id: reproduce
attributes:
label: Steps to reproduce
description: The smallest sequence that triggers it. Include the prompt you gave the agent, if relevant.
placeholder: |
1. Load the `scanpy` skill in Claude Code
2. Ask: "cluster my AnnData object"
3. Run the code the agent produces
4. See the error below
validations:
required: true
- type: textarea
id: logs
attributes:
label: Error output
description: Paste the traceback or scanner output. This is rendered as a code block, so no backticks are needed.
render: shell
validations:
required: false
- type: textarea
id: environment
attributes:
label: Environment
description: Skill behavior varies by agent host and model, so please tell us where you saw this.
value: |
- Agent host (Claude Code, Cursor, Codex, other):
- Model:
- Repository version or commit:
- Python version:
- Operating system:
validations:
required: true
- type: checkboxes
id: checks
attributes:
label: Before submitting
options:
- label: I searched existing issues and this is not a duplicate.
required: true
- label: This is not a security vulnerability. (Those go through private reporting.)
required: true

14
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@@ -0,0 +1,14 @@
blank_issues_enabled: false
contact_links:
- name: Report a security vulnerability
url: https://github.com/K-Dense-AI/scientific-agent-skills/security/advisories/new
about: Do not open a public issue. Use private vulnerability reporting so the report stays confidential until a fix ships. See SECURITY.md.
- name: Contributing guide
url: https://github.com/K-Dense-AI/scientific-agent-skills/blob/main/CONTRIBUTING.md
about: Read this before proposing a skill change — skill format, validation, tests, and the pull request checklist.
- name: Agent Skills specification
url: https://agentskills.io/specification
about: The open specification every skill in this repository follows.
- name: K-Dense documentation
url: https://k-dense.ai
about: Product documentation and general questions about K-Dense.

View File

@@ -0,0 +1,90 @@
name: New skill request
description: Propose a skill for a scientific package, database, platform, workflow, or research method that the library does not cover yet.
title: "[New skill]: "
labels: ["enhancement", "skill-request", "needs-triage"]
body:
- type: markdown
attributes:
value: |
Check the [skill list in the README](https://github.com/K-Dense-AI/scientific-agent-skills#readme)
first — the library already ships a large number of skills. If you plan to
write this skill yourself, [CONTRIBUTING.md](https://github.com/K-Dense-AI/scientific-agent-skills/blob/main/CONTRIBUTING.md)
has the required format and validation steps.
- type: input
id: name
attributes:
label: Proposed skill name
description: Lowercase letters, numbers, and single hyphens only — this becomes the directory name under `skills/`.
placeholder: alphafold-db
validations:
required: true
- type: dropdown
id: category
attributes:
label: Category
options:
- Scientific package or library
- Database or public data resource
- Platform, service, or API
- Analysis workflow or research method
- Laboratory instrument or hardware
- Other
validations:
required: true
- type: textarea
id: what
attributes:
label: What the skill would do
description: What should an agent be able to accomplish with it that it cannot do reliably today?
validations:
required: true
- type: textarea
id: when
attributes:
label: When an agent should use it
description: The situations that should trigger this skill. This becomes the "when to use" half of the skill description.
validations:
required: true
- type: textarea
id: docs
attributes:
label: Official documentation and sources
description: Links to the package docs, API reference, publication, or database homepage a skill author would need.
placeholder: |
- Docs: https://...
- API reference: https://...
- Paper: https://doi.org/...
validations:
required: true
- type: textarea
id: credentials
attributes:
label: Credentials or access requirements
description: Does it need an API key, licence, registration, or institutional access? Name the environment variables if you know them.
validations:
required: false
- type: dropdown
id: contribute
attributes:
label: Would you like to write this skill?
options:
- "Yes — I plan to open a pull request"
- "Maybe, with some guidance"
- "No, I am requesting it"
validations:
required: true
- type: checkboxes
id: checks
attributes:
label: Before submitting
options:
- label: I checked the README skill list and this skill does not already exist.
required: true

View File

@@ -0,0 +1,68 @@
name: Improve an existing skill
description: An existing skill is outdated, unclear, or incomplete — stale API, missing workflow, weak examples, or a description that triggers at the wrong time.
title: "[Improve]: "
labels: ["enhancement", "needs-triage"]
body:
- type: input
id: skill
attributes:
label: Skill name
description: The skill directory name, exactly as it appears under `skills/`.
placeholder: transformers
validations:
required: true
- type: dropdown
id: kind
attributes:
label: What needs improving
multiple: true
options:
- Outdated API or deprecated calls
- Missing workflow or capability
- Examples are wrong, untested, or too thin
- Instructions are ambiguous for an agent
- Description triggers too often or not often enough
- Missing or broken references
- Missing tests
- Other
validations:
required: true
- type: textarea
id: current
attributes:
label: Current behavior
description: What does the skill say or do today? Quote the relevant part of `SKILL.md` or a reference file, with the file path.
validations:
required: true
- type: textarea
id: proposed
attributes:
label: Proposed change
description: What should it say or do instead?
validations:
required: true
- type: textarea
id: evidence
attributes:
label: Supporting sources
description: Upstream release notes, migration guides, or docs that show the current content is out of date.
placeholder: |
- Changelog: https://...
- Migration guide: https://...
validations:
required: false
- type: dropdown
id: contribute
attributes:
label: Would you like to make this change?
options:
- "Yes — I plan to open a pull request"
- "Maybe, with some guidance"
- "No, I am reporting it"
validations:
required: true

68
.github/PULL_REQUEST_TEMPLATE.md vendored Normal file
View File

@@ -0,0 +1,68 @@
# Summary
<!-- What changed, and why it matters. One or two sentences is fine. -->
## Type of change
<!-- Keep the lines that apply, delete the rest. -->
- [ ] New skill
- [ ] Update to an existing skill
- [ ] Tests
- [ ] Repository tooling or CI
- [ ] Documentation
- [ ] Other:
## Skills touched
<!-- Directory names under skills/, one per line. Write "none" if this PR does not touch skills/. -->
-
## How this was tested
<!-- The commands you ran and what they reported. -->
```
uv run skills-ref validate ./skills/<name>
uv run --with pytest python -m pytest tests/<name> -q
```
## Related issues and references
<!-- Closes #123. Link upstream docs, release notes, or security findings that justify the change. -->
---
## Checklist
Drawn from the [Pull Request Checklist](https://github.com/K-Dense-AI/scientific-agent-skills/blob/main/CONTRIBUTING.md#pull-request-checklist) in CONTRIBUTING.md. Items that do not apply to this PR can be left unchecked with a short note.
**Skill format**
- [ ] The skill directory name and the `name` frontmatter match exactly.
- [ ] The skill directory contains only `SKILL.md`, `references/`, `scripts/`, and `assets/` — no `tests/` directory and no `test_*.py` files.
- [ ] `SKILL.md` has valid YAML frontmatter and a Markdown body.
- [ ] Only the six spec-defined top-level fields are present; everything else lives under `metadata`.
- [ ] `metadata` is a block mapping, not single-line JSON, and scalar values are quoted where needed.
- [ ] Any `metadata.openclaw` or `metadata.hermes` block is a nested mapping, not a JSON string.
- [ ] `metadata.version` exists, is quoted, and is bumped if an existing skill changed.
- [ ] The `description` says both what the skill does and when an agent should use it.
**Validation and tests**
- [ ] `uv run skills-ref validate ./skills/<name>` passes.
- [ ] Tests live in `tests/<skill-name>/`, and any new `scripts/` skill has a `[skills.<name>]` entry in `tests/skill-requirements.toml`.
- [ ] Relevant test suites pass, or the failures are explained below.
- [ ] Security scanner results are clean or explained in this PR.
**Content and safety**
- [ ] Examples and scripts were tested, or are clearly marked as illustrative.
- [ ] No secrets, credentials, private data, or unsafe instructions are included.
- [ ] Credentials the skill needs are named in `compatibility` and declared in `metadata.openclaw.envVars`.
- [ ] Relevant official documentation is linked where useful.
## Notes for reviewers
<!-- Anything unresolved, deliberately out of scope, or worth a closer look. -->

View File

@@ -73,12 +73,14 @@ jobs:
if: steps.changed.outputs.skill_dirs != ''
run: uv sync --python 3.13
# Fork PRs do not receive SKILL_SCANNER_LLM_API_KEY. scan_pr_skills.py
# detects the missing key, writes an explanatory sticky comment, and exits 0.
- name: Run scanner on changed skills
if: steps.changed.outputs.skill_dirs != ''
id: scan
env:
SKILL_SCANNER_LLM_API_KEY: ${{ secrets.SKILL_SCANNER_LLM_API_KEY }}
SKILL_SCANNER_LLM_MODEL: ${{ vars.SKILL_SCANNER_LLM_MODEL || 'claude-sonnet-4-6' }}
SKILL_SCANNER_LLM_MODEL: ${{ vars.SKILL_SCANNER_LLM_MODEL || 'claude-opus-5' }}
run: |
uv run python scan_pr_skills.py \
--output pr_scan_comment.md \

View File

@@ -4,6 +4,11 @@ on:
schedule:
- cron: "0 9 * * 1" # Every Monday at 09:00 UTC
workflow_dispatch: # Allow manual trigger
inputs:
full_scan:
description: "Rescan every skill, ignoring cached findings"
type: boolean
default: false
permissions:
contents: write
@@ -11,7 +16,11 @@ permissions:
jobs:
scan:
runs-on: ubuntu-latest
timeout-minutes: 120
# Scans run concurrently and reuse findings for unchanged skills, so a
# typical incremental run is minutes. The headroom is for a full rescan
# (triggered by a scanner/model change or the 30-day backstop) plus the
# scanner's own rate-limit retries.
timeout-minutes: 60
steps:
- uses: actions/checkout@v6
@@ -28,17 +37,35 @@ jobs:
- name: Run security scan
env:
SKILL_SCANNER_LLM_API_KEY: ${{ secrets.SKILL_SCANNER_LLM_API_KEY }}
SKILL_SCANNER_LLM_MODEL: ${{ vars.SKILL_SCANNER_LLM_MODEL || 'claude-sonnet-4-6' }}
SKILL_SCANNER_LLM_MODEL: ${{ vars.SKILL_SCANNER_LLM_MODEL || 'claude-opus-5' }}
# Each skill scan is blocked on LLM network I/O, so concurrency is
# bounded by API rate limits rather than by the runner. Lower this if
# runs start hitting sustained 429s.
SKILL_SCAN_WORKERS: ${{ vars.SKILL_SCAN_WORKERS || '8' }}
SKILL_SCAN_FULL: ${{ inputs.full_scan && '1' || '' }}
run: uv run python scan_skills.py
- name: Commit updated SECURITY.md
- name: Upload report artifact
if: always()
uses: actions/upload-artifact@v4
with:
name: security-report
path: |
docs/security-report.md
docs/security-report.json
if-no-files-found: warn
- name: Commit updated security report
run: |
git diff --quiet SECURITY.md && exit 0
if [ -z "$(git status --porcelain docs/security-report.md docs/security-report.json)" ]; then
echo "Report unchanged; nothing to commit."
exit 0
fi
git config user.name "github-actions[bot]"
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
git stash --include-untracked
git pull --rebase
git stash pop || true
git add SECURITY.md
git add docs/security-report.md docs/security-report.json
git commit -m "chore: update security scan report [skip ci]"
git push

View File

@@ -0,0 +1,150 @@
name: Skill Spec Validation
on:
pull_request:
paths:
- "skills/**"
- "pyproject.toml"
- "uv.lock"
- ".github/workflows/skill-spec-validation.yml"
push:
branches:
- main
paths:
- "skills/**"
workflow_dispatch:
permissions:
contents: read
concurrency:
group: skill-spec-validation-${{ github.ref }}
cancel-in-progress: true
jobs:
validate:
name: Validate skills against the Agent Skills spec
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Set up uv
uses: astral-sh/setup-uv@v8.0.0
with:
enable-cache: true
cache-dependency-glob: uv.lock
python-version: "3.13"
- name: Install dependencies
run: uv sync --python 3.13
# The reference validator from https://agentskills.io/specification. It checks the
# closed set of allowed frontmatter fields, name rules (incl. directory match),
# description/compatibility length limits, and parses frontmatter with strictyaml
# -- which rejects JSON-style flow mappings such as `metadata: {"version": "1.0"}`.
- name: skills-ref validate
run: |
set -uo pipefail
fail=0
for d in skills/*/; do
if ! out=$(uv run skills-ref validate "$d" 2>&1); then
fail=1
echo "::error file=${d}SKILL.md::$(echo "$out" | tail -n +2 | tr '\n' ' ')"
echo "FAIL $d"
echo "$out" | sed 's/^/ /'
fi
done
echo "Validated $(ls -d skills/*/ | wc -l) skills."
exit $fail
# Rules the reference validator does not enforce: this repo's metadata.version
# requirement (see AGENTS.md), plus spec constraints skills-ref accepts but the
# spec text requires -- allowed-tools must be a space-separated string, and
# metadata values must be strings apart from the host-manifest blocks that have
# to stay nested objects (see NESTED_OK below).
- name: Repo and spec rules skills-ref does not check
run: |
uv run --with pyyaml python - <<'PY'
import re
import sys
from pathlib import Path
import yaml
# Host manifest blocks that must stay nested mappings. OpenClaw's
# resolveOpenClawManifestBlock() requires `typeof candidate === "object"`, so
# encoding these as JSON strings silently disables its gating and credential
# injection. Nested mappings still pass `skills-ref validate`.
NESTED_OK = {"openclaw", "hermes"}
# Requires the closing delimiter on its own line. A naive split("---") would
# happily re-split at a `---` accidentally glued to the last frontmatter value.
FM_RE = re.compile(r"\A---\n(.*?)\n---\n", re.S)
errors, warnings = [], []
for d in sorted(Path("skills").iterdir()):
if not d.is_dir():
continue
md = d / "SKILL.md"
if not md.exists():
errors.append(f"{d}: missing SKILL.md")
continue
text = md.read_text()
m_fm = FM_RE.match(text)
if not m_fm:
errors.append(
f"{md}: frontmatter must open with `---` and close with `---` "
f"on its own line"
)
continue
fm = yaml.safe_load(m_fm.group(1))
at = fm.get("allowed-tools")
if at is not None:
if not isinstance(at, str):
errors.append(
f"{md}: allowed-tools must be a space-separated string, "
f"got {type(at).__name__}"
)
elif "," in at:
errors.append(
f"{md}: allowed-tools must be space-separated, not "
f"comma-separated: {at!r}"
)
m = fm.get("metadata")
if not isinstance(m, dict):
errors.append(f"{md}: missing a `metadata` mapping (see AGENTS.md)")
else:
if "version" not in m:
errors.append(f"{md}: metadata.version is required (see AGENTS.md)")
for k, v in m.items():
if k in NESTED_OK:
if not isinstance(v, dict):
errors.append(
f"{md}: metadata.{k} must stay a nested mapping, got "
f"{type(v).__name__} -- a JSON string silently disables "
f"host gating and credential injection"
)
continue
if isinstance(v, str):
continue
errors.append(
f"{md}: metadata.{k} must be a string, got {type(v).__name__} "
f"-- quote it (versions and dates especially)"
)
lines = text.count("\n") + 1
if lines > 500:
warnings.append(f"{md}: {lines} lines; the spec recommends under 500")
for w in warnings:
print(f"::warning file={w.split(':')[0]}::{w}")
for e in errors:
print(f"::error file={e.split(':')[0]}::{e}")
print(f"FAIL {e}")
print(f"\n{len(errors)} error(s), {len(warnings)} warning(s).")
sys.exit(1 if errors else 0)
PY

103
.github/workflows/skill-tests.yml vendored Normal file
View File

@@ -0,0 +1,103 @@
name: Skill Tests
on:
pull_request:
paths:
- "skills/**"
- "tests/**"
- "pyproject.toml"
- "uv.lock"
- ".github/workflows/skill-tests.yml"
push:
branches:
- main
paths:
- "skills/**"
- "tests/**"
workflow_dispatch:
permissions:
contents: read
concurrency:
group: skill-tests-${{ github.ref }}
cancel-in-progress: true
jobs:
contract:
name: Repo-wide contract and coverage guard
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Set up uv
uses: astral-sh/setup-uv@v8.0.0
with:
enable-cache: true
cache-dependency-glob: uv.lock
python-version: "3.13"
- name: Install dependencies
run: uv sync --python 3.13
# tests/_meta checks every skill against the shared structural contract
# (frontmatter, SKILL.md length, local links, scripts parse, no shipped
# bytecode, no hardcoded local paths, ...) and enforces the repo rule that
# a skill shipping scripts/ has a suite under tests/ and an entry in
# tests/skill-requirements.toml. It imports no skill code and needs no
# scientific packages, so it runs in seconds on every pull request.
- name: Structural contract and coverage
run: uv run --python 3.13 python -m pytest tests/_meta -q
suites:
name: Standard-library-only skill suites
runs-on: ubuntu-latest
timeout-minutes: 30
needs: contract
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Set up uv
uses: astral-sh/setup-uv@v8.0.0
with:
enable-cache: true
cache-dependency-glob: uv.lock
python-version: "3.13"
# The skills whose bundled tooling is standard-library only -- read from
# `packages = []` in tests/skill-requirements.toml, so the list needs no
# separate maintenance. Each still gets a clean throwaway environment.
#
# The full `--isolated` sweep across every skill is deliberately NOT run
# here: it builds ~100 environments including torch, qiskit, and scanpy,
# and several skills need CUDA, a JDK, or a MATLAB install that CI does
# not have. Run it locally or on a schedule:
# python tests/run_all.py --isolated
- name: Select standard-library-only skills
id: select
run: |
set -euo pipefail
SKILLS=$(python3 - <<'PY'
import pathlib, tomllib
manifest = tomllib.loads(
pathlib.Path("tests/skill-requirements.toml").read_text()
)
names = sorted(
name
for name, entry in manifest["skills"].items()
if not entry.get("packages") and "python" not in entry
and (pathlib.Path("tests") / name).is_dir()
)
print(" ".join(names))
PY
)
echo "Selected: $SKILLS"
echo "skills=$SKILLS" >> "$GITHUB_OUTPUT"
- name: Run suites, one environment each
run: uv run --python 3.13 python tests/run_all.py --isolated ${{ steps.select.outputs.skills }}

11
.gitignore vendored
View File

@@ -5,6 +5,7 @@
.venv/
.python-version
__pycache__/
.pytest_cache/
# Secrets
.env
@@ -13,7 +14,13 @@ __pycache__/
temp/
research/
# Local agent tooling
.claude/
.agents/
AGENTS.md
# Anchored: an unanchored "scripts/" also matches skills/<name>/scripts/,
# which silently drops every new skill's bundled tooling from git.
/scripts/
skills-lock.json
skills-lock.json
uv.lock

372
AGENTS.md Normal file
View File

@@ -0,0 +1,372 @@
# Repository Guidance
This repository is a collection of Agent Skills for science and research. Every skill lives in its
own directory under `skills/` and must conform to the open
[Agent Skills specification](https://agentskills.io/specification).
Read this file before creating or changing a skill. `CONTRIBUTING.md` covers the same ground at
more length, plus the pull-request process.
## What belongs here
**In scope:** a narrow skill for one scientific package, database, platform, or research workflow —
`scanpy`, `depmap`, `benchling-integration`, `experimental-design`.
**Out of scope**, and routinely declined:
- General software-engineering or coding-judgment skills — they compete for selection on every task.
- General infrastructure with a scientific example bolted on (a vector database, a cloud SDK) —
accepting one implies carrying every competitor.
- Broad "orchestrator" skills that route to other skills — they overlap every specialist by design.
- A second provider for a service an existing skill already reaches.
The general-purpose skills that do exist are narrow output-format helpers (`docx`, `pdf`, `pptx`,
`generate-image`, `markdown-mermaid-writing`). They are not precedent for broadening scope.
## Layout
The repository root is an [Agent Plugins](https://agent-plugins.org/) 1.0.0 package: `plugin.json`
plus the portable `skills/` tree. Keep `plugin.json` valid against the Agent Plugins manifest
schema, and keep its `version` identical to `pyproject.toml` `[project].version`. Do not add
non-portable top-level fields to `plugin.json` (no inline MCP, hooks, or client-only keys — use
`mcp.json` or a reverse-domain `extensions` namespace if those are ever needed).
```text
plugin.json # Agent Plugins manifest (repo root)
skills/<skill-name>/
├── SKILL.md # required
├── references/ # optional: long documentation, loaded only when needed
├── scripts/ # optional: executable helpers
└── assets/ # optional: templates and static resources
```
Only `SKILL.md` is required inside each skill. Reference other files with relative paths from the
skill root, kept one level deep.
**Tests never live under `skills/`.** A skill directory ships only what an agent loads. Checks for a
skill's scripts and structure go in the repository-level suite instead:
```text
tests/<skill-name>/ # same name as the skill directory
├── test_scripts.py
└── fixtures/ # optional test data
```
**Diagrams never live under `skills/` either.** A skill may have a generated workflow diagram at
`docs/images/<skill-name>.png`, produced by `scripts/generate_skill_image.py`. Diagrams are optional
— see [Skill diagrams](#skill-diagrams).
Tests reach their skill through an explicit anchor, never a relative walk:
```python
SKILL_ROOT = Path(__file__).resolve().parents[2] / "skills" / "<skill-name>"
```
## Creating a skill
1. Create `skills/<name>/`**the directory name is the skill name** and must equal frontmatter
`name`.
2. Write `SKILL.md` from the template below. Start at `metadata.version: "1.0"`.
3. Add `references/`, `scripts/`, or `assets/` only when they earn their place.
4. Run the commands and code you document. Scope claims to the release you actually tested
("targets stable GeoPandas 1.1.4"), and mark anything untested as illustrative.
5. If the skill ships `scripts/`, put their tests in **`tests/<name>/`** — never in the skill
directory. Fixtures go in `tests/<name>/fixtures/`.
6. Validate and scan (below).
```markdown
---
name: skill-name
description: What the skill does and when an agent should use it, including the terms that should trigger it.
license: MIT
compatibility: Requires Python 3.12+ with <package> installed. Needs network access.
metadata:
version: "1.0"
skill-author: Your Name
---
# Skill Title
## When to use
Use this skill when...
## Workflow
1. ...
## Examples
...
```
## Updating a skill
1. Read the current `SKILL.md` and its supporting files first.
2. Check upstream docs — APIs move, and the skill may be pinned to an older release.
3. Make the smallest useful change.
4. **Bump `metadata.version` in the same change**: minor for normal improvements (`"1.2"`
`"1.3"`), major only for a breaking change or substantial redesign (`"1.9"``"2.0"`).
5. Re-run any example, command, or script you touched, plus `tests/<name>/` if that suite exists.
Suites check that `metadata.version` is present and quoted, not what it equals, so a version bump
never needs a matching test edit.
## Frontmatter
`SKILL.md` starts with YAML frontmatter. **Only these six fields are allowed** — the spec defines a
closed set, and any other top-level key is a validation error:
| Field | Required | Constraints |
| --- | --- | --- |
| `name` | Yes | 164 chars, lowercase letters/digits/hyphens only, no leading, trailing, or consecutive hyphens, and **must equal the directory name**. |
| `description` | Yes | 11024 chars. Say what the skill does *and* when to use it, with the keywords that should trigger it. Write it in third person. |
| `license` | No | License name, or a reference to a bundled license file. |
| `compatibility` | No | Max 500 chars. Environment requirements only — omit it if the skill has none. |
| `allowed-tools` | No | A **space-separated string**, e.g. `Read Write Edit Bash`. Not a YAML list, not comma-separated. |
| `metadata` | No | Mapping of string keys to **string** values, except the host manifest blocks below. Required here: `metadata.version`. |
Put anything else — authorship, upstream versions, review dates, client-specific config — inside
`metadata`, never at the top level. In particular, Hermes' top-level
`required_environment_variables` cannot be used here: it fails the validator and, because
`strictyaml` rejects the whole document, takes `name` and `description` down with it. Declare
credentials in `compatibility` and `metadata.openclaw.envVars` instead.
### Write block-style YAML, not JSON flow style
The reference validator parses frontmatter with `strictyaml`, which **rejects JSON-style flow
mappings and sequences**. A flow mapping does not merely fail one check: the whole frontmatter
fails to parse, so `name` and `description` become unreadable and the skill will not register.
```yaml
# Wrong -- breaks the validator
metadata: {"version": "1.1", "skill-author": "K-Dense Inc."}
# Right
metadata:
version: "1.1"
skill-author: K-Dense Inc.
```
### Quote `metadata` scalars
Quote values that would otherwise be parsed as a number, boolean, or date — `version: "1.0"`,
`last-reviewed: "2026-07-23"` — so they stay strings as the spec requires.
### Host manifest blocks stay nested mappings
`metadata.openclaw` and `metadata.hermes` are the documented exception: keep them as **nested
mappings**, not JSON strings. OpenClaw's `resolveOpenClawManifestBlock()` requires
`typeof candidate === "object"`, so a JSON string silently disables its dependency gating and
credential injection. Nested mappings still pass `skills-ref validate`.
```yaml
metadata:
version: "1.1"
skill-author: Exa
openclaw:
primaryEnv: EXA_API_KEY
envVars:
- name: EXA_API_KEY
required: true
description: Exa search API key.
hermes:
category: research
```
Only skills with external requirements need these blocks; most omit them. A failed `requires` /
`requires_toolsets` gate *hides* the skill from the agent, so gate only on something the skill
genuinely cannot run without.
## Body and layout
- Keep `SKILL.md` under 500 lines. CI warns above that. Move long reference material into
`references/` so agents load it only when needed.
- A skill directory ships only what an agent loads. Tests, fixtures, scratch data, and generated
artifacts stay out of it; tests go in `tests/<name>/`.
- Give concrete workflows, commands, and worked examples rather than background explanation.
- Name the required packages, system dependencies, credentials, and network access.
- Include the scientific caveats and validation checks that matter.
- Put fragile or repetitive logic in `scripts/` instead of asking the agent to recreate it.
- Never include secrets, API keys, private URLs, or unpublished data.
## Validate and scan
```bash
uv sync
# spec conformance for one skill
uv run skills-ref validate skills/<name>
# every skill, the way CI does
for d in skills/*/; do uv run skills-ref validate "$d"; done
```
`.github/workflows/skill-spec-validation.yml` runs that on every PR touching `skills/`, plus the
repo rules `skills-ref` does not check: `metadata.version` present, `allowed-tools` a
space-separated string, `metadata` scalars quoted, and a warning past 500 lines.
Security-scan new or substantially changed skills. Scanning uses
[Cisco AI Defense Skill Scanner](https://github.com/cisco-ai-defense/skill-scanner) — the
`cisco-ai-skill-scanner` package pinned in `pyproject.toml`, which detects prompt injection, data
exfiltration, and malicious code patterns in Agent Skills. Its README documents the rule IDs and
CLI flags; consult it when a finding's rule is unfamiliar.
`.github/workflows/pr-skill-scan.yml` runs the repo wrapper for changed skills on every PR and
posts a sticky comment, failing on HIGH or above:
```bash
# needs SKILL_SCANNER_LLM_API_KEY (see .env)
uv run python scan_pr_skills.py skills/<name>
# or the upstream CLI directly, without the repo wrapper
uv run skill-scanner scan skills/<name> --use-behavioral
```
**Verify a finding against the code before "fixing" it.** Known systematic false positives:
`BEHAVIOR_*_EXFILTRATION` and `BEHAVIOR_ENV_VAR_HARVESTING` on any skill that reads its own API key
and calls its own service; `MDBLOCK_PYTHON_SUBPROCESS` on any `subprocess` snippet, including the
safe argument-list form; and `*_EVAL_EXEC` on substrings inside ordinary identifiers (`retrieval`,
`executor`) or on `model.eval()`. Findings sometimes cite files a skill does not contain — check
against `find skills/<name> -type f` before acting.
If the skill has tests in `tests/<name>/`, run them:
```bash
uv run --with pytest python -m pytest tests/<name> -q
# every skill's suite, one process each, after the repo-wide guard
uv run --with pytest python tests/run_all.py
```
**One skill per pytest process.** Skills' `scripts/` directories own plain top-level module names —
32 of them ship a `scripts/_common.py` — so collecting two skills into one interpreter resolves
`_common` to whichever skill imported first and silently tests the wrong files. `tests/conftest.py`
refuses such a session; `tests/run_all.py` forks per skill.
### The repo-wide guard
```bash
uv run --with pytest python -m pytest tests/_meta -q
```
`tests/_meta` is the fastest useful signal in the repo: pure standard library, no scientific
packages, a couple of seconds. It runs the shared structural contract against **every** skill and
fails if a skill ships `scripts/` without a suite under `tests/<name>/` or an entry in
`tests/skill-requirements.toml`. `.github/workflows/skill-tests.yml` runs it on every pull request,
so a skill with untested scripts cannot land. A full run of `tests/run_all.py` starts with it.
It is not one of the per-skill processes because it deliberately spans all of them at once — safe
because it never imports skill code, only parses it.
### The shared contract
`tests/_contract/` holds the assertions every skill shares, so a per-skill suite contains only what
is actually specific to that skill. `tests/conftest.py` registers it as the importable module
`skill_contract`:
```python
import skill_contract
# every argparse script answers --help; skips when its packages are absent,
# runs for real under --isolated
CliHelpTests = skill_contract.cli.help_test_case(SKILL_ROOT)
# for library-style scripts with an `if __name__ == "__main__"` worked example
DemoBlockTests = skill_contract.cli.demo_test_case(SKILL_ROOT, ("doe_designs.py",))
```
- `structure` — frontmatter conformance, the 500-line limit, no tests or bytecode under `skills/`,
local links resolve, scripts parse, no `eval`/`exec`/`os.system`, no standard-library shadowing,
no hardcoded local paths, shell scripts valid. Run repo-wide by `tests/_meta`; do not duplicate
these in a per-skill suite.
- `cli` — the `--help` and demo-block cases above.
- `office` / `schematic` — behaviour for files several skills ship byte-identical copies of (the
OOXML tree under docx/pptx/xlsx; the AI schematic generator under five skills). `tests/_meta`
separately fails if those copies drift apart, so fix them together.
### One environment per skill
The project environment deliberately does not carry the skills' scientific packages. Their upstream
pins are mutually exclusive — `opentrons` needs `numpy<2`, `esm` caps `transformers` below the
version the `transformers` skill targets, `geniml` and `spikeinterface` pin `zarr<3` against the
`zarr-python` skill's 3.x, `bioservices` caps `lxml<6` against `matchms`, and `pytdc`, `molfeat`,
`deepchem`, `histolab`, `vaex`, and `ete3` each need an interpreter older than 3.13. Installing them
together forces every one of those skills to the losing side of a version fight.
So `--isolated` builds a throwaway `uv` environment per skill instead, from
[`tests/skill-requirements.toml`](tests/skill-requirements.toml):
```bash
python tests/run_all.py --isolated # every suite, one env each
python tests/run_all.py --isolated scanpy qiskit # just these
```
Each entry lists the packages that skill documents, plus an optional `python` when the skill cannot
run on the default interpreter; uv downloads that interpreter on demand. Packages that cannot be
installed at all — a GitHub-only SDK, a conda-forge-only library, a CUDA build — are recorded under
`[unavailable]` with the reason, and the runner prints them so the gap shows up in test output.
Adding a skill with `scripts/` means adding its `[skills.<name>]` entry — `tests/_meta` fails
without one. Use `packages = []` for skills whose bundled tooling is standard-library only; they
still get a clean environment, and CI runs exactly that set on every pull request. uv caches wheels
globally, so repeat runs create each environment in milliseconds.
The full `--isolated` sweep is not run in CI: it builds one environment per skill, several of which
need a CUDA toolchain, a JDK, or a local MATLAB install. Run it before a release, or whenever you
touch the shared contract.
## Skill diagrams
A skill may carry a generated workflow diagram at `docs/images/<skill-name>.png`. Diagrams are
optional: neither a new skill nor a change to an existing one is blocked on having or refreshing an
image, and no CI check enforces them. If you do ship one, note that it is derived from the
documentation, so regenerate it when the skill's workflow changes rather than leaving a picture that
misrepresents the skill.
`scripts/generate_skill_image.py` is local repository tooling, standard library only, and runs in
two stages on one `OPENROUTER_API_KEY` (environment variable, repository `.env`, or `--api-key`):
a text model reads `SKILL.md` plus everything under `references/` and a manifest of `scripts/` and
`assets/`, distils it into a description of one diagram, then an image model draws it. Because it
reads the whole skill, run it **after** the documentation is final, not before.
```bash
# one skill -> docs/images/<name>.png, replacing any existing image
uv run python scripts/generate_skill_image.py --skill <name>
# see which files feed the reader, and where the image lands — no API calls, nothing billed
uv run python scripts/generate_skill_image.py --skill <name> --dry-run
# read the skill and print the diagram prompt without drawing it
uv run python scripts/generate_skill_image.py --skill <name> --prompt-only
# several skills in one batch
uv run python scripts/generate_skill_image.py --skill <name-a> <name-b>
# backfill everything missing an image, six at a time
uv run python scripts/generate_skill_image.py --all --skip-existing -j 6
```
Look at the result before committing it. Image models misspell labels and occasionally point an
arrow at the wrong card; regenerate rather than ship a diagram whose text is wrong. `--quality low`
makes iteration cheap while checking composition, but commit a `high` render. Both the art direction
and the reader's instructions live at the top of the script — change them there rather than
hand-tuning one skill's prompt, so the set stays visually consistent.
## Before opening a PR
- Directory name and frontmatter `name` match exactly.
- No `tests/` directory and no `test_*.py` anywhere under `skills/<name>/` — tests belong in
`tests/<name>/`.
- Only the six spec-defined top-level fields; everything else under `metadata`.
- `metadata.version` exists, is quoted, and is bumped if you changed an existing skill.
- `metadata` is a block mapping; `openclaw` / `hermes` blocks are nested mappings.
- `uv run skills-ref validate skills/<name>` passes.
- If the collection version changes, `plugin.json` `version` matches `pyproject.toml`.
- `uv run --with pytest python -m pytest tests/_meta -q` passes — this is what CI blocks on, and it
catches a missing suite, a missing `skill-requirements.toml` entry, a broken local link, a
leaked local path, and a drifted Agent Plugins manifest.
- If the skill ships `scripts/`: a suite exists at `tests/<name>/`, a `[skills.<name>]` entry exists
in `tests/skill-requirements.toml`, and `python tests/run_all.py --isolated <name>` passes.
- If the skill ships `docs/images/<name>.png`, its labels are spelled correctly and its arrows point
where they should. The image itself is optional.
- Examples and scripts are tested, or clearly marked illustrative.
- No secrets or private data; scan results clean or explained in the PR.

52
CITATION.cff Normal file
View File

@@ -0,0 +1,52 @@
cff-version: 1.2.0
message: >-
If you use Scientific Agent Skills in your research or project, please cite
the paper listed under preferred-citation. To pin the exact skill set an
analysis ran against, also cite this repository and record the release tag
or commit you used.
type: software
title: Scientific Agent Skills
abstract: >-
An open library of 163 ready-to-use Agent Skills for science and research,
covering genomics, cheminformatics, medical imaging, study design, scientific
communication, and more, for any AI agent that supports the open Agent Skills
standard.
authors:
- name: K-Dense Inc.
website: https://www.k-dense.ai
repository-code: https://github.com/K-Dense-AI/scientific-agent-skills
url: https://github.com/K-Dense-AI/scientific-agent-skills
license: MIT
keywords:
- agent-skills
- science
- research
- bioinformatics
- cheminformatics
- biology
- chemistry
- medicine
preferred-citation:
type: generic
title: "Scientific Agent Skills: A Library of Procedural Knowledge for Research Agents"
authors:
- family-names: Kassis
given-names: Timothy
- family-names: Agarwal
given-names: Vinayak
- family-names: He
given-names: Yuhuan
- family-names: Patel
given-names: Darshil
- family-names: Brueckner
given-names: Aubrey M.
year: 2026
month: 8
date-published: 2026-08-30
doi: 10.48550/arXiv.2609.00065
url: https://arxiv.org/abs/2609.00065
identifiers:
- type: other
value: "arXiv:2609.00065"
description: arXiv preprint identifier
notes: arXiv preprint, primary class cs.CL

3
CLAUDE.md Normal file
View File

@@ -0,0 +1,3 @@
# CLAUDE.md
Repository guidance for this project lives in [AGENTS.md](AGENTS.md). Read it and follow it.

135
CODE_OF_CONDUCT.md Normal file
View File

@@ -0,0 +1,135 @@
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the overall
community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or advances of
any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email address,
without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official email address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
[contact@k-dense.ai](mailto:contact@k-dense.ai).
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
Note that this address is for conduct reports. Security vulnerabilities follow a
separate, confidential process — see [SECURITY.md](SECURITY.md).
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series of
actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or permanent
ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within the
community.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
version 2.1, available at
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder][mozilla coc].
For answers to common questions about this code of conduct, see the FAQ at
[https://www.contributor-covenant.org/faq][faq]. Translations are available at
[https://www.contributor-covenant.org/translations][translations].
[homepage]: https://www.contributor-covenant.org
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
[mozilla coc]: https://github.com/mozilla/inclusion
[faq]: https://www.contributor-covenant.org/faq
[translations]: https://www.contributor-covenant.org/translations

View File

@@ -2,18 +2,25 @@
Thanks for helping improve Scientific Agent Skills. This guide explains how to add or update a skill in this repository while following the open [Agent Skills specification](https://agentskills.io/specification).
Participation in this project is governed by our [Code of Conduct](CODE_OF_CONDUCT.md).
## Ways to Contribute
- Add a new scientific package, database, platform, workflow, or research method skill.
- Improve an existing skill with clearer instructions, current APIs, better examples, references, or scripts.
- Fix outdated examples, broken install steps, security issues, or documentation gaps.
- Add or extend a skill's tests under `tests/<skill-name>/` (see [Tests](#tests)).
- Report bugs or request new skills through GitHub Issues.
## Skill Location
All repository skills live under `skills/`:
All repository skills live under `skills/`. The repository root is also an
[Agent Plugins](https://agent-plugins.org/) package: keep root `plugin.json` schema-valid, do not
add non-portable top-level fields, and keep its `version` in sync with `pyproject.toml` whenever
you bump the collection version.
```text
plugin.json
skills/
└── skill-name/
├── SKILL.md
@@ -28,8 +35,12 @@ Only `SKILL.md` is required. Use optional directories when they make the skill e
- `scripts/` for executable helpers, validators, or reusable workflow code.
- `assets/` for templates, static resources, or example data.
Those four are the only directories a skill may contain. Anything else — tests, fixtures, scratch data, generated output — belongs outside `skills/`.
Keep references one level deep from `SKILL.md` where possible, and keep the main `SKILL.md` concise. The Agent Skills specification recommends keeping `SKILL.md` under 500 lines and using progressive disclosure for longer material.
A skill directory holds only what an agent loads, so tests do not belong there. They live in the repository-level suite under `tests/<skill-name>/`, mirroring the skill directory name, with any fixtures in `tests/<skill-name>/fixtures/`. See [Tests](#tests).
## Required Skill Format
Every skill must be a directory containing a `SKILL.md` file with YAML frontmatter followed by Markdown instructions.
@@ -42,6 +53,7 @@ name: skill-name
description: Clear description of what the skill does and when an agent should use it.
metadata:
version: "1.0"
skill-author: Your Name
---
# Skill Title
@@ -71,17 +83,90 @@ Follow the [Agent Skills specification](https://agentskills.io/specification) an
- `description` should explain both what the skill does and when an agent should use it.
- `metadata.version` is required in this repository, even though `metadata` is optional in the upstream spec.
- Version values must be quoted numeric strings, such as `"1.0"` or `"1.1"`.
- **Only the six fields defined by the specification are allowed** at the top level: `name`, `description`, `license`, `compatibility`, `allowed-tools`, and `metadata`. The spec defines a closed set and the reference validator rejects any other top-level key, so everything else belongs under `metadata`.
- **Write `metadata` as a block mapping, not single-line JSON.** The reference validator parses frontmatter with `strictyaml`, which rejects JSON-style flow mappings. A flow mapping does not merely fail one check — the entire frontmatter fails to parse, so `name` and `description` become unreadable and the skill does not register.
```yaml
# Wrong -- breaks the reference validator
metadata: {"version": "1.0", "skill-author": "K-Dense Inc."}
# Right
metadata:
version: "1.0"
skill-author: K-Dense Inc.
```
Optional frontmatter fields from the specification may be used when relevant:
- `license`: the license for the individual skill, if different or worth stating explicitly.
- `compatibility`: environment requirements such as Python version, system packages, agent host, or network access.
- `metadata`: additional string key-value metadata.
- `allowed-tools`: space-separated tool permissions for hosts that support this experimental field.
- `compatibility`: environment requirements such as Python version, system packages, agent host, or network access. Maximum 500 characters.
- `metadata`: additional metadata, as a block mapping of string keys to string values. Quote any value that would otherwise parse as a number, boolean, or date (`version: "1.0"`, `last-reviewed: "2026-07-23"`). Common keys: `version` (required), `skill-author`, and an optional nested `openclaw` or `hermes` block (see below).
- `allowed-tools`: a **space-separated string** of tool permissions for hosts that support this experimental field, for example `allowed-tools: Read Write Edit Bash`. Not a YAML list.
### OpenClaw gating (`metadata.openclaw`)
OpenClaw reads an optional `openclaw` object nested inside `metadata` for dependency gating, credential injection, and display. Because it lives under `metadata`, the Agent Skills spec permits it and other hosts ignore it. It is only needed for skills with external requirements (credentials, daemons, specific binaries) — most skills omit it entirely.
**Keep this block a nested mapping — never a JSON string.** OpenClaw's `resolveOpenClawManifestBlock()` requires `typeof candidate === "object"`, so a stringified block silently disables gating and credential injection with no error. This is the one documented exception to the string-values rule for `metadata`, and it still passes `skills-ref validate`.
Supported keys:
- `requires`: hard eligibility gates — `{"bins": [...]}` (all must be on `PATH`), `{"anyBins": [...]}` (at least one), `{"env": [...]}` (vars that must be set), `{"config": [...]}`. A failed gate hides the skill from the agent, so only gate on things the skill genuinely cannot run without.
- `primaryEnv`: the main credential variable; OpenClaw injects it from its config (`skills.entries.<name>.apiKey`).
- `envVars`: descriptive (non-gating) declarations — `[{"name": "X_API_KEY", "required": true, "description": "..."}]`. Declare every env var your scripts reference so ClawHub's security analysis does not flag a metadata mismatch.
- `os`: platform filter, e.g. `["darwin", "linux"]`.
- `emoji`, `homepage`: display only.
Example (an API-key skill that stays available even without the key set, so it gates nothing and only declares the credential):
```yaml
metadata:
version: "1.0"
skill-author: K-Dense Inc.
openclaw:
primaryEnv: EXA_API_KEY
envVars:
- name: EXA_API_KEY
required: true
description: Exa search API key.
```
### Hermes compatibility (`required_environment_variables` and `metadata.hermes`)
[Hermes](https://hermes-agent.nousresearch.com/docs) is Agent Skills-compatible, so every skill in this repository already loads and runs there with no changes. Two optional fields make credentialed skills first-class on Hermes:
- **`metadata.hermes`** (nested, spec-safe like `openclaw`): optional classification and gating — `tags`, `category`, `requires_toolsets`, `fallback_for_toolsets`. A failed `requires_toolsets` gate *hides* the skill, so only gate on a tool the skill genuinely cannot run without; prefer leaving it unset so the skill stays available. Keep it a nested mapping, not a JSON string.
Example (an API-key skill, declaring its credential for OpenClaw and classifying itself for Hermes):
```yaml
metadata:
version: "1.0"
skill-author: Exa
openclaw:
primaryEnv: EXA_API_KEY
envVars:
- name: EXA_API_KEY
required: true
description: Exa search API key.
hermes:
category: research
```
### `required_environment_variables` is not used in this repository
Hermes also reads a **top-level** `required_environment_variables` array to prompt for credentials. That field cannot coexist with spec conformance: the specification defines a closed set of six top-level fields, so the reference validator rejects it outright — and because `strictyaml` fails the whole frontmatter block on an unknown-shaped document, the failure is not confined to that one key.
This repository therefore does not use it. Declare credentials in two spec-legal places instead:
- `compatibility` — a human- and agent-readable sentence naming the variables the skill needs.
- `metadata.openclaw.envVars` — the machine-readable declaration, which ClawHub's security analysis also checks against the variables your scripts actually reference.
Skills still load and run on Hermes; only its automatic credential prompt is unavailable, and the required variables remain discoverable from the two fields above.
## Versioning
Every `SKILL.md` must include:
Every `SKILL.md` must include a quoted `version` inside the `metadata` mapping:
```yaml
metadata:
@@ -128,9 +213,17 @@ Good skills are specific, practical, and easy for an agent to apply.
5. Test any commands, code examples, and scripts included in the skill.
6. Update related documentation if the new skill changes repository-level lists, examples, or setup guidance.
6. If the skill ships `scripts/`, add their tests in the repository-level suite, not in the skill directory:
7. Run validation and security checks before opening a pull request.
```text
tests/skill-name/
```
See [Tests](#tests) for the layout, the path anchor to use, and how to run them.
7. Update related documentation if the new skill changes repository-level lists, examples, or setup guidance.
8. Run validation and security checks before opening a pull request.
## Updating an Existing Skill
@@ -139,17 +232,22 @@ Good skills are specific, practical, and easy for an agent to apply.
3. Make the smallest useful change that fixes or improves the skill.
4. Increment `metadata.version`.
5. Test changed examples, commands, and scripts.
6. Note any behavior changes in the pull request description.
6. Run the skill's suite if it has one: `uv run --with pytest python -m pytest tests/skill-name -q`. Suites check that `metadata.version` is present and quoted, not what it equals, so a version bump never needs a matching test edit.
7. Note any behavior changes in the pull request description.
## Validation
Validate Agent Skills format with the reference validator:
Validate Agent Skills format with the reference validator, which is already a dev dependency:
```bash
skills-ref validate ./skills/skill-name
uv sync
uv run skills-ref validate ./skills/skill-name
# or check every skill at once, the same way CI does
for d in skills/*/; do uv run skills-ref validate "$d"; done
```
If `skills-ref` is not installed, follow the installation instructions from the [skills-ref reference library](https://github.com/agentskills/agentskills/tree/main/skills-ref).
CI runs this on every pull request that touches `skills/`, along with the repo-specific checks in `.github/workflows/skill-spec-validation.yml` (a required `metadata.version`, `allowed-tools` as a string, quoted `metadata` scalars, and a warning above 500 lines).
Security-scan new or substantially changed skills:
@@ -160,15 +258,101 @@ skill-scanner scan ./skills/skill-name --use-behavioral
A clean scan reduces review noise but does not replace manual review.
## Tests
**Tests never live under `skills/`.** A skill directory ships only what an agent loads, so tests go in the repository-level suite instead — one directory per skill, named exactly after the skill directory:
```text
tests/
└── skill-name/ # matches skills/skill-name/
├── test_scripts.py
└── fixtures/ # optional test data
```
A test reaches the skill it covers through an explicit anchor rather than a relative walk:
```python
SKILL_ROOT = Path(__file__).resolve().parents[2] / "skills" / "skill-name"
```
Anything the CLIs under test resolve relative to the working directory should be repo-root relative, since the suite runs from the repository root — `tests/skill-name/fixtures/manifest.json`, not `fixtures/manifest.json`.
Run one skill's suite, or the whole tree:
```bash
uv run --with pytest python -m pytest tests/skill-name -q
# every skill, in a separate process each, after the repo-wide guard
uv run --with pytest python tests/run_all.py
```
Each skill's suite must run in its own process. Skills' `scripts/` directories own plain top-level module names — 32 skills ship a `scripts/_common.py`, and names like `cluster.py` and `validate_manifest.py` recur — so collecting two skills into one interpreter would resolve those imports to whichever skill was imported first and silently test the wrong files. `tests/conftest.py` rejects a multi-skill session, and `tests/run_all.py` forks per skill.
### The repo-wide guard, and what you no longer have to write
```bash
uv run --with pytest python -m pytest tests/_meta -q
```
`tests/_meta` is the check to run first and the one CI blocks on. It needs no scientific packages and finishes in seconds. It spans every skill at once — safe, because it parses scripts with `ast` and never imports them — and it enforces the rule this whole layout exists for: **a skill that ships `scripts/` must have a suite at `tests/<name>/` and a `[skills.<name>]` entry in `skill-requirements.toml`.** It also runs the shared structural contract over every skill: frontmatter conformance, the 500-line `SKILL.md` limit, no tests or compiled bytecode under `skills/`, every local link resolving, every script parsing, no `eval`/`exec`/`os.system`, no script shadowing a standard-library module, no hardcoded local path, and valid shell scripts.
Because `tests/_meta` already covers all of that repo-wide, a per-skill suite should not repeat it. Write only what is specific to the skill, and pull the shared pieces from `tests/_contract/`, which `tests/conftest.py` registers as the importable module `skill_contract`:
```python
import skill_contract
# every argparse script answers --help; skips when the skill's packages are
# absent, and runs for real under --isolated
CliHelpTests = skill_contract.cli.help_test_case(SKILL_ROOT)
# for scripts that are importable libraries with a worked example under
# `if __name__ == "__main__":` rather than argparse CLIs
DemoBlockTests = skill_contract.cli.demo_test_case(SKILL_ROOT, ("doe_designs.py",))
```
`skill_contract.office` and `skill_contract.schematic` cover files that several skills ship byte-identical copies of — the OOXML `office/` tree under `docx`/`pptx`/`xlsx`, and the AI schematic generator under five skills. Instantiate them against your skill root rather than writing the tests again; `tests/_meta` separately fails if the copies drift apart, so those files have to be changed together.
Guard heavy imports at module scope so a suite degrades to skips rather than a collection error when a package is missing:
```python
np = pytest.importorskip("numpy", reason="skill-name needs numpy")
```
### One environment per skill
Four suites fail on this repository's default environment because their scientific dependencies are not installed (`exa-search`, `qutip`, `scikit-survival`, `simpy`), and installing them all into one environment is not possible: the skills' upstream pins contradict each other. `opentrons` requires `numpy<2`; `esm` caps `transformers` below the release the `transformers` skill targets; `geniml` and `spikeinterface` pin `zarr<3` while the `zarr-python` skill targets 3.x; `bioservices` caps `lxml<6` while `matchms` requires 6.0.2+; and `pytdc`, `molfeat`, `deepchem`, `histolab`, `vaex`, and `ete3` each need an interpreter older than 3.13.
`--isolated` therefore gives each skill its own throwaway `uv` environment, built from [`tests/skill-requirements.toml`](tests/skill-requirements.toml):
```bash
python tests/run_all.py --isolated # every suite, one env each
python tests/run_all.py --isolated qutip exa-search # just these
```
Nothing is installed into the project environment, so `uv sync` is unaffected. Each `[skills.<name>]` entry lists the packages that skill documents and, where needed, a `python` version for that skill alone — uv downloads the interpreter on demand. Packages that cannot be installed at all (a GitHub-only SDK, a conda-forge-only library, a CUDA build) are listed under `[unavailable]` with the reason, and the runner prints them so the gap appears in the test output.
A new skill that ships `scripts/` needs a `[skills.<name>]` entry — `tests/_meta` fails without one. Use `packages = []` when its bundled tooling is standard-library only — the skill still gets a clean environment with just pytest. uv caches wheels globally, so repeat runs create each environment in milliseconds.
`.github/workflows/skill-tests.yml` runs `tests/_meta` plus every `packages = []` suite on each pull request, which is fast and needs no wheels beyond pytest. The full `--isolated` sweep is not run in CI: it builds an environment per skill, and several of them need a CUDA toolchain, a JDK, or a local MATLAB install that a runner does not have. Run it locally before a release, and whenever you change anything under `tests/_contract/`.
## Pull Request Checklist
Before submitting a pull request, confirm:
- The skill directory name and `name` frontmatter match exactly.
- The skill directory contains only `SKILL.md`, `references/`, `scripts/`, and `assets/` — no `tests/` directory and no `test_*.py` files. Tests live in `tests/<skill-name>/`.
- `SKILL.md` has valid YAML frontmatter and Markdown body content.
- `uv run skills-ref validate ./skills/<name>` passes.
- Only the six spec-defined top-level fields are present; anything else lives under `metadata`.
- `metadata` is a block mapping, not single-line JSON, and its scalar values are quoted where needed.
- Any `metadata.openclaw` or `metadata.hermes` block is a nested mapping, not a JSON string.
- If the skill needs credentials, they are named in `compatibility` and declared in `metadata.openclaw.envVars`.
- `metadata.version` exists and is quoted.
- Existing skills have a version bump when changed.
- If the collection version changes, `plugin.json` `version` matches `pyproject.toml`.
- The `description` clearly says what the skill does and when to use it.
- `uv run --with pytest python -m pytest tests/_meta -q` passes. This is what CI blocks on, and it catches a missing suite, a missing `skill-requirements.toml` entry, a broken local link, a leaked local path, and a `SKILL.md` over 500 lines.
- If the skill ships `scripts/`: a suite exists at `tests/<skill-name>/`, a `[skills.<skill-name>]` entry exists in `tests/skill-requirements.toml`, and `python tests/run_all.py --isolated <skill-name>` passes.
- Examples and scripts have been tested or clearly marked as illustrative.
- No secrets, credentials, private data, or unsafe instructions are included.
- Relevant official documentation is linked where useful.

422
README.md
View File

@@ -1,27 +1,32 @@
# Scientific Agent Skills
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE.md)
[![Version](https://img.shields.io/badge/Version-2.43.0-blue.svg)](pyproject.toml)
[![Skills](https://img.shields.io/badge/Skills-140-brightgreen.svg)](#-whats-included)
[![arXiv](https://img.shields.io/badge/arXiv-2609.00065-b31b1b.svg)](https://arxiv.org/abs/2609.00065)
[![Version](https://img.shields.io/badge/Version-2.65.0-blue.svg)](pyproject.toml)
[![Skills](https://img.shields.io/badge/Skills-163-brightgreen.svg)](#-whats-included)
[![Databases](https://img.shields.io/badge/Databases-100%2B-orange.svg)](#-whats-included)
[![Agent Skills](https://img.shields.io/badge/Standard-Agent_Skills-blueviolet.svg)](https://agentskills.io/)
[![Agent Plugins](https://img.shields.io/badge/Standard-Agent_Plugins-0A7A72.svg)](https://agent-plugins.org/)
[![Security Scan](https://github.com/K-Dense-AI/scientific-agent-skills/actions/workflows/security-scan.yml/badge.svg)](https://github.com/K-Dense-AI/scientific-agent-skills/actions/workflows/security-scan.yml)
[![Skill Tests](https://github.com/K-Dense-AI/scientific-agent-skills/actions/workflows/skill-tests.yml/badge.svg)](https://github.com/K-Dense-AI/scientific-agent-skills/actions/workflows/skill-tests.yml)
[![Works with](https://img.shields.io/badge/Works_with-Cursor_|_Claude_Code_|_Codex_|_Google_Antigravity-blue.svg)](#-getting-started)
[![X](https://img.shields.io/badge/Follow_on_X-%40k__dense__ai-000000?logo=x)](https://x.com/k_dense_ai)
[![LinkedIn](https://img.shields.io/badge/LinkedIn-K--Dense_Inc.-0A66C2?logo=linkedin)](https://www.linkedin.com/company/k-dense-inc)
[![YouTube](https://img.shields.io/badge/YouTube-K--Dense_Inc.-FF0000?logo=youtube)](https://www.youtube.com/@K-Dense-Inc)
## Star History
[![Star History Chart](https://api.star-history.com/svg?repos=K-Dense-AI/scientific-agent-skills&type=date&legend=top-left)](https://www.star-history.com/#K-Dense-AI/scientific-agent-skills&type=date&legend=top-left)
[![Reddit](https://img.shields.io/badge/Reddit-u%2F--k--dense---FF4500?logo=reddit&logoColor=white)](https://www.reddit.com/user/-k-dense-/)
> **🔔 Claude Scientific Skills is now Scientific Agent Skills.** Same skills, broader compatibility — now works with any AI agent that supports the open [Agent Skills](https://agentskills.io/) standard, not just Claude.
> **New: [K-Dense BYOK](https://github.com/K-Dense-AI/k-dense-byok)** — A free, open-source AI co-scientist that runs on your desktop, powered by Scientific Agent Skills. Bring your own API keys, pick from 40+ models, and get a full research workspace with web search, file handling, 100+ scientific databases, and access to all 140 skills in this repo. Your data stays on your computer, and you can optionally scale to cloud compute via [Modal](https://modal.com/) for heavy workloads. [Get started here.](https://github.com/K-Dense-AI/k-dense-byok)
> **New: [K-Dense BYOK](https://github.com/K-Dense-AI/k-dense-byok)** — A free, open-source AI co-scientist that runs on your desktop, powered by Scientific Agent Skills. Bring your own API keys, pick from 40+ models, and get a full research workspace with web search, file handling, 100+ scientific databases, and access to all 163 skills in this repo. Your data stays on your computer, and you can optionally scale to cloud compute via [Modal](https://modal.com/) for heavy workloads. [Get started here.](https://github.com/K-Dense-AI/k-dense-byok)
> **Stay up to date:** Follow K-Dense on [X](https://x.com/k_dense_ai), [LinkedIn](https://www.linkedin.com/company/k-dense-inc), and [YouTube](https://www.youtube.com/@K-Dense-Inc) for new skills, release announcements, walkthroughs, research workflow demos, and examples you can use with your own AI agent.
> **🎥 Webinar recording — [Getting Started with K-Dense BYOK](https://youtu.be/Du3BIE48DKc?si=9dPpETKSc2PeQbvU)**
> A hands-on walkthrough of [K-Dense BYOK](https://github.com/K-Dense-AI/k-dense-byok), our free, open-source AI co-scientist that runs locally on your own machine and is powered by Scientific Agent Skills. We cover how to set it up, bring your own API keys, and run real research workflows with these skills. No prior technical experience needed. **[Watch the recording →](https://youtu.be/Du3BIE48DKc?si=9dPpETKSc2PeQbvU)**
A comprehensive collection of **140 ready-to-use scientific and research skills** (covering cancer genomics, drug-target binding, molecular dynamics, RNA velocity, geospatial science, time series forecasting, scientific ML resource discovery via Hugging Science, 78+ scientific databases, and more) for any AI agent that supports the open [Agent Skills](https://agentskills.io/) standard, created by [K-Dense](https://k-dense.ai). Works with **Cursor, Claude Code, Codex, Google Antigravity, and more**. Transform your AI agent into a research assistant capable of executing complex multi-step scientific workflows across biology, chemistry, medicine, and beyond.
> **Stay up to date:** Follow K-Dense on [X](https://x.com/k_dense_ai), [LinkedIn](https://www.linkedin.com/company/k-dense-inc), [YouTube](https://www.youtube.com/@K-Dense-Inc), and [Reddit](https://www.reddit.com/user/-k-dense-/) for new skills, release announcements, walkthroughs, research workflow demos, and examples you can use with your own AI agent.
> **📄 Paper:** Scientific Agent Skills is described in [*Scientific Agent Skills: A Library of Procedural Knowledge for Research Agents*](https://arxiv.org/abs/2609.00065) (arXiv:2609.00065). If you use these skills in your research, please [cite the paper](#-citation).
A comprehensive collection of **163 ready-to-use scientific and research skills** (covering cancer genomics, individual-level 1000 Genomes queries, hosted regulatory-sequence prediction, live pathogen-variant surveillance, analytical method validation, PK/PD modelling and dose selection, full-text biomedical and regulatory literature retrieval, drug-target binding, bounded biomedical knowledge graph search, molecular dynamics, RNA velocity, microbiome foundation models, geospatial science, time series forecasting, scientific ML resource discovery via Hugging Science, 78+ scientific databases, and more) for any AI agent that supports the open [Agent Skills](https://agentskills.io/) standard, created by [K-Dense](https://k-dense.ai). The repository is also a portable [Agent Plugins](https://agent-plugins.org/) package (`plugin.json` + `skills/`), so plugin-capable clients can load the whole collection as one plugin. Works with **Cursor, Claude Code, Codex, Google Antigravity, and more**. Transform your AI agent into a research assistant capable of executing complex multi-step scientific workflows across biology, chemistry, medicine, and beyond.
> ⭐ **Help make AI for science easier to discover:** If Scientific Agent Skills saves you time, teaches your agent a workflow, or helps your lab move faster, please [star this repository](https://github.com/K-Dense-AI/scientific-agent-skills). A star is a public signal that these open, reusable research skills are worth maintaining: it helps scientists, engineers, and open-source contributors find the project, shows which agent-skill standards are gaining real adoption, and gives us a clear reason to keep expanding the collection for the community.
@@ -31,9 +36,10 @@ These skills enable your AI agent to seamlessly work with specialized scientific
- 🧬 Bioinformatics & Genomics - Sequence analysis, single-cell RNA-seq, gene regulatory networks, variant annotation, phylogenetic analysis
- 🧪 Cheminformatics & Drug Discovery - Molecular property prediction, virtual screening, ADMET analysis, molecular docking, lead optimization
- 🔬 Proteomics & Mass Spectrometry - LC-MS/MS processing, peptide identification, spectral matching, protein quantification
- 🏥 Clinical Research & Precision Medicine - Clinical trials, pharmacogenomics, variant interpretation, drug safety, clinical decision support, treatment planning
- 🧠 Healthcare AI & Clinical ML - EHR analysis, physiological signal processing, medical imaging, clinical prediction models
- 🖼️ Medical Imaging & Digital Pathology - DICOM processing, whole slide image analysis, computational pathology, radiology workflows
- 🏥 Clinical Research & Evidence Workflows - Clinical trials, pharmacogenomics, variant evidence review, pharmacokinetic/pharmacodynamic modelling and dose-regimen evaluation, aggregate decision-support evaluation, source-bound draft report structures, and formatting of clinician-authored treatment decisions
- 🧠 Healthcare AI & Biosignal Research - EHR and model research, physiological signal analysis, and retrospective validation—not patient-specific diagnosis, treatment, alarms, or deployment decisions
- 🐭 Preclinical Research & Animal Welfare - Multivariate severity scoring and humane-endpoint forecasting for laboratory animal studies, for 3Rs/refinement analysis and EU Directive 2010/63/EU reporting—an aid to severity assessment, never a decision rule
- 🖼️ Medical Imaging & Digital Pathology - Privacy-aware DICOM processing and research-only whole-slide image analysis, computational pathology, and radiology data workflows
- 🤖 Machine Learning & AI - Deep learning, reinforcement learning, time series analysis, model interpretability, Bayesian methods
- 🔮 Materials Science & Chemistry - Crystal structure analysis, phase diagrams, metabolic modeling, computational chemistry
- 🌌 Physics & Astronomy - Astronomical data analysis, coordinate transformations, cosmological calculations, symbolic mathematics, physics computations
@@ -41,26 +47,40 @@ These skills enable your AI agent to seamlessly work with specialized scientific
- 📊 Data Analysis & Visualization - Statistical analysis, network analysis, time series, publication-quality figures, large-scale data processing, EDA
- 🌍 Geospatial Science & Remote Sensing - Satellite imagery processing, GIS analysis, spatial statistics, terrain analysis, machine learning for Earth observation
- 🧪 Laboratory Automation - Liquid handling protocols, lab equipment control, workflow automation, LIMS integration
- 📚 Scientific Communication - Literature review, peer review, scientific writing, document processing, posters, slides, schematics, citation management
- 📚 Scientific Communication - Evidence-traceable writing, confidential authorized peer review, literature synthesis, document processing, macro-free PPTX posters, slides, schematics, and citation management
- 🔬 Multi-omics & Systems Biology - Multi-modal data integration, pathway analysis, network biology, systems-level insights
- 🧬 Protein Engineering & Design - Protein language models, structure prediction, sequence design, function annotation
- 🎓 Research Methodology - Hypothesis generation, scientific brainstorming, critical thinking, grant writing, scholar evaluation
- 🧰 Agent Platforms & Infrastructure - Build on Pi with SDK, RPC, extensions, custom providers/models, packages, TUI components, and session tooling
- 🎓 Research Methodology - Evidence-bounded candidate hypotheses, scientific brainstorming, critical thinking, grant writing, and qualitative low-stakes evaluation of scholarly works
- ⚖️ Regulatory & Standards - Draft evidence-preparation artifacts for ISO management-system and laboratory standards, plus analytical method validation, verification, and transfer under ICH/USP/CLSI frameworks—prepared for qualified review, never a certification, accreditation, or method-release decision
**Transform your AI coding agent into an 'AI Scientist' on your desktop!**
> 🎬 **New to Scientific Agent Skills?** Watch our [Getting Started with Scientific Agent Skills](https://youtu.be/ZxbnDaD_FVg) video for a quick walkthrough.
### 🎥 More tutorials
Recorded walkthroughs of these skills on real research tasks, from the [K-Dense YouTube channel](https://www.youtube.com/@K-Dense-Inc):
| Video | What it covers |
|-------|----------------|
| [Skills 101: Build Your Own Scientific Agent Skill](https://youtu.be/lVZbHiwzMEg) | Writing, testing, and packaging a new skill from scratch |
| [Literature Review and Hypothesis Generation](https://youtu.be/wKJp8y4ZyiM) | Searching the literature and generating grounded hypotheses |
| [Draft and Budget an Experimental Protocol](https://youtu.be/Yz2L5s_M_34) | Turning a planned experiment into a costed, written protocol |
| [Draft Responses to Reviewer Comments](https://youtu.be/0MmU-Pmtg1o) | Building a point-by-point rebuttal from reviewer feedback |
| [Can AI Reproduce a Nature Medicine Paper?](https://youtu.be/4WTCK9kSfdk) | An end-to-end reproduction attempt on a published analysis |
---
## 📦 What's Included
This repository provides **140 scientific and research skills** organized into the following categories:
This repository provides **163 scientific and research skills** organized into the following categories:
- **100+ Scientific & Financial Databases** - A unified database-lookup skill provides direct access to 78 public databases (PubChem, ChEMBL, UniProt, COSMIC, ClinicalTrials.gov, FRED, USPTO, and more), plus dedicated skills for DepMap, Imaging Data Commons, PrimeKG, U.S. Treasury Fiscal Data, and Hugging Science (curated catalog of scientific datasets, models, and demos across 17 scientific domains on Hugging Face). Multi-database packages like BioServices (~40 bioinformatics services), BioPython (38 NCBI sub-databases via Entrez), and gget (20+ genomics databases) add further coverage
- **70+ Optimized Python Package Skills** - Explicitly defined skills for RDKit, Scanpy, PyTorch Lightning, scikit-learn, BioPython, pyzotero, BioServices, PennyLane, Qiskit, Molecular Dynamics (OpenMM/MDAnalysis), scVelo, TimesFM, and others — with curated documentation, examples, and best practices. Note: the agent can write code using *any* Python package, not just these; these skills simply provide stronger, more reliable performance for the packages listed
- **100+ Scientific & Financial Databases** - A unified database-lookup skill provides deterministic, provenance-rich access to 78 public databases (PubChem, ChEMBL, UniProt, COSMIC, ClinicalTrials.gov, FRED, USPTO, and more), plus dedicated skills for DepMap, Imaging Data Commons, PrimeKG, NCATS ARAX, U.S. Treasury Fiscal Data, Hugging Science, OneKGPd, and Genomic Intelligence. Multi-database packages like BioServices (~40 bioinformatics services), BioPython (39 NCBI sub-databases via Entrez), and gget (20+ genomics databases) add further coverage
- **70+ Optimized Python Package Skills** - Explicitly defined, version-aware workflows for RDKit, Scanpy, PyTorch Lightning, scikit-learn, PyTDC, PathML, pydicom, NeuroKit2, PufferLib, QuTiP, GeoPandas, pymatgen, BioPython, Qiskit, Molecular Dynamics (OpenMM/MDAnalysis), and others. The agent can still use *any* Python package; these skills provide stronger, safer guidance for the packages listed
- **9 Scientific Integration Skills** - Explicitly defined skills for Benchling, DNAnexus, LatchBio, OMERO, Protocols.io, Open Notebook, Ginkgo Cloud Lab, LabArchives, and Opentrons. Again, the agent is not limited to these — any API or platform reachable from Python is fair game; these skills are the optimized, pre-documented paths
- **30+ Analysis & Communication Tools** - Literature review, scientific writing, peer review, document processing, Paperzilla, PACSOMATIC, Exa Search, posters, slides, schematics, infographics, Mermaid diagrams, and more
- **10+ Research & Clinical Tools** - Hypothesis generation, grant writing, clinical decision support, treatment plans, BIDS, regulatory compliance, scenario analysis, and workflow-derived skill drafting with Autoskill
- **30+ Analysis & Communication Tools** - Literature review, evidence-traceable scientific writing, confidential peer review, document processing, Paperclip (full-text papers, FDA/PMDA/EMA filings, and trial registries with line-pinned citations), Paperzilla, Exa Search, macro-free PPTX posters, slides, schematics, infographics, Mermaid diagrams, and more
- **10+ Research & Clinical Tools** - Evidence-bounded hypothesis generation, grant writing, aggregate clinical decision-support research, clinician-authored treatment-plan formatting, PK/PD modelling and simulation (NCA, population PK, exposure-response, bioequivalence, first-in-human dose), BIDS, ISO standards-readiness evidence preparation (ISO 13485, ISO 14971, ISO/IEC 17025, ISO 15189), analytical method validation and transfer (ICH Q2(R2)/Q14, ICH M10, USP, CLSI EP), scenario analysis, and workflow-derived skill drafting with Autoskill
Each skill includes:
- ✅ Comprehensive documentation (`SKILL.md`)
@@ -68,6 +88,7 @@ Each skill includes:
- ✅ Use cases and best practices
- ✅ Integration guides
- ✅ Reference materials
- ✅ A test suite for every skill that ships `scripts/` — CI blocks a pull request that adds bundled tooling without one
---
@@ -82,6 +103,7 @@ Each skill includes:
- [Quick Examples](#-quick-examples)
- [Use Cases](#-use-cases)
- [Available Skills](#-available-skills)
- [From the Blog](#-from-the-blog)
- [Contributing](#-contributing)
- [Troubleshooting](#-troubleshooting)
- [FAQ](#-faq)
@@ -95,21 +117,22 @@ Each skill includes:
### ⚡ **Accelerate Your Research**
- **Save Days of Work** - Skip API documentation research and integration setup
- **Production-Ready Code** - Tested, validated examples following scientific best practices
- **Reviewed Starting Points** - Tested examples with explicit validation, provenance, and safety boundaries; verify them in the target environment
- **Multi-Step Workflows** - Execute complex pipelines with a single prompt
### 🎯 **Comprehensive Coverage**
- **140 Skills** - Extensive coverage across all major scientific domains
- **163 Skills** - Extensive coverage across all major scientific domains
- **100+ Databases** - Unified access to 78+ databases via database-lookup, plus dedicated data access skills and multi-database packages like BioServices, BioPython, and gget
- **70+ Optimized Python Package Skills** - RDKit, Scanpy, PyTorch Lightning, scikit-learn, BioServices, PennyLane, Qiskit, Molecular Dynamics (OpenMM/MDAnalysis), scVelo, TimesFM, and others (the agent can use any Python package; these are the pre-documented, higher-performing paths)
- **70+ Optimized Python Package Skills** - Current, version-scoped guidance for packages including RDKit, Scanpy, PyTorch Lightning, scikit-learn, PyTDC, pydicom, PufferLib, QuTiP, GeoPandas, pymatgen, Qiskit, Molecular Dynamics (OpenMM/MDAnalysis), scVelo, and TimesFM (the agent can use any Python package; these are the pre-documented paths)
### 🔧 **Easy Integration**
- **Simple Setup** - Copy skills to your skills directory and start working
- **Automatic Discovery** - Your agent automatically finds and uses relevant skills
- **Configured Discovery** - Compatible hosts can find and use relevant skills from their configured skill paths
- **Well Documented** - Each skill includes examples, use cases, and best practices
### 🌟 **Maintained & Supported**
- **Regular Updates** - Continuously maintained and expanded by K-Dense team
- **Tested in CI** - Every skill that ships `scripts/` has a suite under `tests/`, plus a repo-wide structural contract (frontmatter, link resolution, script parsing, `--help` behavior) that runs on every pull request
- **Community Driven** - Open source with active community contributions
- **Enterprise Ready** - Commercial support available for advanced needs
@@ -117,7 +140,7 @@ Each skill includes:
## 🎯 Getting Started
### Option 1: npx (all platforms)
### Option 1: npx (supported hosts)
Install Scientific Agent Skills with a single command:
@@ -125,7 +148,7 @@ Install Scientific Agent Skills with a single command:
npx skills add K-Dense-AI/scientific-agent-skills
```
This is the official standard approach for installing Agent Skills across **all platforms**, including **Claude Code**, **Claude Cowork**, **Codex**, **Gemini CLI**, **Google Antigravity**, **Cursor**, and any other agent that supports the open [Agent Skills](https://agentskills.io/) standard.
This is a common standards-based installer for supported Agent Skills hosts, including current versions of **Claude Code**, **Claude Cowork**, **Codex**, **Gemini CLI**, **Google Antigravity**, and **Cursor**. Confirm installation paths and optional metadata behavior in your host's current documentation.
### Option 2: GitHub CLI (`gh skill`)
@@ -153,7 +176,7 @@ Pin to a specific release tag or commit SHA for reproducible installs:
```bash
# Pin to a release tag
gh skill install K-Dense-AI/scientific-agent-skills --pin v1.0.0
gh skill install K-Dense-AI/scientific-agent-skills --pin v2.65.0
# Pin to a commit SHA
gh skill install K-Dense-AI/scientific-agent-skills --pin abc123def
@@ -169,7 +192,47 @@ gh skill update
gh skill update --all
```
**That's it!** Your AI agent will automatically discover the skills and use them when relevant to your scientific tasks. You can also invoke any skill manually by mentioning the skill name in your prompt.
### Option 3: Agent Plugins (Cursor, Codex, and other plugin clients)
This repository is a valid [Agent Plugins](https://agent-plugins.org/) 1.0.0 package: root [`plugin.json`](plugin.json) plus Agent Skills under `skills/`. Clients that support the standard discover every immediate child of `skills/` that contains a `SKILL.md`.
**Cursor** — symlink or copy the repo into the local plugins directory, then reload:
```bash
mkdir -p ~/.cursor/plugins/local
ln -s "$(pwd)" ~/.cursor/plugins/local/scientific-agent-skills
```
Restart Cursor or run **Developer: Reload Window**, then confirm the plugin and its skills appear under **Customize**. See [Cursor plugins](https://cursor.com/docs/plugins).
**Codex** — install from a local checkout (confirm the current CLI flag names in Codex docs):
```bash
codex plugins install .
```
Compatible clients (Cursor, Codex, GitHub Copilot, VS Code, Kiro, and others listed at [agent-plugins.org](https://agent-plugins.org/compatible-clients)) share the same package layout; installation UX stays client-specific.
### Other Agent Skills hosts (OpenClaw, NemoClaw, Pi, Hermes, …)
Agent hosts differ in install paths, discovery settings, and support for optional frontmatter fields. `npx skills add` (Option 1) commonly installs into the `~/.agents/skills/` convention, with project-scoped installs under `.agents/skills/`; confirm both paths against your host's current documentation. To install manually on a host configured to scan one of those locations:
```bash
git clone https://github.com/K-Dense-AI/scientific-agent-skills.git ~/.agents/skills/scientific-agent-skills # user-level
git clone https://github.com/K-Dense-AI/scientific-agent-skills.git .agents/skills/scientific-agent-skills # project-level
```
For Hermes versions that support skill taps, add the repository as a tap:
```bash
hermes skills tap add K-Dense-AI/scientific-agent-skills
```
Every `SKILL.md` has YAML frontmatter, but legacy and community skills vary in `metadata` formatting (block or flow style) and optional extension fields. Repository updates must keep `metadata.version` as a quoted numeric string and pass canonical `skills-ref validate ./skills/<skill-name>` checks. Hosts may interpret optional metadata and credential prompts differently, so verify behavior on the target host. Because 163 skills add up to a lot of standing context, consider installing a topical subset rather than the whole collection.
> **NemoClaw note:** NemoClaw runs agents inside NVIDIA OpenShell with default-deny outbound networking. Skills are discovered and loaded normally, but any skill that needs the network — package installs via `uv`, or API calls (Exa, Parallel, Benchling, NCBI, Materials Project, …) — only works once the operator pre-approves the relevant domains in the OpenShell TUI.
**That's it!** A compatible host can discover the skills from its configured paths and use them when relevant. You can also invoke any skill manually by mentioning the skill name in your prompt.
---
@@ -195,7 +258,7 @@ We recommend the following:
```
- **Report anything suspicious.** If you find a skill that looks malicious or behaves unexpectedly, please [open an issue](https://github.com/K-Dense-AI/scientific-agent-skills/issues) immediately so we can investigate.
All skills are scanned on an approximately weekly basis, and [SECURITY.md](SECURITY.md) is updated with the latest results. We try to address security gaps as they arise.
Skills are scanned weekly — incrementally, so unchanged skills carry their previous findings forward, with a full rescan of everything at least every 30 days and whenever the scanner or model changes — and the results are published to [docs/security-report.md](docs/security-report.md). See [SECURITY.md](SECURITY.md) for our security policy, what is in scope, how to report a vulnerability privately, and how to contest a scan finding. We try to address security gaps as they arise.
---
@@ -214,6 +277,12 @@ Scientific Agent Skills is powered by **50+ incredible open source projects** ma
---
## 🙏 Skill Credits
The **[docx](skills/docx/)**, **[pdf](skills/pdf/)**, **[pptx](skills/pptx/)**, and **[xlsx](skills/xlsx/)** document skills are created and maintained by **Anthropic** and vendored here from [anthropics/skills](https://github.com/anthropics/skills/tree/main/skills). They are used under Anthropic's terms — see each skill's `LICENSE.txt` — and we track upstream so you get their latest improvements. All credit for those four skills goes to Anthropic.
---
## ⚙️ Prerequisites
- **Python**: 3.13+ for repository tooling; individual skill dependencies may support broader Python ranges
@@ -255,7 +324,7 @@ For more installation options and details, visit the [official uv documentation]
Once you've installed the skills, you can ask your AI agent to execute complex multi-step scientific workflows. Here are some example prompts:
### 🧪 Drug Discovery Pipeline
**Goal**: Find novel EGFR inhibitors for lung cancer treatment
**Goal**: Prioritize EGFR inhibitor candidates for preclinical lung-cancer research
**Prompt**:
```
@@ -314,18 +383,20 @@ MedChem/molfeat.
---
### 🏥 Clinical Variant Interpretation
**Goal**: Analyze VCF file for hereditary cancer risk assessment
### 🏥 Research Variant Evidence Review
**Goal**: Annotate a synthetic or properly de-identified VCF for hereditary-cancer research and qualified review
**Prompt**:
```
Use available skills you have access to whenever possible. Parse VCF with pysam, annotate variants with Ensembl VEP, query ClinVar for pathogenicity,
check COSMIC for cancer mutations, retrieve gene info from NCBI Gene, analyze protein impact
with UniProt, search PubMed for case reports, check ClinPGx for pharmacogenomics, generate
clinical report with document processing tools, and find matching trials on ClinicalTrials.gov.
Use available skills you have access to whenever possible. Work only with authorized synthetic
or de-identified data. Parse the VCF with pysam, annotate variants with Ensembl VEP, retrieve
ClinVar/COSMIC/NCBI Gene/UniProt evidence, and verify literature sources. Build an evidence-
traceable research summary with scientific-writing. If clinical-reports is used, create only a
visibly marked draft structure from a verified source-fact manifest for qualified review; do not
diagnose, assess individual risk, recommend treatment, or determine trial eligibility.
```
**Skills Used**: pysam, database-lookup, paper-lookup, clinical-reports, docx, pdf
**Skills Used**: pysam, database-lookup, paper-lookup, scientific-writing, clinical-reports
---
@@ -352,22 +423,28 @@ networks, and search GEO for similar patterns.
- **Virtual Screening**: Screen millions of compounds from PubChem/ZINC against protein targets
- **Lead Optimization**: Analyze structure-activity relationships with RDKit, generate analogs with datamol
- **ADMET Prediction**: Predict absorption, distribution, metabolism, excretion, and toxicity with DeepChem
- **Molecular Docking**: Predict binding poses and affinities with DiffDock
- **Molecular Docking**: Predict binding poses with DiffDock and rescore poses with affinity-oriented tools
- **Bioactivity Mining**: Query ChEMBL for known inhibitors and analyze SAR patterns
### 🧬 Bioinformatics & Genomics
- **Sequence Analysis**: Process DNA/RNA/protein sequences with BioPython and pysam
- **Single-Cell Analysis**: Analyze 10X Genomics data with Scanpy, identify cell types, infer GRNs with Arboreto
- **Variant Annotation**: Annotate VCF files with Ensembl VEP, query ClinVar for pathogenicity
- **Variant Annotation**: Annotate research VCF files with Ensembl VEP and retrieve ClinVar evidence for qualified interpretation
- **Variant Database Management**: Build scalable VCF databases with TileDB-VCF for incremental sample addition, efficient population-scale queries, and compressed storage of genomic variant data
- **Population Genomics**: Query variants, cohort sample IDs, and relatedness in the 3,202-person GRCh38 1000 Genomes cohort with OneKGPd
- **Regulatory Sequence Models**: Run hosted Genomic Intelligence promoter, splice, enhancer, chromatin, expression, and gene-annotation predictions for research—not clinical or diagnostic decisions
- **Pathogen Surveillance**: Track which viral lineages are circulating now and how fast they are growing (SARS-CoV-2, influenza including H5N1, RSV, mpox, measles, dengue) through the GenSpectrum LAPIS API, with reporting lag measured rather than assumed
- **Gene Discovery**: Query NCBI Gene, UniProt, and Ensembl for comprehensive gene information
- **Network Analysis**: Identify protein-protein interactions via STRING, map to pathways (KEGG, Reactome)
### 🏥 Clinical Research & Precision Medicine
- **Clinical Trials**: Search ClinicalTrials.gov for relevant studies, analyze eligibility criteria
- **Variant Interpretation**: Annotate variants with ClinVar, COSMIC, and ClinPGx for pharmacogenomics
- **Drug Safety**: Query FDA databases for adverse events, drug interactions, and recalls
- **Precision Therapeutics**: Match patient variants to targeted therapies and clinical trials
### 🏥 Clinical Research & Evidence Workflows
- **Clinical Trials**: Analyze aggregate trial landscapes and protocol criteria without deciding individual eligibility
- **Variant Evidence Review**: Annotate authorized research data with ClinVar, COSMIC, and ClinPGx; qualified professionals retain interpretation responsibility
- **Drug Safety Research**: Query FDA databases for aggregate adverse-event, interaction, and recall evidence
- **Clinical Pharmacology**: Derive exposure metrics from concentration-time data, fit compartmental and population PK models, relate exposure to effect, and evaluate dosing regimens, bioequivalence, and first-in-human dose
- **Full-Text Evidence Retrieval**: Search and read papers, regulatory filings, and trial records end to end with Paperclip, returning citations pinned to line numbers rather than to abstracts
- **Decision-Support Evaluation**: Prepare synthetic or aggregate evaluation, evidence-profile, privacy, and governance artifacts—not live clinical decisions
- **Clinician-Authored Documentation**: Structure verified source-bound report drafts and format treatment decisions already made by authorized licensed professionals
### 🔬 Multi-Omics & Systems Biology
- **Multi-Omics Integration**: Combine RNA-seq, proteomics, and metabolomics data
@@ -379,29 +456,34 @@ networks, and search GEO for similar patterns.
- **Statistical Analysis**: Perform hypothesis testing, power analysis, and experimental design
- **Publication Figures**: Create publication-quality visualizations with matplotlib and seaborn
- **Network Visualization**: Visualize biological networks with NetworkX
- **Report Generation**: Generate comprehensive reports with the PDF, DOCX, PPTX, XLSX, MarkItDown, LiteParse, and clinical-reporting skills
- **Report Generation**: Produce evidence-traceable research reports with Scientific Writing and document tools; Clinical Reports outputs remain visibly marked drafts built only from verified synthetic, de-identified, or aggregate source facts
### 🧪 Laboratory Automation
- **Protocol Design**: Create Opentrons protocols for automated liquid handling
- **LIMS Integration**: Integrate with Benchling and LabArchives for data management
- **Workflow Automation**: Automate multi-step laboratory workflows
- **Protocol Design**: Author and simulate Opentrons or PyLabRobot protocols before trained-operator review
- **LIMS/ELN Integration**: Prepare scoped Benchling and LabArchives operations with explicit authorization for remote writes
- **Workflow Automation**: Validate and simulate multi-step laboratory workflows offline; physical execution stays behind equipment-specific operator safety gates
---
## 📚 Available Skills
This repository contains **140 scientific and research skills** organized across multiple domains. Each skill provides comprehensive documentation, code examples, and best practices for working with scientific libraries, databases, and tools.
This repository contains **163 scientific and research skills** organized across multiple domains. Each skill provides comprehensive documentation, code examples, and best practices for working with scientific libraries, databases, and tools.
### Skill Categories
> **Note:** The Python package and integration skills listed below are *explicitly defined* skills — curated with documentation, examples, and best practices for stronger, more reliable performance. They are not a ceiling: the agent can install and use *any* Python package or call *any* API, even without a dedicated skill. The skills listed simply make common workflows faster and more dependable.
#### 🧬 **Bioinformatics & Genomics** (21 skills)
#### 🧬 **Bioinformatics & Genomics** (27 skills)
- RNA-seq pipelines: Bulk RNA-seq (end-to-end FASTQ -> counts -> DE -> enrichment orchestrator)
- Sequence analysis: BioPython, pysam, scikit-bio, BioServices
- Single-cell analysis: Scanpy, AnnData, scvi-tools, scVelo (RNA velocity), Arboreto, Cellxgene Census
- Genomic tools: gget, geniml, gtars, deepTools, FlowIO, Polars-Bio, Zarr, TileDB-VCF
- Genomic tools: gget, current geniml/Gtars interval workflows, deepTools, FlowIO, Polars-Bio, Zarr, TileDB-VCF
- Coordinate hygiene: Genomic Coordinates (convert intervals across BED/GFF/GTF/VCF/SAM/WIG conventions, normalise variant representations, and catch 0-based vs 1-based and assembly/contig-naming mismatches before they corrupt an analysis)
- Population and sequence intelligence: OneKGPd (individual-level 1000 Genomes cohort queries) and Genomic Intelligence (hosted regulatory/gene-expression predictions; research only)
- Differential expression: PyDESeq2
- Functional enrichment: Pathway Enrichment (ORA, GSEA/preranked, ssGSEA via gseapy + g:Profiler; GO, KEGG, Reactome, WikiPathways, MSigDB)
- Phylogenetics: ETE Toolkit, Phylogenetics (MAFFT, IQ-TREE 2, FastTree)
- Microbiome foundation models: Waypoint (Outpost Bio's open Waypoint-6m/45m/170m checkpoints, the Atlas 539k-sample MGnify pretraining corpus, and the eight-task Compass benchmark — embedding, fine-tuning, benchmarking, and pretraining on taxonomic abundance profiles, with MetaPhlAn/Kraken2/QIIME 2 conversion)
#### 🧪 **Cheminformatics & Drug Discovery** (10 skills)
- Molecular manipulation: RDKit, Datamol, Molfeat
@@ -410,29 +492,36 @@ This repository contains **140 scientific and research skills** organized across
- Molecular dynamics: OpenMM + MDAnalysis (MD simulation & trajectory analysis)
- Cloud quantum chemistry: Rowan (pKa, docking, cofolding)
- Drug-likeness: MedChem
- Benchmarks: PyTDC
- Benchmarks: PyTDC 1.1.15 on its verified CPython 3.11 compatibility stack
#### 🔬 **Proteomics & Mass Spectrometry** (2 skills)
- Spectral processing: matchms, pyOpenMS
#### 🏥 **Clinical Research & Precision Medicine** (8 skills)
#### 🏥 **Clinical Research & Evidence Workflows** (8 skills)
- Clinical databases: via Database Lookup (ClinicalTrials.gov, ClinVar, ClinPGx, COSMIC, FDA, cBioPortal, Monarch, and more)
- Clinical pharmacology: PK/PD Modeling (non-compartmental analysis, compartmental and population PK, exposure-response and Emax, TMDD, PBPK orientation, bioequivalence including RSABE/ABEL, allometric scaling and first-in-human dose, DDI prediction under ICH M12, concentration-QTc, and Bayesian therapeutic drug monitoring — stdlib + numpy/scipy, no proprietary estimation software invoked)
- Cancer genomics: DepMap (cancer dependency scores, drug sensitivity)
- Cancer imaging: Imaging Data Commons (NCI radiology & pathology datasets via idc-index)
- Healthcare AI: PyHealth, NeuroKit2, Clinical Decision Support
- Clinical documentation: Clinical Reports, Treatment Plans
- Healthcare AI research: PyHealth
- Decision-support research: local, aggregate or synthetic Clinical Decision Support evaluation and governance artifacts only
- Clinical documentation: source-bound Clinical Reports drafts and formatting of verified clinician-authored decisions with Treatment Plans; neither skill diagnoses or recommends care
#### 🖼️ **Medical Imaging & Digital Pathology** (3 skills)
- DICOM processing: pydicom
- Whole slide imaging: histolab, PathML
#### 🐭 **Preclinical Research & Animal Welfare** (1 skill)
- Severity assessment: RELSA Severity Assessment (multivariate RELSA scores from body weight, temperature, clinical/nesting scores, biomarkers, activity, heart rate, burrowing and wheel running; ARIMA humane-endpoint forecasting with 95% prediction intervals; KDE-derived attention and danger zones for 3Rs/refinement and EU Directive 2010/63/EU severity reporting) — an aid to severity assessment, never a decision rule
#### 🧠 **Neuroscience & Electrophysiology** (2 skills)
#### 🖼️ **Medical Imaging & Digital Pathology** (4 skills)
- DICOM processing: pydicom 3.0.2 with privacy-first local preflight and no diagnostic or de-identification-compliance claims
- Whole slide imaging: histolab and research-only PathML 3.0.5
- Virtual spatial transcriptomics: noncommercial DeepSpot-M for transcriptome-wide spatial gene expression from 224x224 H&E tiles
#### 🧠 **Neuroscience & Electrophysiology** (3 skills)
- Data standards: BIDS (Brain Imaging Data Structure for neuroscience and biomedical datasets)
- Neural recordings: Neuropixels-Analysis (extracellular spikes, silicon probes, spike sorting)
- Physiological signals: NeuroKit2 0.2.13 for reproducible research workflows—not diagnosis, monitoring decisions, or medical-device validation
#### 🤖 **Machine Learning & AI** (14 core skills)
- Deep learning: PyTorch Lightning, Transformers, Stable Baselines3, PufferLib
- Classical ML: scikit-learn, scikit-survival, SHAP
- Deep learning: PyTorch Lightning, Transformers, Stable Baselines3, and version-separated PufferLib 3.0/4.0 workflows
- Classical ML: scikit-learn, scikit-survival 0.28, and SHAP
- Time series: aeon, TimesFM (Google's zero-shot foundation model for univariate forecasting)
- Bayesian methods: PyMC
- Optimization: PyMOO
@@ -441,88 +530,106 @@ This repository contains **140 scientific and research skills** organized across
- Statistical modeling: statsmodels
#### 🔮 **Materials Science, Chemistry & Physics** (7 skills)
- Materials: Pymatgen
- Materials: current split pymatgen wrapper/core plus explicitly bounded Materials Project queries
- Metabolic modeling: COBRApy
- Astronomy: Astropy
- Quantum computing: Cirq, PennyLane, Qiskit, QuTiP
- Quantum computing: Cirq, PennyLane, Qiskit, QuTiP 5.3
#### ⚙️ **Engineering & Simulation** (4 skills)
- Numerical computing: MATLAB/Octave
- Computational fluid dynamics: FluidSim
- Discrete-event simulation: SimPy
#### ⚙️ **Engineering & Simulation** (6 skills)
- Lab hardware CAD: parametric build123d 0.11.1 models for microfluidic chips and molds, optomechanical mounts, microplate and cuvette adapters, and behavior rigs, checked against ANSI/SLAS and optical-table dimensional standards and reviewed with mandatory multi-view renders
- Numerical computing: proprietary MATLAB R2026a and distinct GNU Octave 11.3 planning/review workflows
- Computational fluid dynamics: bounded FluidSim 0.9 simulations with numerical-validity and HPC checks
- Experimental flow measurement: OpenPIV (velocity fields from PIV image pairs, interrogation-window cross-correlation, spurious-vector validation, vorticity/strain-rate/turbulence statistics)
- Discrete-event simulation: SimPy 4.1.2 with replication, warm-up, and output-analysis guidance
- Symbolic math: SymPy
#### 📊 **Data Analysis & Visualization** (19 skills)
#### 📊 **Data Analysis & Visualization** (22 skills)
- Visualization: Matplotlib, Seaborn, Scientific Visualization
- Geospatial analysis: GeoPandas, GeoMaster (remote sensing, GIS, satellite imagery, spatial ML, 500+ examples)
- Geospatial analysis: GeoPandas 1.1.4 and GeoMaster (remote sensing, GIS, satellite imagery, spatial ML, 500+ examples)
- Data processing: Dask, Polars, Vaex
- Network analysis: NetworkX
- Document processing: LiteParse (local PDF/document parsing with bounding boxes and OCR), MarkItDown, PDF, DOCX, PPTX, and XLSX
- Infographics: Infographics (AI-powered professional infographic creation)
- Diagrams: Markdown & Mermaid Writing (text-based diagrams as default documentation standard)
- Exploratory data analysis: EDA workflows
- Exploratory data analysis: bounded local EDA for explicitly supported formats, with unknown formats failing closed
- Statistical analysis: Statistical Analysis workflows
- Units and measurement uncertainty: Uncertainty & Units (pint dimensional checking, GUM uncertainty budgets, Type A/B evaluation, coverage factors and expanded uncertainty, Monte Carlo propagation, CODATA constants)
- Experimental design: Experimental Design (randomization, blocking, factorial/fractional-factorial DOE, crossover, cluster, sequential designs; pyDOE3)
- Statistical power: Statistical Power (sample-size & power for t-tests, ANOVA, proportions, correlation, regression — closed-form plus simulation-based for GLMs, mixed models, and cluster designs)
#### 🧪 **Laboratory Automation** (6 skills)
- Liquid handling: PyLabRobot and Opentrons
- Cloud lab: Ginkgo Cloud Lab (cell-free protein expression, fluorescent pixel art via autonomous RAC infrastructure)
- Protocol management: Protocols.io
- LIMS integration: Benchling, LabArchives
- Liquid handling: offline-first PyLabRobot planning/simulation and Opentrons authoring, with physical execution behind explicit operator safety gates
- Cloud lab: Ginkgo Cloud Lab (protein expression & purification across cell-free/E. coli/Pichia, IVT RNA synthesis, thermal shift and Echo-MS assays, SPR onboarding, fluorescent pixel art via autonomous RAC infrastructure)
- Protocol management: bounded protocols.io reads across documented v3/v4 endpoints and non-executing write plans
- LIMS/ELN integration: Benchling and the separate LabArchives legacy ELN and Inventory v1 APIs
#### 🔬 **Multi-omics & Systems Biology** (4 skills)
#### 🔬 **Multi-omics & Systems Biology** (3 skills)
- Pathway analysis: via Database Lookup (KEGG, Reactome, STRING) and PrimeKG
- Multi-omics: HypoGeniC
- Data management: LaminDB
#### 🧬 **Protein Engineering & Design** (3 skills)
#### 🧬 **Protein Engineering & Design** (4 skills)
- Protein language models: ESM
- Glycoengineering: Glycoengineering (N/O-glycosylation prediction, therapeutic antibody optimization)
- Cloud laboratory platform: Adaptyv (automated protein testing and validation)
- Cloud structure & design platform: Tamarind (managed-GPU access to AlphaFold, Boltz, Chai, ESMFold, RFdiffusion, ProteinMPNN, BoltzGen, antibody/nanobody design, DiffDock/Vina docking, binding affinity, and MSA generation via REST API or MCP)
#### 📚 **Scientific Communication** (27 skills)
- Literature: Paper Lookup (PubMed, PMC, bioRxiv, medRxiv, arXiv, OpenAlex, Crossref, Semantic Scholar, CORE, Unpaywall), Literature Review, Paperzilla
- Full-text corpus access: Paperclip (read-only virtual filesystem over ~11M full-text papers, 217K+ FDA/PMDA/EMA regulatory documents, clinical trial registries, and UniProt/PDB/ChEMBL entries — source-scoped semantic search, corpus-wide grep, SQL metadata queries, map/reduce reading across many papers, figure vision analysis, and line-pinned citations)
- Advanced paper search: BGPT Paper Search (25+ structured fields per paper — methods, results, sample sizes, quality scores — from full text, not just abstracts)
- Web search: Parallel Web, Exa Search, and Research Lookup
- Web intelligence: Parallel Web (web search, URL/PDF extraction, deep research, structured enrichment, entity discovery, and recurring monitoring), Exa Search, and Research Lookup
- Research notebooks: Open Notebook (self-hosted NotebookLM alternative — PDFs, videos, audio, web pages; 16+ AI providers; multi-speaker podcast generation)
- Writing: Scientific Writing, Peer Review
- Writing: evidence-traceable Scientific Writing and local, confidential, authorized Peer Review
- Document processing: LiteParse, PDF, DOCX, PPTX, XLSX, and MarkItDown
- Publishing and paper workflows: Venue Templates, PACSOMATIC
- Presentations: Scientific Slides, LaTeX Posters, PPTX Posters
- Publishing and paper workflows: Venue Templates
- Presentations: Scientific Slides, LaTeX Posters, and macro-free PPTX Posters generated from author-approved local manifests
- Diagrams: Scientific Schematics, Markdown & Mermaid Writing
- Infographics: Infographics (10 types, 8 styles, colorblind-safe palettes)
- Citations: Citation Management, pyzotero
- Illustration: Generate Image (AI image generation with FLUX.2 Pro and Gemini 3 Pro (Nano Banana Pro))
- Illustration: Generate Image (AI image generation with FLUX.2 Pro and Gemini 3.1 Flash Image / Nano Banana 2)
#### 🔬 **Scientific Databases & Data Access** (6 skills → 100+ databases total)
> A unified database-lookup skill provides direct REST API access to 78 public databases across all domains. Dedicated skills cover specialized data platforms. Multi-database packages like BioServices (~40 bioinformatics services), BioPython (38 NCBI sub-databases via Entrez), and gget (20+ genomics databases) add further coverage.
- Unified access: Database Lookup (78 databases spanning chemistry, genomics, clinical, pathways, patents, economics, and more — PubChem, ChEMBL, UniProt, PDB, AlphaFold, KEGG, Reactome, STRING, ClinVar, COSMIC, ClinicalTrials.gov, FDA, FRED, USPTO, SEC EDGAR, and dozens more)
#### 🔬 **Scientific Databases & Data Access** (11 skills → 100+ databases total)
> A unified database-lookup skill provides deterministic REST API access to 78 public databases across all domains, with retrieval contracts, pagination/count reconciliation, and endpoint provenance. Dedicated skills cover specialized data platforms. Multi-database packages like BioServices (~40 bioinformatics services), BioPython (39 NCBI sub-databases via Entrez), and gget (20+ genomics databases) add further coverage.
- Unified access: Database Lookup (78 databases spanning chemistry, genomics, clinical, pathways, patents, economics, and more — PubChem, ChEMBL, UniProt, PDB, AlphaFold, KEGG, Reactome, STRING, ClinVar, COSMIC, ClinicalTrials.gov, FDA, FRED, USPTO, SEC EDGAR, and dozens more — with auditable filters and provenance)
- Cancer genomics: DepMap (cancer cell line dependencies, drug sensitivity, gene effect profiles)
- Cancer imaging: Imaging Data Commons (NCI radiology & pathology datasets via idc-index)
- Knowledge graph: PrimeKG (precision medicine knowledge graph — genes, drugs, diseases, phenotypes)
- Biomedical knowledge graph search: [NCATS ARAX](skills/ncats-arax/) (bounded, Biolink-constrained one-hop and endpoint-pinned two-hop queries over knowledge graphs with up to five explicitly selected NCATS Translator providers, with provenance preservation)
- Fiscal data: U.S. Treasury Fiscal Data (national debt, Treasury statements, auctions, exchange rates)
- Scientific ML resource catalog: Hugging Science (curated index of datasets, models, blog posts, and interactive Spaces across 17 scientific domains — astronomy, biology, chemistry, climate, genomics, materials science, medicine, physics, scientific reasoning, and more — with usage patterns for `datasets`, `transformers`, and `gradio_client`)
- Individual-level population genomics: OneKGPd (3,202-person high-coverage 1000 Genomes cohort queries)
- Hosted regulatory genomics: Genomic Intelligence (promoter, splice, enhancer, chromatin, expression, and gene-annotation predictions for research use)
- Ontology identifiers: Ontology Term Resolution (resolve free-text tissue, cell-type, disease, phenotype, assay, chemical, organism, and developmental-stage labels to term IDs and validate CURIEs against EBI OLS4, for GEO/ENA/BioSamples/CELLxGENE/HCA/ISA-Tab metadata)
- Live pathogen surveillance: Pathogen Variant Surveillance (which viral lineages are circulating now, how fast they are growing, and what mutations they carry — SARS-CoV-2, influenza including H5N1, RSV, mpox, measles, dengue and more through the GenSpectrum LAPIS API, with lineage names resolved against the live pango-designation nomenclature and reporting lag measured rather than assumed)
#### 🔧 **Infrastructure & Platforms** (8 skills)
#### 🔧 **Infrastructure & Platforms** (11 skills)
- Cloud compute: Modal
- GPU acceleration: Optimize for GPU (CuPy, Numba CUDA, Warp, cuDF, cuML, cuGraph, KvikIO, cuCIM, cuxfilter, cuVS, cuSpatial, RAFT)
- Genomics platforms: DNAnexus, LatchBio
- Workflow engines: Nextflow (build/run/debug Nextflow & nf-core pipelines — DSL2 modules, executors/containers, HPC/cloud scaling) and pacsomatic (operator toolkit for the nf-core/pacsomatic tumor-normal somatic variant-calling workflow)
- Microscopy: OMERO
- Automation: Opentrons
- Resource detection: Get Available Resources
- Resource detection: Get Available Resources on request or before a clearly resource-sensitive local workload; redacted and without stress tests
- Workflow mining: Autoskill (local screenpipe-based repeated workflow detection and skill drafting)
- Agent platform development: Pi Agent (using Pi as a terminal coding harness and building on it with SDK, RPC/JSONL, extensions, custom providers/models, packages, TUI components, and session tooling)
#### 🎓 **Research Methodology & Planning** (11 skills)
- Ideation: Scientific Brainstorming, Hypothesis Generation
- Critical analysis: Scientific Critical Thinking, Scholar Evaluation
#### 🎓 **Research Methodology & Planning** (13 skills)
- Ideation: evidence-aware Scientific Brainstorming and non-scoring Hypothesis Generation that keeps hypotheses labeled as candidates
- Text-dataset hypothesis software: HypoGeniC/HypoRefine produces candidate textual patterns and task-prediction statistics, not validated scientific hypotheses
- Autonomous optimization: Arbor (Hypothesis Tree Refinement — iteratively improve a code/model/agent-harness/data artifact against a dev evaluator while a held-out test gate guards against overfitting)
- Critical analysis: Scientific Critical Thinking and qualitative, low-stakes Scholar Evaluation of works—never ranking people or supporting consequential decisions
- Scenario analysis: What-If Oracle (46 branch possibility exploration, contingency planning, decision stress-testing)
- Multi-perspective deliberation: Consciousness Council (diverse expert viewpoints, devil's advocate analysis)
- Cognitive profiling: DHDNA Profiler (extract thinking patterns and cognitive signatures from any text)
- Funding: Research Grants
- Discovery: Research Lookup, Paper Lookup (10 academic databases)
- Market analysis: Market Research Reports
- Market analysis: evidence-traceable Market Research Reports with assumption-led sizing and forecast sensitivity
#### ⚖️ **Regulatory & Standards** (1 skill)
- Medical device standards: ISO 13485 Certification
#### ⚖️ **Regulatory & Standards** (2 skills)
- Standards readiness: draft evidence-preparation artifacts for ISO 13485 (medical device QMS), ISO 14971 (device risk management), ISO/IEC 17025 (testing and calibration laboratories), and ISO 15189 (medical laboratories), with per-standard process domains selected by a `--standard` profile
- Analytical method validation: plan, evaluate, and document validation, verification, and transfer of analytical procedures (HPLC, LC-MS/MS, GC, CE, ICP-MS, dissolution, qNMR, qPCR, NIR, ligand-binding and cell-based assays) under whichever framework governs — ICH Q2(R2)/Q14 and ICH M10 encoded from their openly licensed text, with USP `<1220>`/`<1225>`/`<1226>`, the CLSI EP series, and ISO/IEC 17025 cited by designation and scope only; stdlib-only statistics, no network access
- Assurance-lane separation: keeps ISO certification, laboratory accreditation, FDA QMSR inspection, CLIA certification, MDSAP, and EU MDR/IVDR evidence boundaries distinct—laboratories are accredited rather than certified, and ISO 15189 accreditation does not satisfy CLIA
- Never a compliance, audit, assessment, certification, accreditation, or method-release decision; qualified RA/QA, legal, laboratory-director, assessor, and certification-body review is required
> 📖 **For complete details on all skills**, see [docs/skills.md](docs/skills.md)
@@ -530,6 +637,51 @@ This repository contains **140 scientific and research skills** organized across
---
## 📝 From the Blog
Deep dives, benchmarks, and guides from the [K-Dense blog](https://www.k-dense.ai/blog) that are directly relevant to using the skills in this repository.
### Start here
- **[Agent Skills: The Final Piece for AI-Powered Scientific Research](https://www.k-dense.ai/blog/agent-skills-final-piece-for-ai-powered-research)** — What Agent Skills are, why curated domain guidance beats raw model capability, and an introduction to this repository.
- **[K-Dense Web vs Scientific Agent Skills: Why We Built Both (And Which One You Should Use)](https://www.k-dense.ai/blog/k-dense-web-vs-scientific-agent-skills)** — When the open-source skills are the right tool, and when a hosted platform with managed compute makes more sense.
- **[AI Co-Scientists, Answered: 20 Questions from a Live Session with a University Research Center](https://www.k-dense.ai/blog/ai-co-scientists-answered-20-questions)** — Practical questions from a research center evaluating AI co-scientists: what stays open source and MIT-licensed, how local and desktop deployments work, how data is handled, and how to choose between the hosted platform and the BYOK setup that runs these skills.
- **[How to Use Multica for Scientific Research](https://www.k-dense.ai/blog/multica-scientific-research)** — A self-hosted Multica workspace plus a curated subset of these skills: clinical-trial and variant analyses, literature review, weekly autopilots, and a second-model audit, with each skill imported from `skills/<name>/`.
### Skill benchmarks and deep dives
- **[The Silent 97%: Introducing the waypoint-bio Agent Skill](https://www.k-dense.ai/blog/introducing-waypoint-agent-skill)** — [waypoint-bio](skills/waypoint-bio/) against silent data loss: an unconverted MetaPhlAn table keeps 3% of abundance mass and still returns a valid embedding; skill-equipped agents won 16 to 0 on matched pairs.
- **[The Millimetre Problem: Introducing the lab-hardware-cad Agent Skill](https://www.k-dense.ai/blog/lab-hardware-cad-skill)** — [lab-hardware-cad](skills/lab-hardware-cad/) over 98 geometry-scored runs: the skill arm produced parametric, regenerable models in 49 of 49 cases (baseline 0 of 49) and named the missing Y-maze standard instead of inventing one.
- **[One Skill, 78 Databases: Why We Didn't Build 78 Skills](https://www.k-dense.ai/blog/database-lookup-one-skill-78-databases)** — The design rationale behind [database-lookup](skills/database-lookup/): consolidation cut always-on context cost by 13.9x while holding routing accuracy across five models.
- **[Can an AI Agent Run Your Mass Spec Pipeline? Benchmarking the PyOpenMS Skill](https://www.k-dense.ai/blog/benchmarking-pyopenms-skill-mass-spectrometry)** — A 250-run study of [pyopenms](skills/pyopenms/): 100% task success with the skill versus 96% without, 92% fewer pyOpenMS API errors, and 10% lower cost.
- **[Beyond RDKit: Benchmarking the Rowan Agent Skill Against Experiment](https://www.k-dense.ai/blog/benchmarking-rowan-skill-chemistry)** — [rowan](skills/rowan/) compared against RDKit and experimental data: pKa MAE 0.23 (R² 0.986), logD₇.₄ MAE 1.15, and 0.19 Å RMSD docking pose recovery for roughly $0.52 of compute.
- **[GPU-Accelerate Your Science: 58x Average Speedup with a Single Skill](https://www.k-dense.ai/blog/optimize-for-gpu-skill)** — [optimize-for-gpu](skills/optimize-for-gpu/) rewriting CPU-bound Python across 12 libraries, with speedups ranging from 1.7x to 492x.
- **[Towards Smarter Scientific Search: Exa Joins the Scientific Agent Skills Library](https://www.k-dense.ai/blog/towards-smarter-scientific-search-exa-scientific-agent-skills)** — What [exa-search](skills/exa-search/) adds: neural semantic search and URL extraction tuned for scholarly discovery instead of keyword matching.
- **[Benchmarking Nano Banana 2 Lite for Scientific Image Generation](https://www.k-dense.ai/blog/benchmarking-nano-banana-2-lite-scientific-image-model)** — A 240-image comparison of scientific-diagram models, useful when choosing a backend for [generate-image](skills/generate-image/): 3.8 s median latency for Nano Banana 2 Lite against 49 s for GPT Image 2, with a quality tradeoff.
- **[Benchmarking NVIDIA BioNeMo Agent Toolkit Skills for NIM microservices](https://www.k-dense.ai/blog/benchmarking-nvidia-bionemo-nim-skill)** — A separate NVIDIA skill set rather than one of these, but the findings generalize: skills help most with routing to non-obvious endpoints and with weak-model reliability, and do not improve the underlying scientific model's accuracy.
### Why the workflow layer matters
- **[The Model Is No Longer the Bottleneck](https://www.k-dense.ai/blog/the-model-is-no-longer-the-bottleneck)** — The case for why a repository like this one exists: frontier models now match specialized scientific software on raw capability (±0.079 ppm on NMR hydrogen shift prediction), so the limiting factor has moved to the workflow around the model — data access, code execution, verification, and auditable output.
- **[The AI Co-Scientist Is Here. The Bottleneck Is Verification.](https://www.k-dense.ai/blog/ai-co-scientist-verification-bottleneck)** — A 10-point checklist for evaluating a research agent, built around exposing sources, code, data provenance, and intermediate work rather than a polished final answer — the same reasoning behind the provenance and retrieval-contract requirements in skills like [database-lookup](skills/database-lookup/) and [scientific-writing](skills/scientific-writing/).
- **[Reproduction, Not Generation, Is AI's Killer App for Science](https://www.k-dense.ai/blog/reproduction-not-generation-ai-for-science)** — Why re-running published analyses is the highest-value use of an agent: 78% of papers and 93% of individual analysis tasks reproduced across a 221-study benchmark, because a reproduction can be checked against known numbers while a generated claim cannot.
- **[Introducing K-Bench 01: Nine Frontier Models, 178 Real Scientific Tasks, and a Lot of Confident Wrong Answers](https://www.k-dense.ai/blog/introducing-k-bench-01-internal-benchmark)** — Nine frontier models on 178 real user tasks, with overclaiming in 40% of runs. Useful calibration for what to check when an agent reports success, and context for the verification boundaries written into the clinical, regulatory, and research-methodology skills above.
### Security and safe deployment
- **[Security in the Science Agent Era: What Every Lab Needs to Know Before Installing Skills](https://www.k-dense.ai/blog/skill-security-before-you-install)** — The practical review checklist behind this repo's [Security Disclaimer](#%EF%B8%8F-security-disclaimer): read the full `SKILL.md` and `scripts/`, scan before installing, and pin versions instead of tracking a branch.
- **[The Sandboxed AI Scientist: Pairing NVIDIA OpenShell with Scientific Agent Skills](https://www.k-dense.ai/blog/sandboxed-ai-scientist-openshell-skills)** — Running these skills inside a policy-governed sandbox; see also the NemoClaw note in [Getting Started](#-getting-started).
### Complementary open-source projects
- **[Introducing Science Superpowers: Scientific Discipline for Your Research Agent](https://www.k-dense.ai/blog/introducing-science-superpowers)** — Hypothesis pre-registration, reproducible workflows, and verification-before-claims that wrap around these skills to guard against p-hacking and HARKing.
- **[Your AI Assistant Reasons Like a Generalist. Science Needs a Specialist.](https://www.k-dense.ai/blog/introducing-scientific-agents)** — 503 open-source `AGENTS.md` profiles supplying the "how to think" layer alongside the "what to do" procedures in these skills.
- **[Introducing mimeo and 80+ Mimeographs](https://www.k-dense.ai/blog/introducing-mimeo-and-mimeographs)** — Generate your own `SKILL.md` / `AGENTS.md` expert profiles by distilling how a given practitioner reasons.
- **[Agentic Data Scientist: An Open Source AI That Actually Does the Analysis](https://www.k-dense.ai/blog/agentic-data-scientist-open-source)** — A multi-agent planning, execution, and validation harness that loads these skills for end-to-end data-science workflows.
- **[Karpathy: An Open Source Agentic Machine Learning Engineer](https://www.k-dense.ai/blog/karpathy-agentic-ml-engineer)** — An autonomous ML-training agent built to consume Scientific Agent Skills for preprocessing through hyperparameter search.
---
## 🤝 Contributing
We welcome contributions to expand and improve this scientific skills repository!
@@ -558,7 +710,7 @@ For detailed instructions on adding or updating a skill, see [CONTRIBUTING.md](C
2. **Create** a feature branch (`git checkout -b feature/amazing-skill`)
3. **Follow** [CONTRIBUTING.md](CONTRIBUTING.md) and the existing directory structure
4. **Ensure** all new skills include valid `SKILL.md` files with required frontmatter and `metadata.version`
5. **Test** your examples and workflows thoroughly
5. **Test** your examples and workflows thoroughly, and add a suite under `tests/<skill-name>/` if your skill ships `scripts/`
6. **Commit** your changes (`git commit -m 'Add amazing skill'`)
7. **Push** to your branch (`git push origin feature/amazing-skill`)
8. **Submit** a pull request with a clear description of your changes
@@ -575,6 +727,23 @@ For detailed instructions on adding or updating a skill, see [CONTRIBUTING.md](C
✅ Provide clear comments and docstrings in code
✅ Include references to official documentation
### Testing
Every skill that ships `scripts/` must have a test suite under `tests/<skill-name>/` and an entry in `tests/skill-requirements.toml`. This is enforced — `tests/_meta` fails a pull request that adds bundled tooling without one, and it also runs a repo-wide structural contract over all skills (frontmatter conformance, `SKILL.md` length, local links resolving, scripts parsing, no shipped bytecode, no hardcoded local paths, `--help` behavior).
```bash
# Structural contract and coverage guard — seconds, no scientific packages needed
uv run python -m pytest tests/_meta -q
# One skill's suite
uv run --with pytest python -m pytest tests/<skill-name> -q
# Every suite, each in its own throwaway environment
uv run python tests/run_all.py --isolated
```
The [Skill Tests](https://github.com/K-Dense-AI/scientific-agent-skills/actions/workflows/skill-tests.yml) workflow runs the contract plus the standard-library-only suites on every pull request; the full `--isolated` sweep builds ~100 environments and is run locally or on a schedule.
### Security Scanning
All skills in this repository are security-scanned using [Cisco AI Defense Skill Scanner](https://github.com/cisco-ai-defense/skill-scanner), an open-source tool that detects prompt injection, data exfiltration, and malicious code patterns in Agent Skills.
@@ -656,7 +825,7 @@ A: No. Each skill has its own license specified in the `license` metadata field
A: We regularly update skills to reflect the latest versions of packages and APIs. Major updates are announced in release notes.
**Q: Can I use this with other AI models?**
A: The skills follow the open [Agent Skills](https://agentskills.io/) standard and work with any compatible agent, including Cursor, Claude Code, Codex, and Google Antigravity.
A: The core `SKILL.md` format follows the open [Agent Skills](https://agentskills.io/) standard. Installation paths, discovery, and optional metadata support vary by host and version, so confirm your target host's current documentation.
### Installation & Setup
@@ -686,51 +855,72 @@ Need help? Here's how to get support:
- 📖 **Documentation**: Check the relevant `SKILL.md` and `references/` folders
- 🐛 **Bug Reports**: [Open an issue](https://github.com/K-Dense-AI/scientific-agent-skills/issues)
- 💡 **Feature Requests**: [Submit a feature request](https://github.com/K-Dense-AI/scientific-agent-skills/issues/new)
- 📣 **Updates and demos**: Follow [X](https://x.com/k_dense_ai), [LinkedIn](https://www.linkedin.com/company/k-dense-inc), and [YouTube](https://www.youtube.com/@K-Dense-Inc) to keep up with new skills, tutorials, and Scientific Agent Skills releases
- 📣 **Updates and demos**: Follow [X](https://x.com/k_dense_ai), [LinkedIn](https://www.linkedin.com/company/k-dense-inc), [YouTube](https://www.youtube.com/@K-Dense-Inc), and [Reddit](https://www.reddit.com/user/-k-dense-/) to keep up with new skills, tutorials, and Scientific Agent Skills releases
- 💼 **Enterprise Support**: Contact [K-Dense](https://k-dense.ai/) for commercial support
---
## 📖 Citation
If you use Scientific Agent Skills in your research or project, please cite the overall collection and, when relevant, the individual skill or skills that materially supported your work.
If you use Scientific Agent Skills in your research or project, please cite our paper:
The collection citation helps others find the repository, understand the broader skill ecosystem used in your workflow, and credit the maintenance effort behind Scientific Agent Skills. Individual skill citations give more precise credit for the specific package, database, or workflow guidance your agent used.
> Timothy Kassis, Vinayak Agarwal, Yuhuan He, Darshil Patel, and Aubrey M. Brueckner. **Scientific Agent Skills: A Library of Procedural Knowledge for Research Agents.** arXiv:2609.00065, 2026. [https://arxiv.org/abs/2609.00065](https://arxiv.org/abs/2609.00065)
When relevant, also cite the individual skill or skills that materially supported your work.
GitHub's **Cite this repository** button, backed by [`CITATION.cff`](CITATION.cff), produces the same paper citation in APA or BibTeX.
The paper citation helps others find the repository, understand the broader skill ecosystem used in your workflow, and credit the maintenance effort behind Scientific Agent Skills. Individual skill citations give more precise credit for the specific package, database, or workflow guidance your agent used.
Recommended practice:
- Always cite **Scientific Agent Skills** using one of the formats below.
- Always cite the **Scientific Agent Skills paper** using one of the formats below.
- Also cite each individual skill that directly contributed to your analysis, code, figures, reports, or research workflow.
- If a skill wraps or documents an external package, database, or platform, cite that upstream project too when your field's norms require it.
### Collection Citation
### Paper Citation
#### BibTeX
```bibtex
@misc{kassis2026scientificagentskills,
title = {Scientific Agent Skills: A Library of Procedural Knowledge for Research Agents},
author = {Kassis, Timothy and Agarwal, Vinayak and He, Yuhuan and Patel, Darshil and Brueckner, Aubrey M.},
year = {2026},
eprint = {2609.00065},
archivePrefix = {arXiv},
primaryClass = {cs.CL},
url = {https://arxiv.org/abs/2609.00065}
}
```
#### APA
```
Kassis, T., Agarwal, V., He, Y., Patel, D., & Brueckner, A. M. (2026). Scientific Agent Skills: A library of procedural knowledge for research agents. arXiv. https://arxiv.org/abs/2609.00065
```
#### MLA
```
Kassis, Timothy, et al. "Scientific Agent Skills: A Library of Procedural Knowledge for Research Agents." arXiv, 2026, arxiv.org/abs/2609.00065.
```
#### Plain Text
```
Kassis, T., Agarwal, V., He, Y., Patel, D., & Brueckner, A. M. (2026). Scientific Agent Skills: A Library of Procedural Knowledge for Research Agents. arXiv:2609.00065. https://arxiv.org/abs/2609.00065
```
### Software Citation
If you also need to cite a specific version of the repository itself (for example, to pin the exact skill set an analysis ran against), add a software citation alongside the paper and record the release tag or commit you used:
```bibtex
@software{scientific_agent_skills_2026,
author = {{K-Dense Inc.}},
title = {Scientific Agent Skills: A Comprehensive Collection of Scientific Tools for AI Agents},
year = {2026},
url = {https://github.com/K-Dense-AI/scientific-agent-skills},
note = {140 skills covering databases, packages, integrations, and analysis tools}
note = {163 skills covering databases, packages, integrations, and analysis tools}
}
```
#### APA
```
K-Dense Inc. (2026). Scientific Agent Skills: A comprehensive collection of scientific tools for AI agents [Computer software]. https://github.com/K-Dense-AI/scientific-agent-skills
```
#### MLA
```
K-Dense Inc. Scientific Agent Skills: A Comprehensive Collection of Scientific Tools for AI Agents. 2026, github.com/K-Dense-AI/scientific-agent-skills.
```
#### Plain Text
```
Scientific Agent Skills by K-Dense Inc. (2026)
Available at: https://github.com/K-Dense-AI/scientific-agent-skills
```
### Individual Skill Citation
When citing a specific skill, include the skill name, version from `metadata.version` in that skill's `SKILL.md`, and the direct skill URL. For example:

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

BIN
docs/images/adaptyv.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
docs/images/aeon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
docs/images/anndata.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

BIN
docs/images/arbor.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

BIN
docs/images/arboreto.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
docs/images/astropy.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

BIN
docs/images/autoskill.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
docs/images/bids.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
docs/images/biopython.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

BIN
docs/images/bioservices.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
docs/images/bulk-rnaseq.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
docs/images/cirq.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

BIN
docs/images/cobrapy.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

BIN
docs/images/dask.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

BIN
docs/images/datamol.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

BIN
docs/images/deepchem.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
docs/images/deepspot-m.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

BIN
docs/images/deeptools.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

BIN
docs/images/depmap.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

BIN
docs/images/diffdock.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
docs/images/docx.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

BIN
docs/images/esm.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

BIN
docs/images/etetoolkit.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

BIN
docs/images/exa-search.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

BIN
docs/images/flowio.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

BIN
docs/images/fluidsim.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
docs/images/geniml.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
docs/images/geomaster.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

BIN
docs/images/geopandas.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
docs/images/gget.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
docs/images/gtars.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

BIN
docs/images/histolab.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

BIN
docs/images/hypogenic.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
docs/images/lamindb.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

BIN
docs/images/liteparse.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
docs/images/markitdown.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

BIN
docs/images/matchms.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
docs/images/matlab.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
docs/images/matplotlib.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

BIN
docs/images/medchem.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

BIN
docs/images/modal.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

BIN
docs/images/molfeat.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

BIN
docs/images/networkx.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

BIN
docs/images/neurokit2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

BIN
docs/images/nextflow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
docs/images/onekgpd.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

Some files were not shown because too many files have changed in this diff Show More