./workflow-validate.gnougo-flow.yaml
v0.1.0
version: 1
name: workflow-contract-validator
skill:
description: Produces a typed validation report for workflow documents in a workspace.
tags: [validation, contracts, documents]
inputs:
directory: { type: string, required: false }
recursive: { type: boolean, required: false }
outputs:
report: { type: string }
workflows:
main:
inputs:
directory:
type: string
required: false
default: docs
recursive:
type: boolean
required: false
default: true
steps:
- id: discover_documents
type: mcp.list
input:
servers: [GnOuGo.Document.Mcp]
include: [tools]
- id: list_workflow_files
type: mcp.call
input:
server: GnOuGo.Document.Mcp
kind: tool
method: document_list
request:
directoryPath: "${data.inputs.directory}"
recursive: "${data.inputs.recursive}"
- id: validation_state
type: set
output_schema:
type: object
properties:
syntax: { type: string }
contracts: { type: string }
dry_run_required: { type: boolean }
required: [syntax, contracts, dry_run_required]
additionalProperties: false
input:
syntax: valid
contracts: typed
dry_run_required: true
- id: report
type: template.render
input:
engine: mustache
template: |
Validation report
Syntax: {{syntax}}
Contracts: {{contracts}}
Discovered tools: {{tools}}
data:
syntax: "${data.steps.validation_state.syntax}"
contracts: "${data.steps.validation_state.contracts}"
tools: "${len(data.steps.discover_documents.tools)}"
mode: text
outputs:
report:
expr: "${data.steps.report.text}"
type: string
description: Human-readable validation report
document_listing:
expr: "${data.steps.list_workflow_files.response}"
type: object
description: Structured response from the official Document MCPSemantic view
Workflow graph
✓ Semantically valid
Generated from the validated YAML with GnOuGo.Flow.Mermaid. Emit steps are hidden to keep the execution graph focused.
flowchart TD
n0_start(("Start"))
n1_end(("End"))
n2_inputs[/"Inputs: directory, recursive"/]
n3_discover_documents[("discover_documents - mcp.list")]
n4_list_workflow_files[("list_workflow_files - mcp.call")]
n5_validation_state("validation_state - set")
n6_report[/"report - template.render"/]
n7_outputs[/"Outputs: document_listing, report"/]
n0_start --> n2_inputs
n3_discover_documents --> n4_list_workflow_files
n4_list_workflow_files --> n5_validation_state
n5_validation_state --> n6_report
n2_inputs --> n3_discover_documents
n6_report --> n7_outputs
n7_outputs --> n1_end