Agent skill

Output Dev Workflow Function

by growthxai in growthxai/output

Create workflow.ts files for Output SDK workflows. An agent skill from growthxai/output.

Apache-2.0Auto-check passed

Install Output Dev Workflow Function

skills CLI
$ npx skills add growthxai/output --skill output-dev-workflow-function -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install growthxai/output output-dev-workflow-function --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/growthxai/output.git skills-src && mkdir -p .claude/skills && cp -r skills-src/coding_assistants/claude/plugins/outputai/skills/output-dev-workflow-function .claude/skills/output-dev-workflow-function && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
output-dev-workflow-function
GitHub stars
440
Token cost
~2k tokens
SKILL.md length
340 words
Files
1
Skills in repo
52
Repo updated
First seen
Licence
Apache-2.0

At a glance

Create workflow.ts files for Output SDK workflows. An agent skill from growthxai/output.

  • Works in 3 steps: Import Pattern → ES Module Imports → Determinism Requirement
  • Defining workflow functions
  • SKILL.md covers Overview, When to Use This Skill, Critical Rules and Basic Structure, plus 6 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Output Dev Workflow Function is an agent skill from growthxai/output. Create workflow.ts files for Output SDK workflows. Use when defining workflow functions, orchestrating steps, or fixing workflow structure issues.

Its SKILL.md is about 2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The repository describes itself as: The open-source TypeScript framework for building AI workflows and agents. Designed for Claude Code describe what you want, Claude builds it, with all the best practices already… The licence is Apache-2.0.

When your agent uses it

  • Defining workflow functions
  • Orchestrating steps
  • Fixing workflow structure issues

Example prompts

  • “/output-dev-workflow-function”

Requirements

  • Pre-approved tools (allowed-tools): Read, Write, Edit

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. Import Pattern
  2. ES Module Imports
  3. Determinism Requirement

What it can do on your machine

Read from SKILL.md and the folder at commit 52b51ac. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Edit

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are typescript).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Output Dev Workflow Function loads about 2k tokens when it runs. Until then it costs about 44 tokens; SKILL.md has 340 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~44
When it runs · the whole SKILL.md, loaded when a task matches
~2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from growthxai/output at commit 52b51ac, republished under its Apache-2.0 licence (© growthxai). 340 words, ~2,049 tokens.

Download SKILL.mdSave it as .claude/skills/output-dev-workflow-function/SKILL.md (or your agent's skills folder).
name
output-dev-workflow-function
description
Create workflow.ts files for Output SDK workflows. Use when defining workflow functions, orchestrating steps, or fixing workflow structure issues.
allowed-tools
Read, Write, Edit

Creating workflow.ts Files

Overview

This skill documents how to create workflow.ts files for Output SDK workflows. The workflow file contains the main orchestration logic that coordinates step execution.

When to Use This Skill

  • Creating a new workflow's main definition
  • Understanding workflow structure requirements
  • Debugging workflow orchestration issues
  • Refactoring existing workflow logic

Critical Rules

1. Import Pattern
typescript
// CORRECT - Import from @outputai/core
import { workflow, z } from '@outputai/core';

// WRONG - Never import z from zod
import { z } from 'zod';
2. ES Module Imports

All imports MUST use .js extension:

typescript
// CORRECT
import { stepName } from './steps.js';
import { WorkflowInputSchema } from './types.js';

// WRONG - Missing .js extension
import { stepName } from './steps';
import { WorkflowInputSchema } from './types';
3. Determinism Requirement

CRITICAL: The workflow fn must be deterministic. No direct I/O operations are allowed in the workflow function.

typescript
// WRONG - Direct I/O in workflow
export default workflow( {
  // ...
  fn: async input => {
    const response = await fetch( 'https://api.example.com' ); // NEVER do this!
    return response.json();
  }
} );

// CORRECT - Delegate I/O to steps
export default workflow( {
  // ...
  fn: async input => {
    const result = await fetchDataStep( input ); // Steps handle I/O
    return result;
  }
} );

Related Skill: output-error-nondeterminism

Basic Structure

typescript
import { workflow, z } from '@outputai/core';

import { stepOne, stepTwo } from './steps.js';
import { WorkflowInputSchema, WorkflowOutput } from './types.js';

export default workflow( {
  name: 'workflowName',
  description: 'Brief description of what the workflow does',
  inputSchema: WorkflowInputSchema,
  outputSchema: z.object( { /* output shape */ } ),
  fn: async ( input ): Promise<WorkflowOutput> => {
    // Orchestrate step calls
    const result = await stepOne( input );
    const final = await stepTwo( result );
    return final;
  }
} );

Required Properties

name (string)

Unique identifier for the workflow. Use camelCase.

typescript
name: 'contentUtilsImageInfographicNano'
description (string)

Human-readable description of the workflow's purpose.

typescript
description: 'Generate high-quality infographic images using AI-powered ideation'
inputSchema (Zod schema)

Schema for validating workflow input. Import from types.ts.

typescript
inputSchema: WorkflowInputSchema

Related Skill: output-dev-types-file

outputSchema (Zod schema)

Schema for validating workflow output.

typescript
outputSchema: z.object( {
  results: z.array( z.string() ),
  metadata: z.object( {
    processedAt: z.string()
  } )
} )
fn (async function)

The workflow execution function. Must be deterministic.

typescript
fn: async ( input ): Promise<WorkflowOutput> => {
  // Step orchestration only - no direct I/O
  const result = await processStep( input );
  return result;
}

Complete Example

Based on a real workflow (image_infographic_nano):

typescript
import { workflow, z } from '@outputai/core';

import {
  generateImageIdeas,
  generateImages,
  validateReferenceImages
} from './steps.js';
import {
  WorkflowInput,
  WorkflowInputSchema,
  WorkflowOutput
} from './types.js';
import { normalizeReferenceImageUrls } from './utils.js';

export default workflow( {
  name: 'contentUtilsImageInfographicNano',
  description: 'Generate high-quality infographic images using Google Gemini 3 Pro Image model with AI-powered ideation',
  inputSchema: WorkflowInputSchema,
  outputSchema: z.array( z.string() ),
  fn: async ( rawInput: WorkflowInput ): Promise<WorkflowOutput> => {
    // Pre-process input (pure function - OK in workflow)
    const input = {
      ...rawInput,
      referenceImageUrls: normalizeReferenceImageUrls( rawInput.referenceImageUrls )
    };

    // Conditional step execution
    if ( input.referenceImageUrls && input.referenceImageUrls.length > 0 ) {
      await validateReferenceImages( {
        referenceImageUrls: input.referenceImageUrls as string[]
      } );
    }

    // Sequential step execution
    const ideas = await generateImageIdeas( {
      content: input.content,
      numberOfIdeas: input.numberOfIdeas,
      colorPalette: input.colorPalette,
      artDirection: input.artDirection
    } );

    // Parallel step execution
    const generations = await Promise.all(
      ideas.map( idea =>
        generateImages( {
          input: {
            referenceImageUrls: input.referenceImageUrls,
            aspectRatio: input.aspectRatio,
            resolution: input.resolution,
            numberOfGenerations: input.numberOfGenerations,
            storageNamespace: input.storageNamespace
          },
          prompt: idea
        } )
      )
    );

    return generations.flat();
  }
} );

Orchestration Patterns

Sequential Execution

Execute steps one after another:

typescript
fn: async input => {
  const step1Result = await stepOne( input );
  const step2Result = await stepTwo( step1Result );
  const step3Result = await stepThree( step2Result );
  return step3Result;
}
Parallel Execution

Execute independent steps concurrently:

typescript
fn: async input => {
  const [ resultA, resultB, resultC ] = await Promise.all( [
    stepA( input ),
    stepB( input ),
    stepC( input )
  ] );
  return { resultA, resultB, resultC };
}
Conditional Execution

Execute steps based on conditions:

typescript
fn: async input => {
  if ( input.includeImages ) {
    await processImages( input );
  }

  const result = input.mode === 'fast' ?
    await quickProcess( input ) :
    await detailedProcess( input );

  return result;
}
Fan-Out Pattern

Process multiple items in parallel:

typescript
fn: async input => {
  const results = await Promise.all(
    input.items.map( item => processItem( { item } ) )
  );
  return { processedItems: results };
}
Pipeline Pattern

Chain multiple transformations:

typescript
fn: async input => {
  const extracted = await extractData( input );
  const transformed = await transformData( extracted );
  const validated = await validateData( transformed );
  const enriched = await enrichData( validated );
  return enriched;
}

What is Allowed in Workflow fn

Allowed (Deterministic Operations)
  • Calling step functions
  • Pure data transformations
  • Conditional logic based on input
  • Array operations (map, filter, reduce)
  • Object destructuring and construction
  • Promise.all for parallel steps
  • Control flow (if/else, loops)
NOT Allowed (Non-Deterministic Operations)
  • HTTP requests (use steps)
  • Database queries (use steps)
  • File system operations (use steps)
  • Random number generation
  • Current date/time access
  • Environment variable access
  • Any external service calls

Verification Checklist

  • workflow and z imported from @outputai/core
  • All imports use .js extension
  • Default export used for the workflow
  • name is camelCase and unique
  • description clearly explains the workflow
  • inputSchema imported from types.ts
  • outputSchema matches actual return type
  • fn is deterministic (no direct I/O)
  • All I/O delegated to step functions
  • Code follows style conventions (see output-dev-code-style)
  • output-dev-step-function - Creating step functions that handle I/O
  • output-dev-evaluator-function - Using steps in evaluator functions
  • output-dev-types-file - Defining input/output schemas
  • output-dev-folder-structure - Where workflow.ts belongs
  • output-error-nondeterminism - Fixing determinism violations
  • output-error-zod-import - Fixing schema import issues
  • output-dev-code-style

© growthxai, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in coding_assistants/claude/plugins/outputai/skills/output-dev-workflow-function of growthxai/output.

Open the folder on GitHubat commit 52b51ac

Compare with similar skills

Output Dev Workflow Function next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Output Dev Workflow Function compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Output Dev Workflow Function this skillgrowthxai/output440—~2kAutomated safety check: PassApache-2.0
Azure Functionsdavila7/claude-code-templates32k2 repos~344Automated safety check: PassMIT
Neon Functionssickn33/agentic-awesome-skills47k1 repos~8.6kAutomated safety check: NotesApache-2.0
GCP Cloud Functionssickn33/agentic-awesome-skills47k2 repos~2.3kAutomated safety check: PassMIT
Securing Serverless Functionsmukul975/Anthropic-Cybersecurity-Skills34k—~3.1kAutomated safety check: PassApache-2.0
Performing Serverless Function Security Reviewmukul975/Anthropic-Cybersecurity-Skills34k—~3.1kAutomated safety check: PassApache-2.0

Similar skills

  • Azure Functions

    davila7/claude-code-templates

    Expert patterns for Azure Functions development including isolated worker model, Durable Functions orchestration, cold start optimization, and production patterns.

    32k GitHub starsUsed in 2 repos~344 tokens
    Backend & APIsAuto-check passed
  • Neon Functions

    sickn33/agentic-awesome-skills

    Long-running, serverless Node.js HTTP functions deployed onto your Neon branch, with DATABASEURL injected automatically and compute that runs next to your data.

    47k GitHub starsUsed in 1 repo~8.6k tokens
    Backend & APIsAuto-check: notes
  • GCP Cloud Functions

    sickn33/agentic-awesome-skills

    Deploy serverless functions on Google Cloud Functions. An agent skill from sickn33/agentic-awesome-skills.

    47k GitHub starsUsed in 2 repos~2.3k tokens
    Backend & APIsAuto-check passed
  • Securing Serverless Functions

    mukul975/Anthropic-Cybersecurity-Skills

    Hardens serverless compute platforms (AWS Lambda, Azure Functions, Google Cloud Functions): least-privilege IAM roles, dependency vulnerability scanning, secrets management integration, input…

    34k GitHub stars~3.1k tokensUpdated 1 mo ago
    Backend & APIsAuto-check passed
  • Performing Serverless Function Security Review

    mukul975/Anthropic-Cybersecurity-Skills

    Performing security reviews of serverless functions across AWS Lambda, Azure Functions, and GCP Cloud Functions to identify overly permissive execution roles, insecure environment variables…

    34k GitHub stars~3.1k tokensUpdated 1 mo ago
    Backend & APIsAuto-check passed
  • Add a function body definition to an ONNX operator, defining how it decomposes into simpler ops.

    22k GitHub stars~1.1k tokensUpdated yesterday
    AI & LLM EngineeringAuto-check passed

More from growthxai/output

All 52 skills in this repo
  • Zod schema constraints that Anthropic rejects or silently ignores when sent as structured-output tool definitions via aiSdk.Output.object().

    440 GitHub stars~597 tokensUpdated today
    Auto-check passed
  • Output Build Workflow

    growthxai/output

    Implement an Output SDK workflow from a plan document. An agent skill from growthxai/output.

    440 GitHub stars~2.2k tokensUpdated today
    Auto-check passed
  • Output Credentials Edit

    growthxai/output

    View, edit, and set encrypted credentials in an Output.ai project.

    440 GitHub stars~1.1k tokensUpdated today
    Auto-check: notes
  • Wire encrypted credentials to environment variables using the credential: convention.

    440 GitHub stars~930 tokensUpdated today
    Auto-check: notes
  • Output Credentials Init

    growthxai/output

    Initialize encrypted credentials for an Output.ai project. An agent skill from growthxai/output.

    440 GitHub stars~803 tokensUpdated today
    Auto-check: notes
  • Output Debug Workflow

    growthxai/output

    Debug Output SDK workflow issues. An agent skill from growthxai/output.

    440 GitHub stars~1.5k tokensUpdated today
    Auto-check passed

Questions about Output Dev Workflow Function

What does Output Dev Workflow Function do?

Create workflow.ts files for Output SDK workflows. An agent skill from growthxai/output. Output Dev Workflow Function is an agent skill from growthxai/output.ts files for Output SDK workflows.

When should I use Output Dev Workflow Function?

Output Dev Workflow Function fits situations like: defining workflow functions; orchestrating steps; fixing workflow structure issues.

How do I install Output Dev Workflow Function in Claude Code?

Run `npx skills add growthxai/output --skill output-dev-workflow-function -a claude-code`. Or copy the skill folder (coding_assistants/claude/plugins/outputai/skills/output-dev-workflow-function in growthxai/output) into .claude/skills/output-dev-workflow-function in your project. Claude Code loads it when a task matches its description.

How do I install Output Dev Workflow Function in Codex?

Run `npx skills add growthxai/output --skill output-dev-workflow-function -a codex`. Or copy the skill folder (coding_assistants/claude/plugins/outputai/skills/output-dev-workflow-function in growthxai/output) into .agents/skills/output-dev-workflow-function in your project. Codex loads it when a task matches its description.

Can I use Output Dev Workflow Function in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add growthxai/output --skill output-dev-workflow-function -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/output-dev-workflow-function, .gemini/skills/output-dev-workflow-function, .github/skills/output-dev-workflow-function and .opencode/skills/output-dev-workflow-function in your project.

What does Output Dev Workflow Function need to run?

SKILL.md names no scripts, command-line tools or credentials: Output Dev Workflow Function is instructions for the agent only. Its frontmatter pre-approves these tools: Read, Write, Edit.

Does Output Dev Workflow Function access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Output Dev Workflow Function safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Output Dev Workflow Function use?

Output Dev Workflow Function is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Output Dev Workflow Function use?

About 2k tokens (SKILL.md is roughly 8.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Output Dev Workflow Function?

Skills that share tags, products or a category with Output Dev Workflow Function: Azure Functions (davila7/claude-code-templates, 32k stars), Neon Functions (sickn33/agentic-awesome-skills, 47k stars), GCP Cloud Functions (sickn33/agentic-awesome-skills, 47k stars) and Securing Serverless Functions (mukul975/Anthropic-Cybersecurity-Skills, 34k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Output Dev Workflow Function?

growthxai (a GitHub organization) maintains it in growthxai/output, which has 440 GitHub stars. The repository holds 52 skills in this directory. The repository was last updated on October 7, 2026.

Source: growthxai/output on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.