Study Notes / 2026 ・ No.06
Vibe Coding覚書
大きなシステムで、AGENTS.md の外側に置くもの
公開
この回で答えること
結論を先に言うと、「仕様・規則・検証を、ファイルと仕組みに分けて置く」です
前回は、エージェントに渡す「約束ごと」の AGENTS.md を書きました。
ただ、画面が数十枚あるような業務システムを AI と作るなら、それだけでは足りません。
何をどこに置き、どう進めるのかを、受発注システムを例にまとめます。
Vibe Coding の現在地
「Vibe Coding」は、2025年2月に Andrej Karpathy 氏が名付けた言葉です。元の定義は「雰囲気に身をまかせ、コードが存在することさえ忘れる」書き方で、本人も使い捨ての試作や遊びに向くものとして紹介していました。
1年後の2026年2月、同じ Karpathy 氏は、仕事で使う形に別の名前を付けています。「エージェンティック・エンジニアリング」── コードを自分で書くのは1%で、残りはエージェントに書かせて監督する。「エンジニアリング」と呼ぶのは、そこに技術と専門性があるからだ、という説明です。実務で「Vibe Coding」と言うときは、こちらの意味で使われることも多くなりました。この記事も、その意味で書きます。
監督が要る理由は、データにも出ています。
| 調査 | 分かったこと |
|---|---|
| METR (2025年7月) | 経験豊富な OSS 開発者16人のランダム化比較試験で、AI ツールを使うと作業時間が19%長くなった。本人たちは速くなったと感じていた |
| Veracode (2026年3月) | 150以上のモデルが書いたコードのうち、セキュリティ検査を通ったのは55%。文法的な正しさは95%以上に上がったのに、安全性は2025年からほぼ横ばい。XSS 対策は15%しか通らない |
AI は「動くコード」をとても上手に書くようになりました。けれど「正しい仕様どおりか」「安全か」「前に決めたことと矛盾しないか」は、放っておくと保証されません。規模が大きくなるほど、この差が効いてきます。
AGENTS.md の外側に要るもの ── Q1 の答え
AGENTS.md は「毎回読ませる約束」です。短くしか書けない以上、それ以外は別の場所に置きます。足りないのは大きく三つ。何を作るか(仕様)、どこでどう書くか(分野別のルールと手順書)、そしてできたかを確かめる仕組みです。
| 置くもの | 中身 | 例 |
|---|---|---|
| 仕様(spec) | 機能ごとに、目的・対象外・受け入れ条件 | specs/012-order-approval/spec.md |
| 計画・タスク | どう作るか、どんな順で作るか | plan.md、tasks.md |
| ADR | 決めたことと、その理由(設計判断の記録) | docs/adr/0007-approval-state.md |
| プロダクトの説明 | 何のためのシステムか、用語集、全体の構成 | docs/product.md、architecture.md |
| 分野別のルール | API・画面・DB など、その場所でだけ効く規則 | .claude/rules/api.md |
| スキル(手順書) | 繰り返す作業の手順 | 新機能の始め方、リリース手順 |
| 確かめる仕組み | テスト、型、lint、E2E、CI、フック | 保存するたびに lint、PR ごとに CI |
| 外部とのつなぎ | DB、チケット、ブラウザなどを AI から触る | MCP サーバー |
ポイントは、読み込まれるタイミングが違うことです。全部を AGENTS.md に詰めると、毎回すべてを読ませることになり、前回の研究のとおり、かえって成績が落ちます。
置いたものが、いつ読み込まれるか
上の3段は「お願い」で、守られないこともある。下の段だけが、必ず効く
仕様駆動という進め方
いまの主流は仕様駆動開発(Spec-Driven Development)です。コードを書かせる前に、何を作るか(仕様)→ どう作るか(計画)→ 作業の分解(タスク)を文書にし、人が確かめてから実装に入ります。
道具も出そろってきました。代表的な二つを並べます。
| GitHub Spec Kit | Kiro(AWS) | |
|---|---|---|
| 形 | オープンソースの CLI + 各エージェント向けのコマンド。30以上のエージェントで使える(2026年に v1.0) | 仕様の機能を組み込んだ IDE |
| 作る文書 | constitution.md(原則)、spec.md、plan.md、tasks.md。必要に応じて research.md・data-model.md・contracts/ | requirements.md(または bugfix.md)、design.md、tasks.md |
| 置き場所 | specs/NNN-機能名/ | .kiro/specs/機能名/ |
| 流れ | constitution → specify → clarify → plan → tasks → analyze → implement | 要件から始めるか、設計から始めるかを選べる |
名前は違っても、中身はほぼ同じです。仕様・計画・タスクの三つの文書を機能ごとのフォルダに置き、段階ごとに人が確かめる。とくに大事なのは次の二つです。
- AI に質問させる段階を入れる ── Spec Kit の clarify のように、書きかけの仕様を AI に読ませて「決まっていないこと」を洗い出させます。仕様の穴は、コードになってから見つかるほど高くつきます
- 仕様は機能ごとに分ける ── Kiro の公式も、1つの巨大な仕様ではなく「認証」「商品一覧」「カート」のように機能ごとに分けるよう勧めています。1つが小さいほど、AI も人も読み切れます
道具を入れなくても、同じ形のフォルダと Markdown を手で作れば、どのエージェントでも同じ進め方ができます。次の章の配置は、道具に依存しない形にしてあります。
ファイルの配置 ── Q2 の答え
例として、社内向けの受発注管理システムを考えます。画面は30枚ほど、フロントとAPIとDBがあり、購買・営業・経理が使う、というくらいの規模です。リポジトリはこう分けます。
置き方の原則は五つです。
- 毎回読むものは薄く、必要なときに読むものは厚く ── AGENTS.md は入口と約束だけ。詳しいことは docs/ と specs/ に置き、AGENTS.md から場所を示します
- 仕様は機能ごとに番号つきのフォルダ ── 012、013 と番号を振ると、順番と履歴が分かり、ブランチ名や PR とも対応させやすい
- 決めたことは ADR に、理由と一緒に ── 「なぜ PostgreSQL か」「なぜ承認を状態遷移で持つか」。AI が勝手に設計を変えそうになったとき、根拠として効きます
- 分野別のルールは、パスで限定する ── API の規則は API を触るときだけ読ませる。毎回読ませない
- 同じことを二か所に書かない ── ルールから docs を参照する。写すと、片方だけが古くなります
入口になる AGENTS.md は、たとえばこうです。前回の例と違うのは、「仕様がないものは作らない」という進め方そのものを約束にしている点です。
道具ごとの置き場所の違いは、次のとおりです。
| 役割 | Claude Code | Cursor | Kiro |
|---|---|---|---|
| 毎回読む約束 | AGENTS.md(または CLAUDE.md) | AGENTS.md、Always のルール | .kiro/steering/ |
| 分野別のルール | .claude/rules/(paths で限定) | .cursor/rules/(globs で限定) | steering の読み込み条件 |
| 仕様 | specs/(形は自由) | specs/(形は自由) | .kiro/specs/機能名/ |
1つの機能を通してみる ── Q3 の例
受発注システムに「発注の承認フロー」を足す場面で、仕様から検証までを通してみます。進め方は6段階で、そのうち3か所で人が承認します。
1つの機能の進め方
段階を飛ばしたくなるのは、たいてい急いでいるとき。そのときほど手戻りが大きい
STEP 1 仕様を書く(spec.md)
目的と受け入れ条件は、人が書きます。業務の事情を知っているのは人だけだからです。書けたら AI に読ませて、「決まっていないことを質問して」と頼みます。
受け入れ条件は、そのままテストにできる書き方にします。「使いやすく」ではなく「50万円以上なら承認待ちになる」。条件と結果が一文ずつ対応していれば、STEP 5 で AI にも人にも判定できます。
STEP 2 計画を立てる(plan.md と ADR)
計画は AI に書かせ、人が判断します。見るべきは「既存の構成を壊していないか」「決めてあることと矛盾しないか」。状態の持ち方のような後から変えにくい判断は ADR に残します。
STEP 3 タスクに分ける(tasks.md)
1タスクは1回のやりとりで終わり、終わったと確かめられる大きさにします。テストを書くタスクを実装より前に置くのがコツです。
STEP 4〜6 実装・検証・仕様を閉じる
- 実装 ── tasks.md を上から1つずつ。1タスク1コミットにしておくと、おかしくなったときに戻る場所がはっきりします。広く調べる作業(影響範囲の洗い出しなど)はサブエージェントに任せ、本筋の会話を散らかさない
- 検証 ── 「テスト・型・E2E が通る」を完了の条件にし、CI で必ず回します。人のレビューは差分より先に、受け入れ条件と照らして。権限チェックの漏れや XSS のような安全性は、明示的に見る(第一章の数字のとおり、放っておくと半分近くが素通りします)
- 仕様を閉じる ── 実装中に決まったこと(代理承認は不要、など)を spec.md に戻して、仕様とコードを一致させて終えます。ずれた仕様は、次の機能で AI を間違った方向に導きます
ルールとフック
分野別のルールは、その場所を触るときだけ読ませるのが基本です。Claude Code なら .claude/rules/ のファイルの先頭に paths を書くと、一致するファイルを読んだときだけ読み込まれます。Cursor の .cursor/rules/ も、globs で同じことができます。
ルールは「お願い」です。必ず守らせたいことは、フックや CI に移します。Claude Code の公式ドキュメントも「『.env を編集しない』と書くのはお願いで、保証ではない。毎回守られるべきならフックにせよ」と書いています。たとえば、ファイルを書き換えるたびに lint を走らせるフックはこうです。
| こうなったら | 足すもの |
|---|---|
| 同じ間違いを2回された | AGENTS.md に1行、または分野別のルール |
| 同じ手順を3回説明した | スキル(手順書) |
| 毎回必ず起きてほしい | フック |
| 絶対に起きてはいけない | 権限の設定、ブランチ保護、CI |
| 調べものが会話を埋める | サブエージェント |
この表は Claude Code 公式の「少しずつ育てる」ための目安をもとにしています。最初から全部そろえる必要はありません。
いまのベストプラクティス ── Q3 の答え
やや大きなウェブシステムを AI と作るときの、2026年9月時点のやり方を10項目にまとめます。共通しているのは、人は「何を作るか」と「できたか」を握り、「どう書くか」を AI に任せるという分担です。
| やること | |
|---|---|
| 01 | 機能ごとに、仕様から始める。受け入れ条件はテストにできる書き方で |
| 02 | 人の関門を3つ置く。仕様・計画・検証。ここを飛ばさない |
| 03 | AI に質問させてから計画する。仕様の穴はコードになる前に塞ぐ |
| 04 | タスクは小さく、検証方法つきで。1タスク1コミット |
| 05 | テストを先に、少なくとも同時に。「テストが通る」を完了の定義にする |
| 06 | 毎回読むものは薄く。AGENTS.md は入口と約束だけ、分野別の規則はパスで限定 |
| 07 | 繰り返す手順はスキルに、必ず守らせることはフック・CI・権限に |
| 08 | 決めたことは ADR に、理由と一緒に |
| 09 | 安全性は明示的に見る。セキュリティの規則をルールに書き、CI に静的解析を入れ、レビューで権限と入出力を確かめる |
| 10 | 仕様とコードのずれを残さない。機能を閉じるときに仕様を更新する |
逆に、避けたいことも三つ挙げておきます。
- 巨大な仕様書を一度に書かせる ── 読み切れない仕様は、誰も確かめていない仕様です
- AI が書いた文書を読まずにコミットする ── 前回の研究のとおり、自動生成のまま置いた指示はかえって成績を下げます
- 画面で動いたから完成とする ── 「動く」と「正しい」「安全」は別物です
道具や名前は、これからも変わっていきます。ここで挙げたのは、Spec Kit や Kiro、Claude Code や Cursor の公式ドキュメントに共通している考え方を、道具に依存しない形にまとめたものです。
結 — 一枚まとめ
- 「Vibe Coding」は、仕事ではAI に書かせて人が監督する形(Karpathy 氏の言う「エージェンティック・エンジニアリング」)になった。AI のコードは動くが、正しさと安全は放っておくと保証されない。
- AGENTS.md の外側に置くのは、仕様(spec・plan・tasks)、ADR、プロダクトの説明、分野別のルール、スキル、確かめる仕組み。読み込まれるタイミングで置き場所を分ける。
- 仕様は specs/番号-機能名/ に機能ごと。決めたことは docs/adr/。分野別のルールはパスで限定。
- 1つの機能は仕様 → 計画 → タスク → 実装 → 検証 → 仕様を閉じる。仕様・計画・検証で人が承認する。
- 必ず守らせたいことは、書くだけでなくフック・CI・権限で止める。安全性は明示的に確かめる。
参考
- The New Stack — Karpathy 氏の「エージェンティック・エンジニアリング」(2026年2月)
- METR — AI ツールが経験豊富な OSS 開発者の生産性に与える影響(2025年7月)
- Veracode — Spring 2026 GenAI Code Security Update
- GitHub — Spec Kit
- Kiro — Specs
- Claude Code — CLAUDE.md・スキル・フックなどの使い分け
- Claude Code — .claude/rules とパス限定のルール
- Cursor — Rules
- Architectural Decision Records(ADR)
Vibe Coding覚書 — 全七章 / 2026.09