Complete migration validation checklist for Flow to Output SDK. Use after migration to verify completeness and correctness.
Runs comprehensive validation checks on migrated workflows to verify type safety, file structure, API imports, and runtime correctness. Use after migration to ensure completeness before marking as done.
/plugin marketplace add growthxai/output-claude-plugins/plugin install growthxai-outputai-flow-migrator-plugins-outputai-flow-migrator@growthxai/output-claude-pluginsThis skill is limited to using the following tools:
This skill provides a comprehensive checklist to validate a completed Flow to Output SDK migration. Use this after migration to ensure nothing was missed.
After Migration:
z imports from @output.ai/core (not zod)Validation Commands:
# Check for wrong zod imports
grep -r "from 'zod'" src/workflows/my_workflow/
grep -r 'from "zod"' src/workflows/my_workflow/
# Should return nothing - all zod should be from @output.ai/core
# Verify types.ts has Zod schemas
grep -c "z.object" src/workflows/my_workflow/types.ts
.prompt files{% if %} not {{#if}}){{ var }} not {{var}})name@version.prompt)Validation Commands:
# Check for remaining Handlebars syntax
grep -r "{{#if" src/workflows/my_workflow/
grep -r "{{/if}}" src/workflows/my_workflow/
# Should return nothing
# Check for variables without spaces
grep -r "{{[^{]" src/workflows/my_workflow/*.prompt 2>/dev/null | grep -v "{{ "
# Should return nothing - all variables should have spaces
# List all prompt files
ls src/workflows/my_workflow/*.prompt
# Verify frontmatter in each
head -10 src/workflows/my_workflow/*.prompt
z from @output.ai/corestep() and workflow() imported from @output.ai/coregenerateText() or generateObject() from @output.ai/llmValidationError/FatalError imported from @output.ai/coreValidation Commands:
# Check for Flow SDK imports
grep -r "@flow/sdk" src/workflows/my_workflow/
grep -r "WorkflowScope" src/workflows/my_workflow/
# Should return nothing
# Verify correct imports
grep -r "@output.ai/core" src/workflows/my_workflow/
grep -r "@output.ai/llm" src/workflows/my_workflow/
workflow.ts contains workflow definition with export defaultsteps.ts contains all step definitionstypes.ts contains Input/Output interfaces and Zod schemasname@version.promptactivities.ts (renamed to steps.ts)prompts.ts or prompts.xml.js extensionValidation Commands:
# Check file structure
ls -la src/workflows/my_workflow/
# Expected files:
# - workflow.ts
# - steps.ts
# - types.ts
# - *.prompt files
# - scenarios/ directory (optional)
# Check for leftover files
ls src/workflows/my_workflow/activities.ts 2>/dev/null
ls src/workflows/my_workflow/prompts.ts 2>/dev/null
ls src/workflows/my_workflow/prompts.xml 2>/dev/null
# Should all return "No such file"
# Check import extensions
grep -r "from './" src/workflows/my_workflow/*.ts | grep -v ".js'"
# Should return nothing - all local imports should end with .js
workflow() function (not class)name propertydescription propertyexport defaultValidation Commands:
# Check workflow definition
grep -A10 "export default workflow" src/workflows/my_workflow/workflow.ts
# Verify no class-based workflow
grep "class.*Workflow" src/workflows/my_workflow/workflow.ts
# Should return nothing
step() functioninputSchema definedValidation Commands:
# List all steps
grep "export const.*= step" src/workflows/my_workflow/steps.ts
# Verify inputSchema for each step
grep -c "inputSchema:" src/workflows/my_workflow/steps.ts
ValidationError used for validation failuresFatalError used for unrecoverable errorsValidation Commands:
# Check for try-catch in workflow
grep -A20 "fn: async" src/workflows/my_workflow/workflow.ts | grep "try {"
# Should return nothing or minimal results
Manual Review:
npm run lint passesValidation Commands:
# Run lint
npm run lint -- src/workflows/my_workflow/
# Should pass with no errors
Validation Commands:
# Build
npm run output:workflow:build
# Run with test input
npx output workflow run my_workflow --input '{"testKey": "testValue"}'
Run this to check common issues:
#!/bin/bash
WORKFLOW_PATH="src/workflows/my_workflow"
echo "=== Migration Validation ==="
echo -e "\n1. Checking for wrong zod imports..."
grep -r "from 'zod'" $WORKFLOW_PATH && echo "FAIL: Found direct zod imports" || echo "PASS"
echo -e "\n2. Checking for Handlebars syntax..."
grep -r "{{#if" $WORKFLOW_PATH && echo "FAIL: Found Handlebars syntax" || echo "PASS"
echo -e "\n3. Checking for Flow SDK imports..."
grep -r "@flow/sdk" $WORKFLOW_PATH && echo "FAIL: Found Flow SDK imports" || echo "PASS"
echo -e "\n4. Checking for class-based workflow..."
grep "class.*Workflow" $WORKFLOW_PATH/workflow.ts && echo "FAIL: Found class-based workflow" || echo "PASS"
echo -e "\n5. Checking for try-catch in workflow..."
grep -A20 "fn: async" $WORKFLOW_PATH/workflow.ts | grep "try {" && echo "WARN: Found try-catch" || echo "PASS"
echo -e "\n6. Checking import extensions..."
grep "from './" $WORKFLOW_PATH/*.ts | grep -v ".js'" && echo "FAIL: Missing .js extension" || echo "PASS"
echo -e "\n7. Verifying file structure..."
[ -f "$WORKFLOW_PATH/workflow.ts" ] && echo "PASS: workflow.ts exists" || echo "FAIL: workflow.ts missing"
[ -f "$WORKFLOW_PATH/steps.ts" ] && echo "PASS: steps.ts exists" || echo "FAIL: steps.ts missing"
[ -f "$WORKFLOW_PATH/types.ts" ] && echo "PASS: types.ts exists" || echo "FAIL: types.ts missing"
echo -e "\n=== Validation Complete ==="
flow-error-zod-import - Fix zod import issuesflow-error-try-catch-removal - Remove try-catch antipatternflow-error-eslint-compliance - Fix ESLint issuesflow-conventions-folder-structure - Folder structure referenceCreating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.