Compare commits

...

518 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
Timothy Kassis
d9a978ab9c Bump version 2026-05-28 12:51:48 -07:00
Timothy Kassis
53f7abf39b Add support for Nextflow 2026-05-28 12:46:40 -07:00
Timothy Kassis
1524e3eb31 Bump version 2026-05-27 16:56:01 -07:00
Timothy Kassis
aba68b8165 docs: update dependencies and skills documentation for dask, pymoo, and scanpy
- Added new dependencies for dask, including compatibility requirements for Python 3.10+ and dask 2025.1+.
- Updated pymoo documentation to reflect version 1.1, including installation instructions and new features for mixed-variable optimization.
- Revised scanpy documentation to version 1.1, incorporating updates for doublet detection, pseudobulk aggregation, and improved autosave functionality.
- Enhanced clarity in examples and troubleshooting sections across all skills to improve user guidance.
2026-05-27 16:55:41 -07:00
Timothy Kassis
e60e84e635 docs: update skills documentation for scientific-critical-thinking and stable-baselines3
- Incremented version numbers to 1.1 for both skills to reflect updates and improvements.
- Revised the scientific-critical-thinking skill to clarify visual aids usage and compatibility requirements, including API access for optional figures.
- Enhanced references in scientific-critical-thinking to include updated risk of bias assessment tools and reporting guidelines.
- Updated stable-baselines3 skill documentation to specify installation instructions, compatibility requirements, and additional resources for users.
- Improved clarity in examples and troubleshooting sections for both skills to enhance user guidance.
2026-05-27 16:49:43 -07:00
Timothy Kassis
4e12c022c1 docs: update scikit-learn skill documentation and references
- Incremented version number to 1.1 to reflect updates and improvements.
- Added compatibility requirements for Python 3.11+ and scikit-learn 1.7+.
- Updated installation instructions to specify the correct package name and optional dependencies.
- Revised model evaluation examples to use `root_mean_squared_error` instead of `mean_squared_error` for clarity.
- Enhanced preprocessing and supervised learning references to reflect changes in parameter names and deprecations.
- Included new features in dimensionality reduction and clustering sections, such as ClassicalMDS and updates to HDBSCAN.
- Improved clarity and consistency across various documentation sections for better user guidance.
2026-05-27 16:36:02 -07:00
Timothy Kassis
b903c9609c docs: update research grants skill documentation and templates
- Enhanced the research grants SKILL.md to include updated compliance with PAPPG 24-1 and NIH salary cap guidance, reflecting changes effective May 20, 2024.
- Revised budget justification template to clarify salary cap details and linked to the NIH Salary Cap Summary for better user reference.
- Updated NIH guidelines to specify the Executive Level II salary cap and its implications for grant proposals.
- Removed outdated schematic generation scripts to streamline the skill's functionality.
- Incremented version number to 1.1 to indicate these updates and improvements.
2026-05-27 16:34:13 -07:00
Timothy Kassis
b4d0094b4e docs: update skills documentation for histolab and astropy
- Enhanced the histolab SKILL.md with new features including built-in stain normalization and installation requirements for Python 3.8–3.11.
- Updated the astropy SKILL.md to reflect version 1.1, including installation instructions for specific versions and additional notes on network access and reproducibility.
- Improved clarity in the references for both skills, emphasizing network considerations and best practices for data handling.
- Incremented version numbers for both skills to 1.1 to indicate updates and improvements.
2026-05-27 16:30:43 -07:00
Timothy Kassis
8c7092e935 docs: enhance README with new star encouragement section
- Added a new section encouraging users to star the repository for visibility and support.
- Removed the previous star encouragement to streamline the message and avoid redundancy.
2026-05-27 16:23:29 -07:00
Timothy Kassis
a3b49565ee docs: update README to include Star History and refine skills usage descriptions
- Added a new section for Star History to showcase project popularity.
- Updated skills usage descriptions to standardize formatting and improve clarity.
- Removed the previous Star History section to streamline the README.
2026-05-27 16:12:06 -07:00
Timothy Kassis
878519452f Update directory for compatibility 2026-05-27 15:54:01 -07:00
Timothy Kassis
0936740e52 Update directory 2026-05-27 15:53:42 -07:00
Timothy Kassis
1c1465960d docs: update SKILL.md for bgpt-paper-search compatibility and usage instructions
- Added compatibility requirements for the BGPT MCP server and optional API key for paid usage.
- Incremented version number to 1.1 for clarity on updates.
- Revised setup and usage instructions to enhance user guidance on configuring the BGPT MCP server and utilizing the `search_papers` tool.
2026-05-27 15:46:15 -07:00
Timothy Kassis
b636ef1968 docs: update SKILL.md for Adaptyv API enhancements
- Updated the license to MIT and added compatibility requirements for Python 3.10+ and API key usage.
- Incremented version number to 1.2 and included additional metadata for clarity.
- Revised installation instructions and environment variable handling for better user guidance.
- Enhanced documentation with official API links and improved code examples for consistency.
2026-05-27 15:42:43 -07:00
Timothy Kassis
761e83ddca docs: update SKILL.md and related references for Benchling integration
- Enhanced the description of the Benchling integration to clarify the use of the Python SDK and REST API for various registry entities and workflows.
- Updated the license to MIT and added allowed tools for better clarity on usage.
- Incremented the version number to 1.2 and improved installation instructions, including environment variable handling and authentication methods.
- Revised API endpoint references and authentication documentation to reflect best practices and ensure consistency across the integration guide.
2026-05-27 15:40:19 -07:00
Timothy Kassis
e9fceed955 docs: update README and SKILL.md files for versioning and new features
- Revised README to reflect the rebranding from Claude Scientific Skills to Scientific Agent Skills, highlighting broader compatibility and the introduction of K-Dense BYOK.
- Updated the number of available skills from 139 to 140 in the README and various SKILL.md files.
- Incremented version numbers for multiple skills to 1.1, ensuring consistency across documentation.
- Enhanced descriptions and allowed tools formatting in several SKILL.md files for improved clarity and usability.
2026-05-27 15:36:02 -07:00
Timothy Kassis
11d96d65e9 docs: update README to include Google Antigravity support and enhance follow-up information
- Added Google Antigravity to the list of compatible agents in multiple sections of the README.
- Included a new section encouraging users to follow K-Dense on social media for updates, tutorials, and new skills announcements.
- Improved clarity and consistency in the documentation regarding supported platforms and installation instructions.
2026-05-27 15:06:56 -07:00
Timothy Kassis
f6b08dbde7 chore: keep agent guidance local
Remove AGENTS.md from version control and ignore it so local agent instructions are not published on GitHub.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-27 15:00:02 -07:00
Timothy Kassis
51150142ac docs: enhance README with contribution guidelines and citation practices
- Added detailed instructions for adding or updating skills, referencing the CONTRIBUTING.md file for clarity.
- Updated citation section to emphasize the importance of citing both the overall collection and individual skills, including examples for various citation formats.
- Improved clarity on versioning requirements for skills and the importance of acknowledging contributions in publications.
2026-05-27 14:53:25 -07:00
Timothy Kassis
89af6fffc4 chore: update metadata for scientific skills
- Added version "1.0" and skill author information to multiple SKILL.md files across various scientific skills.
- Enhanced documentation consistency and clarity by standardizing metadata formatting.
- Ensured all skills now include versioning for better tracking of updates and changes.
2026-05-27 14:47:24 -07:00
Timothy Kassis
b092ba5d4a chore: update documentation and descriptions for scientific skills
- Revised the README and scientific skills documentation to enhance clarity and detail, including updates to the What-If Oracle and Vaex skills.
- Improved descriptions for scenario analysis and data processing capabilities, emphasizing new features and usage examples.
- Updated installation instructions and compatibility notes for Vaex and Zarr skills, ensuring alignment with the latest library versions.
- Enhanced the xlsx skill documentation to clarify requirements and installation steps, including optional dependencies for improved functionality.
2026-05-27 14:30:14 -07:00
Timothy Kassis
d9473cf7db chore: update PyTorch Lightning documentation and installation instructions
- Updated the PyTorch Lightning skill description to reflect the latest version (lightning 2.6+) and clarify installation requirements.
- Changed installation commands from `pip` to `uv pip` for consistency across documentation.
- Removed references to `NeptuneLogger` due to its removal in version 2.6.4, advising users to use alternative loggers instead.
- Enhanced various sections with additional details on compatibility and usage examples for improved clarity.
2026-05-27 14:25:40 -07:00
Timothy Kassis
ab90165e0e chore: update scientific-agent-skills version to 2.42.0
- Bumped version of 'scientific-agent-skills' from 2.40.0 to 2.42.0 to incorporate recent enhancements and updates.
- Improved documentation for Arboreto and AnnData skills, including installation instructions, usage examples, and new features.
- Enhanced BioServices documentation to clarify API requirements and usage patterns, including email handling for NCBI services.
- Updated Cirq skill documentation to reflect the latest version and installation requirements for Google Quantum AI integration.
2026-05-27 14:23:26 -07:00
Timothy Kassis
03608abcfe Add suppor for LiteParse from LlamaIndex 2026-05-27 14:14:50 -07:00
Timothy Kassis
54aa571461 chore: bump scientific-agent-skills version to 2.41.0
- Updated version of 'scientific-agent-skills' from 2.40.0 to 2.41.0 to reflect recent changes and improvements.
2026-05-27 14:10:48 -07:00
Timothy Kassis
a257aa95cf refactor: enhance medchem and esm documentation and functionality
- Updated the Medchem library to version 2.0.5, improving drug-likeness rules, structural alerts, and filtering capabilities.
- Enhanced the ESM toolkit documentation, clarifying usage for protein language models and API integration.
- Improved installation instructions and added support for new features, including cloud-based inference and environment variable handling for API keys.
- Streamlined filtering scripts for better usability and performance, including batch processing and error handling improvements.
- Added references for new model versions and updated examples for clarity.
2026-05-27 14:10:37 -07:00
Timothy Kassis
659ab860c9 chore: update Biopython and Datamol documentation
- Updated Biopython version to 1.87, reflecting new requirements for Python 3.10+ and changes in API key handling for NCBI access.
- Clarified installation instructions and deprecated features in Biopython, including the removal of certain modules.
- Enhanced Datamol documentation to specify version compatibility, remote file support, and updated fingerprint generation methods.
- Improved examples and best practices for using Datamol with cloud storage and third-party libraries.
2026-05-27 14:03:29 -07:00
Timothy Kassis
d5e4a2d091 chore: update .gitignore and bump scientific-agent-skills version to 2.40.0
- Added new entries to .gitignore for 'research/', '.agents/', and 'skills-lock.json'.
- Updated version of 'scientific-agent-skills' from 2.37.1 to 2.40.0, reflecting recent changes and improvements.
- Enhanced documentation in SKILL.md and related files for better clarity on usage and installation requirements.
2026-05-27 14:00:39 -07:00
Timothy Kassis
f060994898 Bump version 2026-05-27 13:46:25 -07:00
github-actions[bot]
5bd00bf61d chore: update security scan report [skip ci] 2026-05-25 11:50:39 +00:00
Timothy Kassis
66d1ad45cc Merge pull request #156 from Beifang/feature/pacsomatic
feat: add pacsomatic skill
2026-05-21 07:54:33 -07:00
Timothy Kassis
595e3d30cc Merge pull request #90 from StevenDillmann/feat/simbad-database-skill
feat: add SIMBAD astronomical database skill
2026-05-21 07:52:17 -07:00
StevenDillmann
7d83e4b777 refactor: move SIMBAD skill into database-lookup
Move SIMBAD content from standalone simbad-database skill into the
consolidated database-lookup skill per reviewer feedback. Enhance
database-lookup/references/simbad.md with detailed script format codes,
full TAP table schemas, ADQL spatial query patterns, cross-matching
examples, bibliography queries, and input sanitization guidance.

Remove the standalone simbad-database directory (SKILL.md, api_reference,
adql_reference, simbad_client.py) since all content is now covered by
database-lookup.

Made-with: Cursor
2026-05-20 22:18:06 -07:00
StevenDillmann
45fae4a4d9 fix: address Skill Scanner findings - input sanitization for injection prevention
- Add _sanitize_object_name() to validate script interface inputs (block newlines, quotes, semicolons)
- Add _sanitize_adql_string() to escape quotes and block injection chars in ADQL queries
- Use sanitizers in query_object, query_identifiers, get_all_identifiers
- Add best practice #11 in SKILL.md: validate user input before querying

Made-with: Cursor
2026-05-20 22:16:06 -07:00
StevenDillmann
457dd0003d feat: add SIMBAD astronomical database skill
Add a new skill for querying the SIMBAD database (CDS Strasbourg),
covering object name resolution, coordinate cone searches, identifier
pattern matching, and advanced ADQL/TAP queries. Includes a Python
client script, script-interface API reference, and ADQL/table schema
reference.

Made-with: Cursor
2026-05-20 22:16:06 -07:00
Timothy Kassis
044285c33a Update README.md for improved link formatting and table of contents consistency 2026-05-18 17:41:10 -07:00
Timothy Kassis
9b13286d8b Bump version and added community contributions 2026-05-18 17:35:08 -07:00
Beifang Niu
80528059b4 chore(pacsomatic): align skill package with Agent Skills spec 2026-05-18 10:39:06 -05:00
github-actions[bot]
63de55a76c chore: update security scan report [skip ci] 2026-05-18 11:39:14 +00:00
Timothy Kassis
a54a70c091 Merge pull request #116 from robotlearning123/fix/neuropixels-broken-links
fix(neuropixels-analysis): correct broken internal links reference/ → references/
2026-05-17 20:47:42 -07:00
Timothy Kassis
29d4730d9a Merge pull request #94 from jiaodu1307/fix/rdkit-skill-gzip-import-clean
Fix rdkit skill example: add gzip import
2026-05-17 20:46:53 -07:00
Timothy Kassis
8f0ec17697 Merge pull request #125 from yarikoptic/enh-bids
Add BIDS (Brain Imaging Data Structure) skill
2026-05-17 20:44:06 -07:00
Timothy Kassis
3539f565a3 Merge pull request #147 from xiaolai/fix/nlpm-scanpy-license-typo
fix: correct scanpy license typo (SD-3-Clause → BSD-3-Clause)
2026-05-17 20:42:42 -07:00
Timothy Kassis
a4ba5878bf Merge pull request #164 from mvanhorn/fix/159-research-lookup-yaml-frontmatter
fix: quote research-lookup description to restore valid YAML frontmatter
2026-05-17 20:38:35 -07:00
Timothy Kassis
6fa0dbba7d Merge pull request #165 from Travisma2233/venue-templates/add-elsarticle
venue-templates: add elsarticle templates and bib styles
2026-05-17 20:38:03 -07:00
Xin rui
289a807d73 venue-templates: add elsarticle templates and bib styles
The Elsevier section of journals_formatting.md referenced
assets/journals/elsevier_article.tex but no such file existed.

Add the upstream elsarticle distribution files (CTAN, LPPL):
- elsarticle-template-{num,num-names,harv}.tex
- elsarticle-{num,num-names,harv}.bst

Rewrite the Elsevier section to:
- map each template to its natbib option and matching .bst
- document the elsarticle-specific frontmatter macros
- list common documentclass options (preprint / review / 1p / 3p / 5p)
- point to elsdoc.pdf for the full class reference

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 15:37:40 +08:00
Matt Van Horn
2b5c6adddb fix: quote research-lookup description to restore valid YAML frontmatter
The description field after PR #149 contained an unquoted 'Note:' clause,
which YAML parsers interpret as a mapping-key separator and reject. Wrapping
the value in single quotes restores parseability while preserving the
PARALLEL_API_KEY / OPENROUTER_API_KEY disclosure intact.

Fixes #159
2026-05-16 22:41:25 -07:00
github-actions[bot]
cbcae7bbf7 chore: update security scan report [skip ci] 2026-05-11 11:18:34 +00:00
Beifang Niu
535d326e7b feat: add pacsomatic skill 2026-05-07 13:25:22 -05:00
Timothy Kassis
7a1d69cc3f Merge pull request #143 from tgonzalezc5/feat/exa-search-skill
feat: add Exa AI-powered search tool
2026-05-06 14:06:12 -07:00
Bortlesboat
b82768fd53 add missing research grants references 2026-05-05 13:42:59 -04:00
github-actions[bot]
37a148ba51 chore: update security scan report [skip ci] 2026-05-04 10:52:03 +00:00
Timothy Kassis
e143ef2f95 Merge pull request #141 from renato-umeton/feature/autoskill
Add autoskill: synthesize new skills from observed local screen activity
2026-05-03 11:33:46 -07:00
Timothy Kassis
5c0468f297 Merge pull request #145 from xiaolai/fix/nlpm-uv-uv-pip-install
fix: remove doubled uv prefix in install commands (uv uv pip → uv pip)
2026-05-03 11:33:00 -07:00
Timothy Kassis
79b547bdf8 Merge pull request #146 from xiaolai/fix/nlpm-latchbio-uv-install
fix: correct uv invocation in latchbio-integration install command
2026-05-03 11:32:32 -07:00
Timothy Kassis
75c41d78a2 Add support of Hugging Science 2026-05-01 11:02:23 -07:00
Timothy Kassis
5172775c78 Add author 2026-05-01 10:28:59 -07:00
Timothy Kassis
acaea259e2 Bump version 2026-05-01 10:26:51 -07:00
Timothy Kassis
2065d9d897 Update Pyhealth 2026-05-01 10:26:37 -07:00
Timothy Kassis
9a9159d3cf docs: remove community section from README
Deleted the "Join Our Community" section from the README to streamline content and focus on essential information. This change enhances clarity and reduces redundancy in the documentation.
2026-04-30 17:43:08 -07:00
xiaolai
410bbf4fa2 fix: disclose data transmission to api.parallel.ai and openrouter.ai in research-lookup (#149)
The skill description did not inform users that their research query text
is sent to api.parallel.ai (Parallel Chat API) and, for academic queries,
to openrouter.ai (Perplexity backend). The compatibility frontmatter field
mentioned the API keys but not the data-transmission implication.

Added a disclosure sentence to the frontmatter description so users see
this information before loading the skill.

Co-authored-by: claude[bot] <claude[bot]@users.noreply.github.com>
Co-authored-by: Claude Code <noreply@anthropic.com>
2026-04-30 21:46:20 +00:00
vin-bio
be68d7674c feat: enhance infographic generation with context image support
Added functionality to include reference context images in the infographic generation process. Updated relevant methods to accept context images, improving the visual content context for generated infographics. Enhanced prompt building and image generation to utilize these images effectively, along with updated documentation examples for usage.
2026-04-30 13:58:42 -07:00
Vinayak Agarwal
a7e3e714fc fix: upgrade infographic review to Gemini 3.1 Pro and harden review failure handling (#153)
Switch quality review model to gemini-3.1-pro-preview, lower marketing threshold to 8.0,
and treat review errors as needing improvement instead of silently passing with a fake score.

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-30 00:08:29 -07:00
Teo Gonzalez Collazo
8e6540e971 review feedback: drop find-similar; remove summary; remove neural/tweet/linkedin profile/pdf; add deep search mode; rebrand integration header to k-dense-ai--scientific-agent-skills; link dashboard.exa.ai/api-keys 2026-04-27 15:19:39 -07:00
github-actions[bot]
33b69c5d58 chore: update security scan report [skip ci] 2026-04-27 10:49:45 +00:00
claude[bot]
ac09da43cc fix: correct scanpy license typo SD-3-Clause → BSD-3-Clause
The frontmatter had `license: SD-3-Clause license` — missing the leading
`B` from BSD and including a redundant trailing word. Scanpy is licensed
under the BSD 3-Clause license. Corrected to the proper SPDX identifier.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-04-25 12:19:35 +00:00
claude[bot]
fe166d76a5 fix: correct uv invocation in latchbio-integration install command
The installation command used `python3 -m uv pip install latch`, which
invokes uv as a Python module rather than as a standalone binary. The
standard and supported invocation is `uv pip install latch`.

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-04-25 12:19:03 +00:00
claude[bot]
da0b522f91 fix: remove doubled uv prefix in install commands (uv uv pip → uv pip)
Five skills had invalid installation commands with a doubled `uv` prefix
(`uv uv pip install <pkg>`). This is not a valid shell invocation and
causes immediate errors for users copying these commands. All instances
replaced with the correct `uv pip install <pkg>`.

Affected: scikit-learn, pyopenms, fluidsim (×3), gtars, geniml (×3)

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-04-25 12:18:14 +00:00
Teo Gonzalez Collazo
d10c002a8c feat: add exa-search skill for neural web search, extraction, and find-similar
Adds a new skill sibling to parallel-web that wraps the Exa API. Covers
web search, URL content extraction, and find-similar-by-URL, with academic
source strategy built in (category="research paper" plus scholarly
domain allowlists).

- scientific-skills/exa-search/SKILL.md — routing, setup, academic strategy
- scientific-skills/exa-search/references/{web-search,web-extract,find-similar}.md
- scientific-skills/exa-search/scripts/{exa_search,exa_extract,exa_find_similar}.py
  (CLI wrappers using exa-py; PEP 723 inline deps so `uv run` works without
  a separate install)
- scientific-skills/exa-search/tests/test_exa_search.py — 21 unit tests
  covering CLI plumbing, content-option building, CSV domain splitting,
  result-typing fallbacks, and auth error handling
- docs/scientific-skills.md — index entry under Web Search & Information
  Retrieval, matching the Paperzilla precedent (PR #131)
2026-04-23 16:15:36 -07:00
github-actions[bot]
25e1c0f569 chore: update security scan report [skip ci] 2026-04-20 10:43:53 +00:00
Timothy Kassis
aaf95ee57b chore: update version of scientific-agent-skills to 2.37.1 2026-04-17 16:34:45 -07:00
Renato Umeton
412d3f22ae add: autoskill — synthesize new skills from observed local screen activity
A meta-skill that observes a researcher's own screen activity via a local
screenpipe daemon, clusters repeated workflow patterns, compares each
cluster against this repo's existing 135 skills using local embeddings,
and drafts either a thin composition recipe (a SKILL.md that chains
existing skills) or a full new SKILL.md when no combination fits.

Key design properties

- On-demand, no daemon of its own; invoked by the user with a time window.
- Local-first. Detection, clustering, redaction, and embeddings all run
  on-device. Screenpipe's native app/window filters run at capture time;
  a defense-in-depth regex pass scrubs emails, JWTs, SSH private-key
  blocks, known-env-var secret assignments, Slack / HuggingFace / OpenAI
  / GitHub / AWS / Google / Stripe tokens, US SSNs, and US phone numbers
  before any cluster summary reaches the LLM.
- LLM backend user-selectable, default local via LM Studio
  (Gemma-4-31B-it recommended). Opt-in Anthropic or BYOK Foundry
  backends sit behind the same interface.
- sentence-transformers/all-MiniLM-L6-v2 indexes every SKILL.md
  frontmatter description locally. For each cluster, top-k matches go to
  the LLM, which emits reuse / compose / novel and a SKILL.md body where
  appropriate.
- Staged output lives under ~/.autoskill/proposed/<ts>/ (default,
  outside the repo tree). A promote CLI moves approved ones into
  scientific-skills/<name>/.
- Unified CLI: autoskill run | doctor | promote. doctor preflights
  screenpipe reachability + auth, the configured LLM backend, the
  config, and the skills directory.

What's shipped

- 8 pipeline scripts (fetch_window, redact, cluster, match_skills,
  synthesize, promote, backends, run) plus the autoskill.py dispatcher.
- 83 pytest tests: unit, integration, and end-to-end with
  httpx.MockTransport fakes for screenpipe and LM Studio.
- Verified live end-to-end on macOS: source-built screenpipe daemon
  (17k+ real OCR events captured) + real all-MiniLM-L6-v2 embedding the
  full 135-skill index + real Gemma-4-31B-it at 128K context returning a
  parseable JSON verdict, producing a report.md with sensible top-k
  matches.
- SKILL.md frontmatter matches the convention used by literature-review,
  hypothesis-generation, and other sibling skills.
- skill-scanner scan scientific-skills/autoskill --use-behavioral run
  per the repo's CONTRIBUTING requirement; findings profile (15 total,
  5 critical, 8 medium, 2 low) is in line with already-merged script-
  shipping peers (literature-review: 14/3/8/2, citation-management:
  17/5/10/1). Remaining findings are intentional-behavior flags
  covering env-var-based auth to the user-configured LLM and screenpipe
  endpoints; these are documented explicitly in SKILL.md.

Tracked by issue #140.
2026-04-17 16:06:17 -04:00
Timothy Kassis
de480b6c97 docs: enhance README with installation options for Scientific Agent Skills
Added two installation methods for Scientific Agent Skills: using `npx` for all platforms and `gh skill` via GitHub CLI. Included detailed instructions for version pinning and keeping skills up to date, improving accessibility and usability for users.
2026-04-17 11:05:56 -07:00
github-actions[bot]
1420470acb chore: update security scan report [skip ci] 2026-04-16 01:33:07 +00:00
Timothy Kassis
e5cb785e4e enhance: integrate parallel-web skill for literature reviews and research lookups
Updated SKILL.md files to emphasize the use of the parallel-web skill (`parallel-cli search`) as the primary tool for literature reviews and research lookups. Added detailed instructions for conducting academic and general searches, including command examples and best practices for citation verification and result aggregation. Improved descriptions for clarity and consistency across documentation.
2026-04-13 16:36:01 -07:00
Timothy Kassis
cd54077cae refactor: update output file formats in parallel-web references to JSON
Changed output file extensions from .csv to .json in data enrichment, web extract, and web search documentation for consistency and improved data handling. Updated related command examples to reflect these changes.
2026-04-13 15:46:50 -07:00
github-actions[bot]
01a85c39a6 chore: update security scan report [skip ci] 2026-04-13 10:47:49 +00:00
Timothy Kassis
eb20fb0dcb chore: increase max instruction body character limit in SkillScanner 2026-04-12 17:44:14 -07:00
Timothy Kassis
4d7364170c chore: increase character limits for referenced and code files in SkillScanner 2026-04-12 17:43:46 -07:00
Timothy Kassis
f46024432e Merge pull request #135 from kstawiski/fix/codex-description-length
fix: trim skill descriptions for Codex 1024-char limit
2026-04-12 17:38:40 -07:00
Konrad Stawiski
ae9c503b0c fix: trim skill descriptions to fit Codex 1024-char limit
database-lookup (1929→884 chars) and paper-lookup (1010→495 chars) exceeded
Codex's skill loader validation, causing silent load failures.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-12 12:06:18 +00:00
Timothy Kassis
3c09cdef68 Update Parallel Web skill 2026-04-11 18:50:39 -07:00
Timothy Kassis
33c927f3bf Update parallel-web skill 2026-04-11 18:42:38 -07:00
Timothy Kassis
d1d16162cc Remove Perplexity search 2026-04-11 18:42:14 -07:00
github-actions[bot]
12841c6d7d chore: update security scan report [skip ci] 2026-04-11 18:52:20 +00:00
Timothy Kassis
747e003b9e chore: improve security scan workflow by adding git stash commands to handle untracked files 2026-04-11 10:53:44 -07:00
Timothy Kassis
968bf2a2e3 chore: update security scan workflow to use latest action versions
- Upgraded actions/checkout from v4 to v6 for improved performance and features.
- Updated astral-sh/setup-uv from v5 to v8.0.0 to leverage new capabilities and optimizations.
- Removed unnecessary environment variable setting for JavaScript actions.
2026-04-11 08:23:11 -07:00
Timothy Kassis
2b97bcadaf fix: update references in SKILL.md files for consistency and clarity
- Removed outdated references to `reference/` and replaced them with `references/` in multiple SKILL.md files.
- Updated template listings in clinical decision support and latex posters sections for better organization.
- Clarified instructions regarding GROBID service in the hypogenic skill documentation.
- Enhanced clarity in scientific slides documentation by correcting file path references.
2026-04-11 06:38:55 -07:00
github-actions[bot]
85888da56c chore: update security scan report [skip ci] 2026-04-11 13:08:39 +00:00
Timothy Kassis
f42f4b59e3 refactor: simplify .env file loading logic and enhance API key handling in subprocess calls 2026-04-11 06:03:23 -07:00
Timothy Kassis
2550d1a89a chore: enhance security scan workflow by adding git pull --rebase before push 2026-04-11 05:12:01 -07:00
Timothy Kassis
086de416d8 Merge pull request #131 from pors/add-paperzilla-skill
feat: add Paperzilla agent skill
2026-04-10 15:54:48 -07:00
Timothy Kassis
d936ab5433 Merge pull request #129 from fedorov/update-idc-1.5.0
update imaging-data-commons skill to 1.5.0
2026-04-10 15:52:08 -07:00
Timothy Kassis
968da4bf37 Update scanner 2026-04-10 14:09:00 -07:00
Timothy Kassis
97dd95f2b4 Increase character limits 2026-04-10 13:54:15 -07:00
Timothy Kassis
180558eaeb Update security report 2026-04-10 13:48:46 -07:00
Timothy Kassis
083424ae3f Update .gitignore to organize entries by category and include new project-specific ignores 2026-04-10 13:48:03 -07:00
Timothy Kassis
b90c89dd70 Bump version 2026-04-10 13:46:59 -07:00
Timothy Kassis
398fc377c6 Update project metadata in pyproject.toml and remove marketplace.json
- Updated version to 2.34.2 and enhanced project description in pyproject.toml.
- Removed obsolete marketplace.json file as its functionality is now integrated into the project structure.
- Adjusted GitHub Actions workflow to reference pyproject.toml instead of marketplace.json for version extraction.
2026-04-10 13:46:41 -07:00
Timothy Kassis
e0b68aa2f3 Update Python version in security scan workflow to 3.13 and adjust dependency installation command 2026-04-10 13:38:11 -07:00
Timothy Kassis
8b4e35c50b Update .gitignore and enhance security scan workflow
Removed unnecessary entries from .gitignore and added environment variable to the security scan workflow for improved compatibility with Node.js 24.
2026-04-10 13:36:45 -07:00
Timothy Kassis
0303a33f1e Enhance security scan configuration for improved vulnerability detection 2026-04-10 13:30:52 -07:00
Timothy Kassis
774faa9069 Update security scan 2026-04-10 11:54:23 -07:00
Timothy Kassis
1cf2a91a65 Update version in marketplace.json to 2.34.2 2026-04-10 09:45:32 -07:00
Timothy Kassis
6f54236ed3 Remove unused import in gap_analyzer.py for cleaner code 2026-04-10 09:44:29 -07:00
Timothy Kassis
e7460e3c05 Refactor timestamp import in detect_resources.py
Replaced the direct import of datetime from the module with a standard import statement for better readability and consistency.
2026-04-10 09:39:34 -07:00
Timothy Kassis
05207f2591 securty scans 2026-04-10 09:06:46 -07:00
Mark Pors
e4c9292e54 Add Paperzilla agent skill 2026-04-10 12:40:57 +03:00
Timothy Kassis
f479f5d2d4 Remove Git LFS dependency and update skills
Remove .gitattributes LFS tracking rules and convert all LFS pointer
files back to regular Git objects. Update matlab, open-notebook,
tiledbvcf, and usfiscaldata skills.

Made-with: Cursor
2026-04-09 15:33:12 -07:00
Timothy Kassis
e5006500f4 Update readme 2026-04-09 15:08:09 -07:00
Timothy Kassis
4635e61b80 Update to Scientific Agent Skills 2026-04-09 15:05:41 -07:00
Andrey Fedorov
405d15a241 Merge branch 'main' into update-idc-1.5.0 2026-04-08 13:55:46 -04:00
Andrey Fedorov
002d766225 update imaging-data-commons skill to 1.5.0
Matching upstream release https://github.com/ImagingDataCommons/idc-claude-skill/releases/tag/v1.5.0
2026-04-08 13:48:35 -04:00
Yaroslav Halchenko
75f688228a [DATALAD RUNCMD] Fetch/populate BIDS materials (BEPs, bids/schema.json)
=== Do not change lines below ===
{
 "chain": [],
 "cmd": "python scientific-skills/bids/scripts/update_schema.py",
 "exit": 0,
 "extra_inputs": [],
 "inputs": [],
 "outputs": [],
 "pwd": "."
}
^^^ Do not change lines above ^^^
2026-04-06 16:03:10 -04:00
Yaroslav Halchenko
c86a02a2f5 Broaden BIDS skill description beyond neuroimaging
BIDS now covers 11 modalities: imaging (MRI, PET, microscopy),
electrophysiology (EEG, MEG, iEEG, EMG), and other data (NIRS,
motion capture, behavioral, MR spectroscopy). Updated descriptions
throughout to reflect this scope.

Note BEP032 (microelectrode electrophysiology) connection to
Neuropixels probes and the neuropixels-analysis skill.

Co-Authored-By: Claude Code 2.1.92 / Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 16:02:15 -04:00
Yaroslav Halchenko
d589652ff9 Add BIDS (Brain Imaging Data Structure) skill
Comprehensive skill covering the BIDS standard for organizing neuroimaging data:

SKILL.md (746 lines):
- BIDS directory structure, file naming, entity ordering
- PyBIDS querying (BIDSLayout), dataset validation (bids-validator-deno)
- DICOM-to-BIDS conversion with HeuDiConv (ReproIn turnkey, map-into-reproin,
  and custom heuristic modes), dcm2bids, and BIDScoin
- JSON sidecar metadata and inheritance, events files, participants files
- BIDS derivatives conventions, BIDS-Apps interface
- All 25 current BEPs listed with status
- bids-examples as canonical reference collection
- 11 best practices, 8 common issues with solutions

references/:
- bids_schema.json: machine-readable schema (v1.2.1 / BIDS v1.11.1) from RTD
- beps.yml: full BEP listing from bids-website
- bids_specification.md: entity table in correct schema ordering (35 entities)
- metadata_fields.md: required/recommended sidecar fields for all modalities
- conversion_tools.md: detailed HeuDiConv/dcm2bids/BIDScoin workflows

scripts/update_schema.py: stdlib-only script to refresh schema + BEPs from upstream

Also listed in docs/scientific-skills.md under Neuroscience & Electrophysiology.

Co-Authored-By: Claude Code 2.1.92 / Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 16:02:15 -04:00
Timothy Kassis
899a51bfbd Simplify installation 2026-04-03 11:05:27 -07:00
Timothy Kassis
575404d3c2 Remove skill that LLMs already know well and some old skills. Also updated Rowan skill. 2026-04-02 14:08:18 -07:00
Timothy Kassis
d30c2feead Merge pull request #120 from corinwagen/main
update Rowan's skill for `rowan-python` v3
2026-04-02 14:02:20 -07:00
Timothy Kassis
a9643a925d Add optimize-for-gpu skill 2026-04-02 13:04:18 -07:00
Corin Wagen
5144c87c92 update Rowan's skill 2026-04-02 11:37:22 -04:00
Timothy Kassis
37a2b709b1 Update Adaptyv Bio skill to use new API 2026-04-01 15:04:28 -07:00
Timothy Kassis
b58ad7e874 Update README, examples and kills list 2026-03-30 16:56:17 -07:00
Timothy Kassis
f4b05302fa Add paper-lookup skill 2026-03-30 16:33:47 -07:00
Timothy Kassis
cc82696b1f Remove old literature databases 2026-03-30 16:19:01 -07:00
Timothy Kassis
909323b5f7 Add combined database-lookup skill 2026-03-30 16:12:33 -07:00
Timothy Kassis
c39f71686d Update torch-geometric skill 2026-03-30 16:11:37 -07:00
Timothy Kassis
ce8d40f083 Remove all individual skill databases which are now part of database-lookup 2026-03-30 14:32:19 -07:00
Cong
ca6a521890 fix(neuropixels-analysis): correct broken internal links reference/ → references/
All 11 internal markdown links in neuropixels-analysis/SKILL.md pointed
to `reference/` (without 's') but the actual directory is `references/`.
This made every reference document link return 404.

Changes:
- 3 section headings: reference/ → references/
- 8 markdown links: reference/ → references/

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-29 21:36:03 -04:00
Timothy Kassis
71add64426 Remove planning with files skill becasue it is specific to Claude Code 2026-03-25 14:40:17 -07:00
Timothy Kassis
d9b2503391 Make writing skills more explicit 2026-03-25 11:54:41 -07:00
Timothy Kassis
04a7be2319 Add Security Disclaimer section to README
Introduced a new section outlining the security implications of using agent skills, emphasizing the importance of reviewing skills before installation. Included recommendations for safe usage and a reminder of the review process for contributions.
2026-03-25 09:31:25 -07:00
Timothy Kassis
cb364cc3d8 Bump version 2026-03-23 16:27:05 -07:00
Timothy Kassis
f93d13b08e Improve token discovery for Modal 2026-03-23 16:26:43 -07:00
Timothy Kassis
b75f4e8d08 Update Modal skill 2026-03-23 16:21:31 -07:00
Timothy Kassis
71e26ffa6d Add planning with files skill from @OthmanAdi 2026-03-23 14:34:03 -07:00
Timothy Kassis
1531326a59 Add K-Dense BYOK AI co-scientist to README with features and links 2026-03-22 17:50:53 -07:00
Timothy Kassis
903caa6a26 Add writing skills 2026-03-20 09:59:52 -07:00
jiaodu1307
d3a22a7092 Merge branch 'K-Dense-AI:main' into fix/rdkit-skill-gzip-import-clean 2026-03-19 11:06:37 +08:00
Timothy Kassis
1346c01d9d Bump version 2026-03-18 12:22:31 -07:00
Timothy Kassis
4b90d0ca5b Merge pull request #100 from mwiewior/polars-bio
feat: Add polars-bio skill for genomic interval operations and bioinformati…
2026-03-18 12:19:58 -07:00
Marek Wieiwórka
436c8608f2 Add polars-bio skill for genomic interval operations and bioinformatics I/O
Adds a new skill covering polars-bio (v0.26.0), a high-performance library
for genomic interval arithmetic and file I/O built on Polars, Arrow, and
DataFusion. All code examples verified against the actual API at runtime.

SKILL.md covers overlap, nearest, merge, coverage, complement, subtract,
cluster, count_overlaps operations plus read/scan/write/sink for BED, VCF,
BAM, CRAM, GFF, GTF, FASTA, FASTQ, SAM, and Hi-C pairs formats.

References: interval_operations, file_io, sql_processing, pileup_operations,
configuration, bioframe_migration.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 10:27:11 +01:00
jiaodu1307
8f9003c443 Fix rdkit skill example: add gzip import 2026-03-14 11:21:12 +08:00
Timothy Kassis
575f1e586f Merge pull request #91 from alif-munim/main
feat: Add arXiv database search skill
2026-03-11 09:59:08 -07:00
Alif Munim
4f46196223 Add ArXiv skill 2026-03-10 08:42:20 +00:00
Timothy Kassis
81589710a5 Merge pull request #87 from Cervolve/feat/primekg-skill
feat: add PrimeKG Precision Medicine Knowledge Graph skill
2026-03-09 10:46:16 -07:00
Eamon
a8b937c56b feat: add PrimeKG Precision Medicine Knowledge Graph skill 2026-03-09 05:29:46 -04:00
Timothy Kassis
c84622c08a Merge pull request #70 from urabbani/feature/geomaster-skill
Add GeoMaster: Comprehensive Geospatial Science Skill
2026-03-06 14:39:13 -08:00
Timothy Kassis
3ff22d0c3a Merge branch 'main' into feature/geomaster-skill 2026-03-06 14:39:04 -08:00
urabbani
2c7ffbbf6d Remove GEOMASTER_IMPROVEMENTS.md 2026-03-06 10:41:43 +05:00
Timothy Kassis
20e1be89f3 Merge pull request #80 from fedorov/update-idc-1.4.0
Update imaging-data-commons skill to v1.4.0
2026-03-05 14:06:03 -08:00
Timothy Kassis
d965eb83bc Upgrade to Nano Banan 2 2026-03-05 10:08:17 -08:00
Timothy Kassis
1299970688 Update marketplace.json to version 2.27.0 and streamline document skill paths for improved organization. 2026-03-05 08:01:31 -08:00
Timothy Kassis
204314ea22 Remove obsolete DOCX documentation and related files, including tutorials, license, and schema definitions, to streamline the project structure. 2026-03-05 07:59:40 -08:00
Timothy Kassis
e46b77d962 Refactor descriptions in markdown-mermaid-writing and timesfm-forecasting skills for clarity and conciseness, removing redundant details while maintaining essential information. 2026-03-05 07:57:07 -08:00
Timothy Kassis
cfffe4d166 Refactor torch_geometric skill references and update skill name to 'torch-geometric' for consistency. Remove obsolete files related to the skill, including documentation and scripts. 2026-03-05 07:54:41 -08:00
Timothy Kassis
2f3d0d724e Update PyMC skill name and description for clarity and consistency 2026-03-05 07:53:32 -08:00
urabbani
85591617fc Improve GeoMaster skill with Rust support, troubleshooting, and modern workflows
Major improvements to the GeoMaster geospatial science skill:

### New Features
- Added Rust geospatial support (GeoRust crates: geo, proj, shapefile, rstar)
- Added comprehensive coordinate systems reference documentation
- Added troubleshooting guide with common error fixes
- Added cloud-native workflows (STAC, Planetary Computer, COG)
- Added automatic skill activation configuration

### Reference Documentation
- NEW: references/coordinate-systems.md - CRS fundamentals, UTM zones, EPSG codes
- NEW: references/troubleshooting.md - Installation fixes, runtime errors, performance tips
- UPDATED: references/programming-languages.md - Now covers 8 languages (added Rust)

### Main Skill File
- Streamlined SKILL.md from 690 to 362 lines (500-line rule compliance)
- Enhanced installation instructions with uv and conda
- Added modern cloud-native workflow examples
- Added performance optimization tips

### Documentation
- NEW: GEOMASTER_IMPROVEMENTS.md - Complete changelog and testing guide
- UPDATED: README.md - Highlight new capabilities

### Skill Activation
- Created skill-rules.json with 150+ keywords and 50+ intent patterns
- Supports file-based and content-based automatic activation

The skill now covers 8 programming languages (Python, R, Julia, JavaScript,
C++, Java, Go, Rust) with 500+ code examples across 70+ geospatial topics.
2026-03-05 14:26:09 +05:00
Andrey Fedorov
0c4a7eaf16 Update imaging-data-commons skill to v1.4.0
Release notes:
- Bump idc-index requirement to 0.11.10
- digital_pathology_guide.md: add "Filter by specimen preparation" section
  with H&E staining and FFPE/frozen embedding query examples (array column syntax)
- digital_pathology_guide.md: add "Identifying Tumor vs Normal Slides" section
  covering primaryAnatomicStructureModifier_CodeMeaning (all SM collections)
  and TCGA barcode parsing via ContainerIdentifier (TCGA-specific)
- digital_pathology_guide.md: add "Finding Pre-Computed Analysis Results" section
  for discovering derived datasets (nuclei segmentations, TIL maps) via
  analysis_results_index
- digital_pathology_guide.md: document per-annotation measurements in DICOM ANN
  objects (extraction via highdicom post-download, link to tutorial notebook)
- digital_pathology_guide.md: update sm_index description with new columns
  (container/slide ID, tissue type, anatomic structure, diagnosis)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-04 17:26:57 -05:00
Timothy Kassis
fc60a11f85 Merge pull request #78 from small-thinking/feat/support-gemini-cli
docs: add support and installation guide for Gemini CLI
2026-03-04 09:28:11 -08:00
Yxjiang
3454f76e88 docs: add support and installation guide for Gemini CLI 2026-03-04 07:21:30 -08:00
Timothy Kassis
29c3240f1a Update .gitignore to include scan_skills.py and ensure .env is ignored 2026-03-03 15:42:17 -08:00
Timothy Kassis
f198f38b22 Add social media links to README for enhanced visibility 2026-03-03 14:35:19 -08:00
Timothy Kassis
4b7c910bb5 Add Skill scanner 2026-03-03 08:29:54 -08:00
Timothy Kassis
69fbf862bd Add skills scanning 2026-03-03 08:26:21 -08:00
Timothy Kassis
c61a6a2ee0 Cleanup 2026-03-03 08:20:03 -08:00
Timothy Kassis
3ed035e64c Added around 23 new skills contributed by the community! 2026-03-03 08:17:25 -08:00
Timothy Kassis
d452499891 Merge pull request #68 from salmanmkc/upgrade-github-actions-node24
Upgrade GitHub Actions for Node 24 compatibility
2026-03-03 07:55:04 -08:00
Timothy Kassis
24ee2e3c49 Merge pull request #69 from salmanmkc/upgrade-github-actions-node24-general
Upgrade GitHub Actions to latest versions
2026-03-03 07:54:36 -08:00
Timothy Kassis
5dfb909509 Merge pull request #72 from ashrafkahoush-ux/feat/cognitive-science-skills
Add dhdna-profiler and what-if-oracle as cognitive science skills
2026-03-03 07:53:43 -08:00
Timothy Kassis
a4eabbb519 Merge pull request #75 from kuanlinhuang/main
Add 12 new scientific skills
2026-03-03 07:52:27 -08:00
Timothy Kassis
5642c61b33 Merge pull request #66 from K-Dense-AI/add-parallel
Add parallel-web skill and update research-lookup
2026-03-03 07:47:29 -08:00
huangkuanlin
7f94783fab Add scVelo RNA velocity analysis workflow and IQ-TREE reference documentation
- Introduced a comprehensive RNA velocity analysis pipeline using scVelo, including data loading, preprocessing, velocity estimation, and visualization.
- Added a script for running RNA velocity analysis with customizable parameters and output options.
- Created detailed documentation for IQ-TREE 2 phylogenetic inference, covering command syntax, model selection, bootstrapping methods, and output interpretation.
- Included references for velocity models and their mathematical framework, along with a comparison of different models.
- Enhanced the scVelo skill documentation with installation instructions, use cases, and best practices for RNA velocity analysis.
2026-03-03 07:15:36 -05:00
Timothy Kassis
b271271df4 Support for Ginkgo Cloud Lab 2026-03-02 09:53:41 -08:00
ashrafkahoush-ux
6e29728849 feat: add cognitive science skills — consciousness-council, dhdna-profiler, what-if-oracle
Three research-backed cognitive science skills:

- consciousness-council: 12-archetype Mind Council deliberation for structured multi-perspective analysis
- dhdna-profiler: cognitive fingerprinting across 12 dimensions (DOI: 10.5281/zenodo.18736629)
- what-if-oracle: multi-branch scenario analysis with probability weighting (DOI: 10.5281/zenodo.18736841)

Each includes reference documentation. All MIT licensed.
Source: https://github.com/ashrafkahoush-ux/Claude-consciousness-skills
2026-03-02 17:16:09 +02:00
urabbani
e67029685b Update README to include GeoMaster skill
- Update skill count from 148 to 149
- Add GeoMaster to Data Analysis & Visualization section
- Add geospatial science domain to the main domains list
- Update skill count across all relevant sections

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-02 14:32:35 +05:00
Salman Muin Kayser Chishti
e62b0eb98b Upgrade GitHub Actions to latest versions
Signed-off-by: Salman Muin Kayser Chishti <13schishti@gmail.com>
2026-03-02 09:20:16 +00:00
Salman Muin Kayser Chishti
5e62d71168 Upgrade GitHub Actions for Node 24 compatibility
Signed-off-by: Salman Muin Kayser Chishti <13schishti@gmail.com>
2026-03-02 09:20:08 +00:00
Timothy Kassis
b0923b2e06 Merge pull request #67 from 04cb/fix/docs-pymatgen-computedentry-energy
Fix docs: correct ComputedEntry energy parameter description
2026-03-01 18:00:44 -08:00
Timothy Kassis
0cec94a92a Merge pull request #65 from urabbani/feature/geomaster-skill
Add GeoMaster: Comprehensive Geospatial Science Skill
2026-03-01 18:00:30 -08:00
04cb
2585a40ab5 Fix docs: correct ComputedEntry energy parameter description 2026-03-02 07:30:43 +08:00
Vinayak Agarwal
f72b7f4521 Added parallel-web skill
Refactor research lookup skill to enhance backend routing and update documentation. The skill now intelligently selects between the Parallel Chat API and Perplexity sonar-pro-search based on query type. Added compatibility notes, license information, and improved descriptions for clarity. Removed outdated example scripts to streamline the codebase.
2026-03-01 07:36:19 -08:00
urabbani
4787f98d98 Add GeoMaster: Comprehensive Geospatial Science Skill
- Added SKILL.md with installation, quick start, core concepts, workflows
- Added 12 reference documentation files covering 70+ topics
- Includes 500+ code examples across 7 programming languages
- Covers remote sensing, GIS, ML/AI, 30+ scientific domains
- MIT License

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Dr. Umair Rabbani <umairrs@gmail.com>
2026-03-01 13:42:41 +05:00
Timothy Kassis
29c869326e Enhance README by adding a description of K-Dense Web, clarifying its role as a hosted platform built on the scientific skills collection. This addition aims to promote the platform's features and benefits. 2026-02-28 07:23:48 -08:00
Timothy Kassis
a472690126 Revise README to streamline content and promote K-Dense Web, highlighting its features and benefits. Remove outdated sections and enhance calls to action for cloud-based execution and publication-ready outputs. 2026-02-27 13:42:12 -08:00
Timothy Kassis
c58a309012 Update README to reflect the increase in scientific skills from 148 to 250+ databases, and enhance descriptions for Python package and integration skills. Adjust badge and feature tables accordingly. 2026-02-27 13:36:31 -08:00
Timothy Kassis
6040d02c8c Update README and documentation to reflect the addition of the pyzotero skill and increment skill count from 147 to 148. Bump version to 2.24.0 in marketplace.json. 2026-02-27 09:38:51 -08:00
Timothy Kassis
8dc5701063 Use Nano Banana 2 2026-02-26 08:59:40 -08:00
Timothy Kassis
d4177ce3a5 Merge pull request #61 from connerlambden/add-bgpt-skill
Add BGPT paper search skill
2026-02-24 14:23:19 -08:00
connerlambden
f54b1bb174 Add BGPT paper search skill 2026-02-24 14:42:31 -07:00
Timothy Kassis
29ae12d2c0 Merge pull request #62 from leipzig/feature/add-tiledb-vcf-skill
Feature/add tiledb-vcf skill
2026-02-24 12:43:57 -08:00
Timothy Kassis
77883baba2 Merge pull request #60 from renato-umeton/main
Fix architecture diagram
2026-02-24 12:41:32 -08:00
Jeremy Leipzig
791fd2361c Update skill counts and add TileDB-VCF to repository documentation
- Update skill count badges and descriptions from 146 to 147 skills
- Add TileDB-VCF to genomic tools list in bioinformatics section
- Add variant database management use case for TileDB-VCF
- Add comprehensive TileDB-VCF entry to docs/scientific-skills.md
2026-02-24 12:07:21 -07:00
Jeremy Leipzig
730531e0d7 Remove all reference documentation files and clean up references
- Delete references/population_genomics.md
- Remove all references to deleted documentation files
- Clean up References section since no reference files remain
- Simplify skill to standalone main file only
2026-02-24 11:30:31 -07:00
Jeremy Leipzig
55811bdbbe Remove references/querying.md
- Delete detailed querying reference documentation
- Update main skill to remove references to querying.md
- Leave only population_genomics.md reference file
2026-02-24 11:29:01 -07:00
Jeremy Leipzig
c576d2e66a Remove references/export.md and references/ingestion.md
- Delete detailed export and ingestion reference documentation
- Update main skill to remove references to deleted files
- Simplify skill to focus on core querying and population genomics
- Keep querying.md and population_genomics.md reference files
2026-02-24 11:27:59 -07:00
Jeremy Leipzig
ba2afda31c Fix documentation URLs to point to correct TileDB Academy
- All documentation is at https://cloud.tiledb.com/academy/
- Remove incorrect service URLs (docs.tiledb.com, support portal, etc.)
- Consolidate to academy and main platform URLs only
- Update contact information to sales@tiledb.com
2026-02-24 11:22:34 -07:00
Jeremy Leipzig
e3a7a85122 Remove multiple advanced export sections
- Remove VEP annotation preparation section
- Remove Cloud Export (S3) section
- Remove Export Validation section
- Remove Efficient Export Strategies section
- Simplify export guide to focus on core export functionality
- Maintain essential VCF/BCF and TSV export examples
2026-02-24 11:17:41 -07:00
Jeremy Leipzig
518261c4f2 Remove Streaming Export for Large Datasets section
- Remove chunked export functionality
- Remove parallel export functionality
- Simplify export guide to focus on basic export operations
2026-02-24 11:13:01 -07:00
Jeremy Leipzig
70a34bd652 Remove Custom Field Selection and Population-Specific Exports sections
- Remove detailed custom TSV field configuration section
- Remove population-based export workflow section
- Simplify export guide to focus on core functionality
2026-02-24 11:11:53 -07:00
Jeremy Leipzig
b4b8572244 Fix CLI subcommands to match actual TileDB-VCF interface
- Replace incorrect subcommands (create-dataset, ingest, list-datasets)
- Use correct subcommands: create, store, export, list, stat, utils, version
- Update examples to match actual CLI usage patterns
- Add comprehensive list of all available subcommands with descriptions
2026-02-24 11:08:13 -07:00
Jeremy Leipzig
3f76537f75 Add critical VCF ingestion requirements
- VCFs must be single-sample (multi-sample not supported)
- Index files (.csi or .tbi) are required for all VCF/BCF files
- Add indexing examples with bcftools and tabix
- Document requirements prominently in both main skill and ingestion guide
2026-02-24 11:07:20 -07:00
Jeremy Leipzig
07e8e0e284 Fix TileDB-Cloud VCF query API syntax
- Correct method: tiledb.cloud.vcf.read() not query_variants()
- Fix parameter: attrs not attributes
- Add namespace parameter for billing account
- Add .to_pandas() conversion step
- Use realistic example with TileDB-Inc dataset URI
2026-02-24 11:00:51 -07:00
Jeremy Leipzig
3feaa90860 Reorganize TileDB-VCF skill structure and update examples
- Remove Java references (focus on Python and CLI)
- Move all TileDB-Cloud content to bottom of document
- Update export example to show VCF format with .export() method
- Simplify 'When to Use' section focusing on open source capabilities
- Better document organization with cloud scaling at the end
2026-02-24 10:59:39 -07:00
Jeremy Leipzig
6fcc786915 Update TileDB-VCF installation with preferred conda/mamba method
- Add preferred conda environment setup with Python <3.10
- Include M1 Mac specific configuration (CONDA_SUBDIR=osx-64)
- Install tiledbvcf-py via mamba from tiledb channel
- Restore normal Python examples (not Docker-only)
- Keep Docker as alternative installation method
2026-02-24 10:21:14 -07:00
Jeremy Leipzig
18ecbc3b30 Fix TileDB-VCF installation instructions
- Correct installation method: Docker images, not pip packages
- Update examples to show Docker container usage
- Based on actual TileDB-VCF repository documentation
2026-02-24 10:02:34 -07:00
Jeremy Leipzig
3c98f0cada Add TileDB-VCF skill for genomic variant analysis
- Add comprehensive TileDB-VCF skill by Jeremy Leipzig
- Covers open source TileDB-VCF for learning and moderate-scale work
- Emphasizes TileDB-Cloud for large-scale production genomics (1000+ samples)
- Includes detailed reference documentation:
  * ingestion.md - Dataset creation and VCF ingestion
  * querying.md - Efficient variant queries
  * export.md - Data export and format conversion
  * population_genomics.md - GWAS and population analysis workflows
- Features accurate TileDB-Cloud API patterns from official repository
- Highlights scale transition: open source → TileDB-Cloud for enterprise
2026-02-24 09:31:48 -07:00
renato-umeton
fa3a20ca4d Fix architecture diagram in markdown 2026-02-23 22:52:10 -05:00
Timothy Kassis
9bc98cabe8 Merge pull request #58 from K-Dense-AI/fix-yaml-frontmatter
Fix allowed-tools YAML frontmatter format across all skills
2026-02-23 13:45:04 -08:00
Timothy Kassis
a33b572e44 Support Alpha Advantage for more financial data 2026-02-23 13:43:11 -08:00
Timothy Kassis
ea9e0b60e7 Fix version number 2026-02-23 13:33:58 -08:00
Timothy Kassis
5490490294 Support for Hedge Fund Monitor from the Office of Financial Research 2026-02-23 13:32:09 -08:00
Timothy Kassis
86b5d1d30b Add support for FiscalData.treasury.gov 2026-02-23 13:20:34 -08:00
Timothy Kassis
0ffa12a0e2 Support EdgarTools to access and analyze SEC Edgar filings, XBRL financial statements, 10-K, 10-Q, and 8-K reports 2026-02-23 13:02:15 -08:00
Vinayak Agarwal
f6f3023d3d Update allowed-tools formatting in SKILL.md files across multiple scientific skills to improve consistency and readability. 2026-02-23 12:36:05 -08:00
Timothy Kassis
f8da4bf9a7 Forecasting examples 2026-02-23 10:50:24 -08:00
Timothy Kassis
8bbf1fc840 Merge pull request #53 from borealBytes/feat/timesfm-forecasting-skill
feat(ml): add timesfm-forecasting skill for local time series forecasting
2026-02-23 09:43:01 -08:00
Timothy Kassis
6df504f03c Merge pull request #57 from renato-umeton/claude/implement-issue-56-tdd-SOjek
Add open-notebook skill with comprehensive API documentation
2026-02-23 09:42:19 -08:00
Clayton Young
df58339850 feat(timesfm): complete all three examples with quality docs
- anomaly-detection: full two-phase rewrite (context Z-score + forecast PI),
  2-panel viz, Sep 2023 correctly flagged CRITICAL (z=+3.03)
- covariates-forecasting: v3 rewrite with variable-shadowing bug fixed,
  2x2 shared-axis viz showing actionable covariate decomposition,
  108-row CSV with distinct per-store price arrays
- global-temperature: output/ subfolder reorganization (all 6 output files
  moved, 5 scripts + shell script paths updated)
- SKILL.md: added Examples table, Quality Checklist, Common Mistakes (8 items),
  Validation & Verification with regression assertions
- .gitattributes already at repo root covering all binary types
2026-02-23 07:43:04 -05:00
Clayton Young
509190118f fix(examples): correct quantile indices, variable shadowing, and test design in anomaly + covariates examples
Anomaly detection fixes:
- Fix critical quantile index bug: index 0 is mean not q10; correct indices are q10=1, q20=2, q80=8, q90=9
- Redesign test: use all 36 months as context, inject 3 synthetic anomalies into future
- Result: 3 CRITICAL detected (was 11/12 — caused by test-set leakage + wrong indices)
- Update severity labels: CRITICAL = outside 80% PI, WARNING = outside 60% PI

Covariates fixes:
- Fix variable-shadowing bug: inner dict comprehension overwrote outer loop store_id
  causing all stores to get identical covariate arrays (store_A's price for everyone)
- Give each store a distinct price baseline (premium $12, standard $10, discount $7.50)
- Trim CONTEXT_LEN from 48 → 24 weeks; CSV now 108 rows (was 180)
- Add NOTE ON REAL DATA comment: temp file pattern for large external datasets

Both scripts regenerated with clean outputs.
2026-02-23 07:43:04 -05:00
Clayton Young
0d98fa353c feat(examples): add anomaly detection and covariates examples
Anomaly Detection Example:
- Uses quantile forecasts as prediction intervals
- Flags values outside 80%/90% CI as warnings/critical anomalies
- Includes visualization with deviation plot

Covariates (XReg) Example:
- Demonstrates forecast_with_covariates() API
- Shows dynamic numerical/categorical covariates
- Shows static categorical covariates
- Includes synthetic retail sales data with price, promotion, holiday

SKILL.md Updates:
- Added anomaly detection section with code example
- Expanded covariates section with covariate types table
- Added XReg modes explanation
- Updated 'When not to use' section to note anomaly detection workaround
2026-02-23 07:43:04 -05:00
Clayton Young
1a65439ebf fix(html): embed animation data for CORS-safe local file access
- Created generate_html.py to embed JSON data directly in HTML
- No external fetch() needed - works when opened directly in browser
- File size: 149.5 KB (self-contained)
- Shows forecast horizon (12-36 months) in stats
2026-02-23 07:43:04 -05:00
Clayton Young
96372cee99 feat(animation): extend forecasts to final date with dynamic horizon
- Each forecast now extends to 2025-12 regardless of historical data length
- Step 1 (12 points): forecasts 36 months ahead to 2025-12
- Step 25 (36 points): forecasts 12 months ahead to 2025-12
- GIF shows full forecast horizon at every animation step
2026-02-23 07:43:04 -05:00
Clayton Young
7b7110eebb fix(animation): use fixed axes showing full observed data in background
- X-axis fixed to 2022-01 to 2025-12 (full data range)
- Y-axis fixed to 0.72°C to 1.52°C (full value range)
- Background shows all observed data (faded gray) + final forecast reference (faded red dashed)
- Foreground shows current step data (bright blue) + current forecast (bright red)
- GIF size reduced from 918KB to 659KB
2026-02-23 07:43:04 -05:00
Clayton Young
1506a60993 feat(example): add interactive forecast animation with slider
Create an all-out demonstration showing how TimesFM forecasts evolve
as more historical data is added:

- generate_animation_data.py: Runs 25 incremental forecasts (12→36 points)
- interactive_forecast.html: Single-file HTML with Chart.js slider
  - Play/Pause animation control
  - Shows historical data, forecast, 80%/90% CIs, and actual future data
  - Live stats: forecast mean, max, min, CI width
- generate_gif.py: Creates animated GIF for embedding in markdown
- forecast_animation.gif: 25-frame animation (896 KB)

Interactive features:
- Slider to manually step through forecast evolution
- Auto-play with 500ms per frame
- Shows how each additional data point changes the forecast
- Confidence intervals narrow as more data is added
2026-02-23 07:43:04 -05:00
Clayton Young
910bcfdc8b fix(example): update visualization title to clarify demo purpose
- Change title from 'Above 1951-1980 Baseline' to clearer example description
- New title: 'TimesFM Zero-Shot Forecast Example / 36-month Temperature Anomaly → 12-month Forecast'
- Makes it clear this is a demonstration with limited input data
2026-02-23 07:43:04 -05:00
Clayton Young
dcde063723 chore: remove markdown-mermaid-writing skill from this branch
This branch was originally created from feat/markdown-mermaid-writing-skill
for development purposes, but the timesfm-forecasting skill should be
independent of PR #50.

- Remove scientific-skills/markdown-mermaid-writing/ directory
- Remove reference to markdown-mermaid-writing from SKILL.md integration section
- This PR now stands alone and does not require PR #50 to be merged first
2026-02-23 07:43:04 -05:00
Clayton Young
88300014e2 docs(skill): add note that model weights are not stored in repo
Model weights (~800 MB) download on-demand from HuggingFace when skill
is first used. Preflight checker ensures sufficient resources before
any download begins.
2026-02-23 07:43:04 -05:00
Clayton Young
c7c5bc21ff feat(example): add working TimesFM forecast example with global temperature data
- Add NOAA GISTEMP global temperature anomaly dataset (36 months, 2022-2024)
- Run TimesFM 1.0 PyTorch forecast for 2025 (12-month horizon)
- Generate fan chart visualization with 80%/90% confidence intervals
- Create comprehensive markdown report with findings and API notes

API Discovery:
- TimesFM 2.5 PyTorch checkpoint has file format issue (model.safetensors
  vs expected torch_model.ckpt)
- Working API uses TimesFmHparams + TimesFmCheckpoint + TimesFm() constructor
- Documented API in GitHub README differs from actual pip package

Includes:
- temperature_anomaly.csv (input data)
- forecast_output.csv (point forecast + quantiles)
- forecast_output.json (machine-readable output)
- forecast_visualization.png (LFS-tracked)
- run_forecast.py (reusable script)
- visualize_forecast.py (chart generation)
- run_example.sh (one-click runner)
- README.md (full report with findings)
2026-02-23 07:43:04 -05:00
Clayton Young
98670bcf47 feat(skill): add timesfm-forecasting skill for time series forecasting
Add comprehensive TimesFM forecasting skill with mandatory system
preflight checks (RAM/GPU/disk), end-to-end CSV forecasting script,
full API reference, data preparation guide, and hardware requirements
documentation. Supports TimesFM 2.5 (200M), 2.0 (500M), and legacy
v1.0 with automatic batch size recommendations based on hardware.
2026-02-23 07:43:04 -05:00
Clayton Young
a0f81aeaa3 chore: remove docs/project files from PR per review feedback
Per borealBytes review comment, removing the docs/project directory
from this PR since only the skill content should be included.

The docs/project content remains in my local fork for reference.

Refs: PR #50
2026-02-23 07:43:04 -05:00
Clayton Young
79e03ea0f6 docs(skill): add common pitfalls section with radar-beta syntax guide
Added '## ⚠️ Common pitfalls' section covering:
- Radar chart syntax (radar-beta vs radar, axis vs x-axis, curve syntax)
- XY Chart vs Radar syntax comparison table
- Accessibility notes for diagrams that don't support accTitle/accDescr

Prevents the x-axis → radar-beta confusion that occurred in the example
research report.
2026-02-23 07:43:04 -05:00
Clayton Young
21bbff2c4e fix(example): correct radar chart syntax from x-axis to radar-beta
Changed from invalid 'radar' with 'x-axis' syntax to proper 'radar-beta'
syntax with axis/curve keywords as per references/diagrams/radar.md.

Also removed accTitle/accDescr (radar-beta doesn't support them) and
added italic description above the code block per accessibility requirements.
2026-02-23 07:43:04 -05:00
Clayton Young
313ba28adf fix(attribution): standardize Boreal Bytes → borealBytes (GitHub username)
All instances of 'Boreal Bytes' updated to 'borealBytes' (as @borealBytes
in narrative context) across issue, PR, kanban, and SKILL.md.

Files: issue-00000050, pr-00000050, SKILL.md
2026-02-23 07:43:04 -05:00
Clayton Young
672a49bb6a docs(pr): add author LinkedIn and email to PR-00000050 2026-02-23 07:43:04 -05:00
Clayton Young
2198b84be2 docs(kanban): update board to reflect PR #50 open and in review
PR https://github.com/K-Dense-AI/claude-scientific-skills/pull/50 is live.
Moved 'Push branch + open PR' task to Done column. Status updated to
In Review. Pie chart updated to match.
2026-02-23 07:43:04 -05:00
Clayton Young
f8d0f97660 docs(project): renumber to #50, add kanban board, link all tracking files
GitHub issue/PR counter on K-Dense-AI/claude-scientific-skills is at 49.
Renumbered all tracking docs to #50 (next available):

- issue-00000050-markdown-mermaid-skill.md (renamed from 00000001)
- pr-00000050-markdown-mermaid-skill.md (renamed from 00000001)
- kanban/feat-00000050-markdown-mermaid-skill.md (new)

Cross-references updated throughout. PR record now links to kanban board.
Upstream PR URL set to https://github.com/K-Dense-AI/claude-scientific-skills/pull/50
2026-02-23 07:43:04 -05:00
Clayton Young
54a592d7f1 fix(mermaid): replace \n with <br/> in all node labels
Mermaid renders literal \n as text on GitHub — line breaks inside
node labels require <br/> syntax. Fixed 12 occurrences across 4 files:

- SKILL.md: three-phase workflow (Phase 1/2/3 nodes)
- issue-00000001: three-phase workflow nodes
- pr-00000001: skill name node
- example-research-report.md: Stage 1-5 nodes in experimental workflow
2026-02-23 07:43:04 -05:00
Clayton Young
ea5a287cf9 fix(attribution): correct source repo URL to SuperiorByteWorks-LLC/agent-project
All 40 references to borealBytes/opencode updated to the correct source:
https://github.com/SuperiorByteWorks-LLC/agent-project

Affected files: SKILL.md, all 24 diagram guides, 9 templates, issue and PR
docs, plus assets/examples/example-research-report.md (new file).

The example report demonstrates full skill usage: flowchart, sequence,
timeline, xychart, radar diagrams — all with accTitle/accDescr and
classDef colors, no %%{init}. Covers HEK293T CRISPR editing efficiency
as a realistic scientific context.
2026-02-23 07:43:04 -05:00
Clayton Young
97d7901870 feat(skill): add markdown-mermaid-writing skill with source format philosophy
New skill establishing markdown + Mermaid diagrams as the default and
canonical documentation format for all scientific skill outputs.

Core principle (from K-Dense Discord, 2026-02-19): Mermaid in markdown
is the source of truth — text-based, version-controlled, token-efficient,
universally renderable. Python/AI images are downstream conversions only.

SKILL.md includes:
- Full 'source format' philosophy with three-phase workflow diagram
- 24-entry diagram type selection table with links to each guide
- 9-entry document template index
- Per-skill integration guides (scientific-schematics, scientific-writing,
  literature-review, and any other output-producing skill)
- Quality checklist for finalizing documents from any skill
- Full attribution for ported Apache-2.0 content

Originated from conversation between Clayton Young (Boreal Bytes) and the
K-Dense team regarding documentation standards for shared scientific skills.
2026-02-23 07:43:04 -05:00
Clayton Young
39bb842a21 docs(references): port style guides, 24 diagram guides, and 9 templates from opencode
All content ported from borealBytes/opencode under Apache-2.0 license with
attribution headers prepended to each file.

- references/markdown_style_guide.md (~733 lines): full markdown formatting,
  citation, collapsible sections, emoji, Mermaid integration, and template
  selection guide
- references/mermaid_style_guide.md (~458 lines): full Mermaid standards —
  emoji set, classDef color palette, accessibility (accTitle/accDescr),
  theme neutrality (no %%{init}), and diagram type selection table
- references/diagrams/ (24 files): per-type exemplars, tips, and templates
  for all Mermaid diagram types
- templates/ (9 files): PR, issue, kanban, ADR, presentation, how-to,
  status report, research paper, project docs

Source: https://github.com/borealBytes/opencode
2026-02-23 07:43:04 -05:00
Clayton Young
21f8536cef docs(pr): add PR record for markdown-mermaid writing skill
Skeleton PR document following the Everything is Code convention.
Contains full changes inventory, impact classification, testing steps,
architecture diagram showing integration with existing skills, and
design decision notes.

Files touched: docs/project/pr/pr-00000001-markdown-mermaid-skill.md
2026-02-23 07:43:04 -05:00
Clayton Young
0607ad9cf8 docs(issues): add feature request for markdown-mermaid writing skill
Documents the feature request to add a skill establishing markdown+Mermaid
as the canonical source format for scientific documentation. Includes the
originating K-Dense Discord conversation, three-phase workflow diagram
(Mermaid → Python → AI images), acceptance criteria, and technical spec
for the skill directory structure.

Files touched: docs/project/issues/issue-00000001-markdown-mermaid-skill.md
2026-02-23 07:43:04 -05:00
Claude
259e01f7fd Add open-notebook skill: self-hosted NotebookLM alternative (issue #56)
Implements the open-notebook skill as a comprehensive integration for the
open-source, self-hosted alternative to Google NotebookLM. Addresses the
gap created by Google not providing a public NotebookLM API.

Developed using TDD with 44 tests covering skill structure, SKILL.md
frontmatter/content, reference documentation, example scripts, API
endpoint coverage, and marketplace.json registration.

Includes:
- SKILL.md with full documentation, code examples, and provider matrix
- references/api_reference.md covering all 20+ REST API endpoint groups
- references/examples.md with complete research workflow examples
- references/configuration.md with Docker, env vars, and security setup
- references/architecture.md with system design and data flow diagrams
- scripts/ with 3 example scripts (notebook, source, chat) + test suite
- marketplace.json updated to register the new skill

Closes #56

https://claude.ai/code/session_015CqcNWNYmDF9sqxKxziXcz
2026-02-23 00:18:19 +00:00
Timothy Kassis
f7585b7624 Merge pull request #50 from borealBytes/feat/markdown-mermaid-writing-skill
feat(scientific-communication): add markdown-mermaid-writing skill
2026-02-21 20:49:19 -08:00
borealBytes
1c8470a7c5 chore: remove docs/project files from PR per review feedback
Per borealBytes review comment, removing the docs/project directory
from this PR since only the skill content should be included.

The docs/project content remains in my local fork for reference.

Refs: PR #50
2026-02-20 19:27:17 -05:00
borealBytes
b955648f14 docs(skill): add common pitfalls section with radar-beta syntax guide
Added '## ⚠️ Common pitfalls' section covering:
- Radar chart syntax (radar-beta vs radar, axis vs x-axis, curve syntax)
- XY Chart vs Radar syntax comparison table
- Accessibility notes for diagrams that don't support accTitle/accDescr

Prevents the x-axis → radar-beta confusion that occurred in the example
research report.
2026-02-19 22:09:55 -05:00
borealBytes
dc250634e4 fix(example): correct radar chart syntax from x-axis to radar-beta
Changed from invalid 'radar' with 'x-axis' syntax to proper 'radar-beta'
syntax with axis/curve keywords as per references/diagrams/radar.md.

Also removed accTitle/accDescr (radar-beta doesn't support them) and
added italic description above the code block per accessibility requirements.
2026-02-19 22:03:33 -05:00
borealBytes
1f59444cec fix(attribution): standardize Boreal Bytes → borealBytes (GitHub username)
All instances of 'Boreal Bytes' updated to 'borealBytes' (as @borealBytes
in narrative context) across issue, PR, kanban, and SKILL.md.

Files: issue-00000050, pr-00000050, SKILL.md
2026-02-19 18:48:23 -05:00
borealBytes
99f23be117 docs(pr): add author LinkedIn and email to PR-00000050 2026-02-19 18:47:50 -05:00
borealBytes
6f4713387d docs(kanban): update board to reflect PR #50 open and in review
PR https://github.com/K-Dense-AI/claude-scientific-skills/pull/50 is live.
Moved 'Push branch + open PR' task to Done column. Status updated to
In Review. Pie chart updated to match.
2026-02-19 18:39:36 -05:00
borealBytes
747fd11f93 docs(project): renumber to #50, add kanban board, link all tracking files
GitHub issue/PR counter on K-Dense-AI/claude-scientific-skills is at 49.
Renumbered all tracking docs to #50 (next available):

- issue-00000050-markdown-mermaid-skill.md (renamed from 00000001)
- pr-00000050-markdown-mermaid-skill.md (renamed from 00000001)
- kanban/feat-00000050-markdown-mermaid-skill.md (new)

Cross-references updated throughout. PR record now links to kanban board.
Upstream PR URL set to https://github.com/K-Dense-AI/claude-scientific-skills/pull/50
2026-02-19 18:38:54 -05:00
borealBytes
7a3ce8fb18 fix(mermaid): replace \n with <br/> in all node labels
Mermaid renders literal \n as text on GitHub — line breaks inside
node labels require <br/> syntax. Fixed 12 occurrences across 4 files:

- SKILL.md: three-phase workflow (Phase 1/2/3 nodes)
- issue-00000001: three-phase workflow nodes
- pr-00000001: skill name node
- example-research-report.md: Stage 1-5 nodes in experimental workflow
2026-02-19 18:35:25 -05:00
borealBytes
e05e5373d0 fix(attribution): correct source repo URL to SuperiorByteWorks-LLC/agent-project
All 40 references to borealBytes/opencode updated to the correct source:
https://github.com/SuperiorByteWorks-LLC/agent-project

Affected files: SKILL.md, all 24 diagram guides, 9 templates, issue and PR
docs, plus assets/examples/example-research-report.md (new file).

The example report demonstrates full skill usage: flowchart, sequence,
timeline, xychart, radar diagrams — all with accTitle/accDescr and
classDef colors, no %%{init}. Covers HEK293T CRISPR editing efficiency
as a realistic scientific context.
2026-02-19 18:29:14 -05:00
borealBytes
00f8890b77 feat(skill): add markdown-mermaid-writing skill with source format philosophy
New skill establishing markdown + Mermaid diagrams as the default and
canonical documentation format for all scientific skill outputs.

Core principle (from K-Dense Discord, 2026-02-19): Mermaid in markdown
is the source of truth — text-based, version-controlled, token-efficient,
universally renderable. Python/AI images are downstream conversions only.

SKILL.md includes:
- Full 'source format' philosophy with three-phase workflow diagram
- 24-entry diagram type selection table with links to each guide
- 9-entry document template index
- Per-skill integration guides (scientific-schematics, scientific-writing,
  literature-review, and any other output-producing skill)
- Quality checklist for finalizing documents from any skill
- Full attribution for ported Apache-2.0 content

Originated from conversation between Clayton Young (Boreal Bytes) and the
K-Dense team regarding documentation standards for shared scientific skills.
2026-02-19 18:27:03 -05:00
borealBytes
02e19e3df9 docs(references): port style guides, 24 diagram guides, and 9 templates from opencode
All content ported from borealBytes/opencode under Apache-2.0 license with
attribution headers prepended to each file.

- references/markdown_style_guide.md (~733 lines): full markdown formatting,
  citation, collapsible sections, emoji, Mermaid integration, and template
  selection guide
- references/mermaid_style_guide.md (~458 lines): full Mermaid standards —
  emoji set, classDef color palette, accessibility (accTitle/accDescr),
  theme neutrality (no %%{init}), and diagram type selection table
- references/diagrams/ (24 files): per-type exemplars, tips, and templates
  for all Mermaid diagram types
- templates/ (9 files): PR, issue, kanban, ADR, presentation, how-to,
  status report, research paper, project docs

Source: https://github.com/borealBytes/opencode
2026-02-19 18:25:20 -05:00
borealBytes
b376b40f59 docs(pr): add PR record for markdown-mermaid writing skill
Skeleton PR document following the Everything is Code convention.
Contains full changes inventory, impact classification, testing steps,
architecture diagram showing integration with existing skills, and
design decision notes.

Files touched: docs/project/pr/pr-00000001-markdown-mermaid-skill.md
2026-02-19 18:24:45 -05:00
borealBytes
3d4baba365 docs(issues): add feature request for markdown-mermaid writing skill
Documents the feature request to add a skill establishing markdown+Mermaid
as the canonical source format for scientific documentation. Includes the
originating K-Dense Discord conversation, three-phase workflow diagram
(Mermaid → Python → AI images), acceptance criteria, and technical spec
for the skill directory structure.

Files touched: docs/project/issues/issue-00000001-markdown-mermaid-skill.md
2026-02-19 18:23:43 -05:00
Timothy Kassis
22b0ad54ab Bump version number to 2.20.0 in marketplace.json 2026-02-17 16:35:03 -08:00
Timothy Kassis
9d0125f93b Update readme 2026-02-17 16:34:41 -08:00
Timothy Kassis
326b043b8f Merge pull request #46 from fedorov/update-idc-v1.3.0
update imaging-data-commons skill to v1.3.1
2026-02-16 10:24:23 -08:00
Andrey Fedorov
5a471d9c36 update to v1.3.1 2026-02-11 09:42:22 -05:00
Andrey Fedorov
2597540aa1 update imaging-data-commons skill to v1.3.0 2026-02-10 18:12:49 -05:00
Timothy Kassis
3a5f2e2227 Bump version number 2026-02-05 08:53:47 -08:00
Timothy Kassis
d80ddf17c9 Merge pull request #41 from K-Dense-AI/update-writing-skills
Sync writing skills from claude-scientific-writer
2026-02-05 08:52:18 -08:00
Timothy Kassis
7f9a689126 Merge pull request #42 from fedorov/update-idc-skill-to-v1.2.0
Update imaging-data-commons skill to v1.2.0
2026-02-05 08:51:06 -08:00
Andrey Fedorov
63801af8e6 Update imaging-data-commons skill to v1.2.0
see changes in the changelog upstream:

https://github.com/ImagingDataCommons/idc-claude-skill/blob/main/CHANGELOG.md#120---2026-02-04
2026-02-04 14:35:14 -05:00
Vinayak Agarwal
5c71912049 Add infographics skill for creating visual data representations
New skill for generating scientific infographics including:
- SKILL.md with comprehensive guidelines for infographic creation
- Design principles and color palette references
- Scripts for AI-powered infographic generation
- Support for various infographic types (statistical, process, comparison, etc.)

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-03 17:03:44 -08:00
Vinayak Agarwal
21801d71b2 Enhance literature search and research lookup documentation
- Added criteria for identifying high-quality literature, emphasizing the importance of Tier-1 journals and citation counts.
- Updated guidelines for citation finding to prioritize influential papers and reputable authors.
- Revised abstract writing instructions to reflect the preference for flowing paragraphs over structured formats.
- Included best practices for generating AI schematics, specifically regarding figure numbering and content clarity.
2026-02-03 14:31:19 -08:00
Timothy Kassis
49024095e3 Merge pull request #37 from jiaodu1307/fix/rdkit-morgan-fp
fix(rdkit): update fingerprint generation to use rdFingerprintGenerator API
2026-02-01 18:46:35 -08:00
Timothy Kassis
d17d74dc5d Add support for economic data form the Federal Reserve using FRED 2026-01-27 10:41:40 -08:00
jiaodu1307
06ac0af626 refactor(rdkit): update fingerprint generation to use rdFingerprintGenerator API
- Replace direct calls to AllChem, Pairs, and Torsions with rdFingerprintGenerator in similarity_search.py
- Update example code in SKILL.md to reflect the new API usage
- Maintain existing functionality while adopting the modern fingerprint generation interface recommended by RDKit
2026-01-26 20:25:28 +08:00
Timothy Kassis
a31cf4dd97 Merge pull request #35 from fedorov/add-idc-clean
Added Imaging Data Commons skill
2026-01-25 10:17:32 -08:00
Andrey Fedorov
79a598e060 Register imaging-data-commons skill in the marketplace 2026-01-23 17:10:02 -05:00
Andrey Fedorov
1d306c59cf Update to include new index available from idc-index 2026-01-23 17:05:50 -05:00
Andrey Fedorov
b71988fcdf Added Imaging Data Commons skill 2026-01-22 18:26:30 -05:00
Timothy Kassis
cd537c1af6 Replace all instances of Sonnet to Opus 2026-01-21 09:16:34 -05:00
Timothy Kassis
c5413a6b5c Remove Biomni due to incompatibilities 2026-01-21 09:11:38 -05:00
Timothy Kassis
497232fbc1 Merge pull request #32 from K-Dense-AI/add-open-source-acknowledgements
Add open source acknowledgements
2026-01-15 20:44:16 -08:00
Haoxuan "Orion" Li
2a42585d11 docs: fix README text symbols 2026-01-15 16:05:02 -08:00
Haoxuan "Orion" Li
8578c44724 Merge branch 'main' into add-open-source-acknowledgements 2026-01-15 16:01:38 -08:00
Haoxuan "Orion" Li
b4e35897ae docs: add acknowledgements and sponsor information on open source projects referenced 2026-01-15 16:00:45 -08:00
Timothy Kassis
25f29ac3db Update readme 2026-01-15 12:49:04 -08:00
Timothy Kassis
bbe8a15cf7 Update README.md to include a link to a detailed comparison of K-Dense Web and Claude, and enhance contribution guidelines for adherence to the Agent Skills Specification. 2026-01-14 09:53:20 -08:00
Timothy Kassis
955a36ac82 Update README.md to enhance plugin installation instructions and add management commands 2026-01-12 17:17:47 -08:00
Timothy Kassis
e2e00231da Add support for Rowan computational platform that provides a suite of design and simulation tools for chemical R&D 2026-01-12 13:22:43 -08:00
Timothy Kassis
f086d9f499 Merge pull request #31 from shao-shuai/fix/uspto-database
Add patentsview api key for patent search api
2026-01-09 08:57:21 -08:00
shao-shuai
68f8f709f3 Add patentsview api key for patent search api 2026-01-08 22:38:59 -08:00
Timothy Kassis
a7221bb237 Merge pull request #30 from marovole/fix/shell-command-injection-docs
fix(security): Replace shell=True with safe subprocess patterns in documentation
2026-01-08 08:53:35 -08:00
marovole
b6a6d698db fix(security): replace shell=True with safe subprocess patterns in documentation
## Summary
Fix command injection vulnerabilities in documentation examples by replacing
shell=True with safe list-based subprocess calls.

## Changes

### alphafold-database/SKILL.md
- Replace shell=True with list-form subprocess.run()
- Add input validation for taxonomy_id parameter
- Add security warning note with link to Python docs

### modal/references/web-endpoints.md
- Replace shell=True with list-form subprocess.Popen()
- Add security warning note

## Security
These changes prevent potential command injection if users copy these examples
with untrusted input. The new patterns follow Python security best practices.
2026-01-08 15:05:30 +08:00
Timothy Kassis
38c1560c7b Merge pull request #29 from K-Dense-AI/orion/add-k-dense-web-gif
Add K-Dense Web GIF to README
2026-01-07 20:38:47 -08:00
Haoxuan "Orion" Li
7232cf73a9 docs: add K-Dense Web GIF 2026-01-07 17:13:23 -08:00
Timothy Kassis
29536568d4 Merge pull request #28 from Jacobluke-/patch-1
Fix typo in gget/SKILL.md description
2026-01-07 08:56:08 -08:00
Jacob Luke
912bdc7afa Fix description formatting in SKILL.md
Updated description formatting in SKILL.md
2026-01-07 15:15:18 +08:00
Jacob Luke
7942c59146 Fix typo in gget/SKILL.md description
Fix typo to avoid YAML: mapping values are not allowed in this context at line 2 column 92
2026-01-07 15:08:58 +08:00
Timothy Kassis
808578ba03 Enhance README.md with detailed comparison of features between the local repo and K-Dense Web, highlighting benefits such as zero setup, cloud compute, and advanced workflows. 2026-01-06 21:01:58 -08:00
Timothy Kassis
2cb6f2e645 Bump version 2026-01-05 18:21:49 -08:00
Timothy Kassis
87497a3c60 Add K-Dense Web skill 2026-01-05 18:20:10 -08:00
Timothy Kassis
ca49c8c105 Update README.md to clarify capabilities and usage instructions for Claude Code and MCP clients 2026-01-05 17:23:58 -08:00
Timothy Kassis
9ab5b29dc5 Merge pull request #26 from K-Dense-AI/fix-writing-skills
Fix pptx-posters SKILL.md with correct content
2026-01-05 15:47:03 -08:00
Timothy Kassis
90aea1b0a5 Merge branch 'main' into fix-writing-skills 2026-01-05 15:46:55 -08:00
Timothy Kassis
5ef0ccddc2 Clean description fields 2026-01-05 14:29:10 -08:00
Timothy Kassis
9cb0c2f934 Disambiguate descriptions 2026-01-05 14:25:22 -08:00
Vinayak Agarwal
7fff998fe6 Fix pptx-posters SKILL.md with correct content from claude-scientific-writer 2026-01-05 14:11:43 -08:00
Timothy Kassis
15d9e4699a Update examples 2026-01-05 13:49:00 -08:00
Timothy Kassis
e268d8db9b Writing enhancements 2026-01-05 13:33:11 -08:00
Timothy Kassis
1d716b0375 Merge pull request #25 from K-Dense-AI/fix-writing-skills
Merge skills from claude-scientific-writer
2026-01-05 13:31:55 -08:00
Vinayak Agarwal
c127b737a5 Remove extra md files from markitdown 2026-01-05 13:07:50 -08:00
Vinayak Agarwal
5b52a8dd23 Remove test scripts and summary files 2026-01-05 13:06:20 -08:00
Vinayak Agarwal
3439a21f57 Enhance citation management and literature review guidelines
- Updated SKILL.md in citation management to include best practices for identifying seminal and high-impact papers, emphasizing citation count thresholds, venue quality tiers, and author reputation indicators.
- Expanded literature review SKILL.md to prioritize high-impact papers, detailing citation metrics, journal tiers, and author reputation assessment.
- Added comprehensive evaluation strategies for paper impact and quality in literature_search_strategies.md, including citation count significance and journal impact factor guidance.
- Improved research lookup scripts to prioritize results based on citation count, venue prestige, and author reputation, enhancing the quality of research outputs.
2026-01-05 13:01:10 -08:00
Timothy Kassis
d243a12564 Merge pull request #24 from backtrue/feature/add-nstc-support
feat(research-grants): Add comprehensive Taiwan NSTC proposal support
2026-01-05 12:38:29 -08:00
Timothy Kassis
70375367d6 Support for writing and executing MATLAB/Octave scripts 2026-01-05 10:15:22 -08:00
backtrue
4427270a71 feat(research-grants): Add comprehensive Taiwan NSTC proposal support
- Add new nstc_guidelines.md with official requirements and practical insights
- Include CM03 format specifications and page limits by field
- Integrate LaTeX templates (CTAN package, Overleaf templates)
- Add practical writing strategies from three expert reviewers:
  * Prof. Huang You-Ping (NPU): Scoring thresholds and section strategies
  * Prof. Guo Yao-Huang: Closed-loop logic and KPI formulation
  * President Wei Yao-Hui (Mackay): SMART principles and review dimensions
- Include budget preparation guidance and common pitfalls
- Update SKILL.md to reference NSTC in overview and agency list

This comprehensive guide provides 700+ lines of actionable guidance for
Taiwan NSTC (formerly MOST/NSC) research proposal writing.
2026-01-06 00:34:59 +09:00
Timothy Kassis
9827af22ad Update readme 2026-01-02 19:09:54 -08:00
Timothy Kassis
58a32ff246 Update readme 2026-01-02 19:09:01 -08:00
Timothy Kassis
8f337f1574 Clarify licensing terms in README.md to specify that while the repository is MIT licensed, individual skills may have different licenses. Added a section on individual skill licenses to ensure users understand their compliance responsibilities. 2026-01-02 13:50:33 -08:00
Timothy Kassis
6de317a90c Add suggestion to use K-Dense Web for complicated workflows. 2026-01-02 13:27:48 -08:00
Timothy Kassis
805b1e1e0b Add compatibility field to some of the skills 2025-12-31 15:15:59 -08:00
3132 changed files with 625839 additions and 292626 deletions

View File

@@ -1,160 +0,0 @@
{
"name": "claude-scientific-skills",
"owner": {
"name": "K-Dense Inc.",
"email": "contact@k-dense.ai"
},
"metadata": {
"description": "Claude scientific skills from K-Dense Inc",
"version": "2.11.2"
},
"plugins": [
{
"name": "scientific-skills",
"description": "Collection of scientific skills",
"source": "./",
"strict": false,
"skills": [
"./scientific-skills/adaptyv",
"./scientific-skills/aeon",
"./scientific-skills/anndata",
"./scientific-skills/arboreto",
"./scientific-skills/astropy",
"./scientific-skills/biomni",
"./scientific-skills/biopython",
"./scientific-skills/bioservices",
"./scientific-skills/cellxgene-census",
"./scientific-skills/cirq",
"./scientific-skills/cobrapy",
"./scientific-skills/dask",
"./scientific-skills/datacommons-client",
"./scientific-skills/datamol",
"./scientific-skills/deepchem",
"./scientific-skills/deeptools",
"./scientific-skills/denario",
"./scientific-skills/diffdock",
"./scientific-skills/esm",
"./scientific-skills/etetoolkit",
"./scientific-skills/flowio",
"./scientific-skills/fluidsim",
"./scientific-skills/geniml",
"./scientific-skills/geopandas",
"./scientific-skills/gget",
"./scientific-skills/gtars",
"./scientific-skills/histolab",
"./scientific-skills/hypogenic",
"./scientific-skills/lamindb",
"./scientific-skills/markitdown",
"./scientific-skills/matchms",
"./scientific-skills/matplotlib",
"./scientific-skills/medchem",
"./scientific-skills/modal",
"./scientific-skills/molfeat",
"./scientific-skills/neurokit2",
"./scientific-skills/networkx",
"./scientific-skills/paper-2-web",
"./scientific-skills/pathml",
"./scientific-skills/pennylane",
"./scientific-skills/perplexity-search",
"./scientific-skills/plotly",
"./scientific-skills/polars",
"./scientific-skills/pydeseq2",
"./scientific-skills/pydicom",
"./scientific-skills/pyhealth",
"./scientific-skills/pylabrobot",
"./scientific-skills/pymatgen",
"./scientific-skills/pymc",
"./scientific-skills/pymoo",
"./scientific-skills/pyopenms",
"./scientific-skills/pufferlib",
"./scientific-skills/pysam",
"./scientific-skills/pytdc",
"./scientific-skills/pytorch-lightning",
"./scientific-skills/qiskit",
"./scientific-skills/qutip",
"./scientific-skills/rdkit",
"./scientific-skills/scanpy",
"./scientific-skills/scikit-bio",
"./scientific-skills/scikit-learn",
"./scientific-skills/scikit-survival",
"./scientific-skills/scvi-tools",
"./scientific-skills/seaborn",
"./scientific-skills/shap",
"./scientific-skills/simpy",
"./scientific-skills/stable-baselines3",
"./scientific-skills/statsmodels",
"./scientific-skills/sympy",
"./scientific-skills/torch_geometric",
"./scientific-skills/torchdrug",
"./scientific-skills/transformers",
"./scientific-skills/umap-learn",
"./scientific-skills/vaex",
"./scientific-skills/zarr-python",
"./scientific-skills/alphafold-database",
"./scientific-skills/biorxiv-database",
"./scientific-skills/brenda-database",
"./scientific-skills/chembl-database",
"./scientific-skills/clinicaltrials-database",
"./scientific-skills/clinpgx-database",
"./scientific-skills/clinvar-database",
"./scientific-skills/cosmic-database",
"./scientific-skills/drugbank-database",
"./scientific-skills/ena-database",
"./scientific-skills/ensembl-database",
"./scientific-skills/fda-database",
"./scientific-skills/gene-database",
"./scientific-skills/geo-database",
"./scientific-skills/gwas-database",
"./scientific-skills/hmdb-database",
"./scientific-skills/kegg-database",
"./scientific-skills/metabolomics-workbench-database",
"./scientific-skills/openalex-database",
"./scientific-skills/opentargets-database",
"./scientific-skills/pdb-database",
"./scientific-skills/pubchem-database",
"./scientific-skills/pubmed-database",
"./scientific-skills/reactome-database",
"./scientific-skills/string-database",
"./scientific-skills/uniprot-database",
"./scientific-skills/uspto-database",
"./scientific-skills/zinc-database",
"./scientific-skills/exploratory-data-analysis",
"./scientific-skills/hypothesis-generation",
"./scientific-skills/literature-review",
"./scientific-skills/peer-review",
"./scientific-skills/scholar-evaluation",
"./scientific-skills/scientific-brainstorming",
"./scientific-skills/scientific-critical-thinking",
"./scientific-skills/scientific-writing",
"./scientific-skills/statistical-analysis",
"./scientific-skills/scientific-visualization",
"./scientific-skills/citation-management",
"./scientific-skills/clinical-decision-support",
"./scientific-skills/clinical-reports",
"./scientific-skills/generate-image",
"./scientific-skills/latex-posters",
"./scientific-skills/market-research-reports",
"./scientific-skills/pptx-posters",
"./scientific-skills/research-grants",
"./scientific-skills/research-lookup",
"./scientific-skills/scientific-schematics",
"./scientific-skills/scientific-slides",
"./scientific-skills/treatment-plans",
"./scientific-skills/venue-templates",
"./scientific-skills/document-skills/docx",
"./scientific-skills/document-skills/pdf",
"./scientific-skills/document-skills/pptx",
"./scientific-skills/document-skills/xlsx",
"./scientific-skills/benchling-integration",
"./scientific-skills/dnanexus-integration",
"./scientific-skills/labarchive-integration",
"./scientific-skills/latchbio-integration",
"./scientific-skills/omero-integration",
"./scientific-skills/opentrons-integration",
"./scientific-skills/protocolsio-integration",
"./scientific-skills/get-available-resources",
"./scientific-skills/iso-13485-certification"
]
}
]
}

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. -->

113
.github/workflows/pr-skill-scan.yml vendored Normal file
View File

@@ -0,0 +1,113 @@
name: PR Skill Scan
on:
pull_request:
paths:
- "skills/**"
- "scan_skills.py"
- "scan_pr_skills.py"
- "pyproject.toml"
- "uv.lock"
- ".github/workflows/pr-skill-scan.yml"
permissions:
contents: read
pull-requests: write
concurrency:
group: pr-skill-scan-${{ github.event.pull_request.number }}
cancel-in-progress: true
jobs:
scan:
name: Scan changed skills
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: Checkout PR
uses: actions/checkout@v6
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}
- name: Detect changed skills
id: changed
run: |
set -euo pipefail
BASE_SHA="${{ github.event.pull_request.base.sha }}"
HEAD_SHA="${{ github.event.pull_request.head.sha }}"
echo "Base: $BASE_SHA"
echo "Head: $HEAD_SHA"
# Files added/copied/modified/renamed under skills/<skill>/...
CHANGED_FILES=$(git diff --name-only --diff-filter=ACMR "$BASE_SHA" "$HEAD_SHA" -- 'skills/**' || true)
echo "Changed files under skills/:"
echo "$CHANGED_FILES"
# Derive unique top-level skill directories and keep only those that still exist with a SKILL.md
SKILL_DIRS=$(echo "$CHANGED_FILES" \
| awk -F/ 'NF>=2 && $1=="skills" {print $1 "/" $2}' \
| sort -u)
EXISTING=""
for d in $SKILL_DIRS; do
if [ -f "$d/SKILL.md" ]; then
EXISTING="$EXISTING $d"
fi
done
EXISTING=$(echo "$EXISTING" | xargs || true)
echo "Skill dirs to scan: '$EXISTING'"
echo "skill_dirs=$EXISTING" >> "$GITHUB_OUTPUT"
- name: Set up uv
if: steps.changed.outputs.skill_dirs != ''
uses: astral-sh/setup-uv@v8.0.0
with:
enable-cache: true
cache-dependency-glob: uv.lock
python-version: "3.13"
- name: Install dependencies
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-opus-5' }}
run: |
uv run python scan_pr_skills.py \
--output pr_scan_comment.md \
--fail-on HIGH \
${{ steps.changed.outputs.skill_dirs }}
- name: Prepare no-op comment
if: steps.changed.outputs.skill_dirs == ''
run: |
cat > pr_scan_comment.md <<'EOF'
<!-- skill-security-scan -->
## 🛡️ Skill Security Scan
No skill directories (with a `SKILL.md`) were changed in this PR — nothing to scan.
EOF
- name: Upload scan comment as artifact
if: always()
uses: actions/upload-artifact@v4
with:
name: pr-skill-scan-comment
path: pr_scan_comment.md
if-no-files-found: ignore
- name: Post or update PR comment
if: always() && hashFiles('pr_scan_comment.md') != ''
uses: marocchino/sticky-pull-request-comment@v2
with:
header: skill-security-scan
path: pr_scan_comment.md

View File

@@ -5,7 +5,7 @@ on:
branches:
- main
paths:
- '.claude-plugin/marketplace.json'
- 'pyproject.toml'
workflow_dispatch:
permissions:
@@ -17,14 +17,14 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
uses: actions/checkout@v6
with:
fetch-depth: 0 # Fetch all history for release notes
- name: Extract version from marketplace.json
- name: Extract version from pyproject.toml
id: get_version
run: |
VERSION=$(jq -r '.metadata.version' .claude-plugin/marketplace.json)
VERSION=$(grep '^version' pyproject.toml | head -1 | sed 's/.*"\(.*\)".*/\1/')
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "tag=v$VERSION" >> $GITHUB_OUTPUT
echo "Extracted version: $VERSION"
@@ -83,7 +83,7 @@ jobs:
- name: Create Release
if: steps.check_tag.outputs.exists == 'false'
uses: softprops/action-gh-release@v1
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ steps.get_version.outputs.tag }}
name: v${{ steps.get_version.outputs.version }}

71
.github/workflows/security-scan.yml vendored Normal file
View File

@@ -0,0 +1,71 @@
name: Weekly Security Scan
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
jobs:
scan:
runs-on: ubuntu-latest
# 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
- 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
- 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-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: 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: |
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 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 }}

29
.gitignore vendored
View File

@@ -1,13 +1,26 @@
.claude
# OS
.DS_Store
temp/
pyproject.toml
uv.lock
# Python
.venv/
.python-version
main.py
__pycache__/
.pytest_cache/
__pycache__/
# Secrets
.env
# Project
temp/
research/
# Local agent tooling
.claude/
.agents/
# Anchored: an unanchored "scripts/" also matches skills/<name>/scripts/,
# which silently drops every new skill's bundled tooling from git.
/scripts/
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

369
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,369 @@
# Contributing Skills
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/`. 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
├── references/
├── scripts/
└── assets/
```
Only `SKILL.md` is required. Use optional directories when they make the skill easier to maintain:
- `references/` for longer documentation that agents should read only when needed.
- `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.
Use this minimum template:
```markdown
---
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
## When to Use
Use this skill when...
## Workflow
1. ...
2. ...
## Examples
...
```
### Frontmatter Requirements
Follow the [Agent Skills specification](https://agentskills.io/specification) and this repository's conventions:
- `name` is required, must match the parent directory name, and must be 1-64 characters.
- `name` may contain only lowercase letters, numbers, and hyphens.
- `name` must not start or end with a hyphen and must not contain consecutive hyphens.
- `description` is required, non-empty, and must be at most 1024 characters.
- `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. 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 a quoted `version` inside the `metadata` mapping:
```yaml
metadata:
version: "1.0"
```
For a new skill, start at `"1.0"`.
When updating an existing skill, increment `metadata.version` in the same pull request:
- Use a minor bump for normal improvements, for example `"1.0"` to `"1.1"`.
- Use a major bump only for a breaking change or substantial redesign, for example `"1.9"` to `"2.0"`.
## Writing a Good Skill
Good skills are specific, practical, and easy for an agent to apply.
- Write the `description` in third person with useful trigger terms.
- Include concrete workflows, commands, and examples instead of broad background explanations.
- Prefer current official APIs, docs, and installation instructions.
- Document required Python packages, system dependencies, credentials, or network access.
- Include scientific best practices, caveats, and validation checks where they matter.
- Move long API details, tables, and extended examples into `references/`.
- Use scripts for fragile or repetitive logic instead of asking the agent to recreate it every time.
- Avoid secrets, credentials, API keys, private URLs, and unpublished data.
## Adding a New Skill
1. Fork the repository and create a branch:
```bash
git checkout -b add-skill-name
```
2. Create a new directory under `skills/` whose name matches the skill name:
```text
skills/skill-name/
```
3. Add `SKILL.md` with valid frontmatter, including `metadata.version`.
4. Add supporting `references/`, `scripts/`, or `assets/` only when they are useful.
5. Test any commands, code examples, and scripts included in the skill.
6. If the skill ships `scripts/`, add their tests in the repository-level suite, not in the skill directory:
```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
1. Read the current `SKILL.md` and any supporting files.
2. Check upstream package, API, or platform documentation for current behavior.
3. Make the smallest useful change that fixes or improves the skill.
4. Increment `metadata.version`.
5. Test changed examples, commands, and scripts.
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, which is already a dev dependency:
```bash
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
```
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:
```bash
uv pip install cisco-ai-skill-scanner
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.
- Security scanner results are clean or explained in the pull request.
## Pull Request Process
1. Push your branch to your fork.
2. Open a pull request with a clear title, such as `Add scanpy workflow examples` or `Update astropy skill for current API`.
3. Describe what changed, why it matters, and how you tested it.
4. Link related issues, package documentation, release notes, or security findings.
5. Respond to review comments and update the skill as needed.
Thank you for helping make scientific computing more accessible to AI agents and researchers.

777
README.md

File diff suppressed because it is too large Load Diff

87
SECURITY.md Normal file
View File

@@ -0,0 +1,87 @@
# Security Policy
This is the security policy for **Scientific Agent Skills**, maintained by [K-Dense](https://www.k-dense.ai).
GitHub surfaces this file as the repository's security policy. It is hand-authored. The output of our automated skill scanning is a separate document — see [Automated skill scanning](#automated-skill-scanning) below.
---
## Reporting a vulnerability
**Please do not open a public issue for a security vulnerability.**
Use GitHub's private vulnerability reporting, which keeps the report confidential until a fix is available:
> **Security** tab → **Report a vulnerability**
<!-- TODO(maintainers): add a monitored security contact address here as a second channel,
or delete this comment if private vulnerability reporting is the only intended route. -->
Please include, as far as you are able:
- The affected skill (or repository tooling) and the version or commit you observed it on
- What an attacker could achieve, and what access they would need to achieve it
- The steps to reproduce, ideally with the smallest input that triggers it
- Any agent host and model you reproduced it on, since skill behavior varies by host
We will acknowledge your report and tell you whether we consider it in scope. If we accept it, we will keep you informed as we work on a fix and will credit you in the release notes unless you ask us not to.
---
## Supported versions
| Version | Supported |
|---|---|
| `main` | ✅ |
| Latest tagged release | ✅ |
| Earlier tagged releases | ❌ — fixes land in a new release rather than being backported |
If you pin skills to a tag or commit (see the version-pinning section of the [README](README.md#version-pinning)), you are responsible for moving that pin forward to receive fixes.
---
## What is in scope
This repository distributes **Agent Skills**: instructions, reference material, and bundled scripts that an AI agent reads and may execute on your machine. In-scope reports concern content in this repository that could harm someone who installs it:
- A bundled script that reads credentials, files, or environment variables it has no reason to read, or that transmits data to an unexpected destination
- Instructions in a `SKILL.md` that steer an agent toward destructive, exfiltrating, or unauthorized action
- Prompt-injection vectors — including content in `references/` or `assets/` that an agent is instructed to treat as authoritative
- A skill whose documented behavior materially misrepresents what its bundled code does
- Unsafe credential handling, such as instructions to place secrets where they will be committed or logged
- Vulnerabilities in this repository's own tooling (`scan_skills.py`, `scan_pr_skills.py`) or its GitHub Actions workflows
## What is out of scope
- **Vulnerabilities in the third-party libraries and services a skill documents.** A flaw in RDKit, Scanpy, or a public API belongs to that project — please report it upstream. A skill that *instructs users to use a library unsafely* is in scope here.
- **Vulnerabilities in agent hosts.** Issues in Claude Code, Cursor, Codex, and similar belong to those vendors.
- **The inherent capability of skills.** Skills are instructions for an agent that can execute code; a skill performing the work it documents is not a vulnerability. See the [Security Disclaimer](README.md#%EF%B8%8F-security-disclaimer) in the README.
- **Missing version pins on documented dependencies**, unless you can show a concrete exploitation path.
---
## Before you install
Skills execute code and influence your agent's behavior. Review what you install, and prefer installing the subset of skills you actually need. Bundled scripts that reach the network or read credentials are documented as such in the relevant `SKILL.md`. Treat skill content from any source — including this repository — as code review material, not as trusted input.
---
## Automated skill scanning
Skills in this repository are scanned using [`cisco-ai-skill-scanner`](https://pypi.org/project/cisco-ai-skill-scanner/), which combines static behavioral analysis, trigger analysis, and LLM-assisted review. Changed skills are scanned on every pull request.
The scheduled scan runs weekly and is incremental: a skill whose package contents are unchanged since the last scan carries its previous findings forward rather than being rescanned. Every skill is rescanned in full whenever the scanner version or the model changes, when a maintainer triggers a full run, and at least every 30 days regardless. Each skill's `last_scanned` date is recorded in the JSON report, so you can always see when a given finding was actually produced.
- **Report:** [`docs/security-report.md`](docs/security-report.md) (machine-readable companion: [`docs/security-report.json`](docs/security-report.json))
- **Triage:** [`docs/security-triage.md`](docs/security-triage.md) — maintainer verdicts on the current report: what was verified and fixed, and which rules are systematic false positives, each with the check that decides it
- **Workflow:** [`.github/workflows/security-scan.yml`](.github/workflows/security-scan.yml)
**How to read the report.** It is generated by automated tooling, including a language model, and is published to be useful rather than authoritative. It is not an audit, a certification, or a guarantee. Each scan is published automatically, with no pre-publication check that its claims are consistent with the contents of `skills/`, so verify a finding against the skill itself before acting on it. A finding in the report is a prompt to review a skill, not a determination that the skill is malicious.
**If you believe a finding is wrong**, open a regular issue (false positives are not sensitive) with the skill name, the rule ID, and why the finding cannot hold. If a class of false positive originates in the scanner rather than in our configuration, we will also raise it upstream.
---
## Reporting a malicious skill elsewhere
If you find a skill published *outside* this repository that impersonates Scientific Agent Skills or K-Dense, please tell us through the private reporting channel above so we can respond and warn users.

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

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