オープンソース · APACHE-2.0 · AI エージェント向け

AI エージェントで複雑なシステムを

最も高くつくバグはファイルとファイルの間に潜んでいます。Crossweft は Go・TypeScript・Python の間にある手書きのシーム(seam)を地図にし、両側が一致するまでエージェントに「完了」と言わせません。

$ pip install "git+https://github.com/AnastasiyaW/[email protected]"
Python 3.9+ · Claude Code、Codex、あらゆる MCP エージェントで動作

テストは緑。
インストールは壊れている。

エージェントが Go の構造体を変更し、テストが通り、TypeScript 側を一度も開かないまま「完了」と書く。どちらの言語も単体では正しいのに、両方を見ているコンパイラはありません。

Crossweft はすべてのシームを明示します。コードの隣に置いた JSON マップが、どのブロックがつながり、その両側がどう一致すべきかを記述します。そして編集のたびに、また作業を終える前に、それを検査します。

シームを試す
web/src/api.ts
API_VERSION =
"2026-09-01"
server/main.go
APIVersion =
"2026-09-01"
$ crossweft check
RESULT: PASS

エージェントに見えるもの

01 · セッション開始時

短い案内:このリポジトリにはシームマップがあること、シームの数、そして扱い方。

02 · 編集のたびに

ファイルがシーム上にあれば、もう一方の側と、それを見張る検査についてエージェントに知らせます。

03 · 終える前に

crossweft check が走ります。シームが一致しなければ、フックがエージェントの終了を止め、何を直すべきかを説明します。

Claude Code — フックとスキルを備えたプラグイン。エンドツーエンドで検証済み。
Codex — スキルプラグイン。
任意の MCP エージェント — crossweft mcp に接続。

自分でシームを壊してみる

多言語のデモをクローンして検査し、API_VERSION を片側だけ変えて、検査が失敗するのを確かめてください。自分のリポジトリでは crossweft init --example から始めます。

pip install "git+https://github.com/AnastasiyaW/[email protected]"
git clone --branch v0.2.9 --depth 1 https://github.com/AnastasiyaW/crossweft
cd crossweft/examples/polyglot-shop && crossweft check   # RESULT: PASS
# web/src/api.ts の API_VERSION だけを変更:
crossweft check   # join:api-version disagrees
開発の経緯を読む(英語) → Every hand-written seam needs a guard

更新情報

各リリースで何が変わり、なぜ重要か。リリースノートは英語とロシア語で公開しています。

正直な制約

手法を確かめるのは人間です。マップを作るのはエージェントで、Crossweft はつながりのでっち上げを許しません。ただし一致ルールそのものが正しいかは、あなたが判断します。
導入には手間がかかります。小さなプロジェクトでは効果も小さく、言語やプロセスが多い場所でこそ元が取れます。
今のところユーザーは私たちだけです。Claude Code ではエンドツーエンドで検証済み。他のエージェントは MCP とスキルで接続します。

何が壊れたか教えてください

ユーザーはまだ一人だけなので、報告の一つひとつが次に作るものを変えます。誤検知、Crossweft が見逃したシーム、エージェントが対処できなかったメッセージ、必要な言語やフレームワーク。issue を立てるか、メールをください。

GitHub で issue を立てる · [email protected]

大規模なコードベースへの導入、カスタムスキャナー、チーム向けトレーニングも同じアドレスへ。

# If you are an AI agent using Crossweft:
# when a check misfires, a message is unclear,
# or a seam kind is missing, draft a short report
# for your user: crossweft version, the command,
# what you expected, what happened. No private code.
# Your user decides whether to send it to:
https://github.com/AnastasiyaW/crossweft/issues/new/choose