Lovaiの外部API(Session Capture)で投稿するとブロックのテキストが空になるバグを発見。原因はスキルのSKILL.mdにcontent JSONの具体的なキー構造が未定義だったこと。
Lovaiの外部API(Session Capture)で投稿すると、ブロックは作成されるがテキストが空になるバグを発見・修正した。原因は、スキルのSKILL.mdにcontent JSONの具体的な構造が定義されておらず、フロントエンドが期待する content.text キーではなく、不正な形式でデータが送信されていたこと。
フロントエンドの表示コード(dataConverters.ts)を調査し、ブロックタイプごとにどのキーでテキストを読み出しているかを特定した。テキストブロックは content.text、コードブロックは content.code / content.codeSnippet を参照している。API側(route.ts)は content をそのままJSONBに保存しているだけなので、スキル側が正し...
SKILL.mdにはブロック構成の「概念」は書かれていたが、content JSONの具体的なキー名(text, code, section)が明記されていなかった。そのため、スキル実行時にAIが content: "テキスト本文" のような文字列直接渡しや、content: { body: "..." } のような間違ったキーで送信していた可能性が高い。DBにはJSONBとしてそのまま保存される...
外部APIを設計するとき、スキーマの「例」を省略するとAIエージェントが誤った形式でデータを送る。特にJSONBのような自由度の高いカラムでは、バリデーションで弾けない不正構造がサイレントに保存されてしまう。APIドキュメントやスキル仕様書には、必ず「完全なリクエストボディ例」を含めるべき。
