diff --git a/.agents/plugins/marketplace.json b/.agents/plugins/marketplace.json index ef72fb2..03b05eb 100644 --- a/.agents/plugins/marketplace.json +++ b/.agents/plugins/marketplace.json @@ -28,6 +28,18 @@ }, "category": "Developer Tools" }, + { + "name": "galaxy-dev-skills", + "source": { + "source": "local", + "path": "./plugins/galaxy-dev-skills" + }, + "policy": { + "installation": "AVAILABLE", + "authentication": "ON_INSTALL" + }, + "category": "Developer Tools" + }, { "name": "foundry-skills", "source": { diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 4bd5de2..81695fb 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -22,13 +22,27 @@ { "name": "galaxy-skills", "source": "./plugins/galaxy-skills", - "description": "Curated Galaxy skills (tool development, Nextflow conversion, collections, hub posts, ...) mirrored from galaxyproject/galaxy-skills.", + "description": "Curated Galaxy skills for running analyses -- connection, MCP tool surface, collections, user-defined tools, reports, reproducibility. Mirrors the skills/ tree of galaxyproject/galaxy-skills.", "version": "2026.9.16", "category": "development", "keywords": [ "galaxy", "bioinformatics", - "skills" + "skills", + "analysis" + ] + }, + { + "name": "galaxy-dev-skills", + "source": "./plugins/galaxy-dev-skills", + "description": "Galaxy development skills -- tool wrappers, Nextflow conversion, ToolShed revisions, track hubs, Hub posts. Mirrors the dev-skills/ tree of galaxyproject/galaxy-skills.", + "version": "2026.9.16", + "category": "development", + "keywords": [ + "galaxy", + "bioinformatics", + "skills", + "tool-development" ] }, { diff --git a/.cursor-plugin/marketplace.json b/.cursor-plugin/marketplace.json index 041cdbe..d254cb8 100644 --- a/.cursor-plugin/marketplace.json +++ b/.cursor-plugin/marketplace.json @@ -23,7 +23,7 @@ { "name": "galaxy-skills", "source": "plugins/galaxy-skills", - "description": "Curated Galaxy developer skills mirrored from galaxyproject/galaxy-skills.", + "description": "Curated Galaxy skills for running analyses -- connection, MCP tool surface, collections, user-defined tools, reports, reproducibility. Mirrors the skills/ tree of galaxyproject/galaxy-skills.", "version": "2026.9.16", "category": "Developer Tools", "keywords": [ @@ -33,6 +33,20 @@ ], "logo": "assets/logo.svg" }, + { + "name": "galaxy-dev-skills", + "source": "plugins/galaxy-dev-skills", + "description": "Galaxy development skills -- tool wrappers, Nextflow conversion, ToolShed revisions, track hubs, Hub posts. Mirrors the dev-skills/ tree of galaxyproject/galaxy-skills.", + "version": "2026.9.16", + "category": "Developer Tools", + "keywords": [ + "galaxy", + "bioinformatics", + "skills", + "tool-development" + ], + "logo": "assets/logo.svg" + }, { "name": "foundry-skills", "source": "plugins/foundry-skills", diff --git a/.github/ci-tools/check-pi-skills.mjs b/.github/ci-tools/check-pi-skills.mjs index 6581862..cdfefe7 100644 --- a/.github/ci-tools/check-pi-skills.mjs +++ b/.github/ci-tools/check-pi-skills.mjs @@ -23,7 +23,7 @@ for (const dir of pkg.pi.skills) { } } console.log(`${seen.size} skills loaded by Pi from ${pkg.pi.skills.length} roots`); -for (const must of ["galaxy-connect", "tool-dev", "nf-process-to-galaxy-tool", "jupyterlite-galaxy", "discover-shed-tool"]) { +for (const must of ["galaxy-connect", "collection-manipulation", "udt-authoring", "tool-dev", "nf-process-to-galaxy-tool", "jupyterlite-galaxy", "discover-shed-tool"]) { if (!seen.has(must)) { console.log(`MISSING expected skill ${must}`); problems++; } } if (seen.size < MIN_SKILLS) { console.log(`too few skills (${seen.size} < ${MIN_SKILLS})`); problems++; } diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index 980f3e3..27614be 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -49,21 +49,18 @@ jobs: with: python-version: "3.12" - run: npm install -g @openai/codex && codex --version - - name: Codex plugin-creator validator (galaxy-mcp, foundry-skills) + - name: Codex plugin-creator validator (all plugins) run: | pip install pyyaml base=https://raw.githubusercontent.com/openai/codex/main/codex-rs/skills/src/assets/samples/plugin-creator/scripts mkdir -p /tmp/codex-validator for f in validate_plugin.py identifier_validation.py; do curl -fsSL -o /tmp/codex-validator/$f "$base/$f"; done - python3 /tmp/codex-validator/validate_plugin.py plugins/galaxy-mcp - python3 /tmp/codex-validator/validate_plugin.py plugins/foundry-skills - # galaxy-skills fails only on an upstream frontmatter bug (galaxyproject/galaxy-skills#36); report, don't fail - python3 /tmp/codex-validator/validate_plugin.py plugins/galaxy-skills || echo "::warning::galaxy-skills: Codex validator reports upstream frontmatter issue" + for p in plugins/*/; do python3 /tmp/codex-validator/validate_plugin.py "$p"; done - name: Install from this checkout as a local marketplace run: | mkdir -p "$CODEX_HOME" codex plugin marketplace add "$GITHUB_WORKSPACE" - for p in galaxy-mcp galaxy-skills foundry-skills; do codex plugin add "$p@galaxyproject"; done + for p in galaxy-mcp galaxy-skills galaxy-dev-skills foundry-skills; do codex plugin add "$p@galaxyproject"; done - name: MCP server registered with forwarded env run: | codex mcp list | tee /tmp/mcp.txt @@ -72,10 +69,10 @@ jobs: run: | git init -q /tmp/ws && cd /tmp/ws codex debug prompt-input "hello" > /tmp/prompt.json - n=$(grep -oE '(galaxy-skills|foundry-skills|galaxy-mcp):[a-z0-9-]+' /tmp/prompt.json | sort -u | wc -l) + n=$(grep -oE '(galaxy-skills|galaxy-dev-skills|foundry-skills|galaxy-mcp):[a-z0-9-]+' /tmp/prompt.json | sort -u | wc -l) echo "skills in prompt: $n" test "$n" -ge 70 - for s in galaxy-mcp:galaxy-connect galaxy-skills:tool-dev galaxy-skills:nf-process-to-galaxy-tool foundry-skills:discover-shed-tool; do + for s in galaxy-mcp:galaxy-connect galaxy-skills:udt-authoring galaxy-skills:collection-manipulation galaxy-dev-skills:tool-dev galaxy-dev-skills:nf-process-to-galaxy-tool foundry-skills:discover-shed-tool; do grep -q "$s" /tmp/prompt.json || { echo "missing $s"; exit 1; } done diff --git a/README.md b/README.md index b9faf43..db05eda 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,11 @@ Plugins and setup guides that connect AI coding agents to 1. **A Galaxy connection** through the [galaxy-mcp](https://github.com/galaxyproject/galaxy-mcp) MCP server, authenticated with your Galaxy API key. -2. **Curated Galaxy skills** from [galaxyproject/galaxy-skills](https://github.com/galaxyproject/galaxy-skills) - (tool development, user-defined tools, Nextflow conversion, collections, - workflow reports, track hubs, hub posts, MCP usage). +2. **Curated Galaxy skills** from [galaxyproject/galaxy-skills](https://github.com/galaxyproject/galaxy-skills), + split the way upstream splits them: skills for *using* Galaxy (MCP tool + surface, collections, user-defined tools, workflow reports, + reproducibility) and, separately, skills for *building* it (tool wrappers, + Nextflow conversion, ToolShed revisions, track hubs, hub posts). 3. **Galaxy Workflow Foundry skills** from [galaxyproject/foundry](https://github.com/galaxyproject/foundry) (papers, Nextflow and CWL to validated Galaxy workflows). @@ -26,7 +28,7 @@ Every guide starts with [getting a Galaxy API key](docs/galaxy-api-key.md). ## What is in the box -Three plugins live under `plugins/`. Each directory is simultaneously a Claude +Four plugins live under `plugins/`. Each directory is simultaneously a Claude Code plugin (`.claude-plugin/plugin.json`), a Codex plugin (`.codex-plugin/plugin.json`), a Cursor plugin (`.cursor-plugin/plugin.json`) and an Antigravity plugin (`plugin.json`); the root `package.json` exposes the @@ -36,12 +38,14 @@ one-click installer for Claude Desktop (MCP server only). | Plugin | Contents | Origin | |--------|----------|--------| | `galaxy-mcp` | MCP server config for `uvx galaxy-mcp` (`mcp/claude.json`, `mcp/pi.json`, `mcp.json` for Cursor, `mcp_config.json` for Antigravity, inline in the Codex manifest) and the `galaxy-connect` skill: set up, verify and troubleshoot the connection | this repo | -| `galaxy-skills` | 16 skills: `tool-dev`, `udt-authoring`, `nf-to-galaxy` (+3 sub-skills), `collection-manipulation`, `galaxy-integration` (+2 sub-skills), `reproduciblify`, `workflow-reports`, `trackhubs`, `update-usegalaxy-tool`, `hub-news-posts`, `tool-selection-diagram` | mirror of galaxyproject/galaxy-skills | +| `galaxy-skills` | 7 skills for *using* Galaxy: `galaxy-integration` (+`jupyterlite`), `galaxy-mcp-reference`, `collection-manipulation`, `udt-authoring`, `workflow-reports`, `reproduciblify` | mirror of galaxyproject/galaxy-skills `skills/` | +| `galaxy-dev-skills` | 9 skills for *building* Galaxy: `tool-dev` (+`tool-selection-diagram`), `nf-to-galaxy` (+3 sub-skills), `update-usegalaxy-tool`, `trackhubs`, `hub-news-posts` | mirror of galaxyproject/galaxy-skills `dev-skills/` | | `foundry-skills` | 59 cast skills, e.g. `pipeline-nextflow-to-galaxy`, `discover-shed-tool`, `validate-galaxy-workflow`, `author-galaxy-tool-wrapper` | mirror of galaxyproject/foundry `casts/claude/skills` | -Install only the plugins you need. The two skill plugins add many skill -descriptions to the agent's context; `foundry-skills` in particular is only -worth it if you build Galaxy workflows. +Install only the plugins you need. Every skill plugin adds its descriptions to +the agent's context on every session: `galaxy-skills` is the one an analyst +wants, `galaxy-dev-skills` is for people who write tool wrappers, and +`foundry-skills` is only worth it if you build Galaxy workflows. ### How credentials reach the MCP server @@ -67,7 +71,8 @@ is why the plugin ships one MCP file per harness: package.json Pi package manifest (pi.skills, pi.mcp) plugins/ galaxy-mcp/ MCP config + galaxy-connect skill (hand-written) - galaxy-skills/ vendored copy of galaxyproject/galaxy-skills + galaxy-skills/ vendored copy of galaxy-skills skills/ (using Galaxy) + galaxy-dev-skills/ vendored copy of galaxy-skills dev-skills/ (building Galaxy) foundry-skills/ vendored copy of galaxyproject/foundry casts/claude/skills bundles/claude-desktop/ Claude Desktop .mcpb source (uv runtime, no bundled code) docs/ per-harness guides (source for the Galaxy Hub pages) @@ -92,7 +97,9 @@ them is documented to follow git submodules (Pi runs a plain `git clone`), Claude Code discovers plugin skills only one level deep, Pi stops recursing at a skill root, and Pi can only install packages that carry a manifest. Vendoring a plain copy is the one layout that works everywhere; `scripts/gen-manifests.py` lists nested skills -explicitly where a harness needs it. The Antigravity `plugin.json` at each +explicitly where a harness needs it. Each upstream tree is vendored into its own +plugin rather than copying the repo root, which keeps upstream's using-vs-building +split intact instead of registering both trees as one bundle. The Antigravity `plugin.json` at each plugin root must never carry an agent-plugins.org `$schema`: Codex and Cursor would then read it as an Agent Plugins manifest instead of their own (`validate.py` enforces this). The pinned upstream commit is recorded in diff --git a/docs/antigravity.md b/docs/antigravity.md index a46cd8a..343de41 100644 --- a/docs/antigravity.md +++ b/docs/antigravity.md @@ -65,9 +65,9 @@ diagnosing the connection. ## Use the skills Run `/skills` to list them, or type `/` followed by the skill name, for example -`/tool-dev`, `/udt-authoring`, `/nf-to-galaxy`, `/galaxy-transform-collection`, -`/galaxy-integration`, `/reproduciblify`, `/pipeline-nextflow-to-galaxy`, -`/discover-shed-tool`. The agent also picks skills up on its own from your +`/galaxy-integration`, `/galaxy-mcp-reference`, `/collection-manipulation`, +`/udt-authoring`, `/reproduciblify`, `/tool-dev`, `/nf-to-galaxy`, +`/pipeline-nextflow-to-galaxy`, `/discover-shed-tool`. The agent also picks skills up on its own from your request. Antigravity lists only top-level skills. The `nf-to-galaxy` and diff --git a/docs/claude-code.md b/docs/claude-code.md index a5de600..8997562 100644 --- a/docs/claude-code.md +++ b/docs/claude-code.md @@ -58,16 +58,17 @@ Type `/` to see them. Plugin skills are namespaced, for example: | Invocation | What it does | |------------|--------------| | `/galaxy-mcp:galaxy-connect` | Set up / verify / troubleshoot the Galaxy connection | -| `/galaxy-skills:tool-dev` | Create, test and update Galaxy tool wrappers | -| `/galaxy-skills:udt-authoring` | Author user-defined tools (`GalaxyUserTool` YAML) | -| `/galaxy-skills:nf-to-galaxy` | Convert Nextflow processes and workflows | +| `/galaxy-skills:galaxy-integration` | Connect to an instance and choose how to drive it | +| `/galaxy-skills:galaxy-mcp-reference` | The Galaxy MCP tool surface and its pitfalls | | `/galaxy-skills:collection-manipulation` | Filter, sort and restructure dataset collections | -| `/galaxy-skills:galaxy-integration` | Use the Galaxy MCP tools, JupyterLite and BioBlend well | -| `/galaxy-skills:reproduciblify` | Rebuild a messy history as a clean, extractable analysis | +| `/galaxy-skills:udt-authoring` | Author user-defined tools (`GalaxyUserTool` YAML) | | `/galaxy-skills:workflow-reports` | Draft workflow report templates | -| `/galaxy-skills:trackhubs` | Publish UCSC track hubs and assembly hubs | -| `/galaxy-skills:update-usegalaxy-tool` | Add or bump ToolShed revisions in usegalaxy-tools | -| `/galaxy-skills:hub-news-posts` | Write Galaxy Hub news posts | +| `/galaxy-skills:reproduciblify` | Rebuild a messy history as a clean, extractable analysis | +| `/galaxy-dev-skills:tool-dev` | Create, test and update Galaxy tool wrappers | +| `/galaxy-dev-skills:nf-to-galaxy` | Convert Nextflow processes and workflows | +| `/galaxy-dev-skills:update-usegalaxy-tool` | Add or bump ToolShed revisions in usegalaxy-tools | +| `/galaxy-dev-skills:trackhubs` | Publish UCSC track hubs and assembly hubs | +| `/galaxy-dev-skills:hub-news-posts` | Write Galaxy Hub news posts | | `/foundry-skills:pipeline-nextflow-to-galaxy` | End-to-end Nextflow to Galaxy workflow conversion | | `/foundry-skills:discover-shed-tool` | Find and pin a Tool Shed wrapper | diff --git a/docs/codex.md b/docs/codex.md index 928d22c..4d4774e 100644 --- a/docs/codex.md +++ b/docs/codex.md @@ -56,11 +56,10 @@ have Codex diagnose the connection. ## Use the skills -Type `$` or run `/skills` to pick a skill, for example `$tool-dev`, -`$udt-authoring`, `$nf-to-galaxy`, `$collection-manipulation`, -`$galaxy-integration`, `$reproduciblify`, `$pipeline-nextflow-to-galaxy`, -`$discover-shed-tool`. Codex also selects skills implicitly from their -descriptions. +Type `$` or run `/skills` to pick a skill, for example `$galaxy-integration`, +`$galaxy-mcp-reference`, `$collection-manipulation`, `$udt-authoring`, +`$reproduciblify`, and, if you installed `galaxy-dev-skills`, `$tool-dev` and +`$nf-to-galaxy`. Codex also selects skills implicitly from their descriptions. Codex scans plugin skill directories recursively, so the sub-skills nested under `nf-to-galaxy` and `galaxy-integration` (for example diff --git a/docs/cursor.md b/docs/cursor.md index bfd8f9a..0d50492 100644 --- a/docs/cursor.md +++ b/docs/cursor.md @@ -81,10 +81,10 @@ the agent through diagnosing the connection. ## Use the skills -Type `/` in Agent chat and pick a skill, for example `/tool-dev`, -`/udt-authoring`, `/nf-to-galaxy`, `/galaxy-transform-collection`, -`/galaxy-integration`, `/reproduciblify`, `/pipeline-nextflow-to-galaxy`, -`/discover-shed-tool`. The agent also applies skills on its own when a request +Type `/` in Agent chat and pick a skill, for example `/galaxy-integration`, +`/galaxy-mcp-reference`, `/collection-manipulation`, `/udt-authoring`, +`/reproduciblify`, `/tool-dev`, `/nf-to-galaxy`, +`/pipeline-nextflow-to-galaxy`, `/discover-shed-tool`. The agent also applies skills on its own when a request matches a description. Installed skills are listed under **Customize > Skills**. ## Skills without the plugins diff --git a/docs/pi.md b/docs/pi.md index f23ffb9..1c0aeb3 100644 --- a/docs/pi.md +++ b/docs/pi.md @@ -60,9 +60,10 @@ through diagnosing the connection. ## Use the skills -Skills register as `/skill:` commands, for example `/skill:tool-dev`, -`/skill:udt-authoring`, `/skill:nf-to-galaxy`, `/skill:collection-manipulation`, -`/skill:galaxy-integration`, `/skill:reproduciblify`, +Skills register as `/skill:` commands, for example +`/skill:galaxy-integration`, `/skill:galaxy-mcp-reference`, +`/skill:collection-manipulation`, `/skill:udt-authoring`, +`/skill:reproduciblify`, `/skill:tool-dev`, `/skill:nf-to-galaxy`, `/skill:pipeline-nextflow-to-galaxy`, `/skill:discover-shed-tool`. The agent also loads skills on its own when a request matches a description. diff --git a/package.json b/package.json index 3a70801..ec2c2c7 100644 --- a/package.json +++ b/package.json @@ -20,11 +20,11 @@ "./plugins/galaxy-mcp/skills", "./plugins/galaxy-skills/skills", "./plugins/galaxy-skills/skills/galaxy-integration/jupyterlite", - "./plugins/galaxy-skills/skills/galaxy-integration/mcp-reference", - "./plugins/galaxy-skills/skills/nf-to-galaxy/nf-pipeline-to-galaxy-workflow", - "./plugins/galaxy-skills/skills/nf-to-galaxy/nf-process-to-galaxy-tool", - "./plugins/galaxy-skills/skills/nf-to-galaxy/nf-subworkflow-to-galaxy-workflow", - "./plugins/galaxy-skills/skills/tool-dev/tool-selection-diagram", + "./plugins/galaxy-dev-skills/skills", + "./plugins/galaxy-dev-skills/skills/nf-to-galaxy/nf-pipeline-to-galaxy-workflow", + "./plugins/galaxy-dev-skills/skills/nf-to-galaxy/nf-process-to-galaxy-tool", + "./plugins/galaxy-dev-skills/skills/nf-to-galaxy/nf-subworkflow-to-galaxy-workflow", + "./plugins/galaxy-dev-skills/skills/tool-dev/tool-selection-diagram", "./plugins/foundry-skills/skills" ], "mcp": "./plugins/galaxy-mcp/mcp/pi.json" diff --git a/plugins/galaxy-dev-skills/.claude-plugin/plugin.json b/plugins/galaxy-dev-skills/.claude-plugin/plugin.json new file mode 100644 index 0000000..fcd5ad1 --- /dev/null +++ b/plugins/galaxy-dev-skills/.claude-plugin/plugin.json @@ -0,0 +1,25 @@ +{ + "name": "galaxy-dev-skills", + "version": "2026.9.16", + "description": "Galaxy development skills: tool XML wrappers, Nextflow-to-Galaxy conversion, ToolShed revisions in usegalaxy-tools, UCSC track hubs and Galaxy Hub news posts. Mirror of galaxyproject/galaxy-skills (dev-skills/).", + "author": { + "name": "The Galaxy Project", + "url": "https://galaxyproject.org" + }, + "homepage": "https://github.com/galaxyproject/galaxy-skills", + "repository": "https://github.com/galaxyproject/agentic-plugins", + "license": "MIT", + "keywords": [ + "galaxy", + "bioinformatics", + "skills", + "tool-development", + "nextflow" + ], + "skills": [ + "./skills/nf-to-galaxy/nf-pipeline-to-galaxy-workflow", + "./skills/nf-to-galaxy/nf-process-to-galaxy-tool", + "./skills/nf-to-galaxy/nf-subworkflow-to-galaxy-workflow", + "./skills/tool-dev/tool-selection-diagram" + ] +} diff --git a/plugins/galaxy-dev-skills/.codex-plugin/plugin.json b/plugins/galaxy-dev-skills/.codex-plugin/plugin.json new file mode 100644 index 0000000..fb5fc1a --- /dev/null +++ b/plugins/galaxy-dev-skills/.codex-plugin/plugin.json @@ -0,0 +1,37 @@ +{ + "name": "galaxy-dev-skills", + "version": "2026.9.16", + "description": "Galaxy development skills: tool XML wrappers, Nextflow-to-Galaxy conversion, ToolShed revisions in usegalaxy-tools, UCSC track hubs and Galaxy Hub news posts. Mirror of galaxyproject/galaxy-skills (dev-skills/).", + "author": { + "name": "The Galaxy Project", + "url": "https://galaxyproject.org" + }, + "homepage": "https://github.com/galaxyproject/galaxy-skills", + "repository": "https://github.com/galaxyproject/agentic-plugins", + "license": "MIT", + "keywords": [ + "galaxy", + "bioinformatics", + "skills", + "tool-development", + "nextflow" + ], + "skills": "./skills/", + "interface": { + "displayName": "Galaxy Dev Skills", + "shortDescription": "Skills for building Galaxy tools and workflows", + "longDescription": "Skills for the work that produces Galaxy itself rather than an analysis: writing and testing tool XML wrappers, converting Nextflow processes and pipelines, adding ToolShed revisions to usegalaxy-tools, publishing UCSC track hubs and writing Galaxy Hub news posts. Mirrored from galaxyproject/galaxy-skills.", + "developerName": "The Galaxy Project", + "category": "Developer Tools", + "capabilities": [ + "Read", + "Write" + ], + "websiteURL": "https://galaxyproject.org/", + "defaultPrompt": [ + "Update the ncbi-datasets Galaxy tool to the latest version.", + "Convert this Nextflow process to a Galaxy tool.", + "Add a ToolShed revision for this tool to usegalaxy-tools." + ] + } +} diff --git a/plugins/galaxy-dev-skills/.cursor-plugin/plugin.json b/plugins/galaxy-dev-skills/.cursor-plugin/plugin.json new file mode 100644 index 0000000..099ea3c --- /dev/null +++ b/plugins/galaxy-dev-skills/.cursor-plugin/plugin.json @@ -0,0 +1,18 @@ +{ + "name": "galaxy-dev-skills", + "version": "2026.9.16", + "description": "Galaxy development skills: tool XML wrappers, Nextflow-to-Galaxy conversion, ToolShed revisions in usegalaxy-tools, UCSC track hubs and Galaxy Hub news posts. Mirror of galaxyproject/galaxy-skills (dev-skills/).", + "author": { + "name": "The Galaxy Project" + }, + "homepage": "https://github.com/galaxyproject/galaxy-skills", + "repository": "https://github.com/galaxyproject/agentic-plugins", + "license": "MIT", + "keywords": [ + "galaxy", + "bioinformatics", + "skills", + "tool-development", + "nextflow" + ] +} diff --git a/plugins/galaxy-dev-skills/README.md b/plugins/galaxy-dev-skills/README.md new file mode 100644 index 0000000..a0dbad7 --- /dev/null +++ b/plugins/galaxy-dev-skills/README.md @@ -0,0 +1,14 @@ +# galaxy-dev-skills (mirror) + +Everything under `skills/` is a verbatim copy of the `dev-skills/` tree upstream; +**do not edit it here**. Upstream: https://github.com/galaxyproject/galaxy-skills. +The pinned commit is recorded in `UPSTREAM.json`. + +These are the skills for *building* Galaxy -- tool wrappers, Nextflow conversion, +ToolShed revisions, track hubs, Hub news posts. The skills for *using* Galaxy live in +the `galaxy-skills` plugin, which mirrors the upstream `skills/` tree. Upstream keeps +them apart so that installing one doesn't hand you the other. + +Refresh with `scripts/sync-skills.sh` from the repository root (a scheduled +GitHub Action does this weekly and opens a pull request). The manifests in +this directory are regenerated by `scripts/gen-manifests.py`. diff --git a/plugins/galaxy-dev-skills/UPSTREAM.json b/plugins/galaxy-dev-skills/UPSTREAM.json new file mode 100644 index 0000000..b96b153 --- /dev/null +++ b/plugins/galaxy-dev-skills/UPSTREAM.json @@ -0,0 +1,7 @@ +{ + "repository": "https://github.com/galaxyproject/galaxy-skills", + "ref": "add-plugin-config", + "commit": "7ed78b83fb7a93033964271937b9066038120af3", + "path": "dev-skills", + "synced_at": "2026-09-16T23:53:15Z" +} diff --git a/plugins/galaxy-dev-skills/plugin.json b/plugins/galaxy-dev-skills/plugin.json new file mode 100644 index 0000000..8158309 --- /dev/null +++ b/plugins/galaxy-dev-skills/plugin.json @@ -0,0 +1,4 @@ +{ + "name": "galaxy-dev-skills", + "description": "Galaxy development skills: tool XML wrappers, Nextflow-to-Galaxy conversion, ToolShed revisions in usegalaxy-tools, UCSC track hubs and Galaxy Hub news posts. Mirror of galaxyproject/galaxy-skills (dev-skills/)." +} diff --git a/plugins/galaxy-dev-skills/skills/LICENSE b/plugins/galaxy-dev-skills/skills/LICENSE new file mode 100644 index 0000000..78727e7 --- /dev/null +++ b/plugins/galaxy-dev-skills/skills/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2025 Galaxy Skills Contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/plugins/galaxy-skills/skills/hub-news-posts/README.md b/plugins/galaxy-dev-skills/skills/hub-news-posts/README.md similarity index 100% rename from plugins/galaxy-skills/skills/hub-news-posts/README.md rename to plugins/galaxy-dev-skills/skills/hub-news-posts/README.md diff --git a/plugins/galaxy-skills/skills/hub-news-posts/SKILL.md b/plugins/galaxy-dev-skills/skills/hub-news-posts/SKILL.md similarity index 100% rename from plugins/galaxy-skills/skills/hub-news-posts/SKILL.md rename to plugins/galaxy-dev-skills/skills/hub-news-posts/SKILL.md diff --git a/plugins/galaxy-skills/skills/hub-news-posts/examples/sample-post.md b/plugins/galaxy-dev-skills/skills/hub-news-posts/examples/sample-post.md similarity index 100% rename from plugins/galaxy-skills/skills/hub-news-posts/examples/sample-post.md rename to plugins/galaxy-dev-skills/skills/hub-news-posts/examples/sample-post.md diff --git a/plugins/galaxy-skills/skills/hub-news-posts/references/formatting.md b/plugins/galaxy-dev-skills/skills/hub-news-posts/references/formatting.md similarity index 100% rename from plugins/galaxy-skills/skills/hub-news-posts/references/formatting.md rename to plugins/galaxy-dev-skills/skills/hub-news-posts/references/formatting.md diff --git a/plugins/galaxy-skills/skills/nf-to-galaxy/README.md b/plugins/galaxy-dev-skills/skills/nf-to-galaxy/README.md similarity index 71% rename from plugins/galaxy-skills/skills/nf-to-galaxy/README.md rename to plugins/galaxy-dev-skills/skills/nf-to-galaxy/README.md index d892be8..75d22a8 100644 --- a/plugins/galaxy-skills/skills/nf-to-galaxy/README.md +++ b/plugins/galaxy-dev-skills/skills/nf-to-galaxy/README.md @@ -14,7 +14,7 @@ Convert Nextflow workflows to Galaxy tools and workflows. - Subworkflow → `nf-subworkflow-to-galaxy-workflow/` - Complete pipeline → `nf-pipeline-to-galaxy-workflow/` -**Using Galaxy integration?** See `../../galaxy-integration/README.md` and `../../galaxy-integration/galaxy-integration.md`. +**Using Galaxy integration?** See `../../skills/galaxy-integration/README.md` and `../../skills/galaxy-integration/galaxy-integration.md`. --- @@ -25,7 +25,7 @@ Convert Nextflow workflows to Galaxy tools and workflows. | File | Purpose | When to Read | |------|---------|--------------| | **`SKILL.md`** | Main router, decides which sub-skill to use | **Start here** | -| **`../../galaxy-integration/galaxy-integration.md`** | Galaxy MCP/BioBlend setup, usage, examples | Using Galaxy features | +| **`../../skills/galaxy-integration/galaxy-integration.md`** | Galaxy MCP/BioBlend setup, usage, examples | Using Galaxy features | ### 🔧 Reference Documentation @@ -33,7 +33,7 @@ Convert Nextflow workflows to Galaxy tools and workflows. |------|---------| | `check-tool-availability.md` | How to find if tools exist | | `testing-and-validation.md` | Routing page to canonical testing docs | -| `../../tool-dev/references/testing.md` | Tool testing with Planemo | +| `../tool-dev/references/testing.md` | Tool testing with Planemo | | `nextflow-galaxy-terminology.md` | Concept mappings | | `process-to-tool.md` | Process → Tool conversion details | | `workflow-to-ga.md` | Workflow → .ga conversion details | @@ -55,7 +55,7 @@ Convert Nextflow workflows to Galaxy tools and workflows. |----------------|---------| | `scripts/` | Repository availability helper scripts (check_tool.sh) | | `examples/` | Complete conversion examples | -| `.env.example` (skills repo root) | Template for Galaxy credentials (copy to `.env` at repo root; see `../../galaxy-integration/README.md`) | +| `.env.example` (skills repo root) | Template for Galaxy credentials (copy to `.env` at repo root; see `../../skills/galaxy-integration/README.md`) | --- @@ -65,21 +65,21 @@ Convert Nextflow workflows to Galaxy tools and workflows. ```bash # Option 1: Use script (efficient) -python ../../galaxy-integration/scripts/galaxy_tool_checker.py --tool hyphy iqtree +python ../../skills/galaxy-integration/scripts/galaxy_tool_checker.py --tool hyphy iqtree # Option 2: Use MCP (interactive) # In agent: "Check if hyphy and iqtree are available on usegalaxy.org" ``` -See: `../../galaxy-integration/galaxy-integration.md` → Tool Checking +See: `../../skills/galaxy-integration/galaxy-integration.md` → Tool Checking ### Validate Workflow File ```bash -python ../../galaxy-integration/scripts/galaxy_tool_checker.py --workflow my_workflow.ga +python ../../skills/galaxy-integration/scripts/galaxy_tool_checker.py --workflow my_workflow.ga ``` -See: `../../galaxy-integration/galaxy-integration.md` → Workflow Validation +See: `../../skills/galaxy-integration/galaxy-integration.md` → Workflow Validation ### Convert Process to Tool @@ -90,9 +90,9 @@ See: `../../galaxy-integration/galaxy-integration.md` → Workflow Validation ### Convert Pipeline to Workflows 1. Read: `nf-pipeline-to-galaxy-workflow/SKILL.md` -2. Inventory tools: Use `../../galaxy-integration/scripts/galaxy_tool_checker.py` +2. Inventory tools: Use `../../skills/galaxy-integration/scripts/galaxy_tool_checker.py` 3. Create workflows with verified tool IDs -4. Test: `../../galaxy-integration/galaxy-integration.md` → Workflow Testing +4. Test: `../../skills/galaxy-integration/galaxy-integration.md` → Workflow Testing --- @@ -105,14 +105,14 @@ What do you need? │ └─ Read: nextflow-galaxy-terminology.md │ ├─ Check if tool exists? -│ ├─ On Galaxy instance? → ../../galaxy-integration/galaxy-integration.md (Tool Checking) +│ ├─ On Galaxy instance? → ../../skills/galaxy-integration/galaxy-integration.md (Tool Checking) │ └─ In repositories? → check-tool-availability.md │ ├─ Convert something? │ └─ Read: SKILL.md (router) │ ├─ Test workflow? -│ └─ Read: ../../galaxy-integration/galaxy-integration.md (Workflow Testing) +│ └─ Read: ../../skills/galaxy-integration/galaxy-integration.md (Workflow Testing) │ └─ Understand mappings? ├─ Containers → container-mapping.md @@ -137,6 +137,6 @@ What do you need? - **Confused about structure?** Read this README - **Don't know which sub-skill?** Read `SKILL.md` -- **Need Galaxy setup?** See `../../galaxy-integration/galaxy-integration.md` → Setup +- **Need Galaxy setup?** See `../../skills/galaxy-integration/galaxy-integration.md` → Setup - **Want examples?** See `examples/` directory -- **Script usage?** See `../../galaxy-integration/scripts/README.md` +- **Script usage?** See `../../skills/galaxy-integration/scripts/README.md` diff --git a/plugins/galaxy-skills/skills/nf-to-galaxy/SKILL.md b/plugins/galaxy-dev-skills/skills/nf-to-galaxy/SKILL.md similarity index 88% rename from plugins/galaxy-skills/skills/nf-to-galaxy/SKILL.md rename to plugins/galaxy-dev-skills/skills/nf-to-galaxy/SKILL.md index 0ce6893..baea34d 100644 --- a/plugins/galaxy-skills/skills/nf-to-galaxy/SKILL.md +++ b/plugins/galaxy-dev-skills/skills/nf-to-galaxy/SKILL.md @@ -1,6 +1,6 @@ --- name: nf-to-galaxy -description: Router skill for Nextflow to Galaxy conversions - directs to appropriate sub-skill +description: "Use when converting Nextflow to Galaxy -- a single process to a Galaxy tool XML, a subworkflow or full pipeline to a Galaxy workflow, or an nf-core module. Routes to the right sub-skill and covers container-to-bioconda mapping and testing the result." --- # Nextflow to Galaxy Conversion (Router) @@ -82,17 +82,17 @@ For complete pipelines, you are expected to include **bioinformatics best-practi **New to this skill?** See `README.md` for file organization and navigation. -**Using Galaxy integration?** See `../../galaxy-integration/README.md` and `../../galaxy-integration/galaxy-integration.md`. +**Using Galaxy integration?** See `../../skills/galaxy-integration/README.md` and `../../skills/galaxy-integration/galaxy-integration.md`. --- ## Shared Resources ### Core Guides -- **`../../galaxy-integration/galaxy-integration.md`** - Galaxy MCP/BioBlend: setup, tool checking, workflow testing +- **`../../skills/galaxy-integration/galaxy-integration.md`** - Galaxy MCP/BioBlend: setup, tool checking, workflow testing - **`check-tool-availability.md`** - Manual tool checking across repositories - **`testing-and-validation.md`** - Routing page to canonical testing docs -- **`../../tool-dev/references/testing.md`** - Tool testing with Planemo +- **`../tool-dev/references/testing.md`** - Tool testing with Planemo ### Tool Discovery Order (Installed vs Available vs Missing) diff --git a/plugins/galaxy-skills/skills/nf-to-galaxy/check-tool-availability.md b/plugins/galaxy-dev-skills/skills/nf-to-galaxy/check-tool-availability.md similarity index 95% rename from plugins/galaxy-skills/skills/nf-to-galaxy/check-tool-availability.md rename to plugins/galaxy-dev-skills/skills/nf-to-galaxy/check-tool-availability.md index 17fafe2..6fa428c 100644 --- a/plugins/galaxy-skills/skills/nf-to-galaxy/check-tool-availability.md +++ b/plugins/galaxy-dev-skills/skills/nf-to-galaxy/check-tool-availability.md @@ -293,7 +293,7 @@ search_tools_by_keywords(keywords=["fasta", "alignment"]) This shows what's actually installed on the target Galaxy instance. - **See**: `../../galaxy-integration/galaxy-integration.md` for complete MCP usage guide + **See**: `../../skills/galaxy-integration/galaxy-integration.md` for complete MCP usage guide ### Option B: BioBlend Script (Automated) @@ -301,14 +301,14 @@ For batch checking and minimal token usage: ```bash # Check multiple tools at once - python ../../galaxy-integration/scripts/galaxy_tool_checker.py \ + python ../../skills/galaxy-integration/scripts/galaxy_tool_checker.py \ --url https://usegalaxy.org \ --api-key $GALAXY_API_KEY \ --tool hyphy iqtree seqkit \ --output report.json ``` - **See**: `../../galaxy-integration/scripts/galaxy_tool_checker.py` for complete script documentation + **See**: `../../skills/galaxy-integration/scripts/galaxy_tool_checker.py` for complete script documentation --- @@ -439,6 +439,6 @@ When reporting tool availability, use this format: ## Related Documentation -- **`../../galaxy-integration/galaxy-integration.md`** - Complete guide to using Galaxy MCP and BioBlend +- **`../../skills/galaxy-integration/galaxy-integration.md`** - Complete guide to using Galaxy MCP and BioBlend - **`examples/tool-checking-example.md`** - Step-by-step tool checking examples -- **`../../galaxy-integration/scripts/galaxy_tool_checker.py`** - Automated tool checking script +- **`../../skills/galaxy-integration/scripts/galaxy_tool_checker.py`** - Automated tool checking script diff --git a/plugins/galaxy-skills/skills/nf-to-galaxy/container-mapping.md b/plugins/galaxy-dev-skills/skills/nf-to-galaxy/container-mapping.md similarity index 100% rename from plugins/galaxy-skills/skills/nf-to-galaxy/container-mapping.md rename to plugins/galaxy-dev-skills/skills/nf-to-galaxy/container-mapping.md diff --git a/plugins/galaxy-skills/skills/nf-to-galaxy/datatype-mapping.md b/plugins/galaxy-dev-skills/skills/nf-to-galaxy/datatype-mapping.md similarity index 100% rename from plugins/galaxy-skills/skills/nf-to-galaxy/datatype-mapping.md rename to plugins/galaxy-dev-skills/skills/nf-to-galaxy/datatype-mapping.md diff --git a/plugins/galaxy-skills/skills/nf-to-galaxy/examples/README.md b/plugins/galaxy-dev-skills/skills/nf-to-galaxy/examples/README.md similarity index 88% rename from plugins/galaxy-skills/skills/nf-to-galaxy/examples/README.md rename to plugins/galaxy-dev-skills/skills/nf-to-galaxy/examples/README.md index 6224702..612a807 100644 --- a/plugins/galaxy-skills/skills/nf-to-galaxy/examples/README.md +++ b/plugins/galaxy-dev-skills/skills/nf-to-galaxy/examples/README.md @@ -2,7 +2,7 @@ Real-world examples of converting Nextflow pipelines to Galaxy workflows. -**Note**: These examples focus on **conversion-specific scenarios**. For detailed instructions on **using Galaxy MCP and BioBlend** to check tools and test workflows, see `../../../galaxy-integration/examples/`. +**Note**: These examples focus on **conversion-specific scenarios**. For detailed instructions on **using Galaxy MCP and BioBlend** to check tools and test workflows, see `../../../skills/galaxy-integration/examples/`. --- @@ -48,7 +48,7 @@ Shows how to: ## Quick Links -**Setup Galaxy integration**: See `../../../galaxy-integration/galaxy-integration.md` → Setup +**Setup Galaxy integration**: See `../../../skills/galaxy-integration/galaxy-integration.md` → Setup **Tool checking**: - Interactive (1-3 tools): `tool-checking-example.md` → Method 1 diff --git a/plugins/galaxy-skills/skills/nf-to-galaxy/examples/capheine-mapping.md b/plugins/galaxy-dev-skills/skills/nf-to-galaxy/examples/capheine-mapping.md similarity index 100% rename from plugins/galaxy-skills/skills/nf-to-galaxy/examples/capheine-mapping.md rename to plugins/galaxy-dev-skills/skills/nf-to-galaxy/examples/capheine-mapping.md diff --git a/plugins/galaxy-skills/skills/nf-to-galaxy/examples/tool-checking-example.md b/plugins/galaxy-dev-skills/skills/nf-to-galaxy/examples/tool-checking-example.md similarity index 94% rename from plugins/galaxy-skills/skills/nf-to-galaxy/examples/tool-checking-example.md rename to plugins/galaxy-dev-skills/skills/nf-to-galaxy/examples/tool-checking-example.md index 8f7d7db..656a5a1 100644 --- a/plugins/galaxy-skills/skills/nf-to-galaxy/examples/tool-checking-example.md +++ b/plugins/galaxy-dev-skills/skills/nf-to-galaxy/examples/tool-checking-example.md @@ -33,7 +33,7 @@ Converting the CAPHEINE pipeline which uses these tools: **For detailed instructions on using Galaxy MCP and BioBlend to check tools**, see: -**→ `../../../galaxy-integration/examples/tool-checking.md`** +**→ `../../../skills/galaxy-integration/examples/tool-checking.md`** That guide covers: - Using Galaxy MCP for interactive tool checking @@ -124,7 +124,7 @@ EOF ### Step 2: Run Batch Check ```bash -python ../../../galaxy-integration/scripts/galaxy_tool_checker.py \ +python ../../../skills/galaxy-integration/scripts/galaxy_tool_checker.py \ --url https://usegalaxy.org \ --api-key $GALAXY_API_KEY \ --tool-list tools.txt \ @@ -215,7 +215,7 @@ After checking tool availability: 2. **For missing tools** (custom alignment): - Create custom tool wrapper - See: `../nf-process-to-galaxy-tool/SKILL.md` - - Or: `../../../tool-dev/SKILL.md` + - Or: `../../tool-dev/SKILL.md` 3. **Create workflow**: - Use verified tool IDs in `.ga` file @@ -223,13 +223,13 @@ After checking tool availability: 4. **Test workflow**: - See: `workflow-testing-example.md` (this directory) - - Or: `../../../galaxy-integration/examples/workflow-testing.md` + - Or: `../../../skills/galaxy-integration/examples/workflow-testing.md` --- ## Related -- **Detailed tool checking guide**: `../../../galaxy-integration/examples/tool-checking.md` +- **Detailed tool checking guide**: `../../../skills/galaxy-integration/examples/tool-checking.md` - **CAPHEINE mapping**: `capheine-mapping.md` (complete tool mapping) - **Tool creation**: `../nf-process-to-galaxy-tool/SKILL.md` - **Workflow testing**: `workflow-testing-example.md` diff --git a/plugins/galaxy-skills/skills/nf-to-galaxy/examples/workflow-testing-example.md b/plugins/galaxy-dev-skills/skills/nf-to-galaxy/examples/workflow-testing-example.md similarity index 100% rename from plugins/galaxy-skills/skills/nf-to-galaxy/examples/workflow-testing-example.md rename to plugins/galaxy-dev-skills/skills/nf-to-galaxy/examples/workflow-testing-example.md diff --git a/plugins/galaxy-skills/skills/nf-to-galaxy/nextflow-galaxy-terminology.md b/plugins/galaxy-dev-skills/skills/nf-to-galaxy/nextflow-galaxy-terminology.md similarity index 100% rename from plugins/galaxy-skills/skills/nf-to-galaxy/nextflow-galaxy-terminology.md rename to plugins/galaxy-dev-skills/skills/nf-to-galaxy/nextflow-galaxy-terminology.md diff --git a/plugins/galaxy-skills/skills/nf-to-galaxy/nf-pipeline-to-galaxy-workflow/SKILL.md b/plugins/galaxy-dev-skills/skills/nf-to-galaxy/nf-pipeline-to-galaxy-workflow/SKILL.md similarity index 99% rename from plugins/galaxy-skills/skills/nf-to-galaxy/nf-pipeline-to-galaxy-workflow/SKILL.md rename to plugins/galaxy-dev-skills/skills/nf-to-galaxy/nf-pipeline-to-galaxy-workflow/SKILL.md index 1b45038..e6ea7c6 100644 --- a/plugins/galaxy-skills/skills/nf-to-galaxy/nf-pipeline-to-galaxy-workflow/SKILL.md +++ b/plugins/galaxy-dev-skills/skills/nf-to-galaxy/nf-pipeline-to-galaxy-workflow/SKILL.md @@ -313,7 +313,7 @@ Workflow 2: CAPHEINE_Analyses Use the canonical testing docs: - Tool testing (Planemo): `../../tool-dev/references/testing.md` - - Workflow testing/validation (Galaxy instance): `../../galaxy-integration/galaxy-integration.md` + - Workflow testing/validation (Galaxy instance): `../../../skills/galaxy-integration/galaxy-integration.md` `../testing-and-validation.md` is a short routing page that links to these. diff --git a/plugins/galaxy-skills/skills/nf-to-galaxy/nf-process-to-galaxy-tool/SKILL.md b/plugins/galaxy-dev-skills/skills/nf-to-galaxy/nf-process-to-galaxy-tool/SKILL.md similarity index 100% rename from plugins/galaxy-skills/skills/nf-to-galaxy/nf-process-to-galaxy-tool/SKILL.md rename to plugins/galaxy-dev-skills/skills/nf-to-galaxy/nf-process-to-galaxy-tool/SKILL.md diff --git a/plugins/galaxy-skills/skills/nf-to-galaxy/nf-subworkflow-to-galaxy-workflow/SKILL.md b/plugins/galaxy-dev-skills/skills/nf-to-galaxy/nf-subworkflow-to-galaxy-workflow/SKILL.md similarity index 97% rename from plugins/galaxy-skills/skills/nf-to-galaxy/nf-subworkflow-to-galaxy-workflow/SKILL.md rename to plugins/galaxy-dev-skills/skills/nf-to-galaxy/nf-subworkflow-to-galaxy-workflow/SKILL.md index f9b7b7f..16cd9ee 100644 --- a/plugins/galaxy-skills/skills/nf-to-galaxy/nf-subworkflow-to-galaxy-workflow/SKILL.md +++ b/plugins/galaxy-dev-skills/skills/nf-to-galaxy/nf-subworkflow-to-galaxy-workflow/SKILL.md @@ -130,7 +130,7 @@ Step 3: Tool C (input from Step 2 output) Use the canonical testing docs: - Tool testing (Planemo): `../../tool-dev/references/testing.md` -- Workflow testing/validation (Galaxy instance): `../../galaxy-integration/galaxy-integration.md` +- Workflow testing/validation (Galaxy instance): `../../../skills/galaxy-integration/galaxy-integration.md` `../testing-and-validation.md` is a short routing page that links to these. diff --git a/plugins/galaxy-skills/skills/nf-to-galaxy/process-to-tool.md b/plugins/galaxy-dev-skills/skills/nf-to-galaxy/process-to-tool.md similarity index 99% rename from plugins/galaxy-skills/skills/nf-to-galaxy/process-to-tool.md rename to plugins/galaxy-dev-skills/skills/nf-to-galaxy/process-to-tool.md index 261045e..9eeb1b2 100644 --- a/plugins/galaxy-skills/skills/nf-to-galaxy/process-to-tool.md +++ b/plugins/galaxy-dev-skills/skills/nf-to-galaxy/process-to-tool.md @@ -12,7 +12,7 @@ Detailed guide for converting a single Nextflow process to a Galaxy tool XML. 2. Check if Galaxy tool already exists (tools-iuc, GenOuest, ToolShed) 3. If creating new tool, determine where it should live: - See `tool-sources.md` for conversion context - - See `../../tool-dev/references/tool-placement.md` for generic tool placement guidance + - See `../tool-dev/references/tool-placement.md` for generic tool placement guidance 4. Present plan to user 5. Wait for approval 6. Implement diff --git a/plugins/galaxy-skills/skills/nf-to-galaxy/scripts/check_tool.sh b/plugins/galaxy-dev-skills/skills/nf-to-galaxy/scripts/check_tool.sh similarity index 100% rename from plugins/galaxy-skills/skills/nf-to-galaxy/scripts/check_tool.sh rename to plugins/galaxy-dev-skills/skills/nf-to-galaxy/scripts/check_tool.sh diff --git a/plugins/galaxy-skills/skills/nf-to-galaxy/testing-and-validation.md b/plugins/galaxy-dev-skills/skills/nf-to-galaxy/testing-and-validation.md similarity index 84% rename from plugins/galaxy-skills/skills/nf-to-galaxy/testing-and-validation.md rename to plugins/galaxy-dev-skills/skills/nf-to-galaxy/testing-and-validation.md index 602f053..61e20a6 100644 --- a/plugins/galaxy-skills/skills/nf-to-galaxy/testing-and-validation.md +++ b/plugins/galaxy-dev-skills/skills/nf-to-galaxy/testing-and-validation.md @@ -9,12 +9,12 @@ This page is intentionally short. It routes testing guidance to the canonical sk ### Tool testing (Planemo) If you are creating or modifying Galaxy tools, use the tool development skill: -- `../../tool-dev/references/testing.md` +- `../tool-dev/references/testing.md` ### Workflow testing, validation, and output comparison (Galaxy instance) All workflow testing/validation guidance that requires a Galaxy instance (MCP + BioBlend) lives in: -- `../../galaxy-integration/galaxy-integration.md` +- `../../skills/galaxy-integration/galaxy-integration.md` --- diff --git a/plugins/galaxy-skills/skills/nf-to-galaxy/tool-sources.md b/plugins/galaxy-dev-skills/skills/nf-to-galaxy/tool-sources.md similarity index 100% rename from plugins/galaxy-skills/skills/nf-to-galaxy/tool-sources.md rename to plugins/galaxy-dev-skills/skills/nf-to-galaxy/tool-sources.md diff --git a/plugins/galaxy-skills/skills/nf-to-galaxy/workflow-to-ga.md b/plugins/galaxy-dev-skills/skills/nf-to-galaxy/workflow-to-ga.md similarity index 100% rename from plugins/galaxy-skills/skills/nf-to-galaxy/workflow-to-ga.md rename to plugins/galaxy-dev-skills/skills/nf-to-galaxy/workflow-to-ga.md diff --git a/plugins/galaxy-skills/skills/tool-dev/SKILL.md b/plugins/galaxy-dev-skills/skills/tool-dev/SKILL.md similarity index 100% rename from plugins/galaxy-skills/skills/tool-dev/SKILL.md rename to plugins/galaxy-dev-skills/skills/tool-dev/SKILL.md diff --git a/plugins/galaxy-skills/skills/tool-dev/references/testing.md b/plugins/galaxy-dev-skills/skills/tool-dev/references/testing.md similarity index 100% rename from plugins/galaxy-skills/skills/tool-dev/references/testing.md rename to plugins/galaxy-dev-skills/skills/tool-dev/references/testing.md diff --git a/plugins/galaxy-skills/skills/tool-dev/references/tool-help-diagrams.md b/plugins/galaxy-dev-skills/skills/tool-dev/references/tool-help-diagrams.md similarity index 100% rename from plugins/galaxy-skills/skills/tool-dev/references/tool-help-diagrams.md rename to plugins/galaxy-dev-skills/skills/tool-dev/references/tool-help-diagrams.md diff --git a/plugins/galaxy-skills/skills/tool-dev/references/tool-placement.md b/plugins/galaxy-dev-skills/skills/tool-dev/references/tool-placement.md similarity index 100% rename from plugins/galaxy-skills/skills/tool-dev/references/tool-placement.md rename to plugins/galaxy-dev-skills/skills/tool-dev/references/tool-placement.md diff --git a/plugins/galaxy-skills/skills/tool-dev/tool-selection-diagram/SKILL.md b/plugins/galaxy-dev-skills/skills/tool-dev/tool-selection-diagram/SKILL.md similarity index 100% rename from plugins/galaxy-skills/skills/tool-dev/tool-selection-diagram/SKILL.md rename to plugins/galaxy-dev-skills/skills/tool-dev/tool-selection-diagram/SKILL.md diff --git a/plugins/galaxy-skills/skills/tool-dev/tool-selection-diagram/examples/mmseqs2_tool_selection.json b/plugins/galaxy-dev-skills/skills/tool-dev/tool-selection-diagram/examples/mmseqs2_tool_selection.json similarity index 100% rename from plugins/galaxy-skills/skills/tool-dev/tool-selection-diagram/examples/mmseqs2_tool_selection.json rename to plugins/galaxy-dev-skills/skills/tool-dev/tool-selection-diagram/examples/mmseqs2_tool_selection.json diff --git a/plugins/galaxy-skills/skills/tool-dev/tool-selection-diagram/examples/samtools_tool_selection.json b/plugins/galaxy-dev-skills/skills/tool-dev/tool-selection-diagram/examples/samtools_tool_selection.json similarity index 100% rename from plugins/galaxy-skills/skills/tool-dev/tool-selection-diagram/examples/samtools_tool_selection.json rename to plugins/galaxy-dev-skills/skills/tool-dev/tool-selection-diagram/examples/samtools_tool_selection.json diff --git a/plugins/galaxy-skills/skills/tool-dev/tool-selection-diagram/examples/simple_example.json b/plugins/galaxy-dev-skills/skills/tool-dev/tool-selection-diagram/examples/simple_example.json similarity index 100% rename from plugins/galaxy-skills/skills/tool-dev/tool-selection-diagram/examples/simple_example.json rename to plugins/galaxy-dev-skills/skills/tool-dev/tool-selection-diagram/examples/simple_example.json diff --git a/plugins/galaxy-skills/skills/tool-dev/tool-selection-diagram/scripts/render_tool_diagram.py b/plugins/galaxy-dev-skills/skills/tool-dev/tool-selection-diagram/scripts/render_tool_diagram.py similarity index 100% rename from plugins/galaxy-skills/skills/tool-dev/tool-selection-diagram/scripts/render_tool_diagram.py rename to plugins/galaxy-dev-skills/skills/tool-dev/tool-selection-diagram/scripts/render_tool_diagram.py diff --git a/plugins/galaxy-skills/skills/trackhubs/README.md b/plugins/galaxy-dev-skills/skills/trackhubs/README.md similarity index 100% rename from plugins/galaxy-skills/skills/trackhubs/README.md rename to plugins/galaxy-dev-skills/skills/trackhubs/README.md diff --git a/plugins/galaxy-skills/skills/trackhubs/SKILL.md b/plugins/galaxy-dev-skills/skills/trackhubs/SKILL.md similarity index 100% rename from plugins/galaxy-skills/skills/trackhubs/SKILL.md rename to plugins/galaxy-dev-skills/skills/trackhubs/SKILL.md diff --git a/plugins/galaxy-skills/skills/trackhubs/references/chain-to-bigchain.md b/plugins/galaxy-dev-skills/skills/trackhubs/references/chain-to-bigchain.md similarity index 100% rename from plugins/galaxy-skills/skills/trackhubs/references/chain-to-bigchain.md rename to plugins/galaxy-dev-skills/skills/trackhubs/references/chain-to-bigchain.md diff --git a/plugins/galaxy-skills/skills/trackhubs/references/composite-tracks.md b/plugins/galaxy-dev-skills/skills/trackhubs/references/composite-tracks.md similarity index 100% rename from plugins/galaxy-skills/skills/trackhubs/references/composite-tracks.md rename to plugins/galaxy-dev-skills/skills/trackhubs/references/composite-tracks.md diff --git a/plugins/galaxy-skills/skills/trackhubs/references/genomes-txt-fields.md b/plugins/galaxy-dev-skills/skills/trackhubs/references/genomes-txt-fields.md similarity index 100% rename from plugins/galaxy-skills/skills/trackhubs/references/genomes-txt-fields.md rename to plugins/galaxy-dev-skills/skills/trackhubs/references/genomes-txt-fields.md diff --git a/plugins/galaxy-skills/skills/trackhubs/references/hubcheck-debugging.md b/plugins/galaxy-dev-skills/skills/trackhubs/references/hubcheck-debugging.md similarity index 100% rename from plugins/galaxy-skills/skills/trackhubs/references/hubcheck-debugging.md rename to plugins/galaxy-dev-skills/skills/trackhubs/references/hubcheck-debugging.md diff --git a/plugins/galaxy-skills/skills/update-usegalaxy-tool/README.md b/plugins/galaxy-dev-skills/skills/update-usegalaxy-tool/README.md similarity index 100% rename from plugins/galaxy-skills/skills/update-usegalaxy-tool/README.md rename to plugins/galaxy-dev-skills/skills/update-usegalaxy-tool/README.md diff --git a/plugins/galaxy-skills/skills/update-usegalaxy-tool/SKILL.md b/plugins/galaxy-dev-skills/skills/update-usegalaxy-tool/SKILL.md similarity index 94% rename from plugins/galaxy-skills/skills/update-usegalaxy-tool/SKILL.md rename to plugins/galaxy-dev-skills/skills/update-usegalaxy-tool/SKILL.md index 69e1765..a890985 100644 --- a/plugins/galaxy-skills/skills/update-usegalaxy-tool/SKILL.md +++ b/plugins/galaxy-dev-skills/skills/update-usegalaxy-tool/SKILL.md @@ -1,7 +1,7 @@ --- name: update-usegalaxy-tool -description: Add/update a ToolShed tool revision in usegalaxy-tools repo -argument-hint: [tool-name] [owner] [version] [sections] +description: "Add or update a ToolShed tool revision in the usegalaxy-tools repository -- resolving changeset revisions, editing .yml and .yml.lock toolset files, and handling adds, updates, moves, and removals across sections." +argument-hint: "[tool-name] [owner] [version] [sections]" disable-model-invocation: true allowed-tools: Bash, Read, Edit, Write, Glob, Grep --- diff --git a/plugins/galaxy-skills/skills/update-usegalaxy-tool/references/file-formats.md b/plugins/galaxy-dev-skills/skills/update-usegalaxy-tool/references/file-formats.md similarity index 100% rename from plugins/galaxy-skills/skills/update-usegalaxy-tool/references/file-formats.md rename to plugins/galaxy-dev-skills/skills/update-usegalaxy-tool/references/file-formats.md diff --git a/plugins/galaxy-skills/.claude-plugin/plugin.json b/plugins/galaxy-skills/.claude-plugin/plugin.json index 067c5e7..2caa8ae 100644 --- a/plugins/galaxy-skills/.claude-plugin/plugin.json +++ b/plugins/galaxy-skills/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "galaxy-skills", "version": "2026.9.16", - "description": "Curated Galaxy skills for coding agents: tool development, user-defined tools, Nextflow-to-Galaxy conversion, collection manipulation, workflow reports, track hubs, hub news posts and Galaxy MCP usage. Mirror of galaxyproject/galaxy-skills.", + "description": "Curated Galaxy skills for running an analysis: connecting to a Galaxy server, the MCP tool surface, dataset collections, user-defined tools, workflow reports and turning an ad-hoc history into a reusable workflow. Mirror of galaxyproject/galaxy-skills (skills/).", "author": { "name": "The Galaxy Project", "url": "https://galaxyproject.org" @@ -13,15 +13,10 @@ "galaxy", "bioinformatics", "skills", - "tool-development", - "nextflow" + "collections", + "user-defined-tools" ], "skills": [ - "./skills/galaxy-integration/jupyterlite", - "./skills/galaxy-integration/mcp-reference", - "./skills/nf-to-galaxy/nf-pipeline-to-galaxy-workflow", - "./skills/nf-to-galaxy/nf-process-to-galaxy-tool", - "./skills/nf-to-galaxy/nf-subworkflow-to-galaxy-workflow", - "./skills/tool-dev/tool-selection-diagram" + "./skills/galaxy-integration/jupyterlite" ] } diff --git a/plugins/galaxy-skills/.codex-plugin/plugin.json b/plugins/galaxy-skills/.codex-plugin/plugin.json index 3289804..6b1b03f 100644 --- a/plugins/galaxy-skills/.codex-plugin/plugin.json +++ b/plugins/galaxy-skills/.codex-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "galaxy-skills", "version": "2026.9.16", - "description": "Curated Galaxy skills for coding agents: tool development, user-defined tools, Nextflow-to-Galaxy conversion, collection manipulation, workflow reports, track hubs, hub news posts and Galaxy MCP usage. Mirror of galaxyproject/galaxy-skills.", + "description": "Curated Galaxy skills for running an analysis: connecting to a Galaxy server, the MCP tool surface, dataset collections, user-defined tools, workflow reports and turning an ad-hoc history into a reusable workflow. Mirror of galaxyproject/galaxy-skills (skills/).", "author": { "name": "The Galaxy Project", "url": "https://galaxyproject.org" @@ -13,14 +13,14 @@ "galaxy", "bioinformatics", "skills", - "tool-development", - "nextflow" + "collections", + "user-defined-tools" ], "skills": "./skills/", "interface": { "displayName": "Galaxy Skills", - "shortDescription": "Curated Galaxy developer skills", - "longDescription": "Skills that teach an agent Galaxy best practices: writing and testing tool wrappers, authoring user-defined tools, converting Nextflow pipelines, manipulating dataset collections, drafting workflow reports and track hubs, and using the Galaxy MCP server. Mirrored from galaxyproject/galaxy-skills.", + "shortDescription": "Curated Galaxy skills for running analyses", + "longDescription": "Skills that teach an agent to drive a real Galaxy server well: connecting to an instance and choosing a client, the Galaxy MCP tool surface and its pitfalls, structuring dataset collections, authoring user-defined tools when no tool exists, drafting workflow reports, and rebuilding an ad-hoc history as a reusable workflow. Mirrored from galaxyproject/galaxy-skills.", "developerName": "The Galaxy Project", "category": "Developer Tools", "capabilities": [ @@ -29,9 +29,9 @@ ], "websiteURL": "https://galaxyproject.org/", "defaultPrompt": [ - "Update the ncbi-datasets Galaxy tool to the latest version.", - "Convert this Nextflow process to a Galaxy tool.", - "Filter this Galaxy collection to samples matching a pattern." + "Upload these FASTQ files to Galaxy and run FastQC on all of them.", + "Filter this Galaxy collection to the samples matching a pattern.", + "Turn this messy history into a reusable workflow." ] } } diff --git a/plugins/galaxy-skills/.cursor-plugin/plugin.json b/plugins/galaxy-skills/.cursor-plugin/plugin.json index 0823814..a39e2ae 100644 --- a/plugins/galaxy-skills/.cursor-plugin/plugin.json +++ b/plugins/galaxy-skills/.cursor-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "galaxy-skills", "version": "2026.9.16", - "description": "Curated Galaxy skills for coding agents: tool development, user-defined tools, Nextflow-to-Galaxy conversion, collection manipulation, workflow reports, track hubs, hub news posts and Galaxy MCP usage. Mirror of galaxyproject/galaxy-skills.", + "description": "Curated Galaxy skills for running an analysis: connecting to a Galaxy server, the MCP tool surface, dataset collections, user-defined tools, workflow reports and turning an ad-hoc history into a reusable workflow. Mirror of galaxyproject/galaxy-skills (skills/).", "author": { "name": "The Galaxy Project" }, @@ -12,7 +12,7 @@ "galaxy", "bioinformatics", "skills", - "tool-development", - "nextflow" + "collections", + "user-defined-tools" ] } diff --git a/plugins/galaxy-skills/UPSTREAM.json b/plugins/galaxy-skills/UPSTREAM.json index b6b4306..ba7b765 100644 --- a/plugins/galaxy-skills/UPSTREAM.json +++ b/plugins/galaxy-skills/UPSTREAM.json @@ -1,7 +1,7 @@ { "repository": "https://github.com/galaxyproject/galaxy-skills", - "ref": "main", - "commit": "d497d240a1ba546027f179463f86f1ca652888d4", - "path": ".", - "synced_at": "2026-09-16T17:14:35Z" + "ref": "add-plugin-config", + "commit": "7ed78b83fb7a93033964271937b9066038120af3", + "path": "skills", + "synced_at": "2026-09-16T23:53:15Z" } diff --git a/plugins/galaxy-skills/plugin.json b/plugins/galaxy-skills/plugin.json index 4e1c469..0a7a939 100644 --- a/plugins/galaxy-skills/plugin.json +++ b/plugins/galaxy-skills/plugin.json @@ -1,4 +1,4 @@ { "name": "galaxy-skills", - "description": "Curated Galaxy skills for coding agents: tool development, user-defined tools, Nextflow-to-Galaxy conversion, collection manipulation, workflow reports, track hubs, hub news posts and Galaxy MCP usage. Mirror of galaxyproject/galaxy-skills." + "description": "Curated Galaxy skills for running an analysis: connecting to a Galaxy server, the MCP tool surface, dataset collections, user-defined tools, workflow reports and turning an ad-hoc history into a reusable workflow. Mirror of galaxyproject/galaxy-skills (skills/)." } diff --git a/plugins/galaxy-skills/skills/AGENTS.md b/plugins/galaxy-skills/skills/AGENTS.md deleted file mode 100644 index cb6a6fb..0000000 --- a/plugins/galaxy-skills/skills/AGENTS.md +++ /dev/null @@ -1,119 +0,0 @@ -# Agent Instructions (galaxyproject/skills) - -When working in this repository, treat the contents of `skills/` as the canonical source of “skills” and follow them as process guidance. - -## Nextflow → Galaxy conversions - -If the user asks to convert Nextflow pipelines/modules/processes to Galaxy tools/workflows, use the nf-to-galaxy skill family: - -- Router: - - `nf-to-galaxy/SKILL.md` - -- Sub-skills: - - `nf-to-galaxy/nf-process-to-galaxy-tool/SKILL.md` - - `nf-to-galaxy/nf-subworkflow-to-galaxy-workflow/SKILL.md` - - `nf-to-galaxy/nf-pipeline-to-galaxy-workflow/SKILL.md` - -- Shared references: - - `nf-to-galaxy/check-tool-availability.md` - - `nf-to-galaxy/scripts/check_tool.sh` - - `nf-to-galaxy/testing-and-validation.md` (routing page) - - `tool-dev/references/testing.md` (Planemo tool testing) - - `tool-dev/references/tool-placement.md` (where to create tools) - - `galaxy-integration/galaxy-integration.md` (workflow testing on Galaxy instance) - - `galaxy-integration/examples/` (tool checking and workflow testing examples) - -Follow the planning/approval checkpoints required by the skills before implementing changes. - -## Galaxy Integration - -If the user asks about Galaxy MCP, JupyterLite notebooks, or BioBlend automation: - -- Router: - - `galaxy-integration/SKILL.md` - -- Sub-skills: - - `galaxy-integration/jupyterlite/SKILL.md` (JupyterLite notebooks with gxy package) - - `galaxy-integration/mcp-reference/SKILL.md` (Galaxy MCP tools reference) - -- References: - - `galaxy-integration/mcp-reference/history-access.md` (history/dataset access patterns) - - `galaxy-integration/mcp-reference/gotchas.md` (common pitfalls) - - `galaxy-integration/galaxy-integration.md` (detailed MCP + BioBlend docs) - - `galaxy-integration/scripts/galaxy_tool_checker.py` (BioBlend automation) - - `galaxy-integration/examples/` (tool checking and workflow testing examples) - - `galaxy-integration/jupyterlite/examples/` (JupyterLite notebook examples) - -## Collection Manipulation - -If the user asks to transform, filter, sort, relabel, restructure, flatten, nest, merge, or otherwise manipulate Galaxy dataset collections: - -- Skill: - - `collection-manipulation/SKILL.md` (single self-contained command) - -- References: - - `collection-manipulation/references/tools.md` (26 collection operation tools catalog) - - `collection-manipulation/references/apply-rules.md` (Apply Rules DSL deep-dive) - - `collection-manipulation/references/api-patterns.md` (Galaxy Tools API patterns) - - `collection-manipulation/references/test-patterns.md` (real test patterns from Galaxy test suite) - -All operations must use Galaxy's native tools for reproducibility and workflow compatibility. - -## Update UseGalaxy Tools - -If the user asks to add or update a ToolShed tool revision in the usegalaxy-tools repo: - -- Skill: - - `update-usegalaxy-tool/SKILL.md` (single self-contained command) - -- References: - - `update-usegalaxy-tool/references/file-formats.md` (usegalaxy-tools YAML file formats, ToolShed API, lint script) - -## Workflow Reports - -If the user asks to create, draft, or write a Galaxy workflow report template for the Workflow Editor's Report tab: - -- Skill: - - `workflow-reports/SKILL.md` (single self-contained skill) - -- References: - - `workflow-reports/references/directives.md` (Galaxy markdown directive reference, synced from upstream Galaxy via `make sync-directives`) - - `workflow-reports/examples/histology-staining.md` (worked example: imaging quantification) - - `workflow-reports/examples/tissue-microarray-analysis.md` (worked example: multiplex tissue analysis) - -## User-Defined Tools (UDTs) - -If the user asks to create a tool they (a non-admin) can define and run in their own Galaxy account — the `class: GalaxyUserTool` YAML format, often created/run via Galaxy MCP `create_user_tool` / `run_user_tool` or `POST /api/unprivileged_tools` — use the udt-authoring skill. This is distinct from classic XML/ToolShed wrappers (use `tool-dev` for those). - -- Skill: - - `udt-authoring/SKILL.md` - -- References: - - `udt-authoring/references/schema-reference.md` (UserToolSource fields, input/output types, validators) - - `udt-authoring/references/templating.md` (`$(...)` ECMAScript, `$GALAXY_SLOTS`, escaping) - - `udt-authoring/references/common-mistakes.md` (pre-submit self-review checklist) - - `udt-authoring/scripts/validate.py` (offline validate + lint via galaxy-tool-util) - - `udt-authoring/examples/` (seven complete UDTs, simple to complex) - -## Reproduciblify - -If the user asks to "reproduciblify" a Galaxy history, rebuild a messy analysis on-graph, or turn a history into a clean Galaxy Notebook that extracts into a reusable workflow: - -- Skill: - - `reproduciblify/SKILL.md` (single self-contained skill) - -- References: - - `reproduciblify/references/directives.yml` (machine-readable Galaxy markdown directive metadata, synced from upstream Galaxy via `make sync-directives`) - -Depends on `galaxy-integration` (MCP access), `collection-manipulation` (map/reduce restructuring), `tool-dev` (creating tools as a fallback), and `workflow-reports` (markdown directives for embedding on-graph artifacts). - -## Other skills in this repo - -If the user asks about one of these tasks, use the corresponding skill: - -- `hub-news-posts/SKILL.md` (Galaxy Hub news posts) -- `tool-dev/SKILL.md` (comprehensive Galaxy tool development reference) - - `tool-dev/tool-selection-diagram/SKILL.md` (generate tool selection flowchart diagrams) -- `udt-authoring/SKILL.md` (author User-Defined Tools — GalaxyUserTool YAML) - -For general discovery of what's available, start at `README.md`. diff --git a/plugins/galaxy-skills/skills/README.md b/plugins/galaxy-skills/skills/README.md deleted file mode 100644 index afbe857..0000000 --- a/plugins/galaxy-skills/skills/README.md +++ /dev/null @@ -1,241 +0,0 @@ -# Galactic skills - -This is a space for depositing various helpful artifacts ([skills](https://claude.com/blog/skills), [commands](https://code.claude.com/docs/en/slash-commands#personal-commands), etc.) for various agentic things like Claude Code or Gemini Code Agent. -The idea is that by iterating over this we will create a robust set of community curated "skills" that would ultimately create guardrails preventing LLMs from doing crazy :shit: and ensuring best practices. Should probably be called Intergalactic LLM-taming commision (ILT). - -This was not written by Claude. - -> this is complementary to https://github.com/galaxyproject/galaxy-mcp - ---- - -## What Are Skills? - -Skills are structured instructions that help AI agents work effectively with Galaxy development. They provide: - -- **Best practices** - The right way to build Galaxy tools, workflows, and content -- **Patterns** - Common solutions to common problems -- **Examples** - Concrete references to learn from -- **Guardrails** - Preventing common mistakes - -> **Important**: This repo is for *developers* building Galaxy infrastructure. End-user analysis should happen in Galaxy itself to leverage its reproducibility and tracking features. - -## Skills vs MCP - -| Repository | Purpose | Use For | -|------------|---------|---------| -| **skills** (this repo) | *Knowledge* - How to build things well | Tool development, workflow conversion, content creation | -| [**galaxy-mcp**](https://github.com/galaxyproject/galaxy-mcp) | *Capabilities* - Interact with Galaxy programmatically | Testing, automation, CI/CD | - -Use both together for best results. - ---- - -## Installation & Usage - -### Claude Code (Native Support) - -Skills are automatically available. Just clone this repo into your workspace or add to `.claude/skills/`: - -```bash -# Personal skills (available in all projects) -cd ~/.claude/skills -git clone https://github.com/galaxyproject/skills galaxy - -# Project skills (specific to one project) -cd your-project/.claude/skills -git clone https://github.com/galaxyproject/skills galaxy -``` - -Claude will automatically discover and use skills when relevant. - -### Windsurf / Cursor / Aider (via openskills) - -```bash -# Install openskills -npm i -g openskills - -# Install Galaxy skills -openskills install galaxyproject/skills - -# Load a specific skill when needed -openskills read tool-updates -``` - -### Any Agent (Manual) - -Clone this repo into your workspace and reference skills in your prompts: - -```bash -git clone https://github.com/galaxyproject/skills -``` - -The LLM can read skill files directly from the workspace. - ---- - -## Available Skills - -### Tool Development - -**tool-dev** ✅ - -Create and update Galaxy tool wrappers. - -- Comprehensive SKILL.md covering tool creation, testing, IUC review, and updates -- **references/** - Standalone testing and tool placement guides (also used by other skills) -- **tool-selection-diagram/** - Generate "which tool?" flowchart PNGs for multi-tool suites - -**udt-authoring** ✅ - -Author Galaxy User-Defined Tools (UDTs) — the `class: GalaxyUserTool` YAML format a non-admin user creates and runs (distinct from classic XML/ToolShed wrappers). - -- SKILL.md with the authoring loop and offline/server validation tiers -- **references/** - UserToolSource schema, `$(...)` templating, common mistakes checklist -- **scripts/validate.py** - offline validate + lint via galaxy-tool-util -- **examples/** - seven complete UDTs, simple to complex - -### Content - -**hub-news-posts** ✅ - -Write news posts for the Galaxy Project website (galaxyproject.org). - -- Frontmatter templates -- Image handling -- Vega charts -- Styled tables - -### Conversion - -**nf-to-galaxy** ✅ - -Convert Nextflow processes and workflows to Galaxy tools and workflows. - -- Process → Tool XML -- Container → bioconda mapping -- Workflow → .ga files -- Test with planemo and galaxy-mcp - -### Integration - -**galaxy-integration** ✅ - -Interact with Galaxy instances via MCP, JupyterLite, or BioBlend. - -- **jupyterlite/** - Write notebooks using gxy package -- **mcp-reference/** - Complete MCP tools reference -- Tool checking and workflow testing examples -- BioBlend automation scripts - -### Server Tool Management - -**update-usegalaxy-tool** ✅ - -Add or update ToolShed tool revisions in the [usegalaxy-tools](https://github.com/galaxyproject/usegalaxy-tools) repository. - -- Resolve changeset revisions via ToolShed API -- Edit `.yml` / `.yml.lock` toolset files -- Handle adds, updates, moves, and removals across sections -- Lint with `fix_lockfile.py` - -### Collection Manipulation - -**collection-manipulation** ✅ - -Transform Galaxy dataset collections reproducibly using native tools. - -- Filter, sort, relabel, merge, flatten, nest collections -- 26 collection operation tools -- Apply Rules DSL for complex restructuring -- API patterns and pitfall avoidance - ---- - -## Repository Structure - -``` -skills/ -├── README.md # This file -├── CONTRIBUTING.md # How to add new skills -├── AGENTS.md # Agent routing instructions -│ -├── tool-dev/ # ✅ Galaxy tool development -│ ├── SKILL.md # Comprehensive tool dev reference -│ ├── references/ # Testing, tool placement guides -│ └── tool-selection-diagram/ # Flowchart diagram generator for multi-tool suites -│ -├── udt-authoring/ # ✅ Author User-Defined Tools (GalaxyUserTool YAML) -│ ├── SKILL.md # Authoring loop + validation tiers -│ ├── references/ # Schema, templating, common mistakes -│ ├── scripts/ # validate.py (offline validate + lint) -│ └── examples/ # Seven complete UDTs -│ -├── hub-news-posts/ # ✅ Galaxy Hub posts -│ -├── nf-to-galaxy/ # ✅ Nextflow → Galaxy conversion -│ -├── galaxy-integration/ # ✅ Galaxy instance integration -│ ├── jupyterlite/ # JupyterLite notebooks (gxy package) -│ └── mcp-reference/ # MCP tools reference -│ -├── update-usegalaxy-tool/ # ✅ UseGalaxy tool management -│ ├── SKILL.md # Main command (add/update ToolShed revisions) -│ └── references/ # YAML file formats, ToolShed API, lint script -│ -└── collection-manipulation/ # ✅ Collection transformations - ├── SKILL.md # Main command (filter, sort, restructure, etc.) - └── references/ # Tools catalog, Apply Rules DSL, API, tests -``` - ---- - -## Contributing - -We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for: - -- How to create a new skill -- Skill structure and format -- Testing and validation -- Submission guidelines - ---- - -## Examples - -### Updating a Galaxy Tool - -``` -User: "Update the ncbi-datasets tool to version 18.13.0" - -AI: [Loads tool-updates skill] - [Follows workflow: research upstream → update version → fix bugs → test] - [Uses planemo for validation] -``` - -### Converting Nextflow to Galaxy - -``` -User: "Convert this Nextflow process to a Galaxy tool" - -AI: [Loads nf-to-galaxy skill] - [Maps container → bioconda package] - [Generates Galaxy tool XML] - [Tests with planemo lint] - [Optionally tests on Galaxy instance via galaxy-mcp] -``` - ---- - -## Related Projects - -- [galaxy-mcp](https://github.com/galaxyproject/galaxy-mcp) - MCP server for Galaxy interaction -- [planemo](https://github.com/galaxyproject/planemo) - Galaxy tool development toolkit -- [Galaxy](https://github.com/galaxyproject/galaxy) - Main Galaxy platform -- [IWC](https://github.com/galaxyproject/iwc) - Intergalactic Workflow Commission - ---- - -## License - -[MIT](LICENSE) diff --git a/plugins/galaxy-skills/skills/collection-manipulation/SKILL.md b/plugins/galaxy-skills/skills/collection-manipulation/SKILL.md index df3a58d..100f0a3 100644 --- a/plugins/galaxy-skills/skills/collection-manipulation/SKILL.md +++ b/plugins/galaxy-skills/skills/collection-manipulation/SKILL.md @@ -1,27 +1,17 @@ --- -name: galaxy-transform-collection -description: Galaxy Collection Transformation Command - transform Galaxy dataset collections reproducibly using Galaxy's native tools. Use when asked to filter, sort, relabel, restructure, flatten, nest, merge, or otherwise manipulate Galaxy collections. +name: collection-manipulation +description: Transform Galaxy dataset collections reproducibly using Galaxy's native tools. Use when asked to filter, sort, relabel, restructure, flatten, nest or merge a collection, build a list or paired collection, run a tool over every sample (map over a collection), or work with element identifiers. metadata: surfaces: [loom] user_invocable: true --- -# Galaxy Collection Transformation Command +# Galaxy Collection Manipulation Transform Galaxy dataset collections reproducibly using Galaxy's native tools. **CRITICAL PRINCIPLE:** All collection operations MUST use Galaxy's native tools to ensure reproducibility, workflow extractability, and alignment with Galaxy best practices. NEVER manipulate collections directly via API or create collections ad-hoc. -## Your Input - -The user will describe a transformation they want to apply to a collection: - -``` -$ARGUMENTS -``` - ---- - ## Common Pitfalls (READ FIRST) These issues cause silent failures or empty results. **Memorize them.** diff --git a/plugins/galaxy-skills/skills/galaxy-integration/README.md b/plugins/galaxy-skills/skills/galaxy-integration/README.md index ea447dc..52d808a 100644 --- a/plugins/galaxy-skills/skills/galaxy-integration/README.md +++ b/plugins/galaxy-skills/skills/galaxy-integration/README.md @@ -26,7 +26,7 @@ galaxy-integration/ │ ├── SKILL.md # gxy package reference │ └── examples/ # Example notebooks │ -├── mcp-reference/ # MCP tools reference +(mcp-reference now lives at ../galaxy-mcp-reference/) │ ├── SKILL.md # Full MCP tools reference │ ├── history-access.md # History/dataset access patterns │ └── gotchas.md # Common pitfalls (keychain, URL slugs) @@ -41,7 +41,7 @@ galaxy-integration/ - **`SKILL.md`** - Router to sub-skills - **`jupyterlite/SKILL.md`** - gxy package for JupyterLite notebooks -- **`mcp-reference/SKILL.md`** - Complete MCP tools reference +- **`../galaxy-mcp-reference/SKILL.md`** - Complete MCP tools reference - **`galaxy-integration.md`** - Detailed guide (MCP + BioBlend) - **`scripts/`** - Automation scripts (galaxy_tool_checker.py) - **`examples/`** - Tool checking and workflow testing examples @@ -156,7 +156,7 @@ Treat the API key like a password. Do not commit it to git. ## Where This Is Used -- **Nextflow → Galaxy conversions**: see `../nf-to-galaxy/` (the conversion skill points here when MCP is needed) +- **Nextflow → Galaxy conversions**: see `../../dev-skills/nf-to-galaxy/` (the conversion skill points here when MCP is needed) See the upstream project for the full API reference: - https://github.com/galaxyproject/galaxy-mcp diff --git a/plugins/galaxy-skills/skills/galaxy-integration/SKILL.md b/plugins/galaxy-skills/skills/galaxy-integration/SKILL.md index 4a8515a..ee7204b 100644 --- a/plugins/galaxy-skills/skills/galaxy-integration/SKILL.md +++ b/plugins/galaxy-skills/skills/galaxy-integration/SKILL.md @@ -1,6 +1,6 @@ --- name: galaxy-integration -description: Router for Galaxy MCP, JupyterLite notebooks, and BioBlend automation +description: "Use when setting up or choosing how an agent talks to a Galaxy instance -- first-time connection (server URL, API key, verifying access), then picking between Galaxy MCP for interactive work, JupyterLite notebooks for analysis against Galaxy datasets, and BioBlend scripts for batch or CI. Start here to use Galaxy when not yet connected." user_invocable: true --- @@ -15,9 +15,9 @@ Route to the appropriate sub-skill based on task: | Task | Sub-Skill | Location | |------|-----------|----------| | Write JupyterLite notebook | `jupyterlite-galaxy` | `jupyterlite/SKILL.md` | -| MCP tools reference | `galaxy-mcp-reference` | `mcp-reference/SKILL.md` | -| History/dataset access | - | `mcp-reference/history-access.md` | -| Common gotchas | - | `mcp-reference/gotchas.md` | +| MCP tools reference | `galaxy-mcp-reference` | `../galaxy-mcp-reference/SKILL.md` | +| History/dataset access | - | `../galaxy-mcp-reference/history-access.md` | +| Common gotchas | - | `../galaxy-mcp-reference/gotchas.md` | | BioBlend batch scripts | - | `scripts/galaxy_tool_checker.py` | | Tool checking examples | - | `examples/tool-checking.md` | | Workflow testing examples | - | `examples/workflow-testing.md` | diff --git a/plugins/galaxy-skills/skills/galaxy-integration/examples/README.md b/plugins/galaxy-skills/skills/galaxy-integration/examples/README.md index 5a4c7d9..5a0e76f 100644 --- a/plugins/galaxy-skills/skills/galaxy-integration/examples/README.md +++ b/plugins/galaxy-skills/skills/galaxy-integration/examples/README.md @@ -49,7 +49,7 @@ After converting a Nextflow workflow to Galaxy, use these examples to: 1. Check that all required tools exist (`tool-checking.md`) 2. Test the converted workflow (`workflow-testing.md`) -**See also**: `../../conversion/nf-to-galaxy/examples/` for conversion-specific scenarios +**See also**: `../../../dev-skills/nf-to-galaxy/examples/` for conversion-specific scenarios ### During Tool Development @@ -57,7 +57,7 @@ After creating or updating a Galaxy tool, use these examples to: 1. Verify tool is available on target instance 2. Test tool in a workflow context -**See also**: `../../tool-dev/SKILL.md` +**See also**: `../../../dev-skills/tool-dev/SKILL.md` ### General Workflow Testing @@ -101,8 +101,8 @@ Automated Galaxy tool checker and workflow validator. - **Main guide**: `../galaxy-integration.md` - Complete Galaxy integration guide - **MCP setup**: `../galaxy-integration.md#setup` - **BioBlend script**: `../scripts/README.md` - galaxy_tool_checker.py usage -- **Conversion examples**: `../../nf-to-galaxy/examples/` - Conversion-specific scenarios -- **Testing guide**: `../../tool-dev/references/testing.md` - Planemo tool testing +- **Conversion examples**: `../../../dev-skills/nf-to-galaxy/examples/` - Conversion-specific scenarios +- **Testing guide**: `../../../dev-skills/tool-dev/references/testing.md` - Planemo tool testing --- diff --git a/plugins/galaxy-skills/skills/galaxy-integration/examples/tool-checking.md b/plugins/galaxy-skills/skills/galaxy-integration/examples/tool-checking.md index 576e4ce..8cb166f 100644 --- a/plugins/galaxy-skills/skills/galaxy-integration/examples/tool-checking.md +++ b/plugins/galaxy-skills/skills/galaxy-integration/examples/tool-checking.md @@ -254,7 +254,7 @@ print(json.dumps(tool_mapping, indent=2)) **Options**: 1. **Search with different query** - Tool might have different name 2. **Check ToolShed** - Tool might exist but not installed -3. **Create custom tool** - See `../../tool-dev/SKILL.md` +3. **Create custom tool** - See `../../../dev-skills/tool-dev/SKILL.md` **Example**: ```python @@ -376,7 +376,7 @@ fi - **Main guide**: `../galaxy-integration.md` - Complete Galaxy integration guide - **BioBlend script**: `../scripts/README.md` - galaxy_tool_checker.py usage - **Workflow testing**: `workflow-testing.md` - Testing workflows on Galaxy -- **Tool creation**: `../../tool-dev/SKILL.md` - Creating missing tools +- **Tool creation**: `../../../dev-skills/tool-dev/SKILL.md` - Creating missing tools --- diff --git a/plugins/galaxy-skills/skills/galaxy-integration/examples/workflow-testing.md b/plugins/galaxy-skills/skills/galaxy-integration/examples/workflow-testing.md index c50d309..6ad4563 100644 --- a/plugins/galaxy-skills/skills/galaxy-integration/examples/workflow-testing.md +++ b/plugins/galaxy-skills/skills/galaxy-integration/examples/workflow-testing.md @@ -551,7 +551,7 @@ jobs: - **Main guide**: `../galaxy-integration.md` - Complete Galaxy integration guide - **Tool checking**: `tool-checking.md` - Verify tool availability - **BioBlend script**: `../scripts/README.md` - galaxy_tool_checker.py usage -- **Planemo testing**: `../../tool-dev/references/testing.md` - Tool-level testing +- **Planemo testing**: `../../../dev-skills/tool-dev/references/testing.md` - Tool-level testing --- diff --git a/plugins/galaxy-skills/skills/galaxy-integration/jupyterlite/SKILL.md b/plugins/galaxy-skills/skills/galaxy-integration/jupyterlite/SKILL.md index d299bdc..87b434e 100644 --- a/plugins/galaxy-skills/skills/galaxy-integration/jupyterlite/SKILL.md +++ b/plugins/galaxy-skills/skills/galaxy-integration/jupyterlite/SKILL.md @@ -1,6 +1,6 @@ --- name: jupyterlite-galaxy -description: Write JupyterLite notebooks for Galaxy dataset interaction using gxy package +description: Write JupyterLite notebooks that read and write Galaxy datasets in the browser with the gxy package. Use when the analysis needs custom Python over data already in a history -- plotting, reshaping, ad-hoc inspection -- rather than a Galaxy tool run, or when the user asks for a notebook inside Galaxy. user_invocable: true --- @@ -18,7 +18,7 @@ import gxy ### Download Datasets ```python # By HID (history item number) -path = await gxy.get(1) # single dataset +path = await gxy.get(1) # single dataset paths = await gxy.get([1, 2, 3]) # multiple # By name (partial match) @@ -129,7 +129,7 @@ Before writing notebook code, use Galaxy MCP tools to discover datasets: ``` # In Claude Code, use MCP to find dataset IDs: -mcp__galaxy__get_history_contents(history_id="...") +get_history_contents(history_id="...") # Then reference those IDs in notebook code: path = await gxy.get("dataset_id_here", identifier_type="id") diff --git a/plugins/galaxy-skills/skills/galaxy-integration/mcp-reference/SKILL.md b/plugins/galaxy-skills/skills/galaxy-integration/mcp-reference/SKILL.md deleted file mode 100644 index dff156b..0000000 --- a/plugins/galaxy-skills/skills/galaxy-integration/mcp-reference/SKILL.md +++ /dev/null @@ -1,123 +0,0 @@ ---- -name: galaxy-mcp-reference -description: Galaxy MCP server tools reference for histories, datasets, tools, and workflows -metadata: - surfaces: [loom] -when_to_use: > - Reach for this before any Galaxy MCP tool call -- creating/listing histories, - uploading data, finding and running tools, inspecting datasets or invocations -- - and for the common gotchas (id vs name, history vs dataset ids, collection shapes). -user_invocable: true ---- - -# Galaxy MCP Tools Reference - -Complete reference for Galaxy MCP server functions. - -## Connection - -``` -mcp__galaxy__connect(url, api_key) # Connect to Galaxy instance -mcp__galaxy__get_server_info() # Server version and config -mcp__galaxy__get_user() # Current user details -``` - -## Histories - -``` -mcp__galaxy__list_history_ids() # Quick list: {id, name} -mcp__galaxy__get_histories(limit, offset, name) # Paginated, filterable -mcp__galaxy__get_history_details(history_id) # Metadata only, no datasets -mcp__galaxy__get_history_contents(history_id, limit, offset, order) # Datasets -mcp__galaxy__create_history(history_name) # Create new history -``` - -## Datasets - -``` -mcp__galaxy__get_dataset_details(dataset_id, include_preview, preview_lines) -mcp__galaxy__download_dataset(dataset_id, file_path) # Omit file_path for memory -mcp__galaxy__upload_file(path, history_id) -mcp__galaxy__upload_file_from_url(url, history_id, file_type, dbkey) -mcp__galaxy__get_job_details(dataset_id) # Job that created this dataset -``` - -## Tools - -``` -mcp__galaxy__search_tools_by_name(query) -mcp__galaxy__search_tools_by_keywords(keywords) # keywords is a list -mcp__galaxy__get_tool_details(tool_id, io_details) -mcp__galaxy__get_tool_run_examples(tool_id) # XML test cases -mcp__galaxy__get_tool_citations(tool_id) -mcp__galaxy__get_tool_panel() # Full toolbox hierarchy -mcp__galaxy__run_tool(history_id, tool_id, inputs) -``` - -## Workflows - -``` -mcp__galaxy__list_workflows(workflow_id, name, published) -mcp__galaxy__get_workflow_details(workflow_id, version) -mcp__galaxy__invoke_workflow(workflow_id, inputs, params, history_id) -mcp__galaxy__get_invocations(invocation_id, workflow_id, history_id) -mcp__galaxy__cancel_workflow_invocation(invocation_id) -``` - -## IWC (Intergalactic Workflow Commission) - -``` -mcp__galaxy__get_iwc_workflows() # Full manifest -mcp__galaxy__search_iwc_workflows(query) # Search by name/description/tags -mcp__galaxy__import_workflow_from_iwc(trs_id) -``` - -## Common Patterns - -### Tool Discovery -```python -# Find candidate tools -search_tools_by_name(query="hyphy") - -# Inspect I/O -get_tool_details(tool_id="toolshed.g2.bx.psu.edu/repos/iuc/hyphy_fel/hyphy_fel/2.5.84+galaxy0", io_details=True) -``` - -### Workflow Testing Loop -```python -# 1. Create history -create_history(history_name="Test: My Workflow") - -# 2. Upload or reuse datasets -upload_file(path="/path/to/data.txt", history_id="...") - -# 3. Invoke workflow -invoke_workflow(workflow_id="...", inputs={"0": {"id": "DATASET_ID", "src": "hda"}}, history_id="...") - -# 4. Inspect outputs -get_history_contents(history_id="...", order="create_time-dsc") - -# 5. Fix and repeat -``` - -### History Contents with Pagination -```python -# Page 1 (newest first) -get_history_contents(history_id="...", limit=100, offset=0, order="hid-dsc") - -# Page 2 -get_history_contents(history_id="...", limit=100, offset=100, order="hid-dsc") -``` - -## Order Options for History Contents - -- `hid-asc` - oldest first (default) -- `hid-dsc` - newest first -- `create_time-dsc` - most recently created -- `update_time-dsc` - most recently modified -- `name-asc` - alphabetical - -## See Also - -- `history-access.md` - Detailed history/dataset access patterns -- `gotchas.md` - Common pitfalls and solutions diff --git a/plugins/galaxy-skills/skills/galaxy-mcp-reference/SKILL.md b/plugins/galaxy-skills/skills/galaxy-mcp-reference/SKILL.md new file mode 100644 index 0000000..6a9e1ea --- /dev/null +++ b/plugins/galaxy-skills/skills/galaxy-mcp-reference/SKILL.md @@ -0,0 +1,128 @@ +--- +name: galaxy-mcp-reference +description: "Use when driving a Galaxy server through its MCP tools -- connecting to an instance, listing or creating histories, uploading data, finding and running tools, invoking workflows, inspecting datasets and jobs. Read before the first Galaxy MCP call in a session; covers which tool to reach for and the common traps (id vs name, history vs dataset ids, collection shapes)." +metadata: + surfaces: [loom] +when_to_use: > + Reach for this before any Galaxy MCP tool call -- creating/listing histories, + uploading data, finding and running tools, inspecting datasets or invocations -- + and for the common gotchas (id vs name, history vs dataset ids, collection shapes). +user_invocable: true +--- + +# Galaxy MCP Tools Reference + +Tools are named below as the Galaxy MCP server exposes them. Clients prefix them differently -- +Claude Code and Codex surface `connect` as `mcp__galaxy__connect`, other clients may use the bare +name or their own scheme. Match the operation, not the spelling; check your client's tool list if a +name doesn't resolve. + +Complete reference for Galaxy MCP server functions. + +## Connection + +``` +connect(url, api_key) # Connect to Galaxy instance +get_server_info() # Server version and config +get_user() # Current user details +``` + +## Histories + +``` +list_history_ids() # Quick list: {id, name} +get_histories(limit, offset, name) # Paginated, filterable +get_history_details(history_id) # Metadata only, no datasets +get_history_contents(history_id, limit, offset, order) # Datasets +create_history(history_name) # Create new history +``` + +## Datasets + +``` +get_dataset_details(dataset_id, include_preview, preview_lines) +download_dataset(dataset_id, file_path) # Omit file_path for memory +upload_file(path, history_id) +upload_file_from_url(url, history_id, file_type, dbkey) +get_job_details(dataset_id) # Job that created this dataset +``` + +## Tools + +``` +search_tools_by_name(query) +search_tools_by_keywords(keywords) # keywords is a list +get_tool_details(tool_id, io_details) +get_tool_run_examples(tool_id) # XML test cases +get_tool_citations(tool_id) +get_tool_panel() # Full toolbox hierarchy +run_tool(history_id, tool_id, inputs) +``` + +## Workflows + +``` +list_workflows(workflow_id, name, published) +get_workflow_details(workflow_id, version) +invoke_workflow(workflow_id, inputs, params, history_id) +get_invocations(invocation_id, workflow_id, history_id) +cancel_workflow_invocation(invocation_id) +``` + +## IWC (Intergalactic Workflow Commission) + +``` +get_iwc_workflows() # Full manifest +search_iwc_workflows(query) # Search by name/description/tags +import_workflow_from_iwc(trs_id) +``` + +## Common Patterns + +### Tool Discovery +```python +# Find candidate tools +search_tools_by_name(query="hyphy") + +# Inspect I/O +get_tool_details(tool_id="toolshed.g2.bx.psu.edu/repos/iuc/hyphy_fel/hyphy_fel/2.5.84+galaxy0", io_details=True) +``` + +### Workflow Testing Loop +```python +# 1. Create history +create_history(history_name="Test: My Workflow") + +# 2. Upload or reuse datasets +upload_file(path="/path/to/data.txt", history_id="...") + +# 3. Invoke workflow +invoke_workflow(workflow_id="...", inputs={"0": {"id": "DATASET_ID", "src": "hda"}}, history_id="...") + +# 4. Inspect outputs +get_history_contents(history_id="...", order="create_time-dsc") + +# 5. Fix and repeat +``` + +### History Contents with Pagination +```python +# Page 1 (newest first) +get_history_contents(history_id="...", limit=100, offset=0, order="hid-dsc") + +# Page 2 +get_history_contents(history_id="...", limit=100, offset=100, order="hid-dsc") +``` + +## Order Options for History Contents + +- `hid-asc` - oldest first (default) +- `hid-dsc` - newest first +- `create_time-dsc` - most recently created +- `update_time-dsc` - most recently modified +- `name-asc` - alphabetical + +## See Also + +- `history-access.md` - Detailed history/dataset access patterns +- `gotchas.md` - Common pitfalls and solutions diff --git a/plugins/galaxy-skills/skills/galaxy-integration/mcp-reference/gotchas.md b/plugins/galaxy-skills/skills/galaxy-mcp-reference/gotchas.md similarity index 100% rename from plugins/galaxy-skills/skills/galaxy-integration/mcp-reference/gotchas.md rename to plugins/galaxy-skills/skills/galaxy-mcp-reference/gotchas.md diff --git a/plugins/galaxy-skills/skills/galaxy-integration/mcp-reference/history-access.md b/plugins/galaxy-skills/skills/galaxy-mcp-reference/history-access.md similarity index 78% rename from plugins/galaxy-skills/skills/galaxy-integration/mcp-reference/history-access.md rename to plugins/galaxy-skills/skills/galaxy-mcp-reference/history-access.md index 25afd98..bb0158e 100644 --- a/plugins/galaxy-skills/skills/galaxy-integration/mcp-reference/history-access.md +++ b/plugins/galaxy-skills/skills/galaxy-mcp-reference/history-access.md @@ -4,19 +4,19 @@ Detailed patterns for accessing Galaxy history datasets via MCP. ## List User Histories ``` -mcp__galaxy__list_history_ids() +list_history_ids() # Returns: [{id, name}, ...] ``` ## Get History by Name ``` -mcp__galaxy__get_histories(name="Measles") +get_histories(name="Measles") # Partial match, case-sensitive ``` ## Get History Summary (no datasets) ``` -mcp__galaxy__get_history_details(history_id="...") +get_history_details(history_id="...") # Returns metadata + dataset count only ``` @@ -24,7 +24,7 @@ mcp__galaxy__get_history_details(history_id="...") ### Default (visible, non-deleted only) ``` -mcp__galaxy__get_history_contents( +get_history_contents( history_id="...", limit=100 ) @@ -32,7 +32,7 @@ mcp__galaxy__get_history_contents( ### Get ALL datasets (including hidden/deleted) ``` -mcp__galaxy__get_history_contents( +get_history_contents( history_id="...", limit=100, deleted=true, @@ -42,7 +42,7 @@ mcp__galaxy__get_history_contents( ### Get Most Recent Datasets First ``` -mcp__galaxy__get_history_contents( +get_history_contents( history_id="...", limit=10, order="hid-dsc" @@ -52,17 +52,17 @@ mcp__galaxy__get_history_contents( ### Pagination ``` # Page 1 -mcp__galaxy__get_history_contents(history_id="...", limit=100, offset=0) +get_history_contents(history_id="...", limit=100, offset=0) # Page 2 -mcp__galaxy__get_history_contents(history_id="...", limit=100, offset=100) +get_history_contents(history_id="...", limit=100, offset=100) ``` ## Dataset Details ### Preview Dataset Content ``` -mcp__galaxy__get_dataset_details( +get_dataset_details( dataset_id="...", include_preview=true, preview_lines=15 @@ -71,7 +71,7 @@ mcp__galaxy__get_dataset_details( ### Download Dataset ``` -mcp__galaxy__download_dataset( +download_dataset( dataset_id="...", file_path="/path/to/save.txt" ) @@ -82,7 +82,7 @@ mcp__galaxy__download_dataset( ### Find Dataset by HID ```python # Get recent datasets, find specific HID -contents = mcp__galaxy__get_history_contents( +contents = get_history_contents( history_id="...", limit=50, order="hid-dsc", @@ -102,7 +102,7 @@ contents = mcp__galaxy__get_history_contents( ### From Local File ``` -mcp__galaxy__upload_file( +upload_file( path="/local/path/file.txt", history_id="..." ) @@ -110,7 +110,7 @@ mcp__galaxy__upload_file( ### From URL ``` -mcp__galaxy__upload_file_from_url( +upload_file_from_url( url="https://example.com/data.fasta", history_id="...", file_type="fasta" diff --git a/plugins/galaxy-skills/skills/reproduciblify/SKILL.md b/plugins/galaxy-skills/skills/reproduciblify/SKILL.md index f3a0d04..2cff001 100644 --- a/plugins/galaxy-skills/skills/reproduciblify/SKILL.md +++ b/plugins/galaxy-skills/skills/reproduciblify/SKILL.md @@ -1,6 +1,8 @@ --- name: reproduciblify description: Use this skill to "reproduciblify" a Galaxy history — re-execute a real (often messy) analysis as a clean, fully on-graph, collection-structured history and author a Galaxy Notebook that extracts cleanly into a reusable, sample-agnostic workflow. Triggers on "reproduciblify this history", "make this history reproducible/extractable", "rebuild this analysis on-graph", "turn this history into a clean notebook/workflow". +metadata: + surfaces: [loom] --- # Reproduciblify @@ -38,7 +40,7 @@ Reproduciblify is the act of converting every failing step into a passing one ## Required Input -1. **A Galaxy history** (required). Connect via the Galaxy MCP server and inspect it — see `galaxy-integration/mcp-reference/SKILL.md`. The relevant calls: `get_history_contents`, `get_dataset_details` (with preview), `get_job_details` (the job that produced each dataset, including its inputs and tool id). +1. **A Galaxy history** (required). Connect via the Galaxy MCP server and inspect it — see `../galaxy-mcp-reference/SKILL.md`. The relevant calls: `get_history_contents`, `get_dataset_details` (with preview), `get_job_details` (the job that produced each dataset, including its inputs and tool id). 2. **A plan / recipe / transcript** (optional but valuable). If the user has the steps that produced the history — a methods note, a chat log, an SI recipe — use it to recover *intent*: which steps were exploratory dead-ends, which outputs mattered, why parameters were chosen. The history shows *what happened*; the recipe helps recover *what was meant*. ## Workflow @@ -73,7 +75,7 @@ This plan is the spine of both the rebuilt history and the notebook narrative. For every off-graph intrusion from Step 1, the rule is **find superior, create as fallback**: 1. **Find (preferred).** Search for an existing Galaxy tool that performs the computation: `search_tools_by_name`, `search_tools_by_keywords`, `get_tool_panel`, and the IWC manifest. Prefer a well-maintained Tool Shed tool over a bespoke one — it is more reproducible, citable, and recognizable to reviewers. -2. **Create (fallback).** If no suitable tool exists, build one. Use the `tool-dev` skill (`tool-dev/SKILL.md`) — wrap the script/computation as a proper Galaxy tool with declared inputs, outputs, and a test, and place it per `tool-dev/references/tool-placement.md`. +2. **Create (fallback).** If no suitable tool exists, build one. Use the `udt-authoring` skill (`../udt-authoring/SKILL.md`) — wrap the script/computation as a User-Defined Tool with declared inputs, outputs, and a pinned container, which keeps the step on-graph without waiting on an admin to install anything. After this step, **only genuine logical inputs remain as uploads.** Everything else is a tool output. @@ -117,9 +119,9 @@ Before declaring done: | Situation | Do this | |-----------|---------| -| Derived data was uploaded from outside Galaxy | Find a superior Galaxy tool; create one (`tool-dev`) only as fallback | +| Derived data was uploaded from outside Galaxy | Find a superior Galaxy tool; author a User-Defined Tool (`udt-authoring`) only as fallback | | A figure is a pasted image | Re-emit it from an on-graph plotting tool | -| A bash/manual reformatting step | Wrap it as a Galaxy tool, or find a native equivalent | +| A bash/manual reformatting step | Find a native equivalent, or wrap it as a User-Defined Tool | | Analysis is one-sample, should be N-sample | Map-over a list collection | | Experimental design (condition × replicate) | Nested `list:list` collection — carry design through shape | | A step compares two named groups | It's a reduce; if irreducible, **split** into map-over producer + pairwise comparator | @@ -138,7 +140,7 @@ Before declaring done: ## See Also -- `galaxy-integration/mcp-reference/SKILL.md` — Galaxy MCP tools (history/dataset/tool/page access, `run_tool`). -- `collection-manipulation/SKILL.md` — map/reduce restructuring with native collection tools. -- `tool-dev/SKILL.md` — building a Galaxy tool when no suitable one exists (fallback path). +- `../galaxy-mcp-reference/SKILL.md` — Galaxy MCP tools (history/dataset/tool/page access, `run_tool`). +- `../collection-manipulation/SKILL.md` — map/reduce restructuring with native collection tools. +- `../udt-authoring/SKILL.md` — authoring a User-Defined Tool when no suitable tool exists (fallback path). - `references/directives.yml` — Galaxy markdown directive metadata for embedding on-graph artifacts (synced from upstream Galaxy via `make sync-directives`). diff --git a/scripts/export-hub.py b/scripts/export-hub.py index 04f3950..1080219 100755 --- a/scripts/export-hub.py +++ b/scripts/export-hub.py @@ -93,7 +93,7 @@ - *"Show my recent histories and what's in the latest one."* - *"Upload these FASTQ files to a new history called 'run 12' and run FastQC on them."* - *"Find an IWC workflow for variant calling on paired-end reads and run it on history X."* -- *"Convert this Nextflow process into a Galaxy tool wrapper and test it with Planemo."* (uses the `nf-to-galaxy` and `tool-dev` skills) +- *"Convert this Nextflow process into a Galaxy tool wrapper and test it with Planemo."* (uses the `nf-to-galaxy` and `tool-dev` skills from `galaxy-dev-skills`) - *"Build a Galaxy workflow from this paper's methods section."* (uses the Foundry skills) ## Get help diff --git a/scripts/gen-manifests.py b/scripts/gen-manifests.py index e000f85..2b9bcc3 100755 --- a/scripts/gen-manifests.py +++ b/scripts/gen-manifests.py @@ -22,7 +22,7 @@ ROOT = Path(__file__).resolve().parent.parent PLUGINS = ROOT / "plugins" -MIRRORS = ["galaxy-skills", "foundry-skills"] +MIRRORS = ["galaxy-skills", "galaxy-dev-skills", "foundry-skills"] ALL_PLUGINS = ["galaxy-mcp", *MIRRORS] diff --git a/scripts/sync-skills.sh b/scripts/sync-skills.sh index cb2e2fe..4d584cc 100755 --- a/scripts/sync-skills.sh +++ b/scripts/sync-skills.sh @@ -59,14 +59,30 @@ PY echo "==> galaxy-skills @ $GALAXY_SKILLS_REF" clone_ref "$GALAXY_SKILLS_REPO" "$GALAXY_SKILLS_REF" "$TMP/galaxy-skills" gs_sha=$(git -C "$TMP/galaxy-skills" rev-parse HEAD) -dest="$ROOT/plugins/galaxy-skills/skills" -rm -rf "$dest"; mkdir -p "$dest" -rsync -a \ - --exclude .git --exclude .github --exclude .gitignore \ - --exclude .env.example --exclude Makefile --exclude CONTRIBUTING.md \ - "$TMP/galaxy-skills/" "$dest/" -write_upstream "$ROOT/plugins/galaxy-skills/UPSTREAM.json" "$GALAXY_SKILLS_REPO" "$GALAXY_SKILLS_REF" "$gs_sha" "." -echo " $gs_sha ($(find "$dest" -name SKILL.md | wc -l | tr -d ' ') skills)" + +# Upstream keeps two trees: skills/ is for *using* Galaxy, dev-skills/ is for *building* +# it, and no harness scans dev-skills/. Each tree becomes its own plugin here so that +# installing one doesn't drag in the other. Vendoring the repo root instead would bury +# every skill a level deeper and register both trees as one bundle. +# vendor_tree +vendor_tree() { + local plugin=$1 subdir=$2 + local src="$TMP/galaxy-skills/$subdir" dest="$ROOT/plugins/$plugin/skills" + if [ ! -d "$src" ]; then + echo "ERROR: upstream has no $subdir/ -- layout changed, see galaxyproject/galaxy-skills#35" >&2 + exit 1 + fi + rm -rf "$dest"; mkdir -p "$dest" + rsync -a "$src/" "$dest/" + if [ -f "$TMP/galaxy-skills/LICENSE" ]; then + cp "$TMP/galaxy-skills/LICENSE" "$dest/LICENSE" + fi + write_upstream "$ROOT/plugins/$plugin/UPSTREAM.json" "$GALAXY_SKILLS_REPO" "$GALAXY_SKILLS_REF" "$gs_sha" "$subdir" + echo " $plugin @ $gs_sha ($(find "$dest" -name SKILL.md | wc -l | tr -d ' ') skills)" +} + +vendor_tree galaxy-skills skills +vendor_tree galaxy-dev-skills dev-skills echo "==> foundry @ $FOUNDRY_REF ($FOUNDRY_SKILLS_PATH)" clone_ref "$FOUNDRY_REPO" "$FOUNDRY_REF" "$TMP/foundry" "/$FOUNDRY_SKILLS_PATH/" "/LICENSE"