🧬 プロジェクトがどんなものかを Lagune に伝えると、それをセキュリティのルールに落とし込みます(説明がなくても、プロジェクトそのものからルールを導き出します)。
charter は全体を統括するレイヤーで、後続のすべてのフェーズが守らなければならない、セキュリティ優先の原則をまとめたものです。プロジェクトのセキュリティ態勢に対するコンパイル時チェックだと考えてください。
実行方法
- 説明する
- Lagune に提案させる
/lagune-charter このプロジェクトは、ゲームソフトを販売するオンラインストアです。顧客は商品をカートに入れ、クレジットカードか銀行振込で支払います。自分の注文と、それぞれの注文の状況を確認できます。
/lagune-charter
決済ライブラリ、ログインの仕組み、顧客に紐づいた注文モデルがあります。何かを販売するオンラインストアのようです。顧客は支払いをして、自分の注文を追跡します…… ☁️
導き出す内容
Lagune は説明や PRD を方向性として受け取り、それがセキュリティ面で何を意味するかを導き出したうえで、プロジェクトを読み取って、説明に含まれていない点まで掘り下げます。たとえば:
- カートが注文を保持しているということは、データベースがあるということです。
- 例:
"データはどこに保存されているか?"、"誰がアクセスできるか?"、"漏えいしていないか?"。
- 例:
- 顧客が自分の注文を確認できるということは、何らかのログインやアクセス制御があるということです。
- 例:
"ある顧客が別の顧客の注文にアクセスできないか?"、"セッションは保護されているか?"。
- 例:
- カードと銀行振込での支払いを受け付けるということは、お金と機密データが関わるということです。
- 例:
"カード情報は保存されているか?"、"支払いは検証されているか?"。
- 例:
説明とプロジェクトは互いに補い合います。説明が意図を定め、依存関係や README、設定を読み取ることで、説明に含まれていなかった点が浮かび上がります。それでも重要な点がはっきりしない場合、Lagune は推測せず、短くわかりやすい質問をします。
そこから Lagune は、プロジェクトに合わせたセキュリティルールを組み立てます。ルールは必要なときにいつでも見直し、調整できます。
- プロジェクト独自のセキュリティルールを定義することもできます。
- 関連する情報を詳しく伝えるほど、最終的なレポートの質が上がります:
- プロジェクトの概要、仕組み、内部で何が起きているかを説明してください。
- エンドユーザーは誰ですか?ユーザーにできることと、できないことは何ですか?
- 振る舞いに関する情報は、技術的な情報と同じくらい価値があります。
- charter の記録は
.lagune/memory/charter.mdにあります。
記録するカテゴリ
専門知識は後続のフェーズが必要なときだけ読み込むセキュリティの知識で、プロジェクトの カタログ には カテゴリ 単位で加わります。プロジェクトにまだカテゴリが記録されていない間は、charter がプロジェクトを読み取って裏付けが得られたカテゴリ(プロジェクトの言語、LLM の呼び出し、コンテナーなど)をそれぞれ記録し、要約でその名前を示します。
カテゴリが記録されたあとは、charter はそれらに手を加えず、プロジェクトでまだ使っていないカテゴリの名前を挙げるだけです。カテゴリはいつでも自分で変更できます:
npx lagune write add --categories python
npx lagune write remove --categories python
次のステップ
ルールが決まったら、システムが実際に何をしているかを洗い出しましょう:/lagune-detect。
よくある質問
charter は Lagune の全体を統括するレイヤーで、後続のすべてのフェーズが守らなければならない、セキュリティ優先の原則をまとめたものです。プロジェクトのセキュリティ態勢に対するコンパイル時チェックだと考えてください。
.lagune/memory/charter.md に保存されます。
はい。Lagune は説明とコードをもとにルールを提案します。そのルールは書き換えも削除もでき、新しく追加したり、適用範囲を絞り込んだりもできます。
カテゴリがまだ記録されていない間だけです。その場合は、プロジェクトを読み取って裏付けが得られたカテゴリ(使用している言語や LLM の呼び出しなど)をそれぞれ記録します。一度カテゴリが記録されたあとは、それを変更することはありません。
