c3 について
C3は、作成後に凍結される事実を、レビュー済みのアトミックな変更単位でのみ更新するアーキテクチャモデル管理スキルと同梱CLIです。クエリ、監査、編集を手順へ振り分け、キャンバスと整合性の規則を適用します。
主な機能
- 01意図を分類してリファレンスへ振り分け
- 02モデル要素を検索・参照・読取・グラフ化
- 03キャンバス定義に照らして事実を検証
- 04アトミックな変更単位で事実を更新
- 05移行を伴ってキャンバスを拡張・再構成
- 06事実の主張と外部コードを評価
活用シーン
- 01所有関係やアーキテクチャ上の関連を追跡
- 02モデルの整合性とキャンバスの完全性を監査
- 03凍結された事実へのレビュー付き変更を提案
- 04コードと文書化された事実の適合性を評価
MCP 対応
このスキルはローカルラッパーを介して同梱の `c3x` CLIを実行します。MCP サーバーであることや、MCP ツール・リソースの提供は記載されていません。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ lagz0ne/ c3-skill --skill c3インストール後、Claude Code で/c3を入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
bin/AST_GREP_VERSIONc3x.shVERSIONreferences/audit.mdcanvas.mdchange.mdeval.mdonboard.mdquery.mdref.mdrule.mdsweep.md詳細
C3 — 1つのモデル、3つの行為
C3は、アーキテクチャ固有の語彙を共有された真実として固定し、レビュー済みの変更単位を通じてのみ作業で編集できるようにします。
- モデルを形作り、事実を凍結します。 ドメインをトップダウンで掘り下げ、作業に必要な事実を草案しながら結び付けます。スリムなキャンバス(各エンティティが ここで 持つセクションと型付きカラム)はすでに用意されており、ドメインで必要な場合にのみカスタムの事実型を取り入れます。その後、ゲートを切り替えて事実を凍結します。共有された真実となり、以後手作業では編集しません。
- 変更単位が進捗を進めます。 作業は変更単位によって進みます。ADRとそのパッチフォルダーで構成される、1つのアトミックなサーガです。意図を宣言すると、ツールが結果(所属関係、引用、ゲート)を一体として保ち、すべてを一括で切り替えます。凍結された事実を変更できるのは、このマージを通じてのみです。
- 必要に応じて、キャンバスを拡張し、進化させます。 作業がモデルの範囲を超えたら、キャンバスを拡張する(段階を一つ上げる、加算的な変更)か、キャンバスを変形する(誤ってモデル化された型を非加算的に再構成する)ことで、すべての事実を適合するよう移行します。これらはすべて、1つのゲート付きアトミック単位で行います。完全性の基準を緩めることはありません。
モデルを構築する → 事実を凍結する → 変更単位が作業を進める → 必要に応じてキャンバスを拡張する。
CLI の実行
パッケージ化されたランタイムは c3x で、スキル専用のラッパー <skill-dir>/bin/c3x.sh を通じて公開されます。c3 実行ファイルはありません。すべてのコマンドで、明示的にラッパーを呼び出してください。
# Template: resolve <skill-dir> to this skill's directory, then replace the command and args.
C3X_MODE=agent bash "<skill-dir>/bin/c3x.sh" check
1つのシェル内で複数のコマンドを実行する場合は、このヘルパーを使えます。ただし、これはシェル関数にすぎず、c3 コマンドをインストールするものではありません。
c3local() { C3X_MODE=agent bash "<skill-dir>/bin/c3x.sh" "$@"; }
C3X_MODE=agent → TOON 出力(トークンを約40%削減)と、各結果に追加される help[] ヒントが有効になります。ヒントに従ってください。パッケージ化された CLI が唯一の情報源です。このスキルはルーターとして、意図を分類し、リファレンスを読み込み、ラッパーを呼び出し、出力に従います。すべてのゲートを示しますが、手順は説明しません。手順はリファレンスに記載されています。
意図の分類
| キーワード | 操作 | リファレンス |
|---|---|---|
| adopt, init, bootstrap, onboard, "create .c3" | オンボーディング | references/onboard.md |
| where, explain, how, diagram, trace, "show me", "what is", "what handles" | クエリ | references/query.md |
| audit, validate, "check docs", "is the doc intact" | 監査 | references/audit.md |
| add, change, fix, implement, refactor, remove, design | 変更 | references/change.md |
| pattern, convention, "create ref", "update ref", standardize | リファレンス | references/ref.md |
| "coding rule", "coding standard", "split ref into rule" | ルール | references/rule.md |
| "edit the canvas", "change the shape", "what sections does X have", "add a doc type", "raise the bar", "add prd/user-story" | キャンバス | references/canvas.md |
| impact, "what breaks", assess, sweep, "is this safe" | 影響調査 | references/sweep.md |
| "does the code match", conformance, "is the doc still true", "check against code", drift-vs-external | 評価 | references/eval.md |
ディスパッチ
- 操作を分類します(曖昧な場合は、選択肢を示して
AskUserQuestionを使います)。 references/<op>.mdを読み込みます。- CLI を実行し(並列処理には Task ツールを使用)、
help[]に従います。
前提条件 — 読み取り専用の高速パス。 概念の場合はラッパーの search、ファイル/glob の場合は lookup、ID/セクションの場合は read --section を使います。ヒットしたら、ルートのコンテキストを確認するため graph <id> --depth 1 を 1 回実行し、所有者、適用される参照、因果関係を示すリンク 1 つ、次のアクションに根拠が確認できた時点で終了します。route.facts、route.graph、route.anchors、route.lanes、route.drift、route.hash は、調査の手がかりとして読み取り、証明や適用の判定条件として扱わないでください。所有者/クエリのセッションでは、証明に使う C3 呼び出しは 4 回までにしてください。search/lookup、graph 1 回、所有者のセクション、適用されるルールのセクションです。参照されているルールをすべて読まないでください。簡潔な読み取りを優先し、成功した読み取りを繰り返さないでください。list、全文読み取り、ソースのスキャン、テストは、検索漏れ、ドリフト、明示的な監査、変更の場合にのみ使います。範囲が限定されていない影響調査では、互いに独立したルートを 2~3 本に絞り、重複するものは別のルートへ誘導し、定理として成立するだけの証拠が不足している箇所はブロックし、新しいメカニズムがある場合にのみ調査を再開します。具体的な ID、コマンド、証拠を必須とします。.c3/ のインスタンスを Read/Glob/Edit で操作しないでください(canvas 定義はユーザーが所有する例外です)。.c3/ が見つからない場合は オンボード してください。
共有契約
これらのルールはここに一度だけ記載し、すべての参照先から引用します。
凍結される事実。 事実とは、キャンバスでstatus:が設定されていないエンティティ(system、container、component、ref、rule、pm-requirement、user-story)です。事実に本文が記載された時点で凍結され、ラッパーによるその事実へのwrite、set、delete操作は拒否されます(ガードは最初の引数を基準とし、未知の型は凍結対象として扱われます)。拒否時には、唯一許可される方法が示されます。「は事実です。事実は凍結されており、変更できるのは変更ユニットを通じてのみです。」 事実を変更できるのは、変更ユニット内でパッチを作成し、ラッパーのchange apply操作を実行した場合のみです。
凍結の対象外: ラッパーのadd操作(新しい事実の作成はガードされません)、本文のない事実に対する最初のwrite、変更ドキュメント(adr/prd/atomic-design-change — status:を宣言します)の編集、キャンバス定義(ユーザーが所有)の編集。事実とコードの紐付けは凍結の対象外です。.c3/eval/<fact>.yaml(code:フィールド)に記載されている通常の編集可能なファイルであり、コードの移動に応じて自由に向け先を変更できます。凍結される事実ではないため、例外扱いは不要です(references/eval.md)。
メンバーシップは自動生成されます。 親のメンバーシップテーブルは、親子関係を変更するすべての経路(ラッパーを介したadd、change apply、またはcheck --fix)で、ツールが子のparent:リンクから合成します。行はツールに任せ、手動で作成・編集しないでください(parent:を設定すれば、行が追加されます)。親子関係はグラフのエッジではありません。parent:は子のparent_idと合成されたメンバーシップ行を設定するもので、ラッパーのgraph操作に表示される配線エッジ(uses、引用、edge<>列)とは別の軸です。親を変更するとparent_idと両方の親のメンバーシップが更新されますが、配線には影響しません。
事実は常に、自身の段階に必要な完全な状態です。 キャンバスは段階であり、複雑さのレベルごとに完結した契約です。時間をかけて埋める目標ではありません。新規初期化時のキャンバスは意図的に簡素な段階1です。複雑なプロジェクトに必要な深いセクションは、欠落ではなく、より高い段階のものです。完全性の基準は決して緩和されません。拡張するには、段階を上げます。キャンバスを引き上げたうえで、影響を受けるすべての事実を新しい契約に完全に移行します。整合性上、事実が2つの段階にまたがることは禁止されています。モデル自体の形状が誤っている場合(単に簡素なのではなく、誤ってモデル化されている場合)は、形状を変えます。キャンバスを非加算的に再構成する進化ユニット(canvasスコープのパッチ)を使い、すべてのインスタンスを新しい形状に移行します。段階をまたがせない同じルールのもと、ゲート付きのアトミックなユニットとして実行します(references/change.md §モデルの形状変更)。
ADRのステータス: [open, accepted, done, superseded]。(ラッパーのadd adr操作ではproposedが設定されます。これは従来のopenの同義語です。acceptedは、After引用が新鮮な状態で解決されると、自動的にdoneに固定されます。)終端状態の変更ドキュメント(done/superseded)は、内容が凍結された履歴レコードであり、ラッパーのcheck操作の対象外です。list/checkではデフォルトでADRが除外されます。含めるには--include-adrを指定してください。
コマンド一覧
パッケージ化された CLI がカタログです。ローカルラッパーで <cmd> --help を実行してください。出力が正式な情報です。変更単位のゲートスタック(中核となるフロー)については references/change.md を参照してください。
| コマンド | 用途 |
|---|---|
list | 件数とカバレッジを含むトポロジー(--flat、--compact) |
check | ファクトをキャンバスおよび整合性と照合して検証します(--fix、--only、--include-adr)。ファクトとコードの適合性チェックはここでは行いません。ラッパーの独立したオフスイッチ式の eval 操作を実行してください |
eval | 凍結されたファクトの主張を、それが管理する制御対象外の外部要素(.c3/eval/<fact>.yaml 内の code: バインディング)と照合します。単発の CI サイクルの判定であり、ゲートではありません(references/eval.md) |
repair | 正規の .c3/ から破棄可能なキャッシュを再構築し、再シールします(ブランチ切り替え後/選択的マージ後) |
search <query> | 意味・キーワード・グラフのシグナルを使って、概念からエンティティを検索します。利用可能な場合は経路の手がかりも表示します |
lookup <file-or-glob> | ファイル/glob からコンポーネントと参照を検索します |
read <id> | エンティティの内容(--full。--section <name> --cite はパッチベースのアンカーを出力します) |
graph <id> | 関係グラフと経路の切り口(facts、graph、anchors、lanes、drift、hash)。--depth、--direction forward|reverse、--format mermaid、--unit <adr-id> はステージ済みパッチをプレビューします |
add <type> <slug> | ファクトを作成します(本文は stdin または --file 経由。--container、--feature)。ガードされていない作成経路です |
canvas <list|read|add|write> | キャンバス定義(.c3/canvases/ にあるユーザー所有の形式)を管理します |
schema <type> | キャンバスのセクション/列/REJECT-IF を表示します(却下条件の契約から表示します) |
write <id> / set <id> <field> <val> / delete <id> | 直接編集します。凍結されたファクトに対しては拒否されます(契約を参照)。変更ドキュメントとキャンバス本文のみが対象です |
change <new|view|status|accept|apply|rebase|scaffold> | 変更単位のサーガ。ファクトを変更する唯一の方法です。apply はゲートスタックをアトミックに実行し、rebase はドリフトしたパッチ向けにドリフトバンドルを出力し、scaffold は段階的な昇格をステージします。references/change.md を参照してください |
パッケージ化された操作が見つからない場合は、そこで停止してユーザーに伝えてください。ファイルツールでの回避策は使わないでください。