Agent Skill · cast nextflow-test-to-cwl-test-plan
Translate Nextflow test evidence into a CWL workflow test plan.
← All cast skills · Source mold →
Install with Claude Code
/plugin marketplace add galaxyproject/foundry
/plugin install foundry-skills@galaxy-workflow-foundry
Then invoke as:
/foundry-skills:nextflow-test-to-cwl-test-plan
Install with Codex
codex plugin marketplace add galaxyproject/foundry
codex plugin add foundry-skills@galaxy-workflow-foundry
Then select with /skills or invoke explicitly as:
$nextflow-test-to-cwl-test-plan
Install with Antigravity
git clone https://github.com/galaxyproject/foundry
agy plugin install foundry/casts/claude
Then select with /skills or invoke explicitly as:
/nextflow-test-to-cwl-test-plan
Skill Bundle
/ packaged cast
- attached files
- 2
- upfront
- 1
- on demand
- 1
- cast rev
- n/a
- validated
- 0
Produces: 1 artifact.
Consumes: 1 artifact.
Artifact Contract
/ skill handoff Produces
cwl-test-plan
Reviewable CWL workflow test plan: job inputs, expected outputs, assertions, fixtures, rationale provenance.
markdowncwl-test-plan.md
Raw artifact contract
{
"id": "cwl-test-plan",
"kind": "markdown",
"default_filename": "cwl-test-plan.md",
"description": "Reviewable CWL workflow test plan: job inputs, expected outputs, assertions, fixtures, rationale provenance."
}
Consumes
summary-nextflow
Structured Nextflow summary from [[summarize-nextflow]]; carries test_candidates, test_selection, and snapshot evidence.
Raw artifact contract
{
"id": "summary-nextflow",
"description": "Structured Nextflow summary from [[summarize-nextflow]]; carries test_candidates, test_selection, and snapshot evidence.",
"inherited_schema": "[[summary-nextflow]]",
"producers": [
"summarize-nextflow"
]
}
Attached Files
/ runtime references Load upfront
schema
summary-nextflow
packaged Read summarized nf-test profiles, snapshot fixtures, selected test data, params, and expected outputs.
upfront runtime verbatim corpus-observed deterministic 69.9 KB
- bundle
references/schemas/summary-nextflow.schema.json - source
package://@galaxy-foundry/summarize-nextflow#summaryNextflowSchema
Preview json
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://galaxyproject.org/foundry/schemas/summary-nextflow.schema.json",
"$comment": "Canonical source: packages/summarize-nextflow/src/schema/summary-nextflow.schema.json in galaxyproject/foundry. Mold frontmatter cites this schema via [[summary-nextflow]] wiki-links; the cast pipeline imports the `summaryNextflowSchema` runtime export and serializes it into cast bundles.",
"title": "Nextflow Pipeline Summary",
"description": "Structured per-source summary emitted by the summarize-nextflow Mold.\n\nPer-source schema by design — paper, Nextflow, and CWL each have their own summary shape; downstream Molds (data flow, templates, tool wrappers) consume any source's summary and handle the polymorphism.\n\nField names mirror gxy-sketches' SketchSource / ToolSpec / TestDataRef / ExpectedOutputRef where parity exists; see content/research/gxy-sketches-alignment/index.md.",
"$ref": "#/$defs/Summary",
"$defs": {
"Summary": {
"title": "Summary",
"description": "Top-level shape. Every Nextflow summary is exactly this object.",
"type": "object",
"additionalProperties": false,
"required": [
"source",
"params",
"sample_sheets",
"profiles",
"tools",
"processes",
"subworkflows",
"workflow",
"reference_assets",
"reference_rebuilds",
"test_candidates",
"test_selection"
],
"properties": {
"source": {
"$ref": "#/$defs/SourceRecord"
},
"params": {
"type": "array",
"items": {
"$ref": "#/$defs/Param"
}
},
"sample_sheets": {
"type": "array",
"items": {
"$ref": "#/$defs/SampleSheet"
},
"description": "Structured sample-sheet inputs. Each entry binds one `params[]` parameter to a row schema (column names, types, path-vs-meta classification, required flags, enums, patterns). Promoted from prose inside `params[].description` so downstream target translations (Galaxy `sample_sheet*` collections, CWL records-of-arrays) can choose collection variants without re-parsing the source pipeline. Empty array when no sample-sheet idiom is detected. Discovery sources: nf-schema `schema:` references, `samplesheetToList()` calls, and `splitCs
...
Load on demand
Preserve the selected candidate's scope and keep bootstrap-only, reference-scale, and deferred cases distinct.
Trigger: When the selected case is minimal, tiny, full-scale, stub-only, or accompanied by deferred whole-pipeline candidates.
on-demand runtime verbatim corpus-observed deterministic 9.1 KB
- bundle
references/notes/nextflow-test-case-selection.md - source
content/research/nextflow-test-case-selection/index.md
Preview md
---
type: research
title: "Selecting the first Nextflow test case"
tags:
- source/nextflow
status: draft
created: 2026-09-15
revised: 2026-09-15
revision: 2
summary: "A deterministic policy for choosing the first whole-pipeline Nextflow test case without mistaking profile names for coverage."
sources:
- "https://github.com/galaxyproject/foundry/issues/67"
- "https://www.nf-test.com/docs/configuration/"
- "https://www.nf-test.com/docs/cli/list/"
- "https://www.nextflow.io/docs/latest/config.html#config-profiles"
related_molds:
- "[[summarize-nextflow]]"
- "[[nextflow-test-to-galaxy-test-plan]]"
- "[[nextflow-test-to-cwl-test-plan]]"
related_notes:
- "[[component-nextflow-testing]]"
- "[[component-nextflow-inspect]]"
- "[[open-requirements-ledger]]"
---
# Selecting the first Nextflow test case
The first translated test should be small enough to run during workflow construction while still exercising the scientific path the translated workflow claims to implement. Profile names help find candidates, but they do not establish either property.
This note owns **selection**. [[component-nextflow-testing]] owns fixture and assertion interpretation after cases have been enumerated. [[summarize-nextflow]] owns applying the selection policy and emits both the candidate set and the decision. The two Nextflow test-plan Molds consume that decision; they must not silently choose a different case. [[run-workflow-test]] is downstream of translation and sees a Galaxy or CWL test artifact, not a Nextflow profile, so it does not use this note.
## Unit of selection
A candidate is a whole-pipeline execution, not merely a profile name:
- for nf-test, one `test(...)` case inside a `nextflow_pipeline { ... }` suite, identified by file path and test name;
- otherwise,
...
SKILL.md
# nextflow-test-to-cwl-test-plan
Follow the procedure below and use the artifact/reference sections as the runtime contract.
## When To Use
- Translate Nextflow test evidence into a CWL workflow test plan.
## Inputs
- Read artifact `summary-nextflow`. Schema: summary-nextflow. Produced by `summarize-nextflow`. Structured Nextflow summary from summarize-nextflow; carries test_candidates, test_selection, and snapshot evidence.
## Outputs
- Write artifact `cwl-test-plan` as `cwl-test-plan.md`. Format: `markdown`. Reviewable CWL workflow test plan: job inputs, expected outputs, assertions, fixtures, rationale provenance.
## Required Tools
- None declared. Procedure should not assume external CLIs are present.
## Load Upfront
- `references/schemas/summary-nextflow.schema.json`: Schema file copied verbatim into the bundle. Read summarized nf-test profiles, snapshot fixtures, selected test data, params, and expected outputs.
## Load On Demand
- `references/notes/nextflow-test-case-selection.md`: Research note copied verbatim into the bundle. Preserve the selected candidate's scope and keep bootstrap-only, reference-scale, and deferred cases distinct. Use when: the selected case is minimal, tiny, full-scale, stub-only, or accompanied by deferred whole-pipeline candidates.
## Validation
- None declared.
## Procedure
Translate Nextflow test evidence into a CWL workflow test plan. This preserves the `NEXTFLOW → CWL` pipeline after the Galaxy-specific test-plan split; concrete CWL test artifact assembly remains owned by implement-cwl-workflow-test.
Consume the candidate selected by summarize-nextflow rather than choosing a profile again. nextflow-test-case-selection supplies the scope classification and the rule for keeping deferred whole-pipeline candidates visible.
## Feedback Mode
- Feedback mode is off unless the caller explicitly enables `--feedback` or supplies a feedback-ledger path.
- When enabled, read `_feedback.md` before doing the work and use its registered `foundry-feedback.ledger.yml` protocol.
- Preserve harness-owned run and phase state. Append only concrete observations about a canonical Foundry source asset or a related project that this run showed to be at fault; do not put ordinary workflow requirements in this ledger.
- Before reporting completion, make one explicit pass over the work you just did. Do not ask yourself whether anything was unclear — recall what happened: where you guessed at something the instructions should have settled, needed information this bundle does not carry, hit an instruction that contradicted another or contradicted the artifacts in front of you, used a packaged reference that did not cover your case, or did something the procedure never describes.
- Append an entry for each such event that clears the protocol's bar. If none do, append nothing and report `no feedback` explicitly. Silence and a clean pass are not the same thing, and nothing downstream can tell them apart unless you say which one it was.
- Pass the same ledger path to any subagent used for this work, and merge updates serially so one writer cannot overwrite another.
## Runtime Notes
- Do not read Foundry source files at runtime; use only files packaged in this skill bundle and user-supplied artifacts.
- Preserve declared artifact filenames unless the user or harness supplies explicit paths.
- Carry unresolved assumptions into the output artifact instead of silently inventing missing source evidence.