mcpField
A
add-implementation-requirement

add-implementation-requirement

github.com/plainlang開発8042 回インストール今日更新
リポジトリ

add-implementation-requirement について

`.plain`仕様に実装要件を追加するワークフロー型スキルです。コード生成を制御したい仕様作成者向けに、実装方法と機能上の振る舞いを区別し、ユニットテストの指針も実装要件に記載します。

主な機能

  1. 01最初に`.plain`の作成ルールを読み込む
  2. 02実装指針と振る舞いを区別
  3. 03要件を適切なセクションに追加
  4. 04ユニットテストの実装指針に対応
  5. 05編集後に配置と構文を確認

活用シーン

  1. 01技術やアーキテクチャの制約を指定
  2. 02コーディング、データ形式、エラー処理の方針を設定
  3. 03ユニットテストのフレームワークや規約を記述

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/plainlang/plain-forge --skill add-implementation-requirement

インストール後、Claude Code で/add-implementation-requirementを入力して読み込まれたか確認します。

詳細

実装要件の追加

まずルールを読み込んでください。 .plain ファイルを読んだり、編集したり、書き込んだりする前に、load-plain-reference スキルを呼び出し、そこから案内されたルールファイルを読んでください。この会話ですでに load-plain-reference が実行されている場合に限り、これを省略できます。

ワークフロー

  1. 対象の .plain ファイルを特定します。 曖昧な場合は、ユーザーに確認してください。
  2. ファイルを読みます。 既存の実装要件、定義、機能仕様を把握します。
  3. 実装要件に該当するか判断します。 何を作るかではなく、どのように作るかを記述する必要があります(何を作るかは ***functional specs*** に記述します)。
  4. 以下のルールに従って要件の草案を作成します。
  5. 要件を挿入します。 ***implementation reqs*** セクションに挿入してください。
  6. ファイルをもう一度読みます。 配置と構文が正しいことを確認します。

ここに記述する内容

実装要件は、コード生成の指針となる自由形式の指示です。一般的な内容は次のとおりです。

  • 技術の選択:言語、フレームワーク、ランタイムのバージョン
  • アーキテクチャ上の制約:パターン、レイヤー構成、依存関係のルール
  • コーディング規約:命名規則、スタイルガイドライン
  • データ形式:シリアライズ、エンコーディング、変換のルール
  • エラー処理:方針、再試行ロジック、例外階層
  • アルゴリズムの説明:動作だけでは不十分な場合の具体的な方法
  • パフォーマンスに関する指針:メモリー制約、ストリーミング要件、バッチ処理の方針
  • 言語固有の構文:ジェネリクス、アノテーション、フレームワーク固有の型や慣用表現

ここに記述しない内容

  • 動作と機能 — これらは ***functional specs*** に記述します
  • 概念の定義 — これらは ***definitions*** に記述します
  • 適合性テストの指示 — これらは ***test reqs*** に記述します。注:ユニットテストの指示は ***test reqs*** ではなく、ここに記述します — 詳細は以下の「ユニットテストの指針はここに記述」を参照してください

ユニットテストの指針はここに記述

:UnitTests: に関する内容はすべて ***implementation reqs*** に記述します — パス、手法、パッケージ、フレームワーク(JUnit/pytest/Jest/Go の testing など)、規約、フィクスチャ、モックの方針、ファイル構成、命名、リンター/静的解析の必須条件が含まれます。ユニットテストは生成されるコードベースの一部であるため、それらに関する要件は定義上、実装要件です。

  • ユニットテストジェネレーターが読み取るのは ***implementation reqs*** のみです。***test reqs*** に記述された :UnitTests: に関する内容は、通知なく無視されます
  • それぞれの :UnitTests: 要件は、事前定義された :UnitTests: の概念に沿って記述してください。これにより、区分が一目でわかります
  • ***test reqs*** は :ConformanceTests: 専用です。詳細は add-test-requirement を参照してください

重要な原則:どのように作るか、何を作るか

***implementation reqs*** には、ソフトウェアをどのように作るかを記述します。 ***functional specs*** には、ソフトウェアが何をするかを記述します。

要件が観察可能な動作(エンドポイント、ビジネスルール、ユーザー向け機能)を記述する場合は、機能仕様に該当します。内部構造、技術、コーディングの指針を記述する場合は、ここに該当します。

形式

実装要件は、***implementation reqs*** セクション内の箇条書きで記述します。

***implementation reqs***

- :Implementation: should be in Python 3.12.

- :Implementation: should use pip for dependency management.

- :ReportExporter: writes a :CsvFile: with streaming writes, never holding the full dataset in memory.

明確になる場合は、定義済みの :Concepts: を参照してください。リーフではないセクションの実装要件は、すべてのサブセクションに適用されます。

カプセル化に関する警告

requires モジュールが依存先から受け取るのは機能仕様のみであり、実装要件は受け取りません。下流モジュールに特定の動作を認識させる必要がある場合、その動作はここではなく機能仕様に記述してください。

検証チェックリスト

  • 何を作るかではなく、どのように作るかを記述している
  • 参照するすべての :Concepts: が ***definitions*** で定義されている
  • ファイルまたはそのインポートにすでに記載されている指針と重複していない
  • concise-specs.md に従って簡潔にしている:平易な言葉を使い、理由や、すでに名前を挙げた技術の標準的な動作を記述していない
  • ***implementation reqs*** セクション内に配置されている
  • ***functional specs*** に記述すべき動作要件が含まれていない

コメント