原文(日本語訳)
文字列内にUnicodeのクォートエスケープを含むワークフロースクリプトが、パースされる前に破損してしまう問題を修正しました。また、ワークフローのパースエラーが発生した際、常にTypeScriptを原因として表示するのではなく、問題のある行を表示するようになりました。
原文(英語)
Fixed workflow scripts with unicode quote escapes in strings being corrupted before parsing; workflow parse errors now show the offending line instead of always blaming TypeScript
概要
これはバグ修正のアップデートです。Claude Codeの「ダイナミックワークフロー」機能では、Claudeがタスクに応じてJavaScriptのオーケストレーションスクリプトを自動生成しますが、生成されたスクリプトの文字列リテラル内に「"」「"」のようなUnicodeのカーブクォート(スマートクォート)がエスケープシーケンスとして含まれている場合、スクリプトがパース(構文解析)される前にその文字が破損し、意図しない構文エラーを引き起こすことがありました。今回の修正でこの破損が解消されるとともに、パースエラー発生時のメッセージも改善され、これまで一律で「TypeScriptのエラー」として表示されていたものが、実際に問題となっている行を具体的に示すように変更されました。
基本的な使い方
Claude Codeのダイナミックワークフローは、プロンプト内で ultracode というキーワードを使うか、「ワークフローを使って」のように自然な言葉で依頼することで開始できます。Claudeがタスクの内容に応じてJavaScriptのオーケストレーションスクリプトを書き、そのスクリプトがバックグラウンドで実行されます。
ultracode: src/routes/ 以下のすべてのルートハンドラーを認証漏れがないか監査して生成されたワークフローを繰り返し使いたい場合は、/workflows で実行結果を選択して s キーを押すと、スクリプトを次のいずれかの場所にコマンドとして保存できます。
.claude/workflows/(プロジェクト共有)~/.claude/workflows/(個人用、全プロジェクトで利用可能)
保存されたスクリプトは meta ブロックとスクリプト本体(トップレベルawaitを使うプレーンなJavaScript)から構成されます。
export const meta = {
name: 'audit-routes',
description: 'すべてのルートハンドラーの認証漏れを監査する',
}
const found = await agent('src/routes/ 以下の.tsファイルを一覧表示して', {
schema: { type: 'object', required: ['files'], properties: { files: { type: 'array', items: { type: 'string' } } } },
})
const audits = await pipeline(found.files, file =>
agent(`${file} の認証漏れを監査して`, { label: file }),
)
return audits.filter(Boolean)実践例
コピー&ペーストしたテキストを含むワークフロースクリプトの安定動作
ワークフローのプロンプトやテンプレート文字列には、ドキュメントやチャットからコピーした文章をそのまま含めることがよくあります。日本語の文章や海外サイトの引用文には、直線的なASCIIクォート(" ')ではなく、" " のような両側で形の異なるカーブクォート(スマートクォート)が使われていることが少なくありません。
修正前は、こうしたUnicodeクォート文字がスクリプト内の文字列リテラルとしてエスケープされている場合に、パース前の処理過程で文字が壊れてしまい、以下のようなワークフローが失敗することがありました。
const prompt = `レビュー観点: "セキュリティ上の懸念点" を中心に確認して`今回の修正により、このようなUnicodeクォートを含む文字列があっても破損せずに正しくパースされるようになったため、海外ドキュメントの引用や日本語の資料をそのままプロンプトに貼り付けてワークフローを組み立てても、安定して動作するようになりました。
パースエラー発生時に問題行を特定してデバッグする
修正前は、ワークフロースクリプトの構文エラーが発生すると、実際の原因に関わらず一律で「TypeScriptのエラー」として扱われるメッセージが表示され、どの行が問題なのかを特定するのに手間がかかっていました。
今回の修正後は、パースエラーが発生した際に、問題のある実際の行番号や該当箇所が表示されるようになりました。これにより、次のような手順でデバッグがしやすくなります。
- ワークフロー実行時に表示される承認画面で View raw script(または
Ctrl+Gでエディタを開く)を選び、生成されたスクリプトを確認する - パースエラーが出た場合は、表示された行番号をもとに該当箇所(多くの場合、文字列リテラル内のクォート文字や特殊文字)を確認する
- 問題箇所を修正してから、Claudeに編集後のスクリプトで再実行を依頼する
/workflows の実行結果一覧からスクリプトを保存済みコマンドとして再利用している場合も、同様にエラーメッセージから問題行を素早く特定できます。
注意点
- これは新機能ではなくバグ修正です。この修正の恩恵を受けるには、Claude Codeをv2.1.202以降にアップデートしておく必要があります。
- ワークフロースクリプトはClaudeが自動生成するものですが、コピー&ペーストした引用文などスマートクォートを含むテキストをプロンプトに含めた場合、パース自体は正しく行われるようになったものの、生成コードの可読性や意図した挙動になっているかは念のため View raw script で確認することをお勧めします。
- パースエラーメッセージの改善は、あくまで「どの行が原因か」を特定しやすくするものであり、エラーの根本原因(クォートの閉じ忘れなど)自体を自動修正するものではありません。
- ワークフロー機能全般(ダイナミックワークフロー)はPro/Max/Team/Enterpriseなど有料プランおよびAPI経由の利用で使用でき、Claude Code v2.1.154以降が必要です。組織やユーザー側で無効化されている場合は本修正の対象となる機能自体が利用できません。