analyze-2-func-specs について
`.plain` ファイル内の 2 つの機能仕様を比較し、`COMPATIBLE` または `CONFLICTING` のみを返すスキルです。挙動や状態に関するチェックリストに基づいて仕様をレビューします。
主な機能
- 012 つの仕様と定義の読み込み
- 02仕様の前後関係の判定
- 035 種類の競合を確認
- 04判定結果のみを出力
活用シーン
- 01実装前の仕様互換性チェック
- 02required モジュールをまたぐ仕様のレビュー
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ plainlang/ plain-forge --skill analyze-2-func-specsインストール後、Claude Code で/analyze-2-func-specsを入力して読み込まれたか確認します。
詳細
2つの機能仕様を分析する
最初にルールを読み込んでください。 .plain ファイルを読み取り、編集、または書き込む前に、load-plain-reference スキルを呼び出し、そこから案内されたルールファイルを読んでください。この会話ですでに load-plain-reference が実行されている場合に限り、この手順を省略できます。
入力
.plain ファイル(または requires モジュール群)にある2つの機能仕様です。ユーザーが直接提示するか、ファイル内の場所を示します。
ワークフロー
- 両方の機能仕様と
***definitions***セクションを読み、参照されているすべての:Concepts:を理解します。 - 時系列順を判断します。どちらの仕様が先ですか?先の仕様が最初にレンダリングされ、後の仕様は先の仕様をコンテキストとしてレンダリングされています。
- 以下のチェックリストに沿って競合を分析します。
- 判定結果のみを出力します。
COMPATIBLEまたはCONFLICTINGのいずれかです。理由、カテゴリ名、解決策の提案は出力しません。
競合分析チェックリスト
各質問を検討してください。いずれかの答えが「はい」の場合、仕様は競合している可能性があります。
1. 直接的な矛盾
2つの仕様は、同じ動作について相互に両立しない主張をしていますか?
Spec A: :Resource: items are returned sorted by name in ascending order.
Spec B: :Resource: items are returned sorted by creation date in descending order.
Verdict: CONFLICTING — both define the sort order for the same response,
but specify different fields and directions. A single implementation cannot
satisfy both unless scoped to different contexts.
2. 状態またはデータの競合
一方の仕様が、もう一方の仕様で異なると想定されている状態または値を設定していますか?
Spec A: :TaskList: is initially empty.
Spec B: :TaskList: contains a default "Welcome" :Task: on first load.
Verdict: CONFLICTING — both define the initial state of :TaskList: differently.
3. 動作の上書き
後の仕様は、先の仕様で定められた動作を、明示せずに置き換えていますか?
Spec A: :User: credentials are validated using an API key.
Spec B: :User: credentials are validated using OAuth 2.0.
Verdict: CONFLICTING — both define the authentication mechanism but pick
different approaches. The later spec overrides the earlier one.
4. スコープの曖昧さ
ユーザーは相補的な仕様として意図している場合でも、レンダラーが競合していると解釈するほど、2つの仕様は曖昧ですか?
Spec A: All :Resource: items are returned.
Spec B: Only active :Resource: items are returned.
Verdict: CONFLICTING (ambiguous) — "all" vs "only active" appear contradictory.
Could be resolved by scoping each to different conditions (e.g., filtered vs unfiltered).
5. 共通のコンセプト、異なる制約
両方の仕様は、同じ :Concept: に対して、両立できない制約を課していますか?
Spec A: :BatchSize: is 100 items.
Spec B: :BatchSize: is 50 items for :Resource: types with attachments.
Verdict: COMPATIBLE — Spec B adds a conditional refinement, not a contradiction.
出力形式
スキルは、前後にテキスト、説明、カテゴリ名、解決策の提案を付けずに、次の2つの文字列のいずれかを正確に出力します。
COMPATIBLE
または
CONFLICTING
内部分析(チェックリスト、時系列の推論)は判定の根拠になりますが、出力に含めてはいけません。結果をどう扱うかは呼び出し元が決定します。通常は、COMPATIBLE の場合は処理を進め、CONFLICTING の場合は resolve-spec-conflict を呼び出して実際の修正を行います。