• Projects
  • Service
  • About
  • branding.bz
  • Podcast
  • Tips
  • FAQ
  • Recruit
  • Download
  • Contact
  • branding.bz(ブランド構築SaaS)
  • DESIGN NOW(デザインメディア)
  • X
  • LinkedIn
  • Spotify
  • Facebook

213-0011 神奈川県川崎市高津区久本3-6-7-303

© 2026 ID INC. All rights reserved

claude-skills/スキル
SKILLOfficialdevelopment

output-error-zod-import

プラグイン
outputai
ソース
GitHub で見る ↗
説明

Output SDK のワークフロー(処理の流れ)で Zod スキーマ(データ形式の定義)のインポートの問題を解決します。 次のような場合に使用: - 「互換性のないスキーマ」というエラーが表示されている - ステップの境界(処理の段階の切り替わり)で型エラーが発生している - スキーマの検証に失敗している - 複数のステップ間でスキーマが一致していない

原文を表示

Fix Zod schema import issues in Output SDK workflows. Use when seeing "incompatible schema" errors, type errors at step boundaries, schema validation failures, or when schemas don't match between steps.

ユースケース
  • 互換性のないスキーマエラーが表示されている
  • ステップの境界で型エラーが発生している
  • スキーマの検証に失敗している
  • 複数ステップ間でスキーマが一致していない
本文(日本語訳)

Zod インポートソースの問題を修正する

概要

このスキルは、Zod スキーマ(データ構造の定義)が間違ったソースからインポートされている一般的な問題の診断と修正を支援します。Output SDK では、スキーマは zod から直接ではなく @outputai/core からインポートする必要があります。

次のような場合に使用

以下のようなエラーが表示されている場合:

  • 「スキーマに互換性がない」というエラー
  • ステップの境界でのタイプエラー
  • ステップ間でデータを渡す時のスキーマ検証失敗
  • Zod 型が一致しないことを言及したエラー
  • 「ZodObject を想定していますが~を受け取りました」というエラー

根本原因

この問題は、zod から直接 z をインポートする代わりに @outputai/core から z をインポートしていない場合に発生します。どちらも Zod スキーマを提供していますが、Output SDK コンテキスト内では互いに互換性のない異なるスキーマインスタンスを作成します。

なぜ重要か: Output SDK は内部で特定バージョンの Zod を使用して、データの保存と検証を行います。別の Zod インスタンスを使用すると、同じ形状を定義していても技術的には異なるオブジェクトになり、互換性がなくなります。

エラーの症状

エラーメッセージ

Error: Incompatible schema types
Error: Schema validation failed: expected compatible Zod instance
TypeError: Cannot read property 'parse' of undefined

原因となるコードパターン

// 間違い: 'zod' から直接インポート
import { z } from 'zod';

const inputSchema = z.object( {
  name: z.string()
} );

解決方法

ステップ1: 間違った Zod インポートをすべて見つける

コードベース内で誤ったインポートを検索します:

grep -r "from 'zod'" src/
grep -r 'from "zod"' src/

ステップ2: インポートを修正する

以下から:

// 間違い
import { z } from 'zod';

以下に変更します:

// 正解
import { z } from '@outputai/core';

ステップ3: 他の場所での Zod の直接使用がないか確認

インポートが誤って他の場所で zod を使用していないか確認します:

grep -r "import.*zod" src/

すべての検索結果は zod ではなく @outputai/core を示していることを確認してください。

完全な例

修正前(間違い)

// src/workflows/my-workflow/steps/process.ts
import { z } from 'zod';  // 間違い!
import { step } from '@outputai/core';

export const processStep = step( {
  name: 'processData',
  inputSchema: z.object( {
    id: z.string()
  } ),
  outputSchema: z.object( {
    result: z.string()
  } ),
  fn: async input => {
    return { result: `Processed ${input.id}` };
  }
} );

修正後(正解)

// src/workflows/my-workflow/steps/process.ts
import { z, step } from '@outputai/core';  // 正解!

export const processStep = step( {
  name: 'processData',
  inputSchema: z.object( {
    id: z.string()
  } ),
  outputSchema: z.object( {
    result: z.string()
  } ),
  fn: async input => {
    return { result: `Processed ${input.id}` };
  }
} );

確認手順

1. 間違ったインポートが残っていないか確認

# 結果が表示されないことを確認
grep -r "from 'zod'" src/
grep -r 'from "zod"' src/

2. プロジェクトをビルド

npm run output:worker:build

3. ワークフローを実行

npx output workflow run <workflowName> --input '<input>'

予防方法

ESLint ルール(ESLint を使用している場合)

Zod を直接インポートするのを防ぐルールを追加します:

// .eslintrc.js
module.exports = {
  rules: {
    'no-restricted-imports': [ 'error', {
      paths: [ {
        name: 'zod',
        message: "Import { z } from '@outputai/core' instead of 'zod'"
      } ]
    } ]
  }
};

IDE 設定

エディタを設定して @outputai/core から自動インポートするようにします:

VS Code の場合、settings.json に追加します:

{
  "typescript.preferences.autoImportFileExcludePatterns": ["zod"]
}

よくある落とし穴

同じファイル内での混在インポート

1 つの誤ったインポートでも問題が生じます:

import { z } from '@outputai/core';
import { z as zod } from 'zod';  // これが問題を引き起こします!

間接的な依存関係

ユーティリティファイルが誤ったインポートを使用していて、複数のファイルから使用されている場合:

// utils/schemas.ts
import { z } from 'zod';  // 間違い! これはこのスキーマを使用するすべてのファイルに影響します
export const idSchema = z.string().uuid();

サードパーティライブラリ

外部の Zod スキーマを使用している場合、再作成が必要な場合があります:

// 使用しないでください: externalLibrary.schema
// 代わりに: @outputai/core の z でスキーマを再作成してください

関連する問題

  • スキーマが正しくても型エラーが表示される場合は、output-error-missing-schemas を確認してください
  • インポートが正しいのに検証が失敗する場合は、スキーマの定義が実際のデータと一致していることを確認してください
原文(English)を表示

Fix Zod Import Source Issues

Overview

This skill helps diagnose and fix a common issue where Zod schemas are imported from the wrong source. Output SDK requires schemas to be imported from @outputai/core, not directly from zod.

When to Use This Skill

You're seeing:

  • "incompatible schema" errors
  • Type errors at step boundaries
  • Schema validation failures when passing data between steps
  • Errors mentioning Zod types not matching
  • "Expected ZodObject but received..." errors

Root Cause

The issue occurs when you import z from zod instead of @outputai/core. While both provide Zod schemas, they create different schema instances that aren't compatible with each other within the Output SDK context.

Why this matters: Output SDK uses a specific version of Zod internally for serialization and validation. When you use a different Zod instance, the schemas are technically different objects even if they define the same shape.

Symptoms

Error Messages

Error: Incompatible schema types
Error: Schema validation failed: expected compatible Zod instance
TypeError: Cannot read property 'parse' of undefined

Code Patterns That Cause This

// WRONG: Importing from 'zod' directly
import { z } from 'zod';

const inputSchema = z.object( {
  name: z.string()
} );

Solution

Step 1: Find All Zod Imports

Search your codebase for incorrect imports:

grep -r "from 'zod'" src/
grep -r 'from "zod"' src/

Step 2: Update Imports

Change all imports from:

// Wrong
import { z } from 'zod';

To:

// Correct
import { z } from '@outputai/core';

Step 3: Verify No Direct Zod Dependencies

Check your imports don't accidentally use zod elsewhere:

grep -r "import.*zod" src/

All matches should show @outputai/core, not zod.

Complete Example

Before (Wrong)

// src/workflows/my-workflow/steps/process.ts
import { z } from 'zod';  // Wrong!
import { step } from '@outputai/core';

export const processStep = step( {
  name: 'processData',
  inputSchema: z.object( {
    id: z.string()
  } ),
  outputSchema: z.object( {
    result: z.string()
  } ),
  fn: async input => {
    return { result: `Processed ${input.id}` };
  }
} );

After (Correct)

// src/workflows/my-workflow/steps/process.ts
import { z, step } from '@outputai/core';  // Correct!

export const processStep = step( {
  name: 'processData',
  inputSchema: z.object( {
    id: z.string()
  } ),
  outputSchema: z.object( {
    result: z.string()
  } ),
  fn: async input => {
    return { result: `Processed ${input.id}` };
  }
} );

Verification Steps

1. Check for remaining wrong imports

# Should return no results
grep -r "from 'zod'" src/
grep -r 'from "zod"' src/

2. Build the project

npm run output:worker:build

3. Run the workflow

npx output workflow run <workflowName> --input '<input>'

Prevention

ESLint Rule (if using ESLint)

Add a rule to prevent direct zod imports:

// .eslintrc.js
module.exports = {
  rules: {
    'no-restricted-imports': [ 'error', {
      paths: [ {
        name: 'zod',
        message: "Import { z } from '@outputai/core' instead of 'zod'"
      } ]
    } ]
  }
};

IDE Settings

Configure your editor to auto-import from @outputai/core:

For VS Code, add to settings.json:

{
  "typescript.preferences.autoImportFileExcludePatterns": ["zod"]
}

Common Gotchas

Mixed Imports in Same File

Even one wrong import can cause issues:

import { z } from '@outputai/core';
import { z as zod } from 'zod';  // This causes problems!

Indirect Dependencies

If a utility file uses the wrong import and is shared:

// utils/schemas.ts
import { z } from 'zod';  // Wrong! This affects all files using these schemas
export const idSchema = z.string().uuid();

Third-Party Libraries

If using external Zod schemas, you may need to recreate them:

// Don't use: externalLibrary.schema
// Instead: recreate the schema with @outputai/core's z

Related Issues

  • If schemas are correct but you still see type errors, check output-error-missing-schemas
  • For validation failures with correct imports, verify schema definitions match actual data

原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。