これはWeekend Challenge: Passion Editionへの投稿です
What I Built
目標は、既存のClaudeスキルをGoogle AIに変換することでした。Geminiは無料プランでは利用できなくなったため、これはGoogle Antigravityです。
すべてのAIコーディングエージェントには、背後にあるモデルに関係なく、同じ失敗モードがあります:コードベースについて完全な自信を持って何かを述べ、それが間違っているということです。なぜなら自信と検証は異なるものであり、典型的なセッションでは後者を強制するものは何もないからです。フォールバックパスが安全であると仮定するのは、それがあるべきように見えるからです。共有型の変更を「追加的」と呼ぶのは、diffが追加的に見えるからで、実際に誰がそれをインポートしているかを確認することなくです。テストスイートが緑色であることを、動作が保存されている証拠として報告しますが、緑色のスイートが実際に証明するのは、誰かがすでに書き留めておくことを考えた入力に対して動作が保存されているということだけです。これは十分に賢くないモデルの問題ではありません。セッションが長くなるにつれて悪化します。改善されるのではなく、なぜならコンテキストが10分前に言われたからという理由だけで真実のように感じられるもので満たされるからです。
Session Discipline Kitが存在するのは、「作業をダブルチェックする」という指示は、エージェントが同意した後で静かに従わないことができるからです。これは、締め切りのプレッシャーの下にいる人がそうできるのと同じです。散文のルールは一貫して従われません。メカニズムは従われます。そこで、コンテキストファイルにエージェントが編集前に検証するよう求めるもう1つの段落の代わりに、このキットはそのルールを環境自体に組み込みます:エージェントが現在のセッションで実際に開いて読んでいないファイルへの編集をブロックするフック——完全停止で、それがどれほど自信たっぷりに聞こえるかに関係なく。この1つのメカニズムは、欠けていた読み取りにかかった時間の4倍かかる「奇妙で、まれで、再現しにくい」動作として3週間後に表面化するのではなく、出荷前に間違いの全カテゴリをキャッチします。
検証は床であり、システム全体ではありません。残りは、実際の変更の形状にマッピングされた9つのスキルで、実際に起こる順序で:コードが書かれる前に反証可能なほど具体的なスコープを述べること、後でdiffと照合するための具体的なものがあるように;共有ファイルに触れる前にそのすべての実際のコンシューマーを列挙すること、なぜならモノレポではdiffは常に小さく見え、影響範囲はそうでない数だから;出力の形状が正しさに関係するものに対してゴールデンスナップショットテストをスキャフォールディングすること、これは1つのブール値ではなく、まさにグリーンスイートが実際の回帰を出荷するところです。なぜなら壊れた入力は誰かの手書きのセットに決して入らなかったからです;diffを他人が書いたかのようにレビューすること、書いた記憶がなく、当時健全に感じられた推論に対するクレジットもない;そしてセッションの最後に実際の現在のリポジトリ状態からハンドオフドキュメントを再生成すること、会話が自分自身について記憶しているものからではなく。
最後のものは座って考える価値があります、なぜならそれは残りのキットが最終的に保護するために存在する問題だからです。新しいAIセッションは最後のセッションの記憶をゼロから始め、その状況のすべてがエージェントを、すでに持っていたコンテキストを再導出すること——遅い——または実際に再チェックしていないことを静かに仮定すること——速く、そして最終的に間違っている——へと押しやります。会話の記憶からではなく、git statusと実際のdiffから構築されたハンドオフは、そのサイクルを根本で断ち切ります:次のセッションは、どれほど善意であっても、他人の未検証の自信ではなく、検証された状態を継承します。
どれも、何が間違えやすい傾向にあるかについての推測ではありません。6つの実際の、一般化された失敗パターンから構築され、変更の各段階がどのルールを保護しているかを正確に命名する12ポイントの方法論に段階化され、さらにそれがすべて最も激しく噛みつく場所についての専用ディープダイブがあります:TypeScriptモノレポの集中型設定で、小さく、自信たっぷりで、間違った編集が誰かが気づく前にすべてのダウンストリームコンシューマーに到達します。インストールし、2つのフックをAntigravityのフックシステムに組み込み、コンテキストファイルを1行に向けます。規律は、毎セッション求めなければならないことを思い出すものではなく、環境がただ強制するものになります。
Demo
Install
python3 install.py /path/to/repo
Code
Session Discipline Kit for Antigravity CLI
Stops Antigravity from confidently guessing — hooks that block unverified edits, skills that scope work and hand off cleanly across sessions.
The problem
An AI coding agent starting a new session has no memory of the last one, no built-in sense of how far a change to a shared file reaches, and no mechanism forcing it to actually read a file before making claims about it. Left alone, that produces a specific, recurring set of failures: fallback paths that silently absorb cases they were never designed for, additive-looking changes to centralized files that break four other packages, green test suites that shipped a real regression because the broken input just wasn't in the set anyone thought to write down, sessions that drift from a one-line bug fix into an unreviewable six-file change with no stated scope to check it against.
None of this is…
How I Built It
That timeline is the shape of it — here's the texture.
The kit didn't start as an open-source project. It started as a private discipline system for one developer's actual daily work: a solo founder building a compiler-heavy TypeScript platform, tired of watching an AI coding agent confidently state things about a codebase it hadn't actually checked. It lived quietly in a .claude/ folder, doing its job, until the ground it was built on shifted — a platform transition on Google's side cut off the free-tier access the next tool in line depended on, and what had been a working setup for one tool suddenly needed to work for a different one entirely.
The porting process is where it stopped being a routine rewrite. The first target, Gemini CLI, turned out to share a lot of DNA with the original — same JSON-over-stdin hook contract, same event-driven shape — right up until it didn't: the hook config went in confidently, and the CLI's own startup output immediately flagged an event name as invalid. Not a guess corrected by more research, but a real tool refusing a real config and saying exactly why. The fix went in, and a second, subtler mismatch showed up the same way — a tool's internal name didn't match its display name, a naming quirk the platform's own team had filed a bug about. Then, before that version even finished settling, the platform itself got sunset for free-tier accounts and replaced with something new: a separate, closed-source rewrite with a barely-documented hook system that different sources described inconsistently, sometimes contradicting each other outright. There was no clean primary source to check against this time, so the response was to build for the disagreement instead of guessing past it — register the hook under every plausible naming convention, make the verification logic care about file state instead of tool-specific names wherever possible, and say plainly, in the code itself, which parts were confirmed and which were a reasonable bet.
Which is the part worth sitting with: a kit whose entire purpose is refusing to trust an unverified claim was built by applying that exact standard to itself, at every step. Nothing about a target platform's hook schema got accepted because a blog post said so confidently — it got checked against what the live tool actually did, the same way this kit insists an agent check a file instead of trusting its memory of one. Where that check failed the first time, it got corrected the same way a session drifting off course gets corrected: not by trying harder to guess right, but by looking at the real output and updating. The methodology didn't just get built and then, separately, proven to work. Building it was the first real test of it.
Prize Categories
Best Use of Google AI

0 Comments
Log in to join the conversation.No comments yet. Be the first to share your thoughts.