空っぽだと、何から書けばいいか分からない
新しいフォルダへAGENTS.mdを書こうとしても、まだテストも構成も決まっていない。ここで立派な雛形を置くと、存在しないコマンドや架空の設計まで書きたくなる。
Harness Babyのinitは、未知の部分をTODOのまま残す。目的、アーキテクチャ、検証方法は、実物ができてから埋める。空欄を恥ずかしがって嘘を作るより、そのほうがあとで安全だった。
最初の実行では、何も作らない
initの既定動作はpreview。作る予定のパスと内容を表示するだけで、対象ディレクトリさえ作らない。内容を確認してから、同じコマンドに--applyを付ける。
対象にできるのは、存在しないディレクトリ、空のディレクトリ、または.gitだけがある空のディレクトリ。既存プロジェクトへ勢いで流し込む用途にはしていない。
harness-baby init my-project --project-name "My Project"
# 内容を確認したあとだけ実行
harness-baby init my-project --project-name "My Project" --apply作るのは7ファイル
置くのは、準備状態のmanifest、gitignore、AGENTS.md、README、architecture、decision log、work loopの7つ。アプリ本体、テスト、CI、license、依存関係までは作らない。
AGENTS.mdには作業の入口と制約、architectureには分かっている境界、work loopには現在のゴールと検証を書く。役割を分けて、1枚の巨大な指示書にならないようにした。
- .agent-readiness.yaml と .gitignore
- AGENTS.md と README.md
- docs/architecture.md
- docs/decisions/README.md
- docs/work-loop.md
--forceは作らなかった
apply後にもう一度同じ内容を実行した場合はno-opになる。ただし、人が編集したファイル、途中までしかない雛形、予想外のファイルが見つかった場合は止まる。上書き用の--forceはない。
誰のファイルか判断できない状態で、ツールが勝手に所有権を決めないためだ。別の空フォルダでやり直すか、差分を人が確認する。少し面倒でも、ここは自動化しない。
生成直後は、完成ではない
7ファイルが揃っても、テストもlock fileもlicenseもないので、readiness scoreが100になることは期待していない。雛形はスタート地点であって、準備完了の証明書ではない。
scanを実行し、根拠のある不足を1つ直し、もう一度scanする。その小さい往復を作るところまでがbootstrapの仕事だ。