galaxy-training-material
Expert in Galaxy Training Network (GTN) tutorial development. GTN markdown syntax, special boxes, tool references, snippets, YAML front matter, and best practices for writing and updating training materials in the galaxyproject/training-material repository.
What this skill does
# Galaxy Training Material Expert
Expert knowledge for writing and updating tutorials in the Galaxy Training Network (GTN) repository (github.com/galaxyproject/training-material). Covers the custom markdown syntax, file structure, and pedagogical conventions.
## When to Use This Skill
- Writing or editing GTN tutorial content (tutorial.md files)
- Creating new tutorials or topics
- Understanding GTN-specific markdown syntax (boxes, tool refs, snippets, icons)
- Reviewing or fixing tutorial formatting issues
- Adding slides, workflows, or data libraries to tutorials
- Updating YAML front matter metadata
## Supporting Files
For additional details, see the following files in this directory:
- **[WORKFLOW-VERIFICATION.md](WORKFLOW-VERIFICATION.md)** — Cross-checking tool versions between tutorials and workflows, updating IWC-based tutorials, GTA track update process, MCP fallbacks, adapting test files.
- **[BEST-PRACTICES.md](BEST-PRACTICES.md)** — Slides format, data library configuration, content structure and writing style best practices, learning design, common pitfalls, updating tutorials for new tool versions.
## Repository Structure
### Topic Layout
```
topics/{topic_name}/
├── metadata.yaml # Topic config (name, type, editorial_board, subtopics)
├── images/ # Shared images for all tutorials in this topic
├── faqs/ # Topic-level FAQs
└── tutorials/
└── {tutorial_name}/
├── tutorial.md # Main tutorial content (required)
├── tutorial.bib # BibTeX citations (optional)
├── slides.html # Presentation slides (optional)
├── data-library.yaml # Zenodo dataset definitions
├── workflows/
│ ├── index.md # layout: workflow-list
│ ├── *.ga # Galaxy workflow files (JSON)
│ └── *-tests.yml # Workflow test definitions
└── faqs/ # Tutorial-specific FAQs
└── index.md
```
### Topic metadata.yaml
```yaml
---
name: "assembly"
type: "use" # "use" or "admin"
topic_type: technology # technology, science, instructors, basics
title: "Assembly"
summary: "Description of the topic"
docker_image: "quay.io/galaxy/assembly-training"
edam_ontology: ["topic_0196"]
requirements:
- type: "internal"
topic_name: introduction
- type: "internal"
topic_name: sequence-analysis
tutorials:
- quality-control
editorial_board:
- github-username
subtopics:
- id: subtopic_id
title: "Subtopic Title"
description: "Description"
```
## Tutorial YAML Front Matter
Every tutorial.md starts with YAML front matter between `---` delimiters:
```yaml
---
layout: tutorial_hands_on
title: "Tutorial Title"
zenodo_link: "https://zenodo.org/records/XXXXXXX"
questions:
- "What biological question does this address?"
- "How do we use tool X for task Y?"
objectives:
- "Perform task X using Galaxy"
- "Interpret output of tool Y"
time_estimation: "1H30M"
level: Introductory # Introductory, Intermediate, Advanced
key_points:
- "Take-home message 1"
- "Take-home message 2"
contributions:
authorship:
- github-username
editing:
- github-username
funding:
- organization-id
testing:
- github-username
tags:
- tag1
- tag2
subtopic: subtopic_id # Must match a subtopic id in topic metadata.yaml
edam_ontology:
- topic_XXXX
requirements:
- type: "internal"
topic_name: introduction
tutorials:
- galaxy-intro-short
recordings:
- youtube_id: VIDEO_ID
length: 29M
galaxy_version: "24.1"
date: '2024-09-20'
follow_up_training:
- type: "internal"
topic_name: assembly
tutorials:
- assembly-decontamination
---
```
**Important notes:**
- Use `contributions:` with sub-fields (`authorship`, `editing`, `funding`, `testing`), NOT the older `contributors:` field
- `time_estimation` format: "30M", "1H", "1H30M", "2H"
- All usernames must exist in the root `CONTRIBUTORS.yaml`
- `level` determines visual badge (Introductory/Intermediate/Advanced)
## Special Markdown Syntax
### Box Types
All pedagogical boxes follow this pattern:
```markdown
> <type-title>Title Text</type-title>
>
> Content here
>
{: .class_name}
```
**Every line inside the box must start with `> `** (blockquote prefix).
#### Agenda (Table of Contents)
```markdown
> <agenda-title></agenda-title>
>
> In this tutorial, we will cover:
>
> 1. TOC
> {:toc}
>
{: .agenda}
```
Always placed after the introduction, before the first section. The `1. TOC` / `{:toc}` generates automatic table of contents from headings.
#### Hands-on (Step-by-Step Instructions)
```markdown
> <hands-on-title>Descriptive Step Title</hands-on-title>
>
> 1. {% tool [Tool Display Name](toolshed.g2.bx.psu.edu/repos/owner/repo/tool_id/version) %} with the following parameters:
> - {% icon param-file %} *"Input file"*: `dataset_name`
> - {% icon param-select %} *"Parameter name"*: `Option value`
> - {% icon param-text %} *"Text parameter"*: `some text`
> - {% icon param-check %} *"Checkbox param"*: `Yes`
>
> 2. Examine the output file by clicking {% icon galaxy-eye %} (eye icon)
>
{: .hands_on}
```
**Formatting rules for hands-on boxes:**
- Number each major step
- Tool name links use `{% tool [Name](id) %}` syntax
- Parameters are bulleted under the tool step, indented by 4 spaces from the `>`
- Parameter names are in *"quotes with italics"*
- Parameter values are in `` `backticks` ``
- Use the appropriate icon for each parameter type
#### Question + Solution
```markdown
> <question-title>Descriptive Question Title</question-title>
>
> 1. What is the N50 of the assembly?
> 2. How many contigs are there?
>
> > <solution-title></solution-title>
> >
> > 1. The N50 is 15 Mb
> > 2. There are 42 contigs
> >
> {: .solution}
>
{: .question}
```
Solutions are **nested** inside questions (double `> >` prefix). Solutions are collapsed by default.
#### Comment
```markdown
> <comment-title>Optional Title</comment-title>
>
> Additional context or explanation that's helpful but not critical.
>
{: .comment}
```
#### Tip
```markdown
> <tip-title>Helpful Tip Title</tip-title>
>
> A practical hint to help the learner.
>
{: .tip}
```
#### Warning
```markdown
> <warning-title>Important Warning</warning-title>
>
> Something that could cause problems if ignored.
>
{: .warning}
```
#### Details (Collapsible)
```markdown
> <details-title>Click to Expand</details-title>
>
> Extended information hidden by default. Good for background
> information that not all learners need.
>
{: .details}
```
#### Code Input/Output
```markdown
> <code-in-title>Bash</code-in-title>
> ```bash
> echo "Hello Galaxy"
> ```
{: .code-in}
> <code-out-title>Output</code-out-title>
> ```
> Hello Galaxy
> ```
{: .code-out}
```
For side-by-side display, wrap both in:
```markdown
> > <code-in-title>Bash</code-in-title>
> > ```bash
> > command
> > ```
> {: .code-in}
>
> > <code-out-title>Output</code-out-title>
> > ```
> > output
> > ```
> {: .code-out}
{: .code-2col}
```
### Tool References
```markdown
{% tool [Human-Readable Name](toolshed.g2.bx.psu.edu/repos/owner/repo/tool_id/version) %}
{% tool [Cut](Cut1) %}
{% tool [MultiQC](toolshed.g2.bx.psu.edu/repos/iuc/multiqc/multiqc/1.11+galaxy1) %}
```
- The text in `[]` is the display name
- The text in `()` is the full tool ID (ToolShed URL or short built-in ID)
- Version is included in the tool ID after the last `/`
#### Common VGP Assembly Tool IDs (current versions)
**Core pipeline tools (WF1–WF8):**
| Tool | Tool ID | Version |
|------|---------|---------|
| Cutadapt | `toolshed.g2.bx.psu.edu/repos/lparsons/cutadapt/cutadapt/5.2+galaxy1` | 5.2+galaxy1 |
| Meryl - count kmers | `toolshed.g2.bx.psu.edu/repos/iuc/meryl_count_kmers/meryl_count_kmers/1.4.1+galaxy0` | 1.4.1+galaxy0 |
| Meryl - groups of kmers | `toolshed.g2.bx.psu.edu/repos/iuc/meryl_groups_kmers/meryl_groups_kmers/1.4.1+galaxy0` | 1.4Related in Writing & Docs
jax-development
IncludedUse this skill when the user is writing, debugging, profiling, refactoring, reviewing, benchmarking, parallelising, exporting, or explaining JAX code, or when they mention JAX, jax.numpy, jit, grad, value_and_grad, vmap, scan, lax, random keys, pytrees, jax.Array, sharding, Mesh, PartitionSpec, NamedSharding, pmap, shard_map, Pallas, XLA, StableHLO, checkify, profiler, or the JAX repo. It helps turn NumPy or PyTorch-style code into pure functional JAX, fix tracer/control-flow/shape/PRNG bugs, remove recompiles and host-device syncs, choose transforms and sharding strategies, inspect jaxpr/lowering/IR, and benchmark compiled code correctly.
nature-article-writer
IncludedDrafts, rewrites, diagnostically critiques, and style-calibrates primary research manuscripts for Nature and Nature Portfolio journals. Use when the user wants a Nature-style title, summary paragraph or abstract, introduction, results, discussion, methods, figure legends, presubmission enquiry, cover letter, reviewer response, or when a scientific draft sounds generic, jargon-heavy, structurally weak, or AI-ish and needs precise, broad-reader-friendly prose without inventing data, analyses, or references. Best for primary research articles and letters rather than reviews or press releases unless explicitly adapting one.
deckrd
IncludedDocument-driven framework that derives requirements, specifications, implementation plans, and executable tasks from goals through structured AI dialogue. Use when user says "write requirements", "create spec", "plan implementation", "derive tasks", "structure this feature", "break down into tasks", or "document this module". Also use for reverse engineering existing code into docs (/deckrd rev). Do NOT use for direct code writing — use /deckrd-coder after tasks are generated. Do NOT use when the user only wants to run or fix existing code without planning.
clinical-decision-support
IncludedGenerate professional clinical decision support (CDS) documents for pharmaceutical and clinical research settings, including patient cohort analyses (biomarker-stratified with outcomes) and treatment recommendation reports (evidence-based guidelines with decision algorithms). Supports GRADE evidence grading, statistical analysis (hazard ratios, survival curves, waterfall plots), biomarker integration, and regulatory compliance. Outputs publication-ready LaTeX/PDF format optimized for drug development, clinical research, and evidence synthesis.
handling-sf-data
IncludedSalesforce data operations with 130-point scoring. Use this skill to create, update, delete, bulk import/export, generate test data, and clean up org records using sf CLI and anonymous Apex. TRIGGER when: user creates test data, performs bulk import/export, uses sf data CLI commands, needs data factory patterns for Apex tests, or needs to seed/clean records in a Salesforce org. DO NOT TRIGGER when: SOQL query writing only (use querying-soql), Apex test execution (use running-apex-tests), or metadata deployment (use deploying-metadata).
accelint-ac-to-playwright
IncludedConvert and validate acceptance criteria for Playwright test automation. Use when user asks to (1) review/evaluate/check if AC are ready for automation, (2) assess if AC can be converted as-is, (3) validate AC quality for Playwright, (4) turn AC into tests, (5) generate tests from acceptance criteria, (6) convert .md bullets or .feature Gherkin files to Playwright specs, (7) create test automation from requirements. Handles both bullet-style markdown and Gherkin syntax with JSON test plan generation and validation.