c4-model について
ソフトウェアアーキテクト向けのLikeC4モデリングスキルです。標準C4に沿ったコンテキスト図とコンテナ図を生成し、任意でデプロイメント図を追加します。非標準の拡張を拒み、モデルの範囲を保ちます。
主な機能
- 01C4モデルとビューのファイル生成
- 02コンテキスト図とコンテナ図の作成
- 03任意のデプロイメント図の追加
- 04標準C4ルールによるモデル検査
- 05ADRとモデル間の名称差分確認
活用シーン
- 01単一システムのコンテキスト図とコンテナ図の作成
- 02標準C4の範囲内でのアーキテクチャモデル整理
- 03ADRと図の名称のずれの確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ josiahsiegel/ claude-plugin-marketplace --skill c4-modelインストール後、Claude Code で/c4-modelを入力して読み込まれたか確認します。
同梱ファイルreferences/canonical-c4-refusals.mdreferences/likec4-dsl-cheatsheet.md
詳細
c4-model
canonical-C4 の LikeC4 モデルを生成します。デフォルトでは Context ビューと Container ビューを作成し、Deployment は任意です。Simon Brown の canonical C4 を逸脱する LikeC4 の機能はすべて拒否します。ここで使用する canonical-C4 の機能は LikeC4 のバージョン間で安定していますが、インストール済みのバージョンで確認するには npx likec4 validate で再検証してください。
このスキルで作成するもの
- 仕様とモデルを含む
model.c4ファイル - 注目対象の単一システムに範囲を限定した
<system>.c4ファイル - Context ビューを1つ、Container ビューを1つ(任意で Deployment ビューを1つ)含む
views.c4ファイル likec4.config.jsファイル
このスキルで拒否するもの
| 拒否するもの | 理由 | アーキテクト向けの代替案 |
|---|---|---|
| Component ビュー | 「Component ビューは、ADR が扱う範囲よりも深いレベルのものです。」 | コードレベルの図ツール(例:ソース内の Mermaid)を使用してください。これは C4 の範囲外です。 |
| Dynamic ビュー | シーケンス/ランタイムのフローは canonical C4 ではありません。 | 別途、シーケンス図ツールを使用してください。 |
| カスタム要素種別 | canonical C4 の要素は Person/Software System/Container のみです。 | container を使用し、technology 属性に種別を記述してください。 |
| カスタム関係種別 | canonical な関係は uses、reads、writes、publishes、consumes です。 | 最も近い canonical な種別を選んでください。 |
| カスタムスタイル | 図はひと目で C4 と認識できる見た目にする必要があります。 | canonical であることよりスタイルを重視する場合は、このスキルの範囲外で LikeC4 を直接使用してください。 |
| 入れ子のシステム | C4 には Context と Container があります。システムをシステム内に入れ子にすると、各レベルが曖昧になります。 | モデルを分割してください。 |
| 注目対象の複数システム | .c4 ファイルごとに1つのシステムを記述するのが canonical です。 | システムごとに個別のモデルを作成し、externalSystem でリンクしてください。 |
拒否することがこのスキルの要点です。LikeC4 の自由な機能をすべて使いたいアーキテクトは、このスキルを使用しないでください。
用語
- Actor — C4 用語での Person(人間の役割)です。システム境界の外に描画します。
- 外部システム — チームが所有していないシステムです。システム境界の外に描画します。
- システム — 注目対象となる、境界が定められた単一のプロダクトです。ファイルごとに必ず1つだけです。
- Container — 注目対象のシステム内にある、実行またはデプロイ可能な単位です。コードのクラスではありません。
- 関係 — 1行の説明を伴う有向エッジです。説明は必須です。
厳守事項
- すべての関係に1行の説明を付けます。 説明がなければ、エッジもありません。
- 要素名は、ディスカバリーでアーキテクトが確認した名称と一致させます。 翻訳、略記、複数形への変更はしないでください。
- アーキテクトから明示的な依頼がない限り、スタイルを追加しません。
- 各
.c4ファイル内のsystem定義は必ず1つだけにします。
固定仕様ブロック
この specification ブロックをそのまま使用してください。編集、拡張、名称変更はしないでください。
specification {
element actor {
style {
shape person
}
}
element externalSystem {
style {
color secondary
}
}
element system
element container
relationship uses
relationship reads
relationship writes
relationship publishes
relationship consumes
tag open-question {
style {
color red
border dashed
}
}
}
未解決の質問に関する規約
存在するものの詳細が未解決の要素または関係には、次のように対応します。
- タグ
#open-questionを追加します - 説明の先頭に
OPEN Q<N>:を付けます。<N>はdocs/architecture/open-questions.mdの項目番号と一致させます - スタイルは赤色+破線で描画され、ひと目でわかります
例:
container payments-service "Payments Service" "OPEN Q7: tech stack unconfirmed" {
#open-question
}
8つのフェーズ
フェーズ1 — インテーク
docs/architecture/discovery-brief.md に CONFIRMED 要素がある場合は、それをそのまま使用し、再度質問しないでください。そうでない場合は、adr-discovery と同じ手順(1ターンに質問1つ)で、アーキテクトと各要素について1つずつ確認してください。
フェーズ2 — 検索またはひな形の作成
**/*.c4 と **/likec4.config.* を Glob で検索します。次の2つのケースがあります。
- ファイルが存在する場合: ファイルを読み込みます。注目対象のシステムを特定します。アーキテクトが範囲を確認した場合は、既存のモデルに追加します。
- ファイルが存在しない場合: アーキテクトが選択したパス(デフォルトはリポジトリのルートにある
likec4/)に、model.c4、<system>.c4、views.c4、likec4.config.jsのひな形を作成します。
フェーズ 3 — DSL の生成
model.c4 に次の 3 つのブロックを記述します。
- 仕様 — 上記のロック済みブロックをそのまま記載します。
- モデル — アクターと外部システムは最上位に配置し、コンテナーは
systemブロック内にネストします。references/likec4-dsl-cheatsheet.mdを参照してください。 - ビュー —
views.c4に、contextビュー(システムとそのアクター、外部システム)、containerビュー(システム内のコンテナー)、および任意でdeploymentビューを記述します。
フェーズ 4 — Canonical-C4 リント
検証の前に、次の 11 項目のチェックリストを実行します。
| # | チェック項目 |
|---|---|
| 1 | system 定義がちょうど 1 つである。 |
| 2 | すべてのコンテナーが、その 1 つのシステム内にネストされている。 |
| 3 | すべてのアクターが最上位にある(システム内にない)。 |
| 4 | すべての外部システムが最上位にある。 |
| 5 | すべてのリレーションシップに空でない説明がある。 |
| 6 | 正規の 5 種類以外のリレーションシップ種別がない。 |
| 7 | actor、externalSystem、system、container 以外の要素種別がない。 |
| 8 | ネストされたシステムがない。 |
| 9 | context、container、deployment 以外のビューがない。 |
| 10 | 仕様ブロックがロック済みブロックと完全に一致している。 |
| 11 | #open-question タグが付いた要素の説明に、OPEN Q<N>: の接頭辞がないものがない。 |
違反項目を番号付きリストにして、PASS または FAIL を出力します。FAIL の場合は先に進みません。
フェーズ 5 — 適用せずに差分を表示
提案するファイル変更を、ハンクごとに差分として表示します。ハンクごとに承認を得ます。アーキテクトが承認するまで、ファイルには書き込みません。
フェーズ 6 — 構文を検証
npx likec4 validate を実行します。検証に失敗した場合は、エラーをアーキテクトに提示し、自動修正はしません。
フェーズ 7 — 表示方法を案内
図の表示方法をアーキテクトに伝えます。依頼がない限り、サーバーを起動しません。
To view: npx likec4 start # interactive browser at http://localhost:5173
To serve: npx likec4 serve # static export
フェーズ 8 — ドリフトチェック
ADR ディレクトリ(docs/adr/、docs/decisions/、docs/architecture/decisions/、**/adr/*.md。また、旧形式の architecture/decisions/ も確認)を glob で検索します。各 ADR について、テキスト中に記載されたコンポーネント名を LikeC4 モデル内の名前と比較します。名前の不一致は drift 候補として報告し、どちらを正とするかはアーキテクトに判断してもらいます。どちらの側も自動で改名しません。
DSL に関する注意事項
スコープ付きビュー、extend、デプロイメント仕様など、複雑な DSL の質問については、references/likec4-dsl-cheatsheet.md を参照してください。正規の C4 の範囲外の機能については、このスキルで実装せず、アーキテクトに LikeC4 の公式ドキュメントを案内してください。
参考資料
references/likec4-dsl-cheatsheet.md— 正規の C4 に準拠した LikeC4 DSL の簡易チートシートreferences/canonical-c4-refusals.md— 許可されていない機能についての拒否文例adr-discoveryスキル — 確認済みの要素とリレーションシップの上流ソースadr-critiqueスキル — ADR とのドリフト検出に使う下流のコンシューマー