add-concept について
`.plain` ファイルに概念定義を追加するスキルです。命名、重複、参照順序や循環を確認し、挿入形式とチェック項目を示します。
主な機能
- 01概念名の構文を検証
- 02インポートを含めて重複を確認
- 03参照する概念と定義順を確認
- 04循環定義を防止
- 05適切なセクションに定義を追加
活用シーン
- 01既存の `.plain` ファイルに概念を追加
- 02挿入前に定義内の参照を確認
- 03概念定義の重複や循環を回避
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ plainlang/ plain-forge --skill add-conceptインストール後、Claude Code で/add-conceptを入力して読み込まれたか確認します。
詳細
概念を追加する
最初にルールを読み込んでください。 .plain ファイルを読んだり、編集したり、書き込んだりする前に、load-plain-reference スキルを呼び出し、そのスキルから案内されたルールファイルを読んでください。この会話ですでに load-plain-reference が実行されている場合に限り、この手順を省略できます。
ワークフロー
- 対象の
.plainファイルを特定します。 判断できない場合は、ユーザーに尋ねてください。 - ファイルを読み、 既存の定義、インポート、概念を把握します。
- 以下の構文ルールに照らして、概念名を検証します。
- 一意性を確認します — 概念名がファイル内またはインポート先にすでに存在していてはいけません。
- 参照先の概念を確認します — 定義内で使用されている
:ConceptName:は、同じファイル内でその概念より前に定義されているか、import/requiresを通じて定義されている必要があります。概念の参照が循環してはいけません(例:A が B を参照し、B が A を参照する)。 - 循環参照がないか確認します — 新しい概念が
:B:を参照する場合、:B:が新しい概念を直接または間接的に参照していてはいけません。避けるべき循環定義の例:
逆参照を削除して修正します:- :Order: is placed by :Customer: and contains :OrderItem: entries. - :Customer: is a user who has placed at least one :Order:.- :Customer: is a user of the system. - :Order: is placed by :Customer: and contains :OrderItem: entries. - 概念を挿入します — 参照している概念の後にある
***definitions***セクションに挿入します。 - ファイルをもう一度読み、 配置と構文が正しいことを確認します。
概念の構文ルール
- コロンで囲みます:
:ConceptName: - 大文字で始まるキャメルケースにします
- 使用できる文字:英字、数字、
+、-、.、_ - 仕様全体およびすべてのインポート先で一意でなければなりません
requiresモジュールからエクスポートされる概念は推移しません — 先祖のエクスポートを参照するには、その先祖をrequiresに指定します。概念が複数のブランチで共有される場合は、共通のインポートモジュールで定義してください
定義の形式
概念の定義は、***definitions*** 内で概念名から始まる箇条書きです:
***definitions***
- :ConceptName: is a description of what it represents.
属性と制約は、入れ子の箇条書きにします:
***definitions***
- :Task: describes an activity that needs to be done by :User:. :Task: has:
- Name - a short description (required)
- Notes - additional details (optional)
- Due Date - completion deadline (optional)
検証チェックリスト
- 名前が
:CamelCase:の表記になっている - 名前が全体で一意である(ファイル内やインポート先のほかの場所で定義されていない)
- 定義が概念名から始まっている
- 参照するすべての概念(
:OtherConcept:)が上の位置ですでに定義されている - 概念間に循環参照がない
- 説明が明確かつ簡潔で、言語に依存しない
-
concise-specs.mdに従って簡潔にする:名前を言い換えず、理由を述べず、平易な一文にする -
***definitions***セクション内に配置されている
コメント
Markdown 対応