Academic Figure
joshua-zyy/academic-paper-writer
Create, revise, or audit academic data/result figures for CS/AI/ML papers.
Comprehensive nilearn (neuroimaging) API reference and best practices.
$ npx skills add cosanlab/nltools --skill nilearn -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install cosanlab/nltools nilearn --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/cosanlab/nltools.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/nilearn .claude/skills/nilearn && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "nilearn" agent skill from https://github.com/cosanlab/nltools/tree/master/.claude/skills/nilearn into .claude/skills/nilearn/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nilearn", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/cosanlab/nltools/tree/master/.claude/skills/nilearnType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add cosanlab/nltools --skill nilearn -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install cosanlab/nltools nilearn --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/cosanlab/nltools.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/nilearn .agents/skills/nilearn && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "nilearn" agent skill from https://github.com/cosanlab/nltools/tree/master/.claude/skills/nilearn into .agents/skills/nilearn/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nilearn", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add cosanlab/nltools --skill nilearn -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install cosanlab/nltools nilearn --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/cosanlab/nltools.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/nilearn .cursor/skills/nilearn && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "nilearn" agent skill from https://github.com/cosanlab/nltools/tree/master/.claude/skills/nilearn into .cursor/skills/nilearn/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nilearn", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/cosanlab/nltools.git --path .claude/skills/nilearn--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add cosanlab/nltools --skill nilearn -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install cosanlab/nltools nilearn --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/cosanlab/nltools.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/nilearn .gemini/skills/nilearn && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "nilearn" agent skill from https://github.com/cosanlab/nltools/tree/master/.claude/skills/nilearn into .gemini/skills/nilearn/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nilearn", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install cosanlab/nltools nilearnInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add cosanlab/nltools --skill nilearn -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/cosanlab/nltools.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/nilearn .github/skills/nilearn && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "nilearn" agent skill from https://github.com/cosanlab/nltools/tree/master/.claude/skills/nilearn into .github/skills/nilearn/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nilearn", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add cosanlab/nltools --skill nilearn -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install cosanlab/nltools nilearn --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/cosanlab/nltools.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/nilearn .opencode/skills/nilearn && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "nilearn" agent skill from https://github.com/cosanlab/nltools/tree/master/.claude/skills/nilearn into .opencode/skills/nilearn/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "nilearn", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
nilearnComprehensive nilearn (neuroimaging) API reference and best practices.
Nilearn is an agent skill from cosanlab/nltools. Comprehensive nilearn (neuroimaging) API reference and best practices. Use when writing, reviewing, or debugging code that uses nilearn for fMRI analysis, GLM modeling, brain plotting, masking, decoding, connectivity, or surface analysis. Per-submodule references live under references/ — load the relevant file (e.g. references/glm.md) for full inventories, signatures, and patterns.
Its SKILL.md is about 3.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 18 other files, including reference files (for example `references/connectome.md`, `references/datasets.md` and `references/decoding.md`).
It sits in Data & Analytics, covering Data visualization. It works with Python. The repository describes itself as: Python toolbox for analyzing imaging data. The licence is MIT.
4 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit cbc9551. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are python).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Nilearn loads about 3.3k tokens when it runs, and up to ~35k if it reads all its reference files. Until then it costs about 99 tokens; SKILL.md has 732 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from cosanlab/nltools at commit cbc9551, republished under its MIT licence (© cosanlab). 732 words, ~3,323 tokens.
.claude/skills/nilearn/SKILL.md (or your agent's skills folder). This skill also uses 17 other files; get the full folder from GitHub.Statistical and machine-learning tools for neuroimaging. Every masker and model class follows scikit-learn's fit / transform / predict / fit_transform API.
nilearn.SKILL.md (this file) is a lean overview, picker tables, common workflows, and cross-cutting gotchas. For full per-submodule API surface — every public class, every function, full constructor signatures, post-fit attributes — load the relevant file from references/.
| Submodule | Reference | Covers |
|---|---|---|
nilearn.connectome | references/connectome.md | ConnectivityMeasure, sparse covariance, vec/matrix utils |
nilearn.datasets | references/datasets.md | All fetch_atlas_*, fetch_* example data, load_mni152_*, load_fsaverage |
nilearn.decoding | references/decoding.md | Decoder, FREM*, SpaceNet*, SearchLight |
nilearn.decomposition | references/decomposition.md | CanICA, DictLearning |
nilearn.exceptions | references/exceptions.md | MaskWarning, DimensionError, MeshDimensionError, etc. |
nilearn.glm | references/glm.md | FirstLevelModel, SecondLevelModel, design matrices, contrasts, thresholding |
nilearn.image | references/image.md | load_img, resample_*, smooth_img, math_img, clean_img, etc. |
nilearn.interfaces | references/interfaces.md | fmriprep load_confounds, BIDS helpers, FSL helpers |
nilearn.maskers | references/maskers.md | NiftiMasker, NiftiLabelsMasker, NiftiMapsMasker, NiftiSpheresMasker, all Multi* and Surface* variants |
nilearn.masking | references/masking.md | compute_*_mask, apply_mask, unmask, intersect_masks |
nilearn.mass_univariate | references/mass_univariate.md | permuted_ols (TFCE / cluster-mass / cluster-size) |
nilearn.plotting | references/plotting.md | All plot_*, view_*, find_*, slicer/projector classes |
nilearn.regions | references/regions.md | RegionExtractor, Parcellations, connected_regions, signal/img helpers |
nilearn.reporting | references/reporting.md | get_clusters_table, HTMLReport, model.generate_report() |
nilearn.signal | references/signal.md | clean, butterworth, high_variance_confounds |
nilearn.surface | references/surface.md | SurfaceImage, PolyMesh, vol_to_surf |
nilearn.utils | references/utils.md | Estimator/function introspection helpers |
raw NIfTI ──┐
│ masker (extract signals) masker.transform(img) → (T × features)
atlas ──────┘
│
▼
sklearn-style model (fit / predict / score)
│
▼
img back out via masker.inverse_transform(weights) → NiimgThree things to choose every time:
references/maskers.md.standardize, detrend, high_pass, low_pass, t_r, confounds, sample_mask. Order is always: detrend → filter → confound removal → standardize.glm.FirstLevelModel), MVPA (decoding.Decoder), connectivity (connectome.ConnectivityMeasure), parcellation (regions.Parcellations), or decomposition (decomposition.CanICA / DictLearning).| Task | Submodule(s) |
|---|---|
| Run a task-fMRI GLM | glm + interfaces.fmriprep (confounds) + maskers (optional) |
| Group-level analysis | glm.second_level + mass_univariate (permutation) |
| Multiple-comparison correction | glm.threshold_stats_img, mass_univariate.permuted_ols (TFCE) |
| Functional connectivity | maskers (extract ROI signals) → connectome.ConnectivityMeasure |
| MVPA / decoding | decoding.Decoder (or FREM*, SpaceNet*, SearchLight) |
| ICA / dictionary learning | decomposition.CanICA / DictLearning |
| Data-driven parcellation | regions.Parcellations |
| Brain visualization (volume) | plotting.plot_stat_map, plot_glass_brain, view_img |
| Brain visualization (surface) | plotting.plot_img_on_surf, view_img_on_surf |
| Project volume → surface | surface.vol_to_surf or SurfaceImage.from_volume |
| Get an atlas / template | datasets.fetch_atlas_* / datasets.load_mni152_* |
| Image arithmetic / resample / smooth | image.math_img, resample_img, smooth_img |
| Build a mask | masking.compute_brain_mask, compute_epi_mask |
| Load fMRIPrep confounds | interfaces.fmriprep.load_confounds |
| Masker | Input | Use case |
|---|---|---|
NiftiMasker | 3D/4D NIfTI | Whole-brain voxel-level (decoding, searchlight, RSA) |
NiftiLabelsMasker | 3D integer atlas | ROI-based with discrete parcellation |
NiftiMapsMasker | 4D probabilistic maps | ICA components, soft/probabilistic atlases |
NiftiSpheresMasker | MNI coordinates | Seed-based connectivity, literature ROIs |
MultiNiftiMasker (and MultiLabels/MultiMaps/MultiSpheres) | Multiple subjects | Same as above, parallel across subjects |
SurfaceMasker | SurfaceImage | Surface-based vertex-level |
SurfaceLabelsMasker | Surface parcellation | Surface ROI extraction |
SurfaceMapsMasker | Surface probability maps | Surface probabilistic atlas extraction |
Full constructor signatures, post-fit attributes, and clean_args/mask_args semantics: references/maskers.md.
from nilearn.interfaces.fmriprep import load_confounds
from nilearn.glm.first_level import FirstLevelModel
from nilearn.glm import threshold_stats_img
confounds, sample_mask = load_confounds(
fmri_img, strategy=('motion', 'high_pass', 'wm_csf', 'scrub'),
motion='full', scrub=5,
)
flm = FirstLevelModel(t_r=2.0, hrf_model='glover', noise_model='ar1',
smoothing_fwhm=6, high_pass=0.01, mask_img=mask)
flm.fit(fmri_img, events=events_df, confounds=confounds, sample_masks=sample_mask)
z_map = flm.compute_contrast('active - rest', output_type='z_score')
thresholded, thresh = threshold_stats_img(
z_map, alpha=0.05, height_control='fdr', cluster_threshold=10,
)Details: references/glm.md, references/interfaces.md.
from nilearn.maskers import NiftiLabelsMasker
from nilearn.connectome import ConnectivityMeasure
from nilearn.datasets import fetch_atlas_schaefer_2018
atlas = fetch_atlas_schaefer_2018(n_rois=200)
masker = NiftiLabelsMasker(labels_img=atlas.maps, labels=atlas.labels,
standardize='zscore_sample', memory='nilearn_cache')
all_ts = [masker.fit_transform(img, confounds=conf) for img, conf in zip(imgs, confs)]
conn = ConnectivityMeasure(kind='tangent', vectorize=True)
features = conn.fit_transform(all_ts) # (n_subjects, n_features) — ready for sklearnDetails: references/connectome.md, references/maskers.md.
from nilearn.decoding import Decoder
decoder = Decoder(
estimator='svc', mask=mask_img, cv=5,
screening_percentile=5, scoring='accuracy',
smoothing_fwhm=4, standardize=True,
)
decoder.fit(fmri_imgs, y=labels)
print(decoder.cv_scores_)
weight_img = decoder.coef_img_['face']Details: references/decoding.md.
from nilearn.surface import SurfaceImage
from nilearn.datasets import load_fsaverage
from nilearn.maskers import SurfaceMasker, SurfaceLabelsMasker
fsaverage5 = load_fsaverage('fsaverage5') # PolyMesh
surf_img = SurfaceImage.from_volume(mesh=fsaverage5, volume_img=fmri_4d)
masker = SurfaceMasker()
signals = masker.fit_transform(surf_img)Details: references/surface.md, references/maskers.md.
These apply across submodules. Per-submodule gotchas live in each references/<sub>.md.
standardize=True ≠ 'zscore_sample'. True maps to 'zscore' (divides by N). Use 'zscore_sample' (divides by N−1) for most analyses.
Events DataFrame column names are strict: onset (sec), duration (sec), trial_type (str). Optional: modulation. Other column names are silently ignored.
threshold_stats_img returns a tuple (thresholded_img, threshold_value) — always unpack.
load_confounds returns a tuple (confounds_df, sample_mask). Pass sample_mask to flm.fit(sample_masks=...).
fetch_* vs load_*. fetch_* downloads from the internet on first call (cached at ~/nilearn_data, override with data_dir=). load_* loads bundled data instantly — no network.
Surface API: old vs new. fetch_surf_fsaverage() returns the old dict format. load_fsaverage() returns the new PolyMesh. Use the new API; only the new API works with SurfaceImage/SurfaceMasker.
make_glm_report is deprecated. Use model.generate_report(contrasts=...) instead.
get_data(img) returns a copy. For read-only access, use img.get_fdata() (nibabel) directly.
n_jobs=-1 caution. Can hang or OOM on large images. Start with n_jobs=1, increase carefully.
Default cmaps changed in v0.13: 'RdBu_r' for diverging stat maps, 'gray' for anat, 'inferno' for sequential.
Resampling interpolation depends on image type. Use 'nearest' for discrete label/ROI images, 'continuous' (default) for stat maps and continuous data.
Processing order in signal.clean and maskers: detrend → filter → remove confounds → standardize. Filters are applied to confounds too.
clean_img vs signal.clean. clean_img takes 4D NIfTI; signal.clean takes 2D (timepoints, features) arrays. Maskers use signal.clean internally.
Memory/caching. All maskers and models accept memory= for joblib caching. Use it for any expensive op:
masker = NiftiMasker(memory='nilearn_cache', memory_level=1)force_resample default changed. In v0.13+, image.resample_img defaults to force_resample=True.
# Maskers
from nilearn.maskers import (
NiftiMasker, NiftiLabelsMasker, NiftiMapsMasker, NiftiSpheresMasker,
MultiNiftiMasker, SurfaceMasker, SurfaceLabelsMasker, SurfaceMapsMasker,
)
# GLM
from nilearn.glm.first_level import FirstLevelModel, make_first_level_design_matrix, first_level_from_bids
from nilearn.glm.second_level import SecondLevelModel, non_parametric_inference
from nilearn.glm import threshold_stats_img, fdr_threshold, expression_to_contrast_vector
# Image / signal / masking
from nilearn import image
from nilearn.signal import clean, butterworth, high_variance_confounds
from nilearn import masking
# Connectivity / decoding / decomposition
from nilearn.connectome import ConnectivityMeasure, sym_matrix_to_vec, vec_to_sym_matrix
from nilearn.decoding import Decoder, DecoderRegressor, SearchLight, FREMClassifier, SpaceNetClassifier
from nilearn.decomposition import CanICA, DictLearning
# Regions / surface
from nilearn.regions import RegionExtractor, Parcellations, connected_regions
from nilearn.surface import SurfaceImage, PolyMesh, vol_to_surf
# Plotting
from nilearn import plotting
from nilearn.plotting import plot_stat_map, plot_glass_brain, plot_img_on_surf, view_img
# Datasets / interfaces / mass-univariate / reporting
from nilearn.datasets import (
load_mni152_template, load_mni152_brain_mask, load_fsaverage,
fetch_atlas_schaefer_2018, fetch_atlas_harvard_oxford, fetch_atlas_difumo,
fetch_haxby, fetch_adhd, fetch_development_fmri,
)
from nilearn.interfaces.fmriprep import load_confounds, load_confounds_strategy
from nilearn.interfaces.bids import get_bids_files, parse_bids_filename
from nilearn.mass_univariate import permuted_ols
from nilearn.reporting import get_clusters_table© cosanlab, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 17 other files (references) in .claude/skills/nilearn of cosanlab/nltools.
Open the folder on GitHubat commit cbc9551
Nilearn next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Nilearn this skillcosanlab/nltools | 131 | — | ~3.3k | Automated safety check: Pass | MIT | |
| Academic Figurejoshua-zyy/academic-paper-writer | 115 | — | ~816 | Automated safety check: Pass | MIT | |
| Scientific Schematicsjimmc414/Kosmos | 595 | — | ~16k | Automated safety check: Notes | None | |
| Microsim Generatordmccreary/ibook-skills | 105 | — | ~11k | Automated safety check: Pass | None | |
| Release Evidence WorkflowAli-Marandi/ClimateDataAnalyzer | 107 | — | ~1.6k | Automated safety check: Pass | MIT | |
| Scientific Figure MakingChenLiu-1996/figures4papers | 8.3k | — | ~557 | Automated safety check: Pass | Custom licence |
joshua-zyy/academic-paper-writer
Create, revise, or audit academic data/result figures for CS/AI/ML papers.
jimmc414/Kosmos
Create publication-quality scientific diagrams, flowcharts, and schematics using Python (graphviz, matplotlib, schemdraw, networkx).
dmccreary/ibook-skills
Creates interactive educational MicroSims, routing to the best-matched generator - p5.js, Chart.js, Plotly, Mermaid, vis-network, timelines, maps, Venn, causal-loop/feedback-loop diagrams (CLD)…
Ali-Marandi/ClimateDataAnalyzer
Build an auditable release-evidence workflow for a desktop or packaged application.
ChenLiu-1996/figures4papers
Covers publication-ready matplotlib figures for academic papers, slides, and reports—bars, trends, scatter, heatmaps, and multi-panel layouts—with this…
Trae1ounG/paper-plot-skills
Reproduce any academic paper figure from an uploaded image using accumulated style experience.
cosanlab/nltools
Work inside a running marimo notebook's kernel — execute code, create cells, and build a notebook as an artifact.
cosanlab/nltools
Write a marimo notebook in a Python file in the right format.
Works with
Categories
Comprehensive nilearn (neuroimaging) API reference and best practices. Nilearn is an agent skill from cosanlab/nltools. Comprehensive nilearn (neuroimaging) API reference and best practices.
Nilearn fits situations like: debugging code that uses nilearn for fMRI analysis; surface analysis.
Run `npx skills add cosanlab/nltools --skill nilearn -a claude-code`. Or copy the skill folder (.claude/skills/nilearn in cosanlab/nltools) into .claude/skills/nilearn in your project. Claude Code loads it when a task matches its description.
Run `npx skills add cosanlab/nltools --skill nilearn -a codex`. Or copy the skill folder (.claude/skills/nilearn in cosanlab/nltools) into .agents/skills/nilearn in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add cosanlab/nltools --skill nilearn -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/nilearn, .gemini/skills/nilearn, .github/skills/nilearn and .opencode/skills/nilearn in your project.
SKILL.md names no scripts, command-line tools or credentials: Nilearn is instructions for the agent only. Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Nilearn is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.3k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 32k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Nilearn: Academic Figure (joshua-zyy/academic-paper-writer, 115 stars), Scientific Schematics (jimmc414/Kosmos, 595 stars), Microsim Generator (dmccreary/ibook-skills, 105 stars) and Release Evidence Workflow (Ali-Marandi/ClimateDataAnalyzer, 107 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
cosanlab (a GitHub organization) maintains it in cosanlab/nltools, which has 131 GitHub stars. The repository holds 3 skills in this directory. The repository was last updated on October 8, 2026.
Source: cosanlab/nltools on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.