Agent Skill · cast

review-galaxy-workflow

Apply the pinned upstream IWC review policy to one Galaxy workflow or pull request and emit one evidenced advisory Markdown review.

← 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:review-galaxy-workflow

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:

$review-galaxy-workflow

Install with Antigravity

git clone https://github.com/galaxyproject/foundry
agy plugin install foundry/casts/claude

Then select with /skills or invoke explicitly as:

/review-galaxy-workflow

Skill Bundle

/ packaged cast
attached files
6
upfront
2
on demand
4
cast rev
n/a
validated
0

Produces: 1 artifact.

Consumes: 10 artifacts.

Artifact Contract

/ skill handoff

Produces

galaxy-workflow-review

Advisory IWC-policy review of one Galaxy workflow pull-request subject, citing structural validation, Planemo test evidence, and optional Foundry context.

markdowngalaxy-workflow-review.md
Raw artifact contract
{
  "id": "galaxy-workflow-review",
  "kind": "markdown",
  "default_filename": "galaxy-workflow-review.md",
  "description": "Advisory IWC-policy review of one Galaxy workflow pull-request subject, citing structural validation, Planemo test evidence, and optional Foundry context."
}

Consumes

starting-galaxy-workflow

The normalized concrete gxformat2 workflow under review, as emitted by [[summarize-galaxy-workflow]]; the reviewed subject in the standard pipeline.

Raw artifact contract
{
  "id": "starting-galaxy-workflow",
  "description": "The normalized concrete gxformat2 workflow under review, as emitted by [[summarize-galaxy-workflow]]; the reviewed subject in the standard pipeline.",
  "producers": [
    "summarize-galaxy-workflow"
  ]
}

galaxy-workflow

The equivalent concrete gxformat2 workflow when a Foundry run supplies one directly instead of routing through the summarizer.

Raw artifact contract
{
  "id": "galaxy-workflow",
  "description": "The equivalent concrete gxformat2 workflow when a Foundry run supplies one directly instead of routing through the summarizer.",
  "producers": [
    "advance-galaxy-draft-step",
    "mature-galaxy-workflow-for-iwc"
  ]
}

summary-galaxy-workflow

Structured summary of the reviewed workflow: inputs, outputs, tool ids and versions, defaults, connections, labels, annotations, and existing tests. Read it instead of re-extracting them.

Raw artifact contract
{
  "id": "summary-galaxy-workflow",
  "description": "Structured summary of the reviewed workflow: inputs, outputs, tool ids and versions, defaults, connections, labels, annotations, and existing tests. Read it instead of re-extracting them.",
  "inherited_schema": "[[summary-galaxy-workflow]]",
  "producers": [
    "summarize-galaxy-workflow"
  ]
}

galaxy-workflow-validation-result

Terminal structural validation handoff from [[validate-galaxy-workflow]]: the command run, its status, and its diagnostics. Cite it; never restate a validation claim this Mold did not receive.

Raw artifact contract
{
  "id": "galaxy-workflow-validation-result",
  "description": "Terminal structural validation handoff from [[validate-galaxy-workflow]]: the command run, its status, and its diagnostics. Cite it; never restate a validation claim this Mold did not receive.",
  "producers": [
    "validate-galaxy-workflow"
  ]
}

workflow-test-result

Planemo execution handoff from [[run-workflow-test]], including its honest test-definition-missing and not-run states. Cite its status; never infer a passing test from inspection.

Raw artifact contract
{
  "id": "workflow-test-result",
  "description": "Planemo execution handoff from [[run-workflow-test]], including its honest test-definition-missing and not-run states. Cite its status; never infer a passing test from inspection.",
  "producers": [
    "run-workflow-test"
  ]
}

galaxy-workflow-test

The workflow's test file when one exists; absent when the submission ships no test, which is a reviewable finding rather than an error.

Raw artifact contract
{
  "id": "galaxy-workflow-test",
  "description": "The workflow's test file when one exists; absent when the submission ships no test, which is a reviewable finding rather than an error.",
  "optional": true,
  "producers": [
    "implement-galaxy-workflow-test",
    "mature-galaxy-workflow-for-iwc"
  ]
}

galaxy-workflow-pr-context

Harness-supplied pull-request context: repository, pull request number, title and body, base and head SHAs, changed-file list, base-to-head diff, and the complete relevant files.

Raw artifact contract
{
  "id": "galaxy-workflow-pr-context",
  "description": "Harness-supplied pull-request context: repository, pull request number, title and body, base and head SHAs, changed-file list, base-to-head diff, and the complete relevant files.",
  "optional": true
}

iwc-dockstore-metadata

The submission's `.dockstore.yml` when present; it names the primary Galaxy descriptor under the IWC-Lab repository profile, which may be a `.gxwf.yml` file.

Raw artifact contract
{
  "id": "iwc-dockstore-metadata",
  "description": "The submission's `.dockstore.yml` when present; it names the primary Galaxy descriptor under the IWC-Lab repository profile, which may be a `.gxwf.yml` file.",
  "optional": true,
  "producers": [
    "mature-galaxy-workflow-for-iwc"
  ]
}

iwc-comparison-notes

Existing structural diff from [[compare-against-iwc-exemplar]] when a Foundry run already produced one. Consume it; never rerun that comparison inside this Mold.

Raw artifact contract
{
  "id": "iwc-comparison-notes",
  "description": "Existing structural diff from [[compare-against-iwc-exemplar]] when a Foundry run already produced one. Consume it; never rerun that comparison inside this Mold.",
  "optional": true,
  "producers": [
    "compare-against-iwc-exemplar"
  ]
}

open-requirements-ledger

Carried obligations ledger [[open-requirements-ledger]] when a Foundry run supplied one; read-only here, used to report unresolved intent and surrendered work.

Raw artifact contract
{
  "id": "open-requirements-ledger",
  "description": "Carried obligations ledger [[open-requirements-ledger]] when a Foundry run supplied one; read-only here, used to report unresolved intent and surrendered work.",
  "optional": true,
  "producers": [
    "advance-galaxy-draft-step",
    "apply-galaxy-workflow-changeset",
    "compare-against-iwc-exemplar",
    "cwl-summary-to-galaxy-data-flow",
    "cwl-summary-to-galaxy-interface",
    "cwl-summary-to-galaxy-template",
    "freeform-summary-to-galaxy-data-flow",
    "freeform-summary-to-galaxy-interface",
    "freeform-summary-to-galaxy-template",
    "implement-galaxy-tool-step",
    "interview-to-galaxy-workflow-changeset",
    "mature-galaxy-workflow-for-iwc",
    "nextflow-summary-to-galaxy-data-flow",
    "nextflow-summary-to-galaxy-interface",
    "nextflow-summary-to-galaxy-reference-data",
    "nextflow-summary-to-galaxy-template",
    "repair-galaxy-draft-topology",
    "workflow-brief-to-galaxy-data-flow",
    "workflow-brief-to-galaxy-interface",
    "workflow-brief-to-galaxy-template"
  ]
}

Attached Files

/ runtime references

Load upfront

prompt

workflow-pr-review-command

packaged

Apply the pinned upstream IWC review command as the primary checklist and procedure, adapting repository terminology without changing policy.

upfront runtime verbatim corpus-observed deterministic 7.5 KB
bundle
references/prompts/workflow-pr-review-command.md
source
content/prompts/iwc/workflow-pr-review-command/upstream.prompt
Preview md
---
description: Review a PR against the IWC reviewer checklist
---

You are reviewing a pull request to the IWC (Intergalactic Workflow Commission) repository.

## Scope and Policy Sources

This review applies to changes under `workflows/`. If the pull request does not change that directory, report that the workflow review is not applicable.

Read both `.github/PULL_REQUEST_TEMPLATE.md` and `.github/copilot-instructions.md` from the pull request's base branch before reviewing. Apply the union of their workflow-review requirements. If either file has changed in the pull request, distinguish the existing base-branch policy from the proposed policy change and flag any conflict for human discussion.

The checklist below intentionally includes every workflow-review requirement from the Copilot instructions, adds the contributor-checklist items a reviewer can confirm, and adds the execution and reporting procedure for this command.

## Your Task

1. Fetch the pull request using the `gh` command to get:
   - Pull request title and description
   - Base and head revisions
   - List of changed files
   - The actual file changes (diff)
   - Relevant CI check names, conclusions, and failure details using `gh pr checks` and, when needed, `gh run view`

2. Read the changed workflow files and enough existing repository examples to understand the applicable IWC conventions. Do not infer compliance from the diff alone when a requirement depends on the complete contents of a file.

3. Review the changes against every applicable item in this checklist:

   ### .dockstore.yml

   - [ ] A `.dockstore.yml` file is present in the workflow folder. It is required to run tests.
   - [ ] Its authors match the creator metadata in the `.ga` workflow file.
   - [ ] Its workflow and test file paths
...
schema

summary-galaxy-workflow

packaged

Read the supplied workflow summary rather than re-deriving inputs, outputs, tool pins, defaults, connections, labels, and existing tests.

upfront runtime verbatim cast-validated deterministic 16.6 KB
bundle
references/schemas/summary-galaxy-workflow.schema.json
source
package://@galaxy-foundry/gxwf-foundry#summaryGalaxyWorkflowSchema
Preview json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://galaxyproject.org/foundry/schemas/summary-galaxy-workflow.schema.json",
  "$comment": "Canonical source: packages/gxwf-foundry/src/schemas/summary-galaxy-workflow/summary-galaxy-workflow.schema.json in galaxyproject/foundry. Mold frontmatter cites this schema via [[summary-galaxy-workflow]] wiki-links; the cast pipeline imports the `summaryGalaxyWorkflowSchema` runtime export and serializes it into cast bundles.",
  "title": "Galaxy Workflow Summary",
  "description": "Structured summary emitted by the summarize-galaxy-workflow Mold. Galaxy gxformat2 is already a typed workflow language, so this schema records validated and normalized workflow structure (inputs, outputs, steps, edges, existing tests) rather than inferred pipeline semantics. When the user supplies a legacy .ga workflow it is converted to gxformat2 first and the conversion is recorded under documents.",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "summary_version",
    "source",
    "documents",
    "workflow_inputs",
    "workflow_outputs",
    "steps",
    "graph",
    "tests",
    "warnings"
  ],
  "properties": {
    "summary_version": {
      "type": "string",
      "enum": [
        "1"
      ],
      "description": "Summary schema major version."
    },
    "source": {
      "$ref": "#/$defs/SourceRecord"
    },
    "documents": {
      "$ref": "#/$defs/DocumentSet"
    },
    "workflow_inputs": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/WorkflowInput"
      }
    },
    "workflow_outputs": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/WorkflowOutput"
      }
    },
    "steps": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/WorkflowStep"
      }
    },
    "graph": {
      "$ref": "#/$defs/WorkflowGraph"
    },
    "tests": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/TestCase"
      }
    },
    "warnings": {
      "type": "array",
      "items": {
        "$ref": "#/$defs/Warning"
      }
    }
  },
  "$defs": {
    "SourceRecord": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "ecosystem",
        "workflow",
        "url",
        "version",
        "license",
        "slug",
        "format",
        "original_format",
        "release",
        "an
...

Load on demand

research

galaxy-workflow-testability-design

packaged

Distinguish a genuine workflow-interface or test-addressing defect from a stylistic preference when a label and a test key disagree.

Trigger: When an input, promoted output, collection identifier, or workflow-output label does not agree with the supplied test.

on-demand runtime verbatim corpus-observed deterministic 7.8 KB
bundle
references/notes/galaxy-workflow-testability-design.md
source
content/research/galaxy-workflow-testability-design/index.md
Preview md
---
type: research
tags:
  - target/galaxy
status: draft
created: 2026-05-03
revised: 2026-09-23
revision: 3
related_notes:
  - "[[iwc-workflow-testability-survey]]"
  - "[[iwc-test-data-conventions]]"
  - "[[planemo-asserts-idioms]]"
  - "[[iwc-shortcuts-anti-patterns]]"
  - "[[planemo-workflow-test-architecture]]"
  - "[[implement-galaxy-workflow-test]]"
  - "[[gxformat2-schema]]"
  - "[[gxformat2-workflow-inputs]]"
  - "[[galaxy-datatypes-conf]]"
summary: "Design guidance for Galaxy workflow inputs, outputs, and checkpoints that make IWC-style workflow tests possible."
---

# Design a Galaxy workflow that can be tested

Choose the workflow's public inputs and outputs while designing the analysis, before writing its `-tests.yml`. A workflow test supplies `job:` values by input name and checks `outputs:` by output name. It can only check results the workflow exposes. A good interface gives the test a reproducible input, an addressable result, and at least one assertion that would catch a meaningful wrong result.

This note concerns workflow design. [[iwc-test-data-conventions]] covers the test file's input fixtures, [[planemo-asserts-idioms]] covers assertion syntax, and [[iwc-shortcuts-anti-patterns]] explains when a smoke check is enough. [[iwc-workflow-testability-survey]] holds the broader corpus evidence.

## Name the public interface before writing tests

Give each input and promoted output a stable, descriptive public name. In an exported gxformat2 workflow this is commonly the entry's `id`. The structural [[gxformat2-schema]] also permits `label`. Check the **effective name in the workflow being tested** instead of assuming a step label, generated dataset name, or array position will become the test key. In the pinned [Scanpy workflow](https://github.com/galaxy
...
research

iwc-shortcuts-anti-patterns

packaged

Recognize corpus-observed shortcuts so a finding cites an observed IWC anti-pattern rather than reviewer taste.

Trigger: When a structural choice looks like a shortcut and the finding needs corpus grounding before it is raised as required.

on-demand runtime verbatim corpus-observed deterministic 5.9 KB
bundle
references/notes/iwc-shortcuts-anti-patterns.md
source
content/research/iwc-shortcuts-anti-patterns/index.md
Preview md
---
type: research
tags:
  - target/galaxy
status: draft
created: 2026-04-30
revised: 2026-09-23
revision: 3
related_notes:
  - "[[galaxy-workflow-testability-design]]"
  - "[[iwc-test-data-conventions]]"
  - "[[planemo-asserts-idioms]]"
  - "[[implement-galaxy-workflow-test]]"
  - "[[tests-format]]"
  - "[[iwc-conditionals-survey]]"
  - "[[iwc-map-over-lifecycle-survey]]"
  - "[[iwc-tabular-operations-survey]]"
  - "[[iwc-transformations-survey]]"
summary: "Judgments for when weak Galaxy workflow-test assertions are useful smoke checks and when they conceal untested results."
---

# IWC test-suite shortcuts and anti-patterns

A workflow test should fail when a meaningful result is wrong. Start by naming that failure, then choose an assertion that would catch it. A size, shape, or existence check can establish that an output was produced, but it cannot establish that the analysis is correct. Keep such a **smoke check** when the result is genuinely variable or opaque, and add a stable content check or workflow checkpoint whenever one is available. Using a weak check merely because another IWC test uses it is an anti-pattern.

These authoring judgments guide [[implement-galaxy-workflow-test]]. [[planemo-asserts-idioms]] covers assertion forms, [[iwc-test-data-conventions]] covers fixtures, and [[galaxy-workflow-testability-design]] covers which intermediate results to expose as workflow outputs.

## Choose by the failure the test must catch

| Output | Useful check | Anti-pattern |
| --- | --- | --- |
| Small, byte-stable text or data | Compare with an expected `file:`. A `checksum:` can cover a large byte-stable output. | Replacing an exact comparison with size alone when exact content is stable. |
| Variable JSON or HDF5 | Assert a stable property, group, key, or count 
...
research

iwc-test-data-conventions

packaged

Judge test labels, durable remote fixtures, creator identifiers, and companion-file naming against current IWC conventions.

Trigger: When assessing the submission's test file, test-data references, creator metadata, or release entry.

on-demand runtime verbatim corpus-observed deterministic 11.6 KB
bundle
references/notes/iwc-test-data-conventions.md
source
content/research/iwc-test-data-conventions/index.md
Preview md
---
type: research
tags:
  - target/galaxy
status: draft
created: 2026-04-30
revised: 2026-09-23
revision: 4
related_notes:
  - "[[galaxy-workflow-testability-design]]"
  - "[[iwc-shortcuts-anti-patterns]]"
  - "[[planemo-asserts-idioms]]"
  - "[[implement-galaxy-workflow-test]]"
  - "[[tests-format]]"
  - "[[iwc-tabular-operations-survey]]"
summary: "IWC and Planemo workflow-test fixture shapes, file provenance, collection identifiers, input hashes, and built-in index values."
---

# IWC test data conventions

An IWC workflow test pairs each workflow with a sibling `<workflow>-tests.yml`. Each YAML test case supplies `job:` inputs under the workflow's input labels and `outputs:` assertions under its output labels. The optional `test-data/` directory holds local fixtures. These are the [IWC contribution layout](https://github.com/galaxyproject/iwc/blob/main/workflows/README.md) and [Planemo test-format](https://planemo.readthedocs.io/en/latest/test_format.html) contracts. For decisions about the workflow interface before writing fixtures, see [[galaxy-workflow-testability-design]]. For the exact supported YAML vocabulary and static validation, see [[tests-format]].

Examples below come from the cited IWC files or Planemo documentation. Corpus observations describe the workflows sampled for this note, not a rule that every IWC workflow follows.

## Fixture locations and provenance

A `class: File` input can use `path:` for a local fixture or `location:` for a URI. Planemo resolves a relative `path:` from the workflow and test directory. IWC's contribution guide recommends small inputs and suggests publishing a toy dataset to Zenodo for a permanent URL. The repository also permits an optional local `test-data/` directory. It gives no universal size cutoff or mandatory hos
...
research

open-requirements-ledger

packaged

Read a supplied ledger's open and surrendered entries into the clearly labeled Foundry context section without treating their absence as an IWC failure.

Trigger: When the harness supplied an open-requirements ledger and the review needs to report unresolved intent or surrendered work as Foundry context.

on-demand runtime verbatim hypothesis deterministic 18.5 KB
bundle
references/notes/open-requirements-ledger.md
source
content/research/open-requirements-ledger/index.md
Preview md
---
type: research
title: "Open-requirements ledger"
tags:
  - target/galaxy
status: draft
created: 2026-06-16
revised: 2026-09-21
revision: 4
related_notes:
  - "[[galaxy-workflow-draft-format]]"
related_molds:
  - "[[advance-galaxy-draft-step]]"
  - "[[repair-galaxy-draft-topology]]"
  - "[[implement-galaxy-tool-step]]"
summary: "Carried workflow-run knowledge artifact for obligations, discoveries, decisions, brief-change recommendations, and convergence state."
---

# Open-requirements ledger

The `open-requirements-ledger` is the carried workflow-run knowledge artifact threaded through the source→Galaxy pipeline. It records **obligations the pipeline has taken on but not yet met** — a declared output with no producer, a parameter whose value the source never pinned, a tool with no corpus exemplar — and **source work it decided not to carry**. It also records evidence discovered during implementation, decisions made within the approved scope, and recommended changes to an immutable Workflow Brief. Each Mold that surfaces an obligation **appends** it; each Mold whose decision closes one **marks it resolved**; the terminal path **surrenders** whatever remains open, explicitly, into the final artifact.

This ledger is about the workflow being built. It is distinct from the opt-in `foundry-feedback-ledger`, which records actionable defects or friction in the Foundry assets building it. It is also not the harness's phase-progress tracker: execution status belongs to harness state, checkpoints, and reports rather than requirement entries.

## Framing: obligations the pipeline discharges, not questions a human answers

This is deliberately *not* an "open questions for the user" list. The pipeline is autonomous — no human-in-the-loop gate is assumed. The ledger's consumers a
...

SKILL.md


# review-galaxy-workflow

Follow the procedure below and use the artifact/reference sections as the runtime contract.

## When To Use

- Apply the pinned upstream IWC review policy to one Galaxy workflow or pull request and emit one evidenced advisory Markdown review.

## Inputs

- Read artifact `starting-galaxy-workflow`. Produced by `summarize-galaxy-workflow`. The normalized concrete gxformat2 workflow under review, as emitted by summarize-galaxy-workflow; the reviewed subject in the standard pipeline.
- Read artifact `galaxy-workflow`. Produced by `advance-galaxy-draft-step`, `mature-galaxy-workflow-for-iwc`. The equivalent concrete gxformat2 workflow when a Foundry run supplies one directly instead of routing through the summarizer.
- Read artifact `summary-galaxy-workflow`. Schema: summary-galaxy-workflow. Produced by `summarize-galaxy-workflow`. Structured summary of the reviewed workflow: inputs, outputs, tool ids and versions, defaults, connections, labels, annotations, and existing tests. Read it instead of re-extracting them.
- Read artifact `galaxy-workflow-validation-result`. Produced by `validate-galaxy-workflow`. Terminal structural validation handoff from validate-galaxy-workflow: the command run, its status, and its diagnostics. Cite it; never restate a validation claim this Mold did not receive.
- Read artifact `workflow-test-result`. Produced by `run-workflow-test`. Planemo execution handoff from run-workflow-test, including its honest test-definition-missing and not-run states. Cite its status; never infer a passing test from inspection.
- Read artifact `galaxy-workflow-test`. Optional; absence is allowed and must be reported honestly. Produced by `implement-galaxy-workflow-test`, `mature-galaxy-workflow-for-iwc`. The workflow's test file when one exists; absent when the submission ships no test, which is a reviewable finding rather than an error.
- Read artifact `galaxy-workflow-pr-context`. Optional; absence is allowed and must be reported honestly. Harness-supplied pull-request context: repository, pull request number, title and body, base and head SHAs, changed-file list, base-to-head diff, and the complete relevant files.
- Read artifact `iwc-dockstore-metadata`. Optional; absence is allowed and must be reported honestly. Produced by `mature-galaxy-workflow-for-iwc`. The submission's `.dockstore.yml` when present; it names the primary Galaxy descriptor under the IWC-Lab repository profile, which may be a `.gxwf.yml` file.
- Read artifact `iwc-comparison-notes`. Optional; absence is allowed and must be reported honestly. Produced by `compare-against-iwc-exemplar`. Existing structural diff from compare-against-iwc-exemplar when a Foundry run already produced one. Consume it; never rerun that comparison inside this Mold.
- Read artifact `open-requirements-ledger`. Optional; absence is allowed and must be reported honestly. Produced by `advance-galaxy-draft-step`, `apply-galaxy-workflow-changeset`, `compare-against-iwc-exemplar`, `cwl-summary-to-galaxy-data-flow`, `cwl-summary-to-galaxy-interface`, `cwl-summary-to-galaxy-template`, `freeform-summary-to-galaxy-data-flow`, `freeform-summary-to-galaxy-interface`, `freeform-summary-to-galaxy-template`, `implement-galaxy-tool-step`, `interview-to-galaxy-workflow-changeset`, `mature-galaxy-workflow-for-iwc`, `nextflow-summary-to-galaxy-data-flow`, `nextflow-summary-to-galaxy-interface`, `nextflow-summary-to-galaxy-reference-data`, `nextflow-summary-to-galaxy-template`, `repair-galaxy-draft-topology`, `workflow-brief-to-galaxy-data-flow`, `workflow-brief-to-galaxy-interface`, `workflow-brief-to-galaxy-template`. Carried obligations ledger open-requirements-ledger when a Foundry run supplied one; read-only here, used to report unresolved intent and surrendered work.

## Outputs

- Write artifact `galaxy-workflow-review` as `galaxy-workflow-review.md`. Format: `markdown`. Advisory IWC-policy review of one Galaxy workflow pull-request subject, citing structural validation, Planemo test evidence, and optional Foundry context.

## Required Tools

- None declared. Procedure should not assume external CLIs are present.

## Load Upfront

- `references/prompts/workflow-pr-review-command.md`: prompt reference copied verbatim into the bundle. Apply the pinned upstream IWC review command as the primary checklist and procedure, adapting repository terminology without changing policy.
- `references/schemas/summary-galaxy-workflow.schema.json`: Schema file copied verbatim into the bundle. Read the supplied workflow summary rather than re-deriving inputs, outputs, tool pins, defaults, connections, labels, and existing tests.

## Load On Demand

- `references/notes/galaxy-workflow-testability-design.md`: Research note copied verbatim into the bundle. Distinguish a genuine workflow-interface or test-addressing defect from a stylistic preference when a label and a test key disagree. Use when: an input, promoted output, collection identifier, or workflow-output label does not agree with the supplied test.
- `references/notes/iwc-shortcuts-anti-patterns.md`: Research note copied verbatim into the bundle. Recognize corpus-observed shortcuts so a finding cites an observed IWC anti-pattern rather than reviewer taste. Use when: a structural choice looks like a shortcut and the finding needs corpus grounding before it is raised as required.
- `references/notes/iwc-test-data-conventions.md`: Research note copied verbatim into the bundle. Judge test labels, durable remote fixtures, creator identifiers, and companion-file naming against current IWC conventions. Use when: assessing the submission's test file, test-data references, creator metadata, or release entry.
- `references/notes/open-requirements-ledger.md`: Research note copied verbatim into the bundle. Read a supplied ledger's open and surrendered entries into the clearly labeled Foundry context section without treating their absence as an IWC failure. Use when: the harness supplied an open-requirements ledger and the review needs to report unresolved intent or surrendered work as Foundry context.

## Validation

- None declared.

## Procedure

Review one Galaxy workflow submission under the pinned upstream IWC review policy and return one advisory Markdown review. This skill reads evidence; it does not produce or change a workflow, and it cannot approve, push, comment, label, mark ready, or merge.

### Procedure

#### 1. Establish the reviewed subject and its evidence

- Read the concrete workflow — the normalized `starting-galaxy-workflow.gxwf.yml`, or the `galaxy-workflow.gxwf.yml` a Foundry run supplied directly.
- Read `summary-galaxy-workflow.json` for inputs, outputs, tool ids and versions, tool state, connections, labels, annotations, and existing tests. Do not re-extract what the summary already carries.
- Read `galaxy-workflow-validation-result.json` and `workflow-test-result.json`. Record each status verbatim. **Never run `gxwf validate` or `planemo test` inside this skill**, and never upgrade an unverified item to a pass on the strength of inspection.
- Inventory the optional inputs and record which ones were present. Never describe an absent artifact as inspected.

#### 2. Select the repository profile

- **IWC**: the primary descriptor is the native `.ga` workflow; apply the upstream checklist to it.
- **IWC-Lab**: the primary Galaxy descriptor is the one named by the submission's `.dockstore.yml`, which may be a `.gxwf.yml` file. Apply the same descriptor-level checks to that file.
- When no `.dockstore.yml` was supplied, state which profile was assumed and why.

#### 3. Apply the pinned IWC policy

Read the bundled review command and work its checklist in order. Adapt repository terminology where the profile requires it; do not silently add, drop, or soften a policy item. For each applicable item record exactly one of `pass`, `needs attention`, `not applicable`, or `unverified`, with file and field evidence. Prefer the deterministic evidence from step 1 wherever it answers a checklist question — cite the Planemo result rather than concluding from inspection that a test passed.

#### 4. Add Foundry context only when it was supplied

When `iwc-comparison-notes`, an `open-requirements-ledger`, or source and design handoffs are present, add a clearly labeled **Foundry context** section covering unresolved intent, surrendered or dropped work, and test strength. When they are absent, omit the section or state that no Foundry context was supplied. **Their absence is never an IWC finding.** Do not rerun compare-against-iwc-exemplar; consume its existing output.

#### 5. Write the review

Emit `galaxy-workflow-review.md` with, in order:

1. reviewed repository, pull request, head SHA, workflow directory, repository profile, and prompt provenance — name the bundled prompt reference and the hash recorded for it in this cast's provenance record, and make no claim about upstream policy newer than that pin;
2. the validation result and the Planemo test result, quoted as statuses rather than as conclusions;
3. the applicable IWC checklist, one status and its evidence per item;
4. the Foundry context section, when one was supplied;
5. required fixes, separated from optional improvements, separated from evidence that was unavailable; and
6. exactly one advisory recommendation: `approve`, `request changes`, or `needs discussion`.

### Non-goals

- No `gxwf validate` or `planemo test` execution, and no re-derivation of the summary.
- No workflow, test, or companion-file edit, and no changeset. An accepted edit is mature-galaxy-workflow-for-iwc's business, routed through apply-galaxy-workflow-changeset.
- No GitHub mutation of any kind — no review, approval, comment, label, push, ready-for-review, or merge.
- No JSON report, no stable finding ids, and no freshness claim about a correctly pinned prompt.

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