mcpField
C
c3

c3

github.com/lagz0ne開発1251 回インストール15 週間前に更新
リポジトリ

c3 について

C3は、作成後に凍結される事実を、レビュー済みのアトミックな変更単位でのみ更新するアーキテクチャモデル管理スキルと同梱CLIです。クエリ、監査、編集を手順へ振り分け、キャンバスと整合性の規則を適用します。

主な機能

  1. 01意図を分類してリファレンスへ振り分け
  2. 02モデル要素を検索・参照・読取・グラフ化
  3. 03キャンバス定義に照らして事実を検証
  4. 04アトミックな変更単位で事実を更新
  5. 05移行を伴ってキャンバスを拡張・再構成
  6. 06事実の主張と外部コードを評価

活用シーン

  1. 01所有関係やアーキテクチャ上の関連を追跡
  2. 02モデルの整合性とキャンバスの完全性を監査
  3. 03凍結された事実へのレビュー付き変更を提案
  4. 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_VERSION
c3x.sh
VERSION
references/
audit.md
canvas.md
change.md
eval.md
onboard.md
query.md
ref.md
rule.md
sweep.md

詳細

C3 — 1つのモデル、3つの行為

C3は、アーキテクチャ固有の語彙を共有された真実として固定し、レビュー済みの変更単位を通じてのみ作業で編集できるようにします。

  1. モデルを形作り、事実を凍結します。 ドメインをトップダウンで掘り下げ、作業に必要な事実を草案しながら結び付けます。スリムなキャンバス(各エンティティが ここで 持つセクションと型付きカラム)はすでに用意されており、ドメインで必要な場合にのみカスタムの事実型を取り入れます。その後、ゲートを切り替えて事実を凍結します。共有された真実となり、以後手作業では編集しません。
  2. 変更単位が進捗を進めます。 作業は変更単位によって進みます。ADRとそのパッチフォルダーで構成される、1つのアトミックなサーガです。意図を宣言すると、ツールが結果(所属関係、引用、ゲート)を一体として保ち、すべてを一括で切り替えます。凍結された事実を変更できるのは、このマージを通じてのみです。
  3. 必要に応じて、キャンバスを拡張し、進化させます。 作業がモデルの範囲を超えたら、キャンバスを拡張する(段階を一つ上げる、加算的な変更)か、キャンバスを変形する(誤ってモデル化された型を非加算的に再構成する)ことで、すべての事実を適合するよう移行します。これらはすべて、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

ディスパッチ

  1. 操作を分類します(曖昧な場合は、選択肢を示して AskUserQuestion を使います)。
  2. references/<op>.md を読み込みます。
  3. 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 を参照してください

パッケージ化された操作が見つからない場合は、そこで停止してユーザーに伝えてください。ファイルツールでの回避策は使わないでください。

コメント